veryfront 0.1.606 → 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 (36) 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/internal-agents/run-stream.d.ts +1 -0
  26. package/esm/src/internal-agents/run-stream.d.ts.map +1 -1
  27. package/esm/src/internal-agents/run-stream.js +34 -0
  28. package/esm/src/oauth/index.d.ts +5 -1
  29. package/esm/src/oauth/index.d.ts.map +1 -1
  30. package/esm/src/oauth/index.js +5 -1
  31. package/esm/src/oauth/providers/common.d.ts +27 -25
  32. package/esm/src/oauth/providers/common.d.ts.map +1 -1
  33. package/esm/src/oauth/providers/common.js +3 -1
  34. package/esm/src/utils/version-constant.d.ts +1 -1
  35. package/esm/src/utils/version-constant.js +1 -1
  36. 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.606",
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
+ };