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.
Files changed (33) hide show
  1. package/esm/cli/commands/init/catalog.d.ts.map +1 -1
  2. package/esm/cli/commands/init/catalog.js +7 -3
  3. package/esm/cli/mcp/tools/catalog-tools.d.ts +1 -1
  4. package/esm/cli/mcp/tools/catalog-tools.d.ts.map +1 -1
  5. package/esm/cli/mcp/tools/catalog-tools.js +61 -145
  6. package/esm/cli/templates/integration-loader.d.ts +9 -1
  7. package/esm/cli/templates/integration-loader.d.ts.map +1 -1
  8. package/esm/cli/templates/integration-loader.js +14 -3
  9. package/esm/deno.js +1 -1
  10. package/esm/extensions/ext-document-kreuzberg/src/index.d.ts.map +1 -1
  11. package/esm/extensions/ext-document-kreuzberg/src/index.js +12 -4
  12. package/esm/extensions/ext-document-kreuzberg/src/kreuzberg.d.ts.map +1 -1
  13. package/esm/extensions/ext-document-kreuzberg/src/kreuzberg.js +3 -1
  14. package/esm/extensions/ext-document-kreuzberg/src/runtime.d.ts +3 -0
  15. package/esm/extensions/ext-document-kreuzberg/src/runtime.d.ts.map +1 -0
  16. package/esm/extensions/ext-document-kreuzberg/src/runtime.js +26 -0
  17. package/esm/extensions/ext-document-kreuzberg/src/upload-extraction-worker.js +20 -0
  18. package/esm/src/integrations/_data.js +1 -1
  19. package/esm/src/integrations/feature-flags.d.ts +12 -0
  20. package/esm/src/integrations/feature-flags.d.ts.map +1 -0
  21. package/esm/src/integrations/feature-flags.js +118 -0
  22. package/esm/src/integrations/index.d.ts.map +1 -1
  23. package/esm/src/integrations/index.js +8 -5
  24. package/esm/src/integrations/schema.d.ts +4 -4
  25. package/esm/src/oauth/index.d.ts +5 -1
  26. package/esm/src/oauth/index.d.ts.map +1 -1
  27. package/esm/src/oauth/index.js +5 -1
  28. package/esm/src/oauth/providers/common.d.ts +27 -25
  29. package/esm/src/oauth/providers/common.d.ts.map +1 -1
  30. package/esm/src/oauth/providers/common.js +3 -1
  31. package/esm/src/utils/version-constant.d.ts +1 -1
  32. package/esm/src/utils/version-constant.js +1 -1
  33. 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;AAMnE,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,CAExD;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,CAqBA"}
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 category.integrations) {
175
+ for (const integration of integrations) {
172
176
  choices.push({
173
177
  value: integration.id,
174
178
  label: integration.label,
@@ -23,7 +23,7 @@ interface IntegrationInfo {
23
23
  displayName: string;
24
24
  category: string;
25
25
  description: string;
26
- authType: "oauth2" | "api-key";
26
+ authType: "oauth2" | "oauth1" | "api-key";
27
27
  }
28
28
  interface UsecaseInfo {
29
29
  name: string;
@@ -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;AAI3E,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,SAAS,CAAC;CAChC;AAiJD,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;;GAQ7B,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,CAYhF,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"}
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
- const INTEGRATIONS = [
98
- {
99
- name: "gmail",
100
- displayName: "Gmail",
101
- category: "productivity",
102
- description: "Read, send, and manage emails",
103
- authType: "oauth2",
104
- },
105
- {
106
- name: "calendar",
107
- displayName: "Google Calendar",
108
- category: "productivity",
109
- description: "Manage events and schedules",
110
- authType: "oauth2",
111
- },
112
- {
113
- name: "slack",
114
- displayName: "Slack",
115
- category: "communication",
116
- description: "Send messages and manage channels",
117
- authType: "oauth2",
118
- },
119
- {
120
- name: "notion",
121
- displayName: "Notion",
122
- category: "productivity",
123
- description: "Read and write Notion pages",
124
- authType: "oauth2",
125
- },
126
- {
127
- name: "sheets",
128
- displayName: "Google Sheets",
129
- category: "data",
130
- description: "Read and write spreadsheets",
131
- authType: "oauth2",
132
- },
133
- {
134
- name: "drive",
135
- displayName: "Google Drive",
136
- category: "productivity",
137
- description: "Manage files and folders",
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(["all", "productivity", "development", "communication", "data", "ai"])
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(INTEGRATIONS);
323
- return Promise.resolve(INTEGRATIONS.filter((i) => i.category === category));
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
- * Available integrations that can be added via --integrations flag
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;AAUH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAkDnD,CAAC;AAEF;;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"}
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
- * Available integrations that can be added via --integrations flag
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 AVAILABLE_INTEGRATIONS = [
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, AVAILABLE_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,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.607",
3
+ "version": "0.1.608",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -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;AAgDrG,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;CAS9E;AAED,QAAA,MAAM,oBAAoB,EAAE,gBAkB3B,CAAC;AAEF,eAAe,oBAAoB,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
- // Static URL literal so `deno compile` traces the worker script into
16
- // the binary's embedded module graph.
17
- const workerUrl = new URL("./upload-extraction-worker.ts", globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
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
- const isDeno = typeof dntShim.Deno !== "undefined";
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;AAuBlF,wBAAsB,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA2BjE"}
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
- const isDeno = typeof dntShim.Deno !== "undefined";
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,3 @@
1
+ /** True only in a real Deno runtime — not the dnt shim on Node/Bun. */
2
+ export declare const isDeno: boolean;
3
+ //# sourceMappingURL=runtime.d.ts.map
@@ -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": "api-key", "requiredApis": [{ "name": "Sentry API", "enableUrl": "https://sentry.io/settings/account/api/auth-tokens/" }], "tokenName": "Auth Token", "docsUrl": "https://docs.sentry.io/api/auth/" }, "envVars": [{ "name": "SENTRY_AUTH_TOKEN", "description": "Sentry Auth Token for API access", "required": true, "sensitive": true, "docsUrl": "https://docs.sentry.io/api/auth/" }, { "name": "SENTRY_ORG", "description": "Your Sentry organization slug", "required": true, "sensitive": false, "docsUrl": "https://docs.sentry.io/api/" }], "tools": [{ "id": "list_projects", "name": "List Projects", "description": "List all projects in your Sentry organization", "requiresWrite": false }, { "id": "list_issues", "name": "List Issues", "description": "List issues/errors in a Sentry project with optional filters", "requiresWrite": false }, { "id": "get_issue", "name": "Get Issue", "description": "Get detailed information about a specific Sentry issue", "requiresWrite": false }, { "id": "resolve_issue", "name": "Resolve Issue", "description": "Mark a Sentry issue as resolved", "requiresWrite": true }], "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" },
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;AAGrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQtE,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE1F;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,CAE1E;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"}
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
- const byName = new Map(connectors.map((c) => [c.name, c]));
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
- return byName.get(name);
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 connectorNames;
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" | "notion" | "figma" | "gitlab" | "airtable" | "salesforce" | "asana" | "monday" | "intercom" | "freshdesk" | "mailchimp" | "shopify" | "quickbooks" | "xero" | "box" | "webex" | "trello" | "clickup" | "pipedrive" | "servicenow" | "supabase" | "neon" | "stripe" | "sentry" | "posthog" | "zendesk" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
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" | "notion" | "figma" | "gitlab" | "airtable" | "salesforce" | "asana" | "monday" | "intercom" | "freshdesk" | "mailchimp" | "shopify" | "quickbooks" | "xero" | "box" | "webex" | "trello" | "clickup" | "pipedrive" | "servicenow" | "supabase" | "neon" | "stripe" | "sentry" | "posthog" | "zendesk" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
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" | "notion" | "figma" | "gitlab" | "airtable" | "salesforce" | "asana" | "monday" | "intercom" | "freshdesk" | "mailchimp" | "shopify" | "quickbooks" | "xero" | "box" | "webex" | "trello" | "clickup" | "pipedrive" | "servicenow" | "supabase" | "neon" | "stripe" | "sentry" | "posthog" | "zendesk" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
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" | "notion" | "figma" | "gitlab" | "airtable" | "salesforce" | "asana" | "monday" | "intercom" | "freshdesk" | "mailchimp" | "shopify" | "quickbooks" | "xero" | "box" | "webex" | "trello" | "clickup" | "pipedrive" | "servicenow" | "supabase" | "neon" | "stripe" | "sentry" | "posthog" | "zendesk" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
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>;
@@ -1,5 +1,9 @@
1
1
  /**
2
- * OAuth 2.0 with 36 pre-configured providers.
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;;;;;;;;;;;;;;;;GAgBG;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"}
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"}
@@ -1,5 +1,9 @@
1
1
  /**
2
- * OAuth 2.0 with 36 pre-configured providers.
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
- export declare const commonServices: {
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":"AAAA,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,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB1B,CAAC"}
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
- export const commonServices = {
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)));
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.607";
2
+ export declare const VERSION = "0.1.608";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.607";
4
+ export const VERSION = "0.1.608";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.607",
3
+ "version": "0.1.608",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",