diff --git a/packages/twenty-apps/internal/exa/.gitignore b/packages/twenty-apps/internal/exa/.gitignore
new file mode 100644
index 0000000000..6cd0610624
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/.gitignore
@@ -0,0 +1,38 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.*
+.yarn
+
+# codegen
+generated
+
+# testing
+/coverage
+
+# dev
+/dist/
+
+.twenty
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# env files (can opt-in for committing if needed)
+.env*
+
+# typescript
+*.tsbuildinfo
+*.d.ts
diff --git a/packages/twenty-apps/internal/exa/.nvmrc b/packages/twenty-apps/internal/exa/.nvmrc
new file mode 100644
index 0000000000..341cb50613
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/.nvmrc
@@ -0,0 +1 @@
+24.5.0
diff --git a/packages/twenty-apps/internal/exa/.oxlintrc.json b/packages/twenty-apps/internal/exa/.oxlintrc.json
new file mode 100644
index 0000000000..87c62c5183
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/.oxlintrc.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "./node_modules/oxlint/configuration_schema.json",
+ "plugins": ["typescript"],
+ "categories": {
+ "correctness": "off"
+ },
+ "ignorePatterns": ["node_modules", "dist"],
+ "rules": {
+ "no-unused-vars": "off",
+
+ "typescript/no-unused-vars": [
+ "warn",
+ {
+ "argsIgnorePattern": "^_"
+ }
+ ],
+ "typescript/no-explicit-any": "off"
+ }
+}
diff --git a/packages/twenty-apps/internal/exa/.yarnrc.yml b/packages/twenty-apps/internal/exa/.yarnrc.yml
new file mode 100644
index 0000000000..3186f3f079
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/.yarnrc.yml
@@ -0,0 +1 @@
+nodeLinker: node-modules
diff --git a/packages/twenty-apps/internal/exa/README.md b/packages/twenty-apps/internal/exa/README.md
new file mode 100644
index 0000000000..ab012d4038
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/README.md
@@ -0,0 +1,22 @@
+# twenty-exa
+
+Exposes [Exa](https://exa.ai) structured web search to Twenty AI agents
+(chat + workflow agents + MCP) as the `app_exa_web_search` tool.
+
+## Installation
+
+1. Register the app on the Twenty server once (admin API / UI):
+ `twenty-exa` from npm.
+2. Set `isPreInstalled=true` on the registration so it's installed on
+ every new workspace. Existing workspaces can be backfilled via the
+ `install-pre-installed-apps` CLI command.
+3. Set the `EXA_API_KEY` server variable on the registration to your Exa
+ API key. The value is injected into every logic function execution —
+ no per-workspace configuration needed.
+
+## Billing
+
+The handler calls Twenty's generic app billing endpoint
+(`POST /app/billing/charge`) using the application access token injected
+into the execution env. Pricing mirrors Exa's auto-search tier: $0.007
+base (10 results) + $0.001 per additional result.
diff --git a/packages/twenty-apps/internal/exa/package.json b/packages/twenty-apps/internal/exa/package.json
new file mode 100644
index 0000000000..e68fb63b94
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "twenty-exa",
+ "version": "0.1.0",
+ "description": "Structured web search powered by Exa, exposed to Twenty AI agents as a tool.",
+ "license": "MIT",
+ "engines": {
+ "node": "^24.5.0",
+ "npm": "please-use-yarn",
+ "yarn": ">=4.0.2"
+ },
+ "keywords": [
+ "twenty-app"
+ ],
+ "packageManager": "yarn@4.9.2",
+ "scripts": {
+ "twenty": "twenty",
+ "lint": "oxlint -c .oxlintrc.json .",
+ "lint:fix": "oxlint --fix -c .oxlintrc.json .",
+ "test": "vitest run",
+ "test:watch": "vitest"
+ },
+ "dependencies": {
+ "exa-js": "^2.12.1",
+ "twenty-client-sdk": "2.0.0",
+ "twenty-sdk": "2.1.0"
+ },
+ "devDependencies": {
+ "@types/node": "^24.7.2",
+ "oxlint": "^0.16.0",
+ "typescript": "^5.9.3",
+ "vitest": "^3.1.1"
+ }
+}
diff --git a/packages/twenty-apps/internal/exa/public/exa-logo.svg b/packages/twenty-apps/internal/exa/public/exa-logo.svg
new file mode 100644
index 0000000000..b0782d88ad
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/public/exa-logo.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/twenty-apps/internal/exa/public/exa-logomark.svg b/packages/twenty-apps/internal/exa/public/exa-logomark.svg
new file mode 100644
index 0000000000..f8db2791db
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/public/exa-logomark.svg
@@ -0,0 +1,5 @@
+
diff --git a/packages/twenty-apps/internal/exa/src/application.config.ts b/packages/twenty-apps/internal/exa/src/application.config.ts
new file mode 100644
index 0000000000..77f7ecee01
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/src/application.config.ts
@@ -0,0 +1,24 @@
+import { defineApplication } from 'twenty-sdk/define';
+
+import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from './roles/default-function.role';
+
+export const APPLICATION_UNIVERSAL_IDENTIFIER =
+ '2b7f4a2e-9c4b-4a11-b63c-2e5e7d3f5a9a';
+
+export default defineApplication({
+ universalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
+ displayName: 'Exa',
+ description:
+ 'Structured web search powered by Exa. Surfaces entity-aware results (companies, people, research, news) to Twenty AI agents.',
+ icon: 'IconSearch',
+ logoUrl: 'public/exa-logomark.svg',
+ defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
+ serverVariables: {
+ EXA_API_KEY: {
+ description:
+ 'Exa API key. Set by the server admin on this registration after installation; the value is injected into every logic function execution.',
+ isSecret: true,
+ isRequired: true,
+ },
+ },
+});
diff --git a/packages/twenty-apps/internal/exa/src/logic-functions/constants/default-num-results.constant.ts b/packages/twenty-apps/internal/exa/src/logic-functions/constants/default-num-results.constant.ts
new file mode 100644
index 0000000000..8f22471af9
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/src/logic-functions/constants/default-num-results.constant.ts
@@ -0,0 +1 @@
+export const DEFAULT_NUM_RESULTS = 10;
diff --git a/packages/twenty-apps/internal/exa/src/logic-functions/constants/exa-categories.constant.ts b/packages/twenty-apps/internal/exa/src/logic-functions/constants/exa-categories.constant.ts
new file mode 100644
index 0000000000..7bf110893e
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/src/logic-functions/constants/exa-categories.constant.ts
@@ -0,0 +1,11 @@
+// Mirrors exa-js's `BaseSearchOptions['category']` union. Kept as a
+// runtime list so the tool's JSON-Schema `enum` can reference it.
+export const EXA_CATEGORIES = [
+ 'company',
+ 'research paper',
+ 'news',
+ 'pdf',
+ 'personal site',
+ 'financial report',
+ 'people',
+] as const;
diff --git a/packages/twenty-apps/internal/exa/src/logic-functions/exa-web-search.ts b/packages/twenty-apps/internal/exa/src/logic-functions/exa-web-search.ts
new file mode 100644
index 0000000000..8c0741c508
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/src/logic-functions/exa-web-search.ts
@@ -0,0 +1,117 @@
+import Exa from 'exa-js';
+import { chargeCredits } from 'twenty-sdk/billing';
+import { defineLogicFunction } from 'twenty-sdk/define';
+
+import { DEFAULT_NUM_RESULTS } from './constants/default-num-results.constant';
+import { exaWebSearchInputSchema } from './schemas/exa-web-search-input.schema';
+import { type ExaWebSearchInput } from './types/exa-web-search-input.type';
+
+// Number of sentences surfaced per result — keeps the snippet compact
+// enough for an LLM to read many results without blowing the context.
+const HIGHLIGHT_NUM_SENTENCES = 5;
+
+// Inner bound — the runtime's `timeoutSeconds: 30` is the outer kill
+// switch; this one ensures we return a clean error on a slow Exa response.
+const EXA_SEARCH_TIMEOUT_MS = 25_000;
+
+// Exa auto-search pricing (2025): $0.007 covers the first 10 results,
+// $0.001 per additional result. Twenty charges in micro-credits where
+// 1 USD = 1_000_000 micro-credits (DOLLAR_TO_CREDIT_MULTIPLIER).
+const MICRO_CREDITS_PER_DOLLAR = 1_000_000;
+const EXA_BASE_COST_DOLLARS = 0.007;
+const EXA_COST_PER_ADDITIONAL_RESULT_DOLLARS = 0.001;
+
+type ExaSearchResult = {
+ title: string;
+ url: string;
+ snippet: string;
+};
+
+type HandlerResult = {
+ success: boolean;
+ message: string;
+ result?: ExaSearchResult[];
+ error?: string;
+};
+
+const computeMicroCredits = (numResults: number): number => {
+ const additional = Math.max(0, numResults - DEFAULT_NUM_RESULTS);
+ const dollars =
+ EXA_BASE_COST_DOLLARS + additional * EXA_COST_PER_ADDITIONAL_RESULT_DOLLARS;
+
+ return Math.round(dollars * MICRO_CREDITS_PER_DOLLAR);
+};
+
+const handler = async (
+ parameters: ExaWebSearchInput,
+): Promise => {
+ const apiKey = process.env.EXA_API_KEY;
+
+ if (!apiKey) {
+ return {
+ success: false,
+ message: 'Exa is not configured',
+ error:
+ 'EXA_API_KEY is not set. The server admin must provide an Exa API key for this tool to work.',
+ };
+ }
+
+ const query = parameters.query;
+ const numResults = parameters.numResults ?? DEFAULT_NUM_RESULTS;
+ const category = parameters.category;
+
+ try {
+ const exa = new Exa(apiKey);
+
+ // exa-js has no built-in abort — race it manually.
+ const response = await Promise.race([
+ exa.searchAndContents(query, {
+ type: 'auto',
+ numResults,
+ category,
+ highlights: { numSentences: HIGHLIGHT_NUM_SENTENCES },
+ }),
+ new Promise((_, reject) =>
+ setTimeout(
+ () => reject(new Error('Exa search timed out')),
+ EXA_SEARCH_TIMEOUT_MS,
+ ),
+ ),
+ ]);
+
+ const results: ExaSearchResult[] = response.results.map((result) => ({
+ title: result.title ?? '',
+ url: result.url,
+ snippet: result.highlights?.join('\n') ?? '',
+ }));
+
+ await chargeCredits({
+ creditsUsedMicro: computeMicroCredits(results.length),
+ operationType: 'WEB_SEARCH',
+ resourceContext: 'exa',
+ });
+
+ return {
+ success: true,
+ message: `Found ${results.length} results for "${query}"${category ? ` (category: ${category})` : ''}`,
+ result: results,
+ };
+ } catch (error) {
+ return {
+ success: false,
+ message: `Web search failed for "${query}"`,
+ error: error instanceof Error ? error.message : 'Web search failed',
+ };
+ }
+};
+
+export default defineLogicFunction({
+ universalIdentifier: '4c6f9b2a-5d8e-4c2a-af18-3e0b9c6a7e4f',
+ name: 'exa_web_search',
+ description:
+ 'Structured web search powered by Exa. Returns entity-aware results with category filtering (companies, people, research papers, news, and other content types). Prefer this when the query benefits from structured data or a specific category. For general real-time web browsing, prefer the native `web_search` tool when it is available.',
+ timeoutSeconds: 30,
+ isTool: true,
+ toolInputSchema: exaWebSearchInputSchema,
+ handler,
+});
diff --git a/packages/twenty-apps/internal/exa/src/logic-functions/schemas/exa-web-search-input.schema.ts b/packages/twenty-apps/internal/exa/src/logic-functions/schemas/exa-web-search-input.schema.ts
new file mode 100644
index 0000000000..dcd8b1ea58
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/src/logic-functions/schemas/exa-web-search-input.schema.ts
@@ -0,0 +1,31 @@
+import { type InputJsonSchema } from 'twenty-shared/logic-function';
+
+import { DEFAULT_NUM_RESULTS } from '../constants/default-num-results.constant';
+import { EXA_CATEGORIES } from '../constants/exa-categories.constant';
+
+const MAX_NUM_RESULTS = 30;
+
+export const exaWebSearchInputSchema: InputJsonSchema = {
+ type: 'object',
+ properties: {
+ query: {
+ type: 'string',
+ description:
+ 'The search query to look up on the web. Be specific and include relevant keywords for better results.',
+ },
+ category: {
+ type: 'string',
+ enum: [...EXA_CATEGORIES],
+ description:
+ 'Optional content category to focus the search. Use "company" for business/organization info, "people" for person profiles, "news" for recent articles, "research paper" for academic content.',
+ },
+ numResults: {
+ type: 'integer',
+ minimum: 1,
+ maximum: MAX_NUM_RESULTS,
+ description: `Number of search results to return. Defaults to ${DEFAULT_NUM_RESULTS}, max ${MAX_NUM_RESULTS}. Use more results when you need comprehensive coverage.`,
+ },
+ },
+ required: ['query'],
+ additionalProperties: false,
+};
diff --git a/packages/twenty-apps/internal/exa/src/logic-functions/types/exa-web-search-input.type.ts b/packages/twenty-apps/internal/exa/src/logic-functions/types/exa-web-search-input.type.ts
new file mode 100644
index 0000000000..725fe38ffe
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/src/logic-functions/types/exa-web-search-input.type.ts
@@ -0,0 +1,7 @@
+import { type EXA_CATEGORIES } from '../constants/exa-categories.constant';
+
+export type ExaWebSearchInput = {
+ query: string;
+ category?: (typeof EXA_CATEGORIES)[number];
+ numResults?: number;
+};
diff --git a/packages/twenty-apps/internal/exa/src/roles/default-function.role.ts b/packages/twenty-apps/internal/exa/src/roles/default-function.role.ts
new file mode 100644
index 0000000000..20e5d65ef8
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/src/roles/default-function.role.ts
@@ -0,0 +1,25 @@
+import { defineRole } from 'twenty-sdk/define';
+
+export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =
+ '9a55f3d2-f87c-4f1b-a0f3-5d1c6b8a2e4c';
+
+// Exa's logic function never reads workspace data — it only reads
+// EXA_API_KEY and calls Exa's external API — so the role needs no object
+// permissions. Kept explicit so the manifest records the "zero data
+// access" posture.
+export default defineRole({
+ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
+ label: 'Exa function role',
+ description: 'No-op role for the exa_web_search logic function',
+ canReadAllObjectRecords: false,
+ canUpdateAllObjectRecords: false,
+ canSoftDeleteAllObjectRecords: false,
+ canDestroyAllObjectRecords: false,
+ canUpdateAllSettings: false,
+ canBeAssignedToAgents: false,
+ canBeAssignedToUsers: false,
+ canBeAssignedToApiKeys: false,
+ objectPermissions: [],
+ fieldPermissions: [],
+ permissionFlags: [],
+});
diff --git a/packages/twenty-apps/internal/exa/tsconfig.json b/packages/twenty-apps/internal/exa/tsconfig.json
new file mode 100644
index 0000000000..3e0e97756b
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "compileOnSave": false,
+ "compilerOptions": {
+ "sourceMap": true,
+ "declaration": true,
+ "outDir": "./dist",
+ "rootDir": ".",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "importHelpers": true,
+ "allowUnreachableCode": false,
+ "strict": true,
+ "alwaysStrict": true,
+ "noImplicitAny": true,
+ "strictBindCallApply": false,
+ "target": "es2020",
+ "module": "esnext",
+ "lib": ["es2020"],
+ "skipLibCheck": true,
+ "skipDefaultLibCheck": true,
+ "resolveJsonModule": true,
+ "paths": {
+ "src/*": ["./src/*"],
+ "~/*": ["./*"]
+ }
+ },
+ "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
+}
diff --git a/packages/twenty-apps/internal/exa/yarn.lock b/packages/twenty-apps/internal/exa/yarn.lock
new file mode 100644
index 0000000000..82d2fd4dc5
--- /dev/null
+++ b/packages/twenty-apps/internal/exa/yarn.lock
@@ -0,0 +1,4335 @@
+# This file is generated by running "yarn install" inside your project.
+# Manual changes might be lost - proceed with caution!
+
+__metadata:
+ version: 8
+ cacheKey: 10c0
+
+"@alcalzone/ansi-tokenize@npm:^0.2.4":
+ version: 0.2.5
+ resolution: "@alcalzone/ansi-tokenize@npm:0.2.5"
+ dependencies:
+ ansi-styles: "npm:^6.2.1"
+ is-fullwidth-code-point: "npm:^5.0.0"
+ checksum: 10c0/dd8622288426b5b7dbf8b68d51d4b930cea591d0e3b9dbc3f523131464d78ac922c165fcb7ba5307f133d35dbcaa0e6648a1c3fb6a0dc2725546d6f867b70af4
+ languageName: node
+ linkType: hard
+
+"@esbuild/aix-ppc64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/aix-ppc64@npm:0.25.12"
+ conditions: os=aix & cpu=ppc64
+ languageName: node
+ linkType: hard
+
+"@esbuild/aix-ppc64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/aix-ppc64@npm:0.27.7"
+ conditions: os=aix & cpu=ppc64
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/android-arm64@npm:0.25.12"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/android-arm64@npm:0.27.7"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/android-arm@npm:0.25.12"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/android-arm@npm:0.27.7"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/android-x64@npm:0.25.12"
+ conditions: os=android & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/android-x64@npm:0.27.7"
+ conditions: os=android & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/darwin-arm64@npm:0.25.12"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/darwin-arm64@npm:0.27.7"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/darwin-x64@npm:0.25.12"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/darwin-x64@npm:0.27.7"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/freebsd-arm64@npm:0.25.12"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/freebsd-arm64@npm:0.27.7"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/freebsd-x64@npm:0.25.12"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/freebsd-x64@npm:0.27.7"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-arm64@npm:0.25.12"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-arm64@npm:0.27.7"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-arm@npm:0.25.12"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-arm@npm:0.27.7"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ia32@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-ia32@npm:0.25.12"
+ conditions: os=linux & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ia32@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-ia32@npm:0.27.7"
+ conditions: os=linux & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-loong64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-loong64@npm:0.25.12"
+ conditions: os=linux & cpu=loong64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-loong64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-loong64@npm:0.27.7"
+ conditions: os=linux & cpu=loong64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-mips64el@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-mips64el@npm:0.25.12"
+ conditions: os=linux & cpu=mips64el
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-mips64el@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-mips64el@npm:0.27.7"
+ conditions: os=linux & cpu=mips64el
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ppc64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-ppc64@npm:0.25.12"
+ conditions: os=linux & cpu=ppc64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ppc64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-ppc64@npm:0.27.7"
+ conditions: os=linux & cpu=ppc64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-riscv64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-riscv64@npm:0.25.12"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-riscv64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-riscv64@npm:0.27.7"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-s390x@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-s390x@npm:0.25.12"
+ conditions: os=linux & cpu=s390x
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-s390x@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-s390x@npm:0.27.7"
+ conditions: os=linux & cpu=s390x
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/linux-x64@npm:0.25.12"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/linux-x64@npm:0.27.7"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/netbsd-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/netbsd-arm64@npm:0.25.12"
+ conditions: os=netbsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/netbsd-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/netbsd-arm64@npm:0.27.7"
+ conditions: os=netbsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/netbsd-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/netbsd-x64@npm:0.25.12"
+ conditions: os=netbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/netbsd-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/netbsd-x64@npm:0.27.7"
+ conditions: os=netbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openbsd-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/openbsd-arm64@npm:0.25.12"
+ conditions: os=openbsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openbsd-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/openbsd-arm64@npm:0.27.7"
+ conditions: os=openbsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openbsd-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/openbsd-x64@npm:0.25.12"
+ conditions: os=openbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openbsd-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/openbsd-x64@npm:0.27.7"
+ conditions: os=openbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openharmony-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/openharmony-arm64@npm:0.25.12"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openharmony-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/openharmony-arm64@npm:0.27.7"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/sunos-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/sunos-x64@npm:0.25.12"
+ conditions: os=sunos & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/sunos-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/sunos-x64@npm:0.27.7"
+ conditions: os=sunos & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-arm64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/win32-arm64@npm:0.25.12"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-arm64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/win32-arm64@npm:0.27.7"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-ia32@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/win32-ia32@npm:0.25.12"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-ia32@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/win32-ia32@npm:0.27.7"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-x64@npm:0.25.12":
+ version: 0.25.12
+ resolution: "@esbuild/win32-x64@npm:0.25.12"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-x64@npm:0.27.7":
+ version: 0.27.7
+ resolution: "@esbuild/win32-x64@npm:0.27.7"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@fastify/busboy@npm:^2.0.0":
+ version: 2.1.1
+ resolution: "@fastify/busboy@npm:2.1.1"
+ checksum: 10c0/6f8027a8cba7f8f7b736718b013f5a38c0476eea67034c94a0d3c375e2b114366ad4419e6a6fa7ffc2ef9c6d3e0435d76dd584a7a1cbac23962fda7650b579e3
+ languageName: node
+ linkType: hard
+
+"@genql/cli@npm:^3.0.3":
+ version: 3.0.5
+ resolution: "@genql/cli@npm:3.0.5"
+ dependencies:
+ "@graphql-tools/graphql-file-loader": "npm:^7.5.11"
+ "@graphql-tools/load": "npm:^7.8.6"
+ fs-extra: "npm:^10.1.0"
+ graphql: "npm:^16.6.0"
+ kleur: "npm:^4.1.5"
+ listr: "npm:^0.14.3"
+ lodash: "npm:^4.17.21"
+ mkdirp: "npm:^0.5.1"
+ native-fetch: "npm:^4.0.2"
+ prettier: "npm:^2.8.0"
+ qs: "npm:^6.11.0"
+ rimraf: "npm:^2.6.3"
+ undici: "npm:^5.18.0"
+ yargs: "npm:^15.3.1"
+ bin:
+ genql: dist/cli.js
+ checksum: 10c0/646d4da8986741a8f1b610bd8cfb5bc26cd9a856de671461e4ca87fb05443f37dd0edfb3b30ceaa34cd049077873afa07febfd4714dd2e0681fb07484e19a080
+ languageName: node
+ linkType: hard
+
+"@genql/runtime@npm:^2.10.0":
+ version: 2.10.0
+ resolution: "@genql/runtime@npm:2.10.0"
+ dependencies:
+ "@types/qs": "npm:^6.9.0"
+ "@types/ws": "npm:^6.0.1"
+ graphql-query-batcher: "npm:^1.0.1"
+ isomorphic-unfetch: "npm:^3.0.0"
+ lodash: "npm:^4.17.20"
+ subscriptions-transport-ws: "npm:^0.9.16"
+ tslib: "npm:^2.0.0"
+ utility-types: "npm:^3.10.0"
+ ws: "npm:^6.1.4"
+ zen-observable-ts: "npm:^0.8.21"
+ peerDependencies:
+ graphql: "*"
+ checksum: 10c0/e2a886c2469c933681e2b0ddd6a5b7f4cb12932251ba460e3cf2db4246817da79313ea4ba9769ec7cbe53ab9c1cb81ad8fcce6a969cd241185b79398d2a4f3c6
+ languageName: node
+ linkType: hard
+
+"@graphql-tools/graphql-file-loader@npm:^7.5.11":
+ version: 7.5.17
+ resolution: "@graphql-tools/graphql-file-loader@npm:7.5.17"
+ dependencies:
+ "@graphql-tools/import": "npm:6.7.18"
+ "@graphql-tools/utils": "npm:^9.2.1"
+ globby: "npm:^11.0.3"
+ tslib: "npm:^2.4.0"
+ unixify: "npm:^1.0.0"
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ checksum: 10c0/f737f14357731ad01da57755e1cf26ce375b475209d6ab7e4b656b56191a8979d2ab7dd5d1c54a1f11e04374f7a373fa95ea5ec6a001d0cef913ea208fadc65b
+ languageName: node
+ linkType: hard
+
+"@graphql-tools/import@npm:6.7.18":
+ version: 6.7.18
+ resolution: "@graphql-tools/import@npm:6.7.18"
+ dependencies:
+ "@graphql-tools/utils": "npm:^9.2.1"
+ resolve-from: "npm:5.0.0"
+ tslib: "npm:^2.4.0"
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ checksum: 10c0/d33e37a1879dd43ac2851c9bac2f2873c58bb3687f1c06e159760dbb5e540ef074d688df70cc6dbd3ee5de48d437878df8f65a7c65ae80bd025bf98f2d615732
+ languageName: node
+ linkType: hard
+
+"@graphql-tools/load@npm:^7.8.6":
+ version: 7.8.14
+ resolution: "@graphql-tools/load@npm:7.8.14"
+ dependencies:
+ "@graphql-tools/schema": "npm:^9.0.18"
+ "@graphql-tools/utils": "npm:^9.2.1"
+ p-limit: "npm:3.1.0"
+ tslib: "npm:^2.4.0"
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ checksum: 10c0/1fa036ac596ccf48f350aa545d108c173184d9b53247f9e21c0d4ba96c5cba4a0b44281f9154f122e1e8e9d9d6eab93a5b2618ca8a797969bde1e75c1d45e786
+ languageName: node
+ linkType: hard
+
+"@graphql-tools/merge@npm:^8.4.1":
+ version: 8.4.2
+ resolution: "@graphql-tools/merge@npm:8.4.2"
+ dependencies:
+ "@graphql-tools/utils": "npm:^9.2.1"
+ tslib: "npm:^2.4.0"
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ checksum: 10c0/2df55222b48e010e683572f456cf265aabae5748c59f7c1260c66dec9794b7a076d3706f04da969b77f0a32c7ccb4551fee30125931d3fe9c98a8806aae9a3f4
+ languageName: node
+ linkType: hard
+
+"@graphql-tools/schema@npm:^9.0.18":
+ version: 9.0.19
+ resolution: "@graphql-tools/schema@npm:9.0.19"
+ dependencies:
+ "@graphql-tools/merge": "npm:^8.4.1"
+ "@graphql-tools/utils": "npm:^9.2.1"
+ tslib: "npm:^2.4.0"
+ value-or-promise: "npm:^1.0.12"
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ checksum: 10c0/42fd8ca8d3c8d60b583077c201980518482ff0cd5ed0c1f14bd9b835a2689ad41d02cbd3478f7d7dea7aec1227f7639fd5deb5e6360852a2e542b96b44bfb7a4
+ languageName: node
+ linkType: hard
+
+"@graphql-tools/utils@npm:^9.2.1":
+ version: 9.2.1
+ resolution: "@graphql-tools/utils@npm:9.2.1"
+ dependencies:
+ "@graphql-typed-document-node/core": "npm:^3.1.1"
+ tslib: "npm:^2.4.0"
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ checksum: 10c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606
+ languageName: node
+ linkType: hard
+
+"@graphql-typed-document-node/core@npm:^3.1.1":
+ version: 3.2.0
+ resolution: "@graphql-typed-document-node/core@npm:3.2.0"
+ peerDependencies:
+ graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ checksum: 10c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c
+ languageName: node
+ linkType: hard
+
+"@inquirer/checkbox@npm:^2.5.0":
+ version: 2.5.0
+ resolution: "@inquirer/checkbox@npm:2.5.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/figures": "npm:^1.0.5"
+ "@inquirer/type": "npm:^1.5.3"
+ ansi-escapes: "npm:^4.3.2"
+ yoctocolors-cjs: "npm:^2.1.2"
+ checksum: 10c0/679d17ffe3aef0825593f3bc8d193b6c37b860c6cf6e0e9a10d4e60cc254a2dfc5da4a982bf5b9b5147018e456fffcb0b0dadf93ee1914b9d600b0c814284e22
+ languageName: node
+ linkType: hard
+
+"@inquirer/confirm@npm:^3.2.0":
+ version: 3.2.0
+ resolution: "@inquirer/confirm@npm:3.2.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/type": "npm:^1.5.3"
+ checksum: 10c0/a2cbfc8ae9c880bba4cce1993f5c399fb0d12741fdd574917c87fceb40ece62ffa60e35aaadf4e62d7c114f54008e45aee5d6d90497bb62d493996c02725d243
+ languageName: node
+ linkType: hard
+
+"@inquirer/core@npm:^9.1.0":
+ version: 9.2.1
+ resolution: "@inquirer/core@npm:9.2.1"
+ dependencies:
+ "@inquirer/figures": "npm:^1.0.6"
+ "@inquirer/type": "npm:^2.0.0"
+ "@types/mute-stream": "npm:^0.0.4"
+ "@types/node": "npm:^22.5.5"
+ "@types/wrap-ansi": "npm:^3.0.0"
+ ansi-escapes: "npm:^4.3.2"
+ cli-width: "npm:^4.1.0"
+ mute-stream: "npm:^1.0.0"
+ signal-exit: "npm:^4.1.0"
+ strip-ansi: "npm:^6.0.1"
+ wrap-ansi: "npm:^6.2.0"
+ yoctocolors-cjs: "npm:^2.1.2"
+ checksum: 10c0/11c14be77a9fa85831de799a585721b0a49ab2f3b7d8fd1780c48ea2b29229c6bdc94e7892419086d0f7734136c2ba87b6a32e0782571eae5bbd655b1afad453
+ languageName: node
+ linkType: hard
+
+"@inquirer/editor@npm:^2.2.0":
+ version: 2.2.0
+ resolution: "@inquirer/editor@npm:2.2.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/type": "npm:^1.5.3"
+ external-editor: "npm:^3.1.0"
+ checksum: 10c0/b8afc0790a7a5d82998bdfe469cbaa83b0cd0700be432cf95256c548e2a6a494997b5e93d65cbf94979c17b510758cf8494d85559f6b9508eb15d239a7f22aee
+ languageName: node
+ linkType: hard
+
+"@inquirer/expand@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "@inquirer/expand@npm:2.3.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/type": "npm:^1.5.3"
+ yoctocolors-cjs: "npm:^2.1.2"
+ checksum: 10c0/f2030cb482a715e4d5153c19b3f0fd8bf47c16cdc16e1c669e90985386edf4f7b0f3b0e97e2990bb228878b93716228eb067d94fc557c25d3c5ee58747c0a995
+ languageName: node
+ linkType: hard
+
+"@inquirer/figures@npm:^1.0.5, @inquirer/figures@npm:^1.0.6":
+ version: 1.0.15
+ resolution: "@inquirer/figures@npm:1.0.15"
+ checksum: 10c0/6e39a040d260ae234ae220180b7994ff852673e20be925f8aa95e78c7934d732b018cbb4d0ec39e600a410461bcb93dca771e7de23caa10630d255692e440f69
+ languageName: node
+ linkType: hard
+
+"@inquirer/input@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "@inquirer/input@npm:2.3.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/type": "npm:^1.5.3"
+ checksum: 10c0/44c8cea38c9192f528cae556f38709135a00230132deab3b9bb9a925375fce0513fecf4e8c1df7c4319e1ed7aa31fb4dd2c4956c8bc9dd39af087aafff5b6f1f
+ languageName: node
+ linkType: hard
+
+"@inquirer/number@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@inquirer/number@npm:1.1.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/type": "npm:^1.5.3"
+ checksum: 10c0/db472dab57c951c4a083b2a749ce58262b1efd9889e7603de6e9c3f9af7d8dce8fbdfa3859f65402d3587470e0397a076e5fb4ed775db33310f17a42c9faeb20
+ languageName: node
+ linkType: hard
+
+"@inquirer/password@npm:^2.2.0":
+ version: 2.2.0
+ resolution: "@inquirer/password@npm:2.2.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/type": "npm:^1.5.3"
+ ansi-escapes: "npm:^4.3.2"
+ checksum: 10c0/fa4b335164b2c9c3304d29a7214ef93bac8d3da6788146603ea3d0485b8d811151e49bf66cb0dcc729a9dc21406c3a8c2718c5beec572a91d07026d22842c13f
+ languageName: node
+ linkType: hard
+
+"@inquirer/prompts@npm:^5.5.0":
+ version: 5.5.0
+ resolution: "@inquirer/prompts@npm:5.5.0"
+ dependencies:
+ "@inquirer/checkbox": "npm:^2.5.0"
+ "@inquirer/confirm": "npm:^3.2.0"
+ "@inquirer/editor": "npm:^2.2.0"
+ "@inquirer/expand": "npm:^2.3.0"
+ "@inquirer/input": "npm:^2.3.0"
+ "@inquirer/number": "npm:^1.1.0"
+ "@inquirer/password": "npm:^2.2.0"
+ "@inquirer/rawlist": "npm:^2.3.0"
+ "@inquirer/search": "npm:^1.1.0"
+ "@inquirer/select": "npm:^2.5.0"
+ checksum: 10c0/2d62b50ca761b2bd2d5759f48c03758f1af0665ac602c26ae1ae257ac512cf5c27fd82cde108ee0c6371ec39187adc6f45637f31ca79adf5bf96579f23e77143
+ languageName: node
+ linkType: hard
+
+"@inquirer/rawlist@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "@inquirer/rawlist@npm:2.3.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/type": "npm:^1.5.3"
+ yoctocolors-cjs: "npm:^2.1.2"
+ checksum: 10c0/d49d5e12b7a54394c140b27c8d8748ba1ab855c67c01fa72b5a63810f12865df3bf4d5ae929f54fad77b5fc2f7431a332ae1e5fe4babb335380c28917002f364
+ languageName: node
+ linkType: hard
+
+"@inquirer/search@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@inquirer/search@npm:1.1.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/figures": "npm:^1.0.5"
+ "@inquirer/type": "npm:^1.5.3"
+ yoctocolors-cjs: "npm:^2.1.2"
+ checksum: 10c0/20d7e910266b9e3f0dc8eef8f3007f487e6149fa8421d293eaf7c11a1e35c3d82aa30af118b3a6e35eed1048a27d7d806f45722abb10005db5d099ea64b00b17
+ languageName: node
+ linkType: hard
+
+"@inquirer/select@npm:^2.5.0":
+ version: 2.5.0
+ resolution: "@inquirer/select@npm:2.5.0"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/figures": "npm:^1.0.5"
+ "@inquirer/type": "npm:^1.5.3"
+ ansi-escapes: "npm:^4.3.2"
+ yoctocolors-cjs: "npm:^2.1.2"
+ checksum: 10c0/280fa700187ff29da0ad4bf32aa11db776261584ddf5cc1ceac5caebb242a4ac0c5944af522a2579d78b6ec7d6e8b1b9f6564872101abd8dcc69929b4e33fc4c
+ languageName: node
+ linkType: hard
+
+"@inquirer/type@npm:^1.5.3":
+ version: 1.5.5
+ resolution: "@inquirer/type@npm:1.5.5"
+ dependencies:
+ mute-stream: "npm:^1.0.0"
+ checksum: 10c0/4c41736c09ba9426b5a9e44993bdd54e8f532e791518802e33866f233a2a6126a25c1c82c19d1abbf1df627e57b1b957dd3f8318ea96073d8bfc32193943bcb3
+ languageName: node
+ linkType: hard
+
+"@inquirer/type@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@inquirer/type@npm:2.0.0"
+ dependencies:
+ mute-stream: "npm:^1.0.0"
+ checksum: 10c0/8c663d52beb2b89a896d3c3d5cc3d6d024fa149e565555bcb42fa640cbe23fba7ff2c51445342cef1fe6e46305e2d16c1590fa1d11ad0ddf93a67b655ef41f0a
+ languageName: node
+ linkType: hard
+
+"@isaacs/fs-minipass@npm:^4.0.0":
+ version: 4.0.1
+ resolution: "@isaacs/fs-minipass@npm:4.0.1"
+ dependencies:
+ minipass: "npm:^7.0.4"
+ checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2
+ languageName: node
+ linkType: hard
+
+"@jridgewell/sourcemap-codec@npm:^1.5.5":
+ version: 1.5.5
+ resolution: "@jridgewell/sourcemap-codec@npm:1.5.5"
+ checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.scandir@npm:2.1.5":
+ version: 2.1.5
+ resolution: "@nodelib/fs.scandir@npm:2.1.5"
+ dependencies:
+ "@nodelib/fs.stat": "npm:2.0.5"
+ run-parallel: "npm:^1.1.9"
+ checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2":
+ version: 2.0.5
+ resolution: "@nodelib/fs.stat@npm:2.0.5"
+ checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.walk@npm:^1.2.3":
+ version: 1.2.8
+ resolution: "@nodelib/fs.walk@npm:1.2.8"
+ dependencies:
+ "@nodelib/fs.scandir": "npm:2.1.5"
+ fastq: "npm:^1.6.0"
+ checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1
+ languageName: node
+ linkType: hard
+
+"@oxlint/darwin-arm64@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/darwin-arm64@npm:0.16.12"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint/darwin-x64@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/darwin-x64@npm:0.16.12"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@oxlint/linux-arm64-gnu@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/linux-arm64-gnu@npm:0.16.12"
+ conditions: os=linux & cpu=arm64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@oxlint/linux-arm64-musl@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/linux-arm64-musl@npm:0.16.12"
+ conditions: os=linux & cpu=arm64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@oxlint/linux-x64-gnu@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/linux-x64-gnu@npm:0.16.12"
+ conditions: os=linux & cpu=x64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@oxlint/linux-x64-musl@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/linux-x64-musl@npm:0.16.12"
+ conditions: os=linux & cpu=x64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@oxlint/win32-arm64@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/win32-arm64@npm:0.16.12"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint/win32-x64@npm:0.16.12":
+ version: 0.16.12
+ resolution: "@oxlint/win32-x64@npm:0.16.12"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-android-arm-eabi@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-android-arm-eabi@npm:4.60.2"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-android-arm64@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-android-arm64@npm:4.60.2"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-darwin-arm64@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-darwin-arm64@npm:4.60.2"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-darwin-x64@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-darwin-x64@npm:4.60.2"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-freebsd-arm64@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-freebsd-arm64@npm:4.60.2"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-freebsd-x64@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-freebsd-x64@npm:4.60.2"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-arm-gnueabihf@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.2"
+ conditions: os=linux & cpu=arm & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-arm-musleabihf@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.60.2"
+ conditions: os=linux & cpu=arm & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-arm64-gnu@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.60.2"
+ conditions: os=linux & cpu=arm64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-arm64-musl@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-arm64-musl@npm:4.60.2"
+ conditions: os=linux & cpu=arm64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-loong64-gnu@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.60.2"
+ conditions: os=linux & cpu=loong64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-loong64-musl@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-loong64-musl@npm:4.60.2"
+ conditions: os=linux & cpu=loong64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-ppc64-gnu@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.60.2"
+ conditions: os=linux & cpu=ppc64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-ppc64-musl@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.60.2"
+ conditions: os=linux & cpu=ppc64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-riscv64-gnu@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.60.2"
+ conditions: os=linux & cpu=riscv64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-riscv64-musl@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.60.2"
+ conditions: os=linux & cpu=riscv64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-s390x-gnu@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.60.2"
+ conditions: os=linux & cpu=s390x & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-x64-gnu@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-x64-gnu@npm:4.60.2"
+ conditions: os=linux & cpu=x64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-linux-x64-musl@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-linux-x64-musl@npm:4.60.2"
+ conditions: os=linux & cpu=x64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-openbsd-x64@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-openbsd-x64@npm:4.60.2"
+ conditions: os=openbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-openharmony-arm64@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-openharmony-arm64@npm:4.60.2"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-win32-arm64-msvc@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.60.2"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-win32-ia32-msvc@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.60.2"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-win32-x64-gnu@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-win32-x64-gnu@npm:4.60.2"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@rollup/rollup-win32-x64-msvc@npm:4.60.2":
+ version: 4.60.2
+ resolution: "@rollup/rollup-win32-x64-msvc@npm:4.60.2"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@samverschueren/stream-to-observable@npm:^0.3.0":
+ version: 0.3.1
+ resolution: "@samverschueren/stream-to-observable@npm:0.3.1"
+ dependencies:
+ any-observable: "npm:^0.3.0"
+ peerDependenciesMeta:
+ rxjs:
+ optional: true
+ zen-observable:
+ optional: true
+ checksum: 10c0/0d874453f6bc2460d71783292291f52feb36c2a75314b1072a6ffe6206562f33e9d664a554348d565a6b54da9041d75070371052545bc329caaa52f64216987f
+ languageName: node
+ linkType: hard
+
+"@sniptt/guards@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "@sniptt/guards@npm:0.2.0"
+ checksum: 10c0/749bb0f550d1ddd4abdb23dc1076cba26e977659922b73d000bceeb253c09270aaced0d18e92f09d4ce2fdaae33e55f60f2142f5359bc90ba505422af0873526
+ languageName: node
+ linkType: hard
+
+"@types/chai@npm:^5.2.2":
+ version: 5.2.3
+ resolution: "@types/chai@npm:5.2.3"
+ dependencies:
+ "@types/deep-eql": "npm:*"
+ assertion-error: "npm:^2.0.1"
+ checksum: 10c0/e0ef1de3b6f8045a5e473e867c8565788c444271409d155588504840ad1a53611011f85072188c2833941189400228c1745d78323dac13fcede9c2b28bacfb2f
+ languageName: node
+ linkType: hard
+
+"@types/deep-eql@npm:*":
+ version: 4.0.2
+ resolution: "@types/deep-eql@npm:4.0.2"
+ checksum: 10c0/bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844
+ languageName: node
+ linkType: hard
+
+"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.0":
+ version: 1.0.8
+ resolution: "@types/estree@npm:1.0.8"
+ checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5
+ languageName: node
+ linkType: hard
+
+"@types/mute-stream@npm:^0.0.4":
+ version: 0.0.4
+ resolution: "@types/mute-stream@npm:0.0.4"
+ dependencies:
+ "@types/node": "npm:*"
+ checksum: 10c0/944730fd7b398c5078de3c3d4d0afeec8584283bc694da1803fdfca14149ea385e18b1b774326f1601baf53898ce6d121a952c51eb62d188ef6fcc41f725c0dc
+ languageName: node
+ linkType: hard
+
+"@types/node@npm:*":
+ version: 25.6.0
+ resolution: "@types/node@npm:25.6.0"
+ dependencies:
+ undici-types: "npm:~7.19.0"
+ checksum: 10c0/d2d2015630ff098a201407f55f5077a20270ae4f465c739b40865cd9933b91b9c5d2b85568eadaf3db0801b91e267333ca7eb39f007428b173d1cdab4b339ac5
+ languageName: node
+ linkType: hard
+
+"@types/node@npm:^22.5.5":
+ version: 22.19.17
+ resolution: "@types/node@npm:22.19.17"
+ dependencies:
+ undici-types: "npm:~6.21.0"
+ checksum: 10c0/b66c484c0a9f6d88b1ef360b0f487717234ee1a482cb2551ff73d9f3c43a42a777daf4c8a5eee970960728f8fe1f3877d3d8c6ffabcbca74cb401a59db700fa4
+ languageName: node
+ linkType: hard
+
+"@types/node@npm:^24.7.2":
+ version: 24.12.2
+ resolution: "@types/node@npm:24.12.2"
+ dependencies:
+ undici-types: "npm:~7.16.0"
+ checksum: 10c0/710050c42f89075c4479e4e1e4c2532486b0c41b1e2a8a13ad88641c88b88cdaea87414e19224f30028719737bd70e327edcaa184d50e86b9418941edd7eb02b
+ languageName: node
+ linkType: hard
+
+"@types/qs@npm:^6.9.0":
+ version: 6.15.0
+ resolution: "@types/qs@npm:6.15.0"
+ checksum: 10c0/1b104cac50e655fc41d7fc1de2c2aba2908c4cf833a555b6808fb4c96752662b439238f2392a15d2590a7a6ca75dbd40e42d9378ac2be0d548ee484954363688
+ languageName: node
+ linkType: hard
+
+"@types/wrap-ansi@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "@types/wrap-ansi@npm:3.0.0"
+ checksum: 10c0/8d8f53363f360f38135301a06b596c295433ad01debd082078c33c6ed98b05a5c8fe8853a88265432126096084f4a135ec1564e3daad631b83296905509f90b3
+ languageName: node
+ linkType: hard
+
+"@types/ws@npm:^6.0.1":
+ version: 6.0.4
+ resolution: "@types/ws@npm:6.0.4"
+ dependencies:
+ "@types/node": "npm:*"
+ checksum: 10c0/fa958e64596ca9487c3ed6012834de70b47f25d971f1950cfb8e6a99cb77ff340ae82ac7627744e01b58010674ef8ede07d5a2ac29ca9ad0d67a430fcc69ae14
+ languageName: node
+ linkType: hard
+
+"@vitest/expect@npm:3.2.4":
+ version: 3.2.4
+ resolution: "@vitest/expect@npm:3.2.4"
+ dependencies:
+ "@types/chai": "npm:^5.2.2"
+ "@vitest/spy": "npm:3.2.4"
+ "@vitest/utils": "npm:3.2.4"
+ chai: "npm:^5.2.0"
+ tinyrainbow: "npm:^2.0.0"
+ checksum: 10c0/7586104e3fd31dbe1e6ecaafb9a70131e4197dce2940f727b6a84131eee3decac7b10f9c7c72fa5edbdb68b6f854353bd4c0fa84779e274207fb7379563b10db
+ languageName: node
+ linkType: hard
+
+"@vitest/mocker@npm:3.2.4":
+ version: 3.2.4
+ resolution: "@vitest/mocker@npm:3.2.4"
+ dependencies:
+ "@vitest/spy": "npm:3.2.4"
+ estree-walker: "npm:^3.0.3"
+ magic-string: "npm:^0.30.17"
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+ checksum: 10c0/f7a4aea19bbbf8f15905847ee9143b6298b2c110f8b64789224cb0ffdc2e96f9802876aa2ca83f1ec1b6e1ff45e822abb34f0054c24d57b29ab18add06536ccd
+ languageName: node
+ linkType: hard
+
+"@vitest/pretty-format@npm:3.2.4, @vitest/pretty-format@npm:^3.2.4":
+ version: 3.2.4
+ resolution: "@vitest/pretty-format@npm:3.2.4"
+ dependencies:
+ tinyrainbow: "npm:^2.0.0"
+ checksum: 10c0/5ad7d4278e067390d7d633e307fee8103958806a419ca380aec0e33fae71b44a64415f7a9b4bc11635d3c13d4a9186111c581d3cef9c65cc317e68f077456887
+ languageName: node
+ linkType: hard
+
+"@vitest/runner@npm:3.2.4":
+ version: 3.2.4
+ resolution: "@vitest/runner@npm:3.2.4"
+ dependencies:
+ "@vitest/utils": "npm:3.2.4"
+ pathe: "npm:^2.0.3"
+ strip-literal: "npm:^3.0.0"
+ checksum: 10c0/e8be51666c72b3668ae3ea348b0196656a4a5adb836cb5e270720885d9517421815b0d6c98bfdf1795ed02b994b7bfb2b21566ee356a40021f5bf4f6ed4e418a
+ languageName: node
+ linkType: hard
+
+"@vitest/snapshot@npm:3.2.4":
+ version: 3.2.4
+ resolution: "@vitest/snapshot@npm:3.2.4"
+ dependencies:
+ "@vitest/pretty-format": "npm:3.2.4"
+ magic-string: "npm:^0.30.17"
+ pathe: "npm:^2.0.3"
+ checksum: 10c0/f8301a3d7d1559fd3d59ed51176dd52e1ed5c2d23aa6d8d6aa18787ef46e295056bc726a021698d8454c16ed825ecba163362f42fa90258bb4a98cfd2c9424fc
+ languageName: node
+ linkType: hard
+
+"@vitest/spy@npm:3.2.4":
+ version: 3.2.4
+ resolution: "@vitest/spy@npm:3.2.4"
+ dependencies:
+ tinyspy: "npm:^4.0.3"
+ checksum: 10c0/6ebf0b4697dc238476d6b6a60c76ba9eb1dd8167a307e30f08f64149612fd50227682b876420e4c2e09a76334e73f72e3ebf0e350714dc22474258292e202024
+ languageName: node
+ linkType: hard
+
+"@vitest/utils@npm:3.2.4":
+ version: 3.2.4
+ resolution: "@vitest/utils@npm:3.2.4"
+ dependencies:
+ "@vitest/pretty-format": "npm:3.2.4"
+ loupe: "npm:^3.1.4"
+ tinyrainbow: "npm:^2.0.0"
+ checksum: 10c0/024a9b8c8bcc12cf40183c246c244b52ecff861c6deb3477cbf487ac8781ad44c68a9c5fd69f8c1361878e55b97c10d99d511f2597f1f7244b5e5101d028ba64
+ languageName: node
+ linkType: hard
+
+"abbrev@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "abbrev@npm:4.0.0"
+ checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5
+ languageName: node
+ linkType: hard
+
+"ansi-escapes@npm:^3.0.0":
+ version: 3.2.0
+ resolution: "ansi-escapes@npm:3.2.0"
+ checksum: 10c0/084e1ce38139ad2406f18a8e7efe2b850ddd06ce3c00f633392d1ce67756dab44fe290e573d09ef3c9a0cb13c12881e0e35a8f77a017d39a0a4ab85ae2fae04f
+ languageName: node
+ linkType: hard
+
+"ansi-escapes@npm:^4.3.2":
+ version: 4.3.2
+ resolution: "ansi-escapes@npm:4.3.2"
+ dependencies:
+ type-fest: "npm:^0.21.3"
+ checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50
+ languageName: node
+ linkType: hard
+
+"ansi-escapes@npm:^7.3.0":
+ version: 7.3.0
+ resolution: "ansi-escapes@npm:7.3.0"
+ dependencies:
+ environment: "npm:^1.0.0"
+ checksum: 10c0/068961d99f0ef28b661a4a9f84a5d645df93ccf3b9b93816cc7d46bbe1913321d4cdf156bb842a4e1e4583b7375c631fa963efb43001c4eb7ff9ab8f78fc0679
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^2.0.0":
+ version: 2.1.1
+ resolution: "ansi-regex@npm:2.1.1"
+ checksum: 10c0/78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "ansi-regex@npm:3.0.1"
+ checksum: 10c0/d108a7498b8568caf4a46eea4f1784ab4e0dfb2e3f3938c697dee21443d622d765c958f2b7e2b9f6b9e55e2e2af0584eaa9915d51782b89a841c28e744e7a167
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "ansi-regex@npm:5.0.1"
+ checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^6.2.2":
+ version: 6.2.2
+ resolution: "ansi-regex@npm:6.2.2"
+ checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^2.2.1":
+ version: 2.2.1
+ resolution: "ansi-styles@npm:2.2.1"
+ checksum: 10c0/7c68aed4f1857389e7a12f85537ea5b40d832656babbf511cc7ecd9efc52889b9c3e5653a71a6aade783c3c5e0aa223ad4ff8e83c27ac8a666514e6c79068cab
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^3.2.1":
+ version: 3.2.1
+ resolution: "ansi-styles@npm:3.2.1"
+ dependencies:
+ color-convert: "npm:^1.9.0"
+ checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^4.0.0":
+ version: 4.3.0
+ resolution: "ansi-styles@npm:4.3.0"
+ dependencies:
+ color-convert: "npm:^2.0.1"
+ checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^6.2.1, ansi-styles@npm:^6.2.3":
+ version: 6.2.3
+ resolution: "ansi-styles@npm:6.2.3"
+ checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868
+ languageName: node
+ linkType: hard
+
+"any-observable@npm:^0.3.0":
+ version: 0.3.0
+ resolution: "any-observable@npm:0.3.0"
+ checksum: 10c0/104c2b79c2ac7e6c75b35f8fd62babf73015668f22bd25336c6f848350d91f9e7daf2fddbf1c1b76fe795e89fbc91b49f70a2aec5c69f1acf0562c344f36042b
+ languageName: node
+ linkType: hard
+
+"array-union@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "array-union@npm:2.1.0"
+ checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962
+ languageName: node
+ linkType: hard
+
+"assertion-error@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "assertion-error@npm:2.0.1"
+ checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8
+ languageName: node
+ linkType: hard
+
+"async-function@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "async-function@npm:1.0.0"
+ checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73
+ languageName: node
+ linkType: hard
+
+"async-generator-function@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "async-generator-function@npm:1.0.0"
+ checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186
+ languageName: node
+ linkType: hard
+
+"async-limiter@npm:~1.0.0":
+ version: 1.0.1
+ resolution: "async-limiter@npm:1.0.1"
+ checksum: 10c0/0693d378cfe86842a70d4c849595a0bb50dc44c11649640ca982fa90cbfc74e3cc4753b5a0847e51933f2e9c65ce8e05576e75e5e1fd963a086e673735b35969
+ languageName: node
+ linkType: hard
+
+"asynckit@npm:^0.4.0":
+ version: 0.4.0
+ resolution: "asynckit@npm:0.4.0"
+ checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d
+ languageName: node
+ linkType: hard
+
+"auto-bind@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "auto-bind@npm:5.0.1"
+ checksum: 10c0/a703375350ea7b6e92405d8e6bcc6dbfb84b0d7c7172b33e5788a7593929a18227999ff9aa9c32436741d06d021e6672457b1cec73287efe3fab95cff6627eaf
+ languageName: node
+ linkType: hard
+
+"axios@npm:^1.13.5":
+ version: 1.15.2
+ resolution: "axios@npm:1.15.2"
+ dependencies:
+ follow-redirects: "npm:^1.15.11"
+ form-data: "npm:^4.0.5"
+ proxy-from-env: "npm:^2.1.0"
+ checksum: 10c0/4eeae0feeaa7fdc1ef24f81f8b378fdadedf4aebdd6bf224484675160f8744cf17b9b0d1c215279979940f7e8ce463beffa2f713099612e428eac238515c81d5
+ languageName: node
+ linkType: hard
+
+"backo2@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "backo2@npm:1.0.2"
+ checksum: 10c0/a9e825a6a38a6d1c4a94476eabc13d6127dfaafb0967baf104affbb67806ae26abbb58dab8d572d2cd21ef06634ff57c3ad48dff14b904e18de1474cc2f22bf3
+ languageName: node
+ linkType: hard
+
+"balanced-match@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "balanced-match@npm:1.0.2"
+ checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee
+ languageName: node
+ linkType: hard
+
+"brace-expansion@npm:^1.1.7":
+ version: 1.1.14
+ resolution: "brace-expansion@npm:1.1.14"
+ dependencies:
+ balanced-match: "npm:^1.0.0"
+ concat-map: "npm:0.0.1"
+ checksum: 10c0/b6fdac832bc4e36a753658c9ed052c2e1a2be221763b002df25d1efbf7d21724334e726a6cd5eadc72a4b19ec3efb632d629cc003bc9c62f7af7a7915ffa4385
+ languageName: node
+ linkType: hard
+
+"braces@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "braces@npm:3.0.3"
+ dependencies:
+ fill-range: "npm:^7.1.1"
+ checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04
+ languageName: node
+ linkType: hard
+
+"cac@npm:^6.7.14":
+ version: 6.7.14
+ resolution: "cac@npm:6.7.14"
+ checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10
+ languageName: node
+ linkType: hard
+
+"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "call-bind-apply-helpers@npm:1.0.2"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ function-bind: "npm:^1.1.2"
+ checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938
+ languageName: node
+ linkType: hard
+
+"call-bound@npm:^1.0.2":
+ version: 1.0.4
+ resolution: "call-bound@npm:1.0.4"
+ dependencies:
+ call-bind-apply-helpers: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.3.0"
+ checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644
+ languageName: node
+ linkType: hard
+
+"camelcase@npm:^5.0.0":
+ version: 5.3.1
+ resolution: "camelcase@npm:5.3.1"
+ checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23
+ languageName: node
+ linkType: hard
+
+"chai@npm:^5.2.0":
+ version: 5.3.3
+ resolution: "chai@npm:5.3.3"
+ dependencies:
+ assertion-error: "npm:^2.0.1"
+ check-error: "npm:^2.1.1"
+ deep-eql: "npm:^5.0.1"
+ loupe: "npm:^3.1.0"
+ pathval: "npm:^2.0.0"
+ checksum: 10c0/b360fd4d38861622e5010c2f709736988b05c7f31042305fa3f4e9911f6adb80ccfb4e302068bf8ed10e835c2e2520cba0f5edc13d878b886987e5aa62483f53
+ languageName: node
+ linkType: hard
+
+"chalk@npm:^1.0.0, chalk@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "chalk@npm:1.1.3"
+ dependencies:
+ ansi-styles: "npm:^2.2.1"
+ escape-string-regexp: "npm:^1.0.2"
+ has-ansi: "npm:^2.0.0"
+ strip-ansi: "npm:^3.0.0"
+ supports-color: "npm:^2.0.0"
+ checksum: 10c0/28c3e399ec286bb3a7111fd4225ebedb0d7b813aef38a37bca7c498d032459c265ef43404201d5fbb8d888d29090899c95335b4c0cda13e8b126ff15c541cef8
+ languageName: node
+ linkType: hard
+
+"chalk@npm:^2.4.1":
+ version: 2.4.2
+ resolution: "chalk@npm:2.4.2"
+ dependencies:
+ ansi-styles: "npm:^3.2.1"
+ escape-string-regexp: "npm:^1.0.5"
+ supports-color: "npm:^5.3.0"
+ checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073
+ languageName: node
+ linkType: hard
+
+"chalk@npm:^5.3.0, chalk@npm:^5.6.0":
+ version: 5.6.2
+ resolution: "chalk@npm:5.6.2"
+ checksum: 10c0/99a4b0f0e7991796b1e7e3f52dceb9137cae2a9dfc8fc0784a550dc4c558e15ab32ed70b14b21b52beb2679b4892b41a0aa44249bcb996f01e125d58477c6976
+ languageName: node
+ linkType: hard
+
+"chardet@npm:^0.7.0":
+ version: 0.7.0
+ resolution: "chardet@npm:0.7.0"
+ checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d
+ languageName: node
+ linkType: hard
+
+"check-error@npm:^2.1.1":
+ version: 2.1.3
+ resolution: "check-error@npm:2.1.3"
+ checksum: 10c0/878e99038fb6476316b74668cd6a498c7e66df3efe48158fa40db80a06ba4258742ac3ee2229c4a2a98c5e73f5dff84eb3e50ceb6b65bbd8f831eafc8338607d
+ languageName: node
+ linkType: hard
+
+"chokidar@npm:^4.0.0":
+ version: 4.0.3
+ resolution: "chokidar@npm:4.0.3"
+ dependencies:
+ readdirp: "npm:^4.0.1"
+ checksum: 10c0/a58b9df05bb452f7d105d9e7229ac82fa873741c0c40ddcc7bb82f8a909fbe3f7814c9ebe9bc9a2bef9b737c0ec6e2d699d179048ef06ad3ec46315df0ebe6ad
+ languageName: node
+ linkType: hard
+
+"chownr@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "chownr@npm:3.0.0"
+ checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10
+ languageName: node
+ linkType: hard
+
+"cli-boxes@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "cli-boxes@npm:3.0.0"
+ checksum: 10c0/4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9
+ languageName: node
+ linkType: hard
+
+"cli-cursor@npm:^2.0.0, cli-cursor@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "cli-cursor@npm:2.1.0"
+ dependencies:
+ restore-cursor: "npm:^2.0.0"
+ checksum: 10c0/09ee6d8b5b818d840bf80ec9561eaf696672197d3a02a7daee2def96d5f52ce6e0bbe7afca754ccf14f04830b5a1b4556273e983507d5029f95bba3016618eda
+ languageName: node
+ linkType: hard
+
+"cli-cursor@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "cli-cursor@npm:4.0.0"
+ dependencies:
+ restore-cursor: "npm:^4.0.0"
+ checksum: 10c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c
+ languageName: node
+ linkType: hard
+
+"cli-truncate@npm:^0.2.1":
+ version: 0.2.1
+ resolution: "cli-truncate@npm:0.2.1"
+ dependencies:
+ slice-ansi: "npm:0.0.4"
+ string-width: "npm:^1.0.1"
+ checksum: 10c0/c6caa5e2b70d841c42f4a2270d6fc7129df915f8911e4afa90c79231ccc857cd819a2c90e0707fde04e51ce56b4d71646b843f6cbaff4f7cdcb3b91ed51f6e89
+ languageName: node
+ linkType: hard
+
+"cli-truncate@npm:^5.1.1":
+ version: 5.2.0
+ resolution: "cli-truncate@npm:5.2.0"
+ dependencies:
+ slice-ansi: "npm:^8.0.0"
+ string-width: "npm:^8.2.0"
+ checksum: 10c0/0d4ec94702ca85b64522ac93633837fb5ea7db17b79b1322a60f6045e6ae2b8cd7bd4c1d19ac7d1f9e10e3bbda1112e172e439b68c02b785ee00da8d6a5c5471
+ languageName: node
+ linkType: hard
+
+"cli-width@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "cli-width@npm:4.1.0"
+ checksum: 10c0/1fbd56413578f6117abcaf858903ba1f4ad78370a4032f916745fa2c7e390183a9d9029cf837df320b0fdce8137668e522f60a30a5f3d6529ff3872d265a955f
+ languageName: node
+ linkType: hard
+
+"cliui@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "cliui@npm:6.0.0"
+ dependencies:
+ string-width: "npm:^4.2.0"
+ strip-ansi: "npm:^6.0.0"
+ wrap-ansi: "npm:^6.2.0"
+ checksum: 10c0/35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492
+ languageName: node
+ linkType: hard
+
+"code-excerpt@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "code-excerpt@npm:4.0.0"
+ dependencies:
+ convert-to-spaces: "npm:^2.0.1"
+ checksum: 10c0/b6c5a06e039cecd2ab6a0e10ee0831de8362107d1f298ca3558b5f9004cb8e0260b02dd6c07f57b9a0e346c76864d2873311ee1989809fdeb05bd5fbbadde773
+ languageName: node
+ linkType: hard
+
+"code-point-at@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "code-point-at@npm:1.1.0"
+ checksum: 10c0/33f6b234084e46e6e369b6f0b07949392651b4dde70fc6a592a8d3dafa08d5bb32e3981a02f31f6fc323a26bc03a4c063a9d56834848695bda7611c2417ea2e6
+ languageName: node
+ linkType: hard
+
+"color-convert@npm:^1.9.0":
+ version: 1.9.3
+ resolution: "color-convert@npm:1.9.3"
+ dependencies:
+ color-name: "npm:1.1.3"
+ checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c
+ languageName: node
+ linkType: hard
+
+"color-convert@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "color-convert@npm:2.0.1"
+ dependencies:
+ color-name: "npm:~1.1.4"
+ checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7
+ languageName: node
+ linkType: hard
+
+"color-name@npm:1.1.3":
+ version: 1.1.3
+ resolution: "color-name@npm:1.1.3"
+ checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6
+ languageName: node
+ linkType: hard
+
+"color-name@npm:~1.1.4":
+ version: 1.1.4
+ resolution: "color-name@npm:1.1.4"
+ checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
+ languageName: node
+ linkType: hard
+
+"combined-stream@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "combined-stream@npm:1.0.8"
+ dependencies:
+ delayed-stream: "npm:~1.0.0"
+ checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5
+ languageName: node
+ linkType: hard
+
+"commander@npm:^12.0.0":
+ version: 12.1.0
+ resolution: "commander@npm:12.1.0"
+ checksum: 10c0/6e1996680c083b3b897bfc1cfe1c58dfbcd9842fd43e1aaf8a795fbc237f65efcc860a3ef457b318e73f29a4f4a28f6403c3d653d021d960e4632dd45bde54a9
+ languageName: node
+ linkType: hard
+
+"concat-map@npm:0.0.1":
+ version: 0.0.1
+ resolution: "concat-map@npm:0.0.1"
+ checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
+ languageName: node
+ linkType: hard
+
+"convert-to-spaces@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "convert-to-spaces@npm:2.0.1"
+ checksum: 10c0/d90aa0e3b6a27f9d5265a8d32def3c5c855b3e823a9db1f26d772f8146d6b91020a2fdfd905ce8048a73fad3aaf836fef8188c67602c374405e2ae8396c4ac46
+ languageName: node
+ linkType: hard
+
+"cross-fetch@npm:~4.1.0":
+ version: 4.1.0
+ resolution: "cross-fetch@npm:4.1.0"
+ dependencies:
+ node-fetch: "npm:^2.7.0"
+ checksum: 10c0/628b134ea27cfcada67025afe6ef1419813fffc5d63d175553efa75a2334522d450300a0f3f0719029700da80e96327930709d5551cf6deb39bb62f1d536642e
+ languageName: node
+ linkType: hard
+
+"date-fns@npm:^1.27.2":
+ version: 1.30.1
+ resolution: "date-fns@npm:1.30.1"
+ checksum: 10c0/bad6ad7c15180121e15d61ad62a4a214c108d66f35b35f5eeb6ade837a3c29aa4444b9528a93a5374b95ba11231c142276351bf52f4d168676f9a1e17ce3726a
+ languageName: node
+ linkType: hard
+
+"debug@npm:^4.1.1, debug@npm:^4.4.1":
+ version: 4.4.3
+ resolution: "debug@npm:4.4.3"
+ dependencies:
+ ms: "npm:^2.1.3"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6
+ languageName: node
+ linkType: hard
+
+"decamelize@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "decamelize@npm:1.2.0"
+ checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2
+ languageName: node
+ linkType: hard
+
+"deep-eql@npm:^5.0.1":
+ version: 5.0.2
+ resolution: "deep-eql@npm:5.0.2"
+ checksum: 10c0/7102cf3b7bb719c6b9c0db2e19bf0aa9318d141581befe8c7ce8ccd39af9eaa4346e5e05adef7f9bd7015da0f13a3a25dcfe306ef79dc8668aedbecb658dd247
+ languageName: node
+ linkType: hard
+
+"delayed-stream@npm:~1.0.0":
+ version: 1.0.0
+ resolution: "delayed-stream@npm:1.0.0"
+ checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19
+ languageName: node
+ linkType: hard
+
+"dir-glob@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "dir-glob@npm:3.0.1"
+ dependencies:
+ path-type: "npm:^4.0.0"
+ checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c
+ languageName: node
+ linkType: hard
+
+"dotenv@npm:^16.4.0":
+ version: 16.6.1
+ resolution: "dotenv@npm:16.6.1"
+ checksum: 10c0/15ce56608326ea0d1d9414a5c8ee6dcf0fffc79d2c16422b4ac2268e7e2d76ff5a572d37ffe747c377de12005f14b3cc22361e79fc7f1061cce81f77d2c973dc
+ languageName: node
+ linkType: hard
+
+"dotenv@npm:~16.4.7":
+ version: 16.4.7
+ resolution: "dotenv@npm:16.4.7"
+ checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462
+ languageName: node
+ linkType: hard
+
+"dunder-proto@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "dunder-proto@npm:1.0.1"
+ dependencies:
+ call-bind-apply-helpers: "npm:^1.0.1"
+ es-errors: "npm:^1.3.0"
+ gopd: "npm:^1.2.0"
+ checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031
+ languageName: node
+ linkType: hard
+
+"elegant-spinner@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "elegant-spinner@npm:1.0.1"
+ checksum: 10c0/df607c83c20fc3ce56c514175dd5d1ee7f667da00cee13d04d32c70d55e76555091fa236689e691cf7dedba17b0020fec635e499cdde84dbea2ef8639314e5f8
+ languageName: node
+ linkType: hard
+
+"emoji-regex@npm:^10.3.0":
+ version: 10.6.0
+ resolution: "emoji-regex@npm:10.6.0"
+ checksum: 10c0/1e4aa097bb007301c3b4b1913879ae27327fdc48e93eeefefe3b87e495eb33c5af155300be951b4349ff6ac084f4403dc9eff970acba7c1c572d89396a9a32d7
+ languageName: node
+ linkType: hard
+
+"emoji-regex@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "emoji-regex@npm:8.0.0"
+ checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010
+ languageName: node
+ linkType: hard
+
+"env-paths@npm:^2.2.0":
+ version: 2.2.1
+ resolution: "env-paths@npm:2.2.1"
+ checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4
+ languageName: node
+ linkType: hard
+
+"environment@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "environment@npm:1.1.0"
+ checksum: 10c0/fb26434b0b581ab397039e51ff3c92b34924a98b2039dcb47e41b7bca577b9dbf134a8eadb364415c74464b682e2d3afe1a4c0eb9873dc44ea814c5d3103331d
+ languageName: node
+ linkType: hard
+
+"es-define-property@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "es-define-property@npm:1.0.1"
+ checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c
+ languageName: node
+ linkType: hard
+
+"es-errors@npm:^1.3.0":
+ version: 1.3.0
+ resolution: "es-errors@npm:1.3.0"
+ checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85
+ languageName: node
+ linkType: hard
+
+"es-module-lexer@npm:^1.7.0":
+ version: 1.7.0
+ resolution: "es-module-lexer@npm:1.7.0"
+ checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b
+ languageName: node
+ linkType: hard
+
+"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "es-object-atoms@npm:1.1.1"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c
+ languageName: node
+ linkType: hard
+
+"es-set-tostringtag@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "es-set-tostringtag@npm:2.1.0"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ get-intrinsic: "npm:^1.2.6"
+ has-tostringtag: "npm:^1.0.2"
+ hasown: "npm:^2.0.2"
+ checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af
+ languageName: node
+ linkType: hard
+
+"es-toolkit@npm:^1.39.10":
+ version: 1.46.0
+ resolution: "es-toolkit@npm:1.46.0"
+ dependenciesMeta:
+ "@trivago/prettier-plugin-sort-imports@4.3.0":
+ unplugged: true
+ prettier-plugin-sort-re-exports@0.0.1:
+ unplugged: true
+ checksum: 10c0/d52d3602e89621d8cf8e0f74d6b574e7d5296d97ff34b57ae5331735a4296e7c88c8c28fe6e43388c3c6df84fa06179705a3125767ebcc8b76f672bd06dccfb7
+ languageName: node
+ linkType: hard
+
+"esbuild@npm:^0.25.0":
+ version: 0.25.12
+ resolution: "esbuild@npm:0.25.12"
+ dependencies:
+ "@esbuild/aix-ppc64": "npm:0.25.12"
+ "@esbuild/android-arm": "npm:0.25.12"
+ "@esbuild/android-arm64": "npm:0.25.12"
+ "@esbuild/android-x64": "npm:0.25.12"
+ "@esbuild/darwin-arm64": "npm:0.25.12"
+ "@esbuild/darwin-x64": "npm:0.25.12"
+ "@esbuild/freebsd-arm64": "npm:0.25.12"
+ "@esbuild/freebsd-x64": "npm:0.25.12"
+ "@esbuild/linux-arm": "npm:0.25.12"
+ "@esbuild/linux-arm64": "npm:0.25.12"
+ "@esbuild/linux-ia32": "npm:0.25.12"
+ "@esbuild/linux-loong64": "npm:0.25.12"
+ "@esbuild/linux-mips64el": "npm:0.25.12"
+ "@esbuild/linux-ppc64": "npm:0.25.12"
+ "@esbuild/linux-riscv64": "npm:0.25.12"
+ "@esbuild/linux-s390x": "npm:0.25.12"
+ "@esbuild/linux-x64": "npm:0.25.12"
+ "@esbuild/netbsd-arm64": "npm:0.25.12"
+ "@esbuild/netbsd-x64": "npm:0.25.12"
+ "@esbuild/openbsd-arm64": "npm:0.25.12"
+ "@esbuild/openbsd-x64": "npm:0.25.12"
+ "@esbuild/openharmony-arm64": "npm:0.25.12"
+ "@esbuild/sunos-x64": "npm:0.25.12"
+ "@esbuild/win32-arm64": "npm:0.25.12"
+ "@esbuild/win32-ia32": "npm:0.25.12"
+ "@esbuild/win32-x64": "npm:0.25.12"
+ dependenciesMeta:
+ "@esbuild/aix-ppc64":
+ optional: true
+ "@esbuild/android-arm":
+ optional: true
+ "@esbuild/android-arm64":
+ optional: true
+ "@esbuild/android-x64":
+ optional: true
+ "@esbuild/darwin-arm64":
+ optional: true
+ "@esbuild/darwin-x64":
+ optional: true
+ "@esbuild/freebsd-arm64":
+ optional: true
+ "@esbuild/freebsd-x64":
+ optional: true
+ "@esbuild/linux-arm":
+ optional: true
+ "@esbuild/linux-arm64":
+ optional: true
+ "@esbuild/linux-ia32":
+ optional: true
+ "@esbuild/linux-loong64":
+ optional: true
+ "@esbuild/linux-mips64el":
+ optional: true
+ "@esbuild/linux-ppc64":
+ optional: true
+ "@esbuild/linux-riscv64":
+ optional: true
+ "@esbuild/linux-s390x":
+ optional: true
+ "@esbuild/linux-x64":
+ optional: true
+ "@esbuild/netbsd-arm64":
+ optional: true
+ "@esbuild/netbsd-x64":
+ optional: true
+ "@esbuild/openbsd-arm64":
+ optional: true
+ "@esbuild/openbsd-x64":
+ optional: true
+ "@esbuild/openharmony-arm64":
+ optional: true
+ "@esbuild/sunos-x64":
+ optional: true
+ "@esbuild/win32-arm64":
+ optional: true
+ "@esbuild/win32-ia32":
+ optional: true
+ "@esbuild/win32-x64":
+ optional: true
+ bin:
+ esbuild: bin/esbuild
+ checksum: 10c0/c205357531423220a9de8e1e6c6514242bc9b1666e762cd67ccdf8fdfdc3f1d0bd76f8d9383958b97ad4c953efdb7b6e8c1f9ca5951cd2b7c5235e8755b34a6b
+ languageName: node
+ linkType: hard
+
+"esbuild@npm:^0.27.0":
+ version: 0.27.7
+ resolution: "esbuild@npm:0.27.7"
+ dependencies:
+ "@esbuild/aix-ppc64": "npm:0.27.7"
+ "@esbuild/android-arm": "npm:0.27.7"
+ "@esbuild/android-arm64": "npm:0.27.7"
+ "@esbuild/android-x64": "npm:0.27.7"
+ "@esbuild/darwin-arm64": "npm:0.27.7"
+ "@esbuild/darwin-x64": "npm:0.27.7"
+ "@esbuild/freebsd-arm64": "npm:0.27.7"
+ "@esbuild/freebsd-x64": "npm:0.27.7"
+ "@esbuild/linux-arm": "npm:0.27.7"
+ "@esbuild/linux-arm64": "npm:0.27.7"
+ "@esbuild/linux-ia32": "npm:0.27.7"
+ "@esbuild/linux-loong64": "npm:0.27.7"
+ "@esbuild/linux-mips64el": "npm:0.27.7"
+ "@esbuild/linux-ppc64": "npm:0.27.7"
+ "@esbuild/linux-riscv64": "npm:0.27.7"
+ "@esbuild/linux-s390x": "npm:0.27.7"
+ "@esbuild/linux-x64": "npm:0.27.7"
+ "@esbuild/netbsd-arm64": "npm:0.27.7"
+ "@esbuild/netbsd-x64": "npm:0.27.7"
+ "@esbuild/openbsd-arm64": "npm:0.27.7"
+ "@esbuild/openbsd-x64": "npm:0.27.7"
+ "@esbuild/openharmony-arm64": "npm:0.27.7"
+ "@esbuild/sunos-x64": "npm:0.27.7"
+ "@esbuild/win32-arm64": "npm:0.27.7"
+ "@esbuild/win32-ia32": "npm:0.27.7"
+ "@esbuild/win32-x64": "npm:0.27.7"
+ dependenciesMeta:
+ "@esbuild/aix-ppc64":
+ optional: true
+ "@esbuild/android-arm":
+ optional: true
+ "@esbuild/android-arm64":
+ optional: true
+ "@esbuild/android-x64":
+ optional: true
+ "@esbuild/darwin-arm64":
+ optional: true
+ "@esbuild/darwin-x64":
+ optional: true
+ "@esbuild/freebsd-arm64":
+ optional: true
+ "@esbuild/freebsd-x64":
+ optional: true
+ "@esbuild/linux-arm":
+ optional: true
+ "@esbuild/linux-arm64":
+ optional: true
+ "@esbuild/linux-ia32":
+ optional: true
+ "@esbuild/linux-loong64":
+ optional: true
+ "@esbuild/linux-mips64el":
+ optional: true
+ "@esbuild/linux-ppc64":
+ optional: true
+ "@esbuild/linux-riscv64":
+ optional: true
+ "@esbuild/linux-s390x":
+ optional: true
+ "@esbuild/linux-x64":
+ optional: true
+ "@esbuild/netbsd-arm64":
+ optional: true
+ "@esbuild/netbsd-x64":
+ optional: true
+ "@esbuild/openbsd-arm64":
+ optional: true
+ "@esbuild/openbsd-x64":
+ optional: true
+ "@esbuild/openharmony-arm64":
+ optional: true
+ "@esbuild/sunos-x64":
+ optional: true
+ "@esbuild/win32-arm64":
+ optional: true
+ "@esbuild/win32-ia32":
+ optional: true
+ "@esbuild/win32-x64":
+ optional: true
+ bin:
+ esbuild: bin/esbuild
+ checksum: 10c0/ccd51f0555708bc9ff4ec9dc3ac92d3daacd45ecaac949ca8645984c5c323bf8cefe98c2df307418685e0b4ce37f9a3bdbfe8e3651fe632a0059a436195a17d4
+ languageName: node
+ linkType: hard
+
+"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "escape-string-regexp@npm:1.0.5"
+ checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371
+ languageName: node
+ linkType: hard
+
+"escape-string-regexp@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "escape-string-regexp@npm:2.0.0"
+ checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507
+ languageName: node
+ linkType: hard
+
+"estree-walker@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "estree-walker@npm:3.0.3"
+ dependencies:
+ "@types/estree": "npm:^1.0.0"
+ checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d
+ languageName: node
+ linkType: hard
+
+"eventemitter3@npm:^3.1.0":
+ version: 3.1.2
+ resolution: "eventemitter3@npm:3.1.2"
+ checksum: 10c0/c67262eccbf85848b7cc6d4abb6c6e34155e15686db2a01c57669fd0d44441a574a19d44d25948b442929e065774cbe5003d8e77eed47674fbf876ac77887793
+ languageName: node
+ linkType: hard
+
+"exa-js@npm:^2.12.1":
+ version: 2.12.1
+ resolution: "exa-js@npm:2.12.1"
+ dependencies:
+ cross-fetch: "npm:~4.1.0"
+ dotenv: "npm:~16.4.7"
+ openai: "npm:^5.0.1"
+ zod: "npm:^3.22.0"
+ zod-to-json-schema: "npm:^3.20.0"
+ checksum: 10c0/36c8752618ccc5c17f89dbc2a7d1e98c3c6cbb462ec12f5a9797f389a17819800ae5c574e35495049da44bf2a15a4d1d8e35a5f0f09557abad67a440b9a5a5ed
+ languageName: node
+ linkType: hard
+
+"expect-type@npm:^1.2.1":
+ version: 1.3.0
+ resolution: "expect-type@npm:1.3.0"
+ checksum: 10c0/8412b3fe4f392c420ab41dae220b09700e4e47c639a29ba7ba2e83cc6cffd2b4926f7ac9e47d7e277e8f4f02acda76fd6931cb81fd2b382fa9477ef9ada953fd
+ languageName: node
+ linkType: hard
+
+"exponential-backoff@npm:^3.1.1":
+ version: 3.1.3
+ resolution: "exponential-backoff@npm:3.1.3"
+ checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267
+ languageName: node
+ linkType: hard
+
+"external-editor@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "external-editor@npm:3.1.0"
+ dependencies:
+ chardet: "npm:^0.7.0"
+ iconv-lite: "npm:^0.4.24"
+ tmp: "npm:^0.0.33"
+ checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339
+ languageName: node
+ linkType: hard
+
+"fast-glob@npm:^3.2.9":
+ version: 3.3.3
+ resolution: "fast-glob@npm:3.3.3"
+ dependencies:
+ "@nodelib/fs.stat": "npm:^2.0.2"
+ "@nodelib/fs.walk": "npm:^1.2.3"
+ glob-parent: "npm:^5.1.2"
+ merge2: "npm:^1.3.0"
+ micromatch: "npm:^4.0.8"
+ checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe
+ languageName: node
+ linkType: hard
+
+"fastq@npm:^1.6.0":
+ version: 1.20.1
+ resolution: "fastq@npm:1.20.1"
+ dependencies:
+ reusify: "npm:^1.0.4"
+ checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e
+ languageName: node
+ linkType: hard
+
+"fdir@npm:^6.5.0":
+ version: 6.5.0
+ resolution: "fdir@npm:6.5.0"
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+ checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f
+ languageName: node
+ linkType: hard
+
+"figures@npm:^1.7.0":
+ version: 1.7.0
+ resolution: "figures@npm:1.7.0"
+ dependencies:
+ escape-string-regexp: "npm:^1.0.5"
+ object-assign: "npm:^4.1.0"
+ checksum: 10c0/a10942b0eec3372bf61822ab130d2bbecdf527d551b0b013fbe7175b7a0238ead644ee8930a1a3cb872fb9ab2ec27df30e303765a3b70b97852e2e9ee43bdff3
+ languageName: node
+ linkType: hard
+
+"figures@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "figures@npm:2.0.0"
+ dependencies:
+ escape-string-regexp: "npm:^1.0.5"
+ checksum: 10c0/5dc5a75fec3e7e04ae65d6ce51d28b3e70d4656c51b06996b6fdb2cb5b542df512e3b3c04482f5193a964edddafa5521479ff948fa84e12ff556e53e094ab4ce
+ languageName: node
+ linkType: hard
+
+"fill-range@npm:^7.1.1":
+ version: 7.1.1
+ resolution: "fill-range@npm:7.1.1"
+ dependencies:
+ to-regex-range: "npm:^5.0.1"
+ checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018
+ languageName: node
+ linkType: hard
+
+"find-up@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "find-up@npm:4.1.0"
+ dependencies:
+ locate-path: "npm:^5.0.0"
+ path-exists: "npm:^4.0.0"
+ checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1
+ languageName: node
+ linkType: hard
+
+"follow-redirects@npm:^1.15.11":
+ version: 1.16.0
+ resolution: "follow-redirects@npm:1.16.0"
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ checksum: 10c0/a1e2900163e6f1b4d1ed5c221b607f41decbab65534c63fe7e287e40a5d552a6496e7d9d7d976fa4ba77b4c51c11e5e9f683f10b43011ea11e442ff128d0e181
+ languageName: node
+ linkType: hard
+
+"form-data@npm:^4.0.5":
+ version: 4.0.5
+ resolution: "form-data@npm:4.0.5"
+ dependencies:
+ asynckit: "npm:^0.4.0"
+ combined-stream: "npm:^1.0.8"
+ es-set-tostringtag: "npm:^2.1.0"
+ hasown: "npm:^2.0.2"
+ mime-types: "npm:^2.1.12"
+ checksum: 10c0/dd6b767ee0bbd6d84039db12a0fa5a2028160ffbfaba1800695713b46ae974a5f6e08b3356c3195137f8530dcd9dfcb5d5ae1eeff53d0db1e5aad863b619ce3b
+ languageName: node
+ linkType: hard
+
+"fs-extra@npm:^10.1.0":
+ version: 10.1.0
+ resolution: "fs-extra@npm:10.1.0"
+ dependencies:
+ graceful-fs: "npm:^4.2.0"
+ jsonfile: "npm:^6.0.1"
+ universalify: "npm:^2.0.0"
+ checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e
+ languageName: node
+ linkType: hard
+
+"fs.realpath@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "fs.realpath@npm:1.0.0"
+ checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948
+ languageName: node
+ linkType: hard
+
+"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3":
+ version: 2.3.3
+ resolution: "fsevents@npm:2.3.3"
+ dependencies:
+ node-gyp: "npm:latest"
+ checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
+"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin":
+ version: 2.3.3
+ resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"
+ dependencies:
+ node-gyp: "npm:latest"
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
+"function-bind@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "function-bind@npm:1.1.2"
+ checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5
+ languageName: node
+ linkType: hard
+
+"generator-function@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "generator-function@npm:2.0.1"
+ checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8
+ languageName: node
+ linkType: hard
+
+"get-caller-file@npm:^2.0.1":
+ version: 2.0.5
+ resolution: "get-caller-file@npm:2.0.5"
+ checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde
+ languageName: node
+ linkType: hard
+
+"get-east-asian-width@npm:^1.0.0, get-east-asian-width@npm:^1.3.1, get-east-asian-width@npm:^1.5.0":
+ version: 1.5.0
+ resolution: "get-east-asian-width@npm:1.5.0"
+ checksum: 10c0/bff8bbc8d81790b9477f7aa55b1806b9f082a8dc1359fff7bd8b96939622c86b729685afc2bfeb22def1fc6ef1e5228e4d87dd4e6da60bc43a5edfb03c4ee167
+ languageName: node
+ linkType: hard
+
+"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0":
+ version: 1.3.1
+ resolution: "get-intrinsic@npm:1.3.1"
+ dependencies:
+ async-function: "npm:^1.0.0"
+ async-generator-function: "npm:^1.0.0"
+ call-bind-apply-helpers: "npm:^1.0.2"
+ es-define-property: "npm:^1.0.1"
+ es-errors: "npm:^1.3.0"
+ es-object-atoms: "npm:^1.1.1"
+ function-bind: "npm:^1.1.2"
+ generator-function: "npm:^2.0.0"
+ get-proto: "npm:^1.0.1"
+ gopd: "npm:^1.2.0"
+ has-symbols: "npm:^1.1.0"
+ hasown: "npm:^2.0.2"
+ math-intrinsics: "npm:^1.1.0"
+ checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d
+ languageName: node
+ linkType: hard
+
+"get-proto@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "get-proto@npm:1.0.1"
+ dependencies:
+ dunder-proto: "npm:^1.0.1"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c
+ languageName: node
+ linkType: hard
+
+"glob-parent@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "glob-parent@npm:5.1.2"
+ dependencies:
+ is-glob: "npm:^4.0.1"
+ checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee
+ languageName: node
+ linkType: hard
+
+"glob@npm:^7.1.3":
+ version: 7.2.3
+ resolution: "glob@npm:7.2.3"
+ dependencies:
+ fs.realpath: "npm:^1.0.0"
+ inflight: "npm:^1.0.4"
+ inherits: "npm:2"
+ minimatch: "npm:^3.1.1"
+ once: "npm:^1.3.0"
+ path-is-absolute: "npm:^1.0.0"
+ checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe
+ languageName: node
+ linkType: hard
+
+"globby@npm:^11.0.3":
+ version: 11.1.0
+ resolution: "globby@npm:11.1.0"
+ dependencies:
+ array-union: "npm:^2.1.0"
+ dir-glob: "npm:^3.0.1"
+ fast-glob: "npm:^3.2.9"
+ ignore: "npm:^5.2.0"
+ merge2: "npm:^1.4.1"
+ slash: "npm:^3.0.0"
+ checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189
+ languageName: node
+ linkType: hard
+
+"globrex@npm:^0.1.2":
+ version: 0.1.2
+ resolution: "globrex@npm:0.1.2"
+ checksum: 10c0/a54c029520cf58bda1d8884f72bd49b4cd74e977883268d931fd83bcbd1a9eb96d57c7dbd4ad80148fb9247467ebfb9b215630b2ed7563b2a8de02e1ff7f89d1
+ languageName: node
+ linkType: hard
+
+"gopd@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "gopd@npm:1.2.0"
+ checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead
+ languageName: node
+ linkType: hard
+
+"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6":
+ version: 4.2.11
+ resolution: "graceful-fs@npm:4.2.11"
+ checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2
+ languageName: node
+ linkType: hard
+
+"graphql-query-batcher@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "graphql-query-batcher@npm:1.0.1"
+ checksum: 10c0/804d0f4064721a2116a16b9eac422e9233e85f4ab5b250cb8f83662725658ffde35779a8ae8211037f3dd2f9717de8cb63b394ad8057ce22171a83db2471196a
+ languageName: node
+ linkType: hard
+
+"graphql-sse@npm:^2.5.4":
+ version: 2.6.0
+ resolution: "graphql-sse@npm:2.6.0"
+ peerDependencies:
+ graphql: ">=0.11 <=16"
+ checksum: 10c0/e05f0b5c8539d61e5ce34af8e0bb418c02bf922d6a7f9232a9abd53c77df5654684ca14f674ac771645c8fba9c37ce666c5d06f46eef54ea07e63653468065b0
+ languageName: node
+ linkType: hard
+
+"graphql@npm:^16.6.0, graphql@npm:^16.8.1":
+ version: 16.13.2
+ resolution: "graphql@npm:16.13.2"
+ checksum: 10c0/64e822a0a0e4398781e4bc9765b88d370c08261498b517add4b878038ef7be2005b6b394a79a5102b9379d57052f60bc7f23fec8f39808d101984a74772ebd9d
+ languageName: node
+ linkType: hard
+
+"has-ansi@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "has-ansi@npm:2.0.0"
+ dependencies:
+ ansi-regex: "npm:^2.0.0"
+ checksum: 10c0/f54e4887b9f8f3c4bfefd649c48825b3c093987c92c27880ee9898539e6f01aed261e82e73153c3f920fde0db5bf6ebd58deb498ed1debabcb4bc40113ccdf05
+ languageName: node
+ linkType: hard
+
+"has-flag@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "has-flag@npm:3.0.0"
+ checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473
+ languageName: node
+ linkType: hard
+
+"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "has-symbols@npm:1.1.0"
+ checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e
+ languageName: node
+ linkType: hard
+
+"has-tostringtag@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "has-tostringtag@npm:1.0.2"
+ dependencies:
+ has-symbols: "npm:^1.0.3"
+ checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c
+ languageName: node
+ linkType: hard
+
+"hasown@npm:^2.0.2":
+ version: 2.0.3
+ resolution: "hasown@npm:2.0.3"
+ dependencies:
+ function-bind: "npm:^1.1.2"
+ checksum: 10c0/f5eb28c3fd0d3e4facd821c1eeee3836c37b70ab0b0fc532e8a39976e18fef43652415dadc52f8c7a5ff6d5ac93b7bef128789aa6f90f4e9b9a9083dce74ab38
+ languageName: node
+ linkType: hard
+
+"iconv-lite@npm:^0.4.24":
+ version: 0.4.24
+ resolution: "iconv-lite@npm:0.4.24"
+ dependencies:
+ safer-buffer: "npm:>= 2.1.2 < 3"
+ checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4
+ languageName: node
+ linkType: hard
+
+"ignore@npm:^5.2.0":
+ version: 5.3.2
+ resolution: "ignore@npm:5.3.2"
+ checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337
+ languageName: node
+ linkType: hard
+
+"indent-string@npm:^3.0.0":
+ version: 3.2.0
+ resolution: "indent-string@npm:3.2.0"
+ checksum: 10c0/91b6d61621d24944c5c4d365d6f1ff4a490264ccaf1162a602faa0d323e69231db2180ad4ccc092c2f49cf8888cdb3da7b73e904cc0fdeec40d0bfb41ceb9478
+ languageName: node
+ linkType: hard
+
+"indent-string@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "indent-string@npm:5.0.0"
+ checksum: 10c0/8ee77b57d92e71745e133f6f444d6fa3ed503ad0e1bcd7e80c8da08b42375c07117128d670589725ed07b1978065803fa86318c309ba45415b7fe13e7f170220
+ languageName: node
+ linkType: hard
+
+"inflight@npm:^1.0.4":
+ version: 1.0.6
+ resolution: "inflight@npm:1.0.6"
+ dependencies:
+ once: "npm:^1.3.0"
+ wrappy: "npm:1"
+ checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2
+ languageName: node
+ linkType: hard
+
+"inherits@npm:2":
+ version: 2.0.4
+ resolution: "inherits@npm:2.0.4"
+ checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2
+ languageName: node
+ linkType: hard
+
+"ink@npm:^6.8.0":
+ version: 6.8.0
+ resolution: "ink@npm:6.8.0"
+ dependencies:
+ "@alcalzone/ansi-tokenize": "npm:^0.2.4"
+ ansi-escapes: "npm:^7.3.0"
+ ansi-styles: "npm:^6.2.1"
+ auto-bind: "npm:^5.0.1"
+ chalk: "npm:^5.6.0"
+ cli-boxes: "npm:^3.0.0"
+ cli-cursor: "npm:^4.0.0"
+ cli-truncate: "npm:^5.1.1"
+ code-excerpt: "npm:^4.0.0"
+ es-toolkit: "npm:^1.39.10"
+ indent-string: "npm:^5.0.0"
+ is-in-ci: "npm:^2.0.0"
+ patch-console: "npm:^2.0.0"
+ react-reconciler: "npm:^0.33.0"
+ scheduler: "npm:^0.27.0"
+ signal-exit: "npm:^3.0.7"
+ slice-ansi: "npm:^8.0.0"
+ stack-utils: "npm:^2.0.6"
+ string-width: "npm:^8.1.1"
+ terminal-size: "npm:^4.0.1"
+ type-fest: "npm:^5.4.1"
+ widest-line: "npm:^6.0.0"
+ wrap-ansi: "npm:^9.0.0"
+ ws: "npm:^8.18.0"
+ yoga-layout: "npm:~3.2.1"
+ peerDependencies:
+ "@types/react": ">=19.0.0"
+ react: ">=19.0.0"
+ react-devtools-core: ">=6.1.2"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ react-devtools-core:
+ optional: true
+ checksum: 10c0/50500e547fdf6a1f1d836d6befbd4770e3ab649ef0be1884500a6da411fb68a90e22dd7dcc9c404911d30e9f87506b3b9d8e997c6c6ceac85ee054b4dadefaff
+ languageName: node
+ linkType: hard
+
+"inquirer@npm:^10.0.0":
+ version: 10.2.2
+ resolution: "inquirer@npm:10.2.2"
+ dependencies:
+ "@inquirer/core": "npm:^9.1.0"
+ "@inquirer/prompts": "npm:^5.5.0"
+ "@inquirer/type": "npm:^1.5.3"
+ "@types/mute-stream": "npm:^0.0.4"
+ ansi-escapes: "npm:^4.3.2"
+ mute-stream: "npm:^1.0.0"
+ run-async: "npm:^3.0.0"
+ rxjs: "npm:^7.8.1"
+ checksum: 10c0/09bcff887a968ce29d3a8cba749ef35b6531b7fb7bf5b28aaf3e10aebae07af2494dd3ec67ae6f1dabe76da1064cfe4514098d4c7658fcaf3fd480b2975d7163
+ languageName: node
+ linkType: hard
+
+"is-extglob@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "is-extglob@npm:2.1.1"
+ checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912
+ languageName: node
+ linkType: hard
+
+"is-fullwidth-code-point@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "is-fullwidth-code-point@npm:1.0.0"
+ dependencies:
+ number-is-nan: "npm:^1.0.0"
+ checksum: 10c0/12acfcf16142f2d431bf6af25d68569d3198e81b9799b4ae41058247aafcc666b0127d64384ea28e67a746372611fcbe9b802f69175287aba466da3eddd5ba0f
+ languageName: node
+ linkType: hard
+
+"is-fullwidth-code-point@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "is-fullwidth-code-point@npm:2.0.0"
+ checksum: 10c0/e58f3e4a601fc0500d8b2677e26e9fe0cd450980e66adb29d85b6addf7969731e38f8e43ed2ec868a09c101a55ac3d8b78902209269f38c5286bc98f5bc1b4d9
+ languageName: node
+ linkType: hard
+
+"is-fullwidth-code-point@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "is-fullwidth-code-point@npm:3.0.0"
+ checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc
+ languageName: node
+ linkType: hard
+
+"is-fullwidth-code-point@npm:^5.0.0, is-fullwidth-code-point@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "is-fullwidth-code-point@npm:5.1.0"
+ dependencies:
+ get-east-asian-width: "npm:^1.3.1"
+ checksum: 10c0/c1172c2e417fb73470c56c431851681591f6a17233603a9e6f94b7ba870b2e8a5266506490573b607fb1081318589372034aa436aec07b465c2029c0bc7f07a4
+ languageName: node
+ linkType: hard
+
+"is-glob@npm:^4.0.1":
+ version: 4.0.3
+ resolution: "is-glob@npm:4.0.3"
+ dependencies:
+ is-extglob: "npm:^2.1.1"
+ checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a
+ languageName: node
+ linkType: hard
+
+"is-in-ci@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "is-in-ci@npm:2.0.0"
+ bin:
+ is-in-ci: cli.js
+ checksum: 10c0/1e1d1056939a681e8206035de5ad84e0404556eaa7622bb55f0f1868b9788bff3df427bc0b1ed5a172623154a90fcb1e759a230817cd73d09435543ae3c71feb
+ languageName: node
+ linkType: hard
+
+"is-number@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "is-number@npm:7.0.0"
+ checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811
+ languageName: node
+ linkType: hard
+
+"is-observable@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "is-observable@npm:1.1.0"
+ dependencies:
+ symbol-observable: "npm:^1.1.0"
+ checksum: 10c0/cf3166b0822f70ad06e7851e09430166ce658349d54aaa64c93a03320420b9285735821b23164bdce741ff83a86730ac3e53035ce4e2511ed843dbff4105bfa2
+ languageName: node
+ linkType: hard
+
+"is-promise@npm:^2.1.0":
+ version: 2.2.2
+ resolution: "is-promise@npm:2.2.2"
+ checksum: 10c0/2dba959812380e45b3df0fb12e7cb4d4528c989c7abb03ececb1d1fd6ab1cbfee956ca9daa587b9db1d8ac3c1e5738cf217bdb3dfd99df8c691be4c00ae09069
+ languageName: node
+ linkType: hard
+
+"is-stream@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "is-stream@npm:1.1.0"
+ checksum: 10c0/b8ae7971e78d2e8488d15f804229c6eed7ed36a28f8807a1815938771f4adff0e705218b7dab968270433f67103e4fef98062a0beea55d64835f705ee72c7002
+ languageName: node
+ linkType: hard
+
+"isexe@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "isexe@npm:4.0.0"
+ checksum: 10c0/5884815115bceac452877659a9c7726382531592f43dc29e5d48b7c4100661aed54018cb90bd36cb2eaeba521092570769167acbb95c18d39afdccbcca06c5ce
+ languageName: node
+ linkType: hard
+
+"isomorphic-unfetch@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "isomorphic-unfetch@npm:3.1.0"
+ dependencies:
+ node-fetch: "npm:^2.6.1"
+ unfetch: "npm:^4.2.0"
+ checksum: 10c0/d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89
+ languageName: node
+ linkType: hard
+
+"iterall@npm:^1.2.1":
+ version: 1.3.0
+ resolution: "iterall@npm:1.3.0"
+ checksum: 10c0/40de624e5fe937c4c0e511981b91caea9ff2142bfc0316cccc8506eaa03aa253820cc17c5bc5f0a98706c7268a373e5ebee9af9a0c8a359730cf7c05938b57b5
+ languageName: node
+ linkType: hard
+
+"js-tokens@npm:^9.0.1":
+ version: 9.0.1
+ resolution: "js-tokens@npm:9.0.1"
+ checksum: 10c0/68dcab8f233dde211a6b5fd98079783cbcd04b53617c1250e3553ee16ab3e6134f5e65478e41d82f6d351a052a63d71024553933808570f04dbf828d7921e80e
+ languageName: node
+ linkType: hard
+
+"jsonc-parser@npm:^3.2.0":
+ version: 3.3.1
+ resolution: "jsonc-parser@npm:3.3.1"
+ checksum: 10c0/269c3ae0a0e4f907a914bf334306c384aabb9929bd8c99f909275ebd5c2d3bc70b9bcd119ad794f339dec9f24b6a4ee9cd5a8ab2e6435e730ad4075388fc2ab6
+ languageName: node
+ linkType: hard
+
+"jsonfile@npm:^6.0.1":
+ version: 6.2.1
+ resolution: "jsonfile@npm:6.2.1"
+ dependencies:
+ graceful-fs: "npm:^4.1.6"
+ universalify: "npm:^2.0.0"
+ dependenciesMeta:
+ graceful-fs:
+ optional: true
+ checksum: 10c0/e1abf000ecee9942d4d028a8e02dc752617face227d72afd1cfb2187e2433079e625bf82b807a313689db71b6472c6b2b389a2340d2798737b1199a39631c28a
+ languageName: node
+ linkType: hard
+
+"kleur@npm:^4.1.5":
+ version: 4.1.5
+ resolution: "kleur@npm:4.1.5"
+ checksum: 10c0/e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a
+ languageName: node
+ linkType: hard
+
+"listr-silent-renderer@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "listr-silent-renderer@npm:1.1.1"
+ checksum: 10c0/a13e08ebf863516a757bce4887f05290070772113d89095e9f51a07cf0b11a43a7563a67ff3b287c752c08f6d781fdb2123b02957534e3e0675fb564f2a42e1b
+ languageName: node
+ linkType: hard
+
+"listr-update-renderer@npm:^0.5.0":
+ version: 0.5.0
+ resolution: "listr-update-renderer@npm:0.5.0"
+ dependencies:
+ chalk: "npm:^1.1.3"
+ cli-truncate: "npm:^0.2.1"
+ elegant-spinner: "npm:^1.0.1"
+ figures: "npm:^1.7.0"
+ indent-string: "npm:^3.0.0"
+ log-symbols: "npm:^1.0.2"
+ log-update: "npm:^2.3.0"
+ strip-ansi: "npm:^3.0.1"
+ peerDependencies:
+ listr: ^0.14.2
+ checksum: 10c0/8ade44bf3dc6146c8e0178000619439e8889792c4689b66be6ce82bd459f5fe462ecb34b05147fb206a8ad60e6d4e6f34c9f48038e18366f867fd972688b8edc
+ languageName: node
+ linkType: hard
+
+"listr-verbose-renderer@npm:^0.5.0":
+ version: 0.5.0
+ resolution: "listr-verbose-renderer@npm:0.5.0"
+ dependencies:
+ chalk: "npm:^2.4.1"
+ cli-cursor: "npm:^2.1.0"
+ date-fns: "npm:^1.27.2"
+ figures: "npm:^2.0.0"
+ checksum: 10c0/041cd1e82da7054f27ae0a914e98b40d15faf9f950ef850578fc6241d3fff3c2d7158a4f6226006e566b4c47bf445be2d254dd1ce5c16569a3a5dcd575bec656
+ languageName: node
+ linkType: hard
+
+"listr@npm:^0.14.3":
+ version: 0.14.3
+ resolution: "listr@npm:0.14.3"
+ dependencies:
+ "@samverschueren/stream-to-observable": "npm:^0.3.0"
+ is-observable: "npm:^1.1.0"
+ is-promise: "npm:^2.1.0"
+ is-stream: "npm:^1.1.0"
+ listr-silent-renderer: "npm:^1.1.1"
+ listr-update-renderer: "npm:^0.5.0"
+ listr-verbose-renderer: "npm:^0.5.0"
+ p-map: "npm:^2.0.0"
+ rxjs: "npm:^6.3.3"
+ checksum: 10c0/753d518218c423f46bee8eeacccecadfd2e414ba9c0f602e7f85fe3f6fa18404dfab0812433aeda4683ee2548358488f597ac1a3d321196baec5d3149b200b10
+ languageName: node
+ linkType: hard
+
+"locate-path@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "locate-path@npm:5.0.0"
+ dependencies:
+ p-locate: "npm:^4.1.0"
+ checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59
+ languageName: node
+ linkType: hard
+
+"lodash@npm:^4.17.20, lodash@npm:^4.17.21":
+ version: 4.18.1
+ resolution: "lodash@npm:4.18.1"
+ checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27
+ languageName: node
+ linkType: hard
+
+"log-symbols@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "log-symbols@npm:1.0.2"
+ dependencies:
+ chalk: "npm:^1.0.0"
+ checksum: 10c0/c64e1fe41d0d043840f8b592d043b8607a836b846506f525a53d99d578561f02f97b2cba1d2b3c30bae5311d64b308d5a392a9930d252b906a9042fc2877da7a
+ languageName: node
+ linkType: hard
+
+"log-update@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "log-update@npm:2.3.0"
+ dependencies:
+ ansi-escapes: "npm:^3.0.0"
+ cli-cursor: "npm:^2.0.0"
+ wrap-ansi: "npm:^3.0.1"
+ checksum: 10c0/9bf21b138801ab4770a2bfa735161cf005b869360eaf5003a84ba64ddc5f5c3ce7217f4f1fa79d9c1f510d792213b2c9800327228e94df05859d19b716215d90
+ languageName: node
+ linkType: hard
+
+"loupe@npm:^3.1.0, loupe@npm:^3.1.4":
+ version: 3.2.1
+ resolution: "loupe@npm:3.2.1"
+ checksum: 10c0/910c872cba291309664c2d094368d31a68907b6f5913e989d301b5c25f30e97d76d77f23ab3bf3b46d0f601ff0b6af8810c10c31b91d2c6b2f132809ca2cc705
+ languageName: node
+ linkType: hard
+
+"magic-string@npm:^0.30.17":
+ version: 0.30.21
+ resolution: "magic-string@npm:0.30.21"
+ dependencies:
+ "@jridgewell/sourcemap-codec": "npm:^1.5.5"
+ checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a
+ languageName: node
+ linkType: hard
+
+"math-intrinsics@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "math-intrinsics@npm:1.1.0"
+ checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f
+ languageName: node
+ linkType: hard
+
+"merge2@npm:^1.3.0, merge2@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "merge2@npm:1.4.1"
+ checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb
+ languageName: node
+ linkType: hard
+
+"micromatch@npm:^4.0.8":
+ version: 4.0.8
+ resolution: "micromatch@npm:4.0.8"
+ dependencies:
+ braces: "npm:^3.0.3"
+ picomatch: "npm:^2.3.1"
+ checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8
+ languageName: node
+ linkType: hard
+
+"mime-db@npm:1.52.0":
+ version: 1.52.0
+ resolution: "mime-db@npm:1.52.0"
+ checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa
+ languageName: node
+ linkType: hard
+
+"mime-types@npm:^2.1.12":
+ version: 2.1.35
+ resolution: "mime-types@npm:2.1.35"
+ dependencies:
+ mime-db: "npm:1.52.0"
+ checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2
+ languageName: node
+ linkType: hard
+
+"mimic-fn@npm:^1.0.0":
+ version: 1.2.0
+ resolution: "mimic-fn@npm:1.2.0"
+ checksum: 10c0/ad55214aec6094c0af4c0beec1a13787556f8116ed88807cf3f05828500f21f93a9482326bcd5a077ae91e3e8795b4e76b5b4c8bb12237ff0e4043a365516cba
+ languageName: node
+ linkType: hard
+
+"mimic-fn@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "mimic-fn@npm:2.1.0"
+ checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4
+ languageName: node
+ linkType: hard
+
+"minimatch@npm:^3.1.1":
+ version: 3.1.5
+ resolution: "minimatch@npm:3.1.5"
+ dependencies:
+ brace-expansion: "npm:^1.1.7"
+ checksum: 10c0/2ecbdc0d33f07bddb0315a8b5afbcb761307a8778b48f0b312418ccbced99f104a2d17d8aca7573433c70e8ccd1c56823a441897a45e384ea76ef401a26ace70
+ languageName: node
+ linkType: hard
+
+"minimist@npm:^1.2.6":
+ version: 1.2.8
+ resolution: "minimist@npm:1.2.8"
+ checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
+ languageName: node
+ linkType: hard
+
+"minipass@npm:^7.0.4, minipass@npm:^7.1.2":
+ version: 7.1.3
+ resolution: "minipass@npm:7.1.3"
+ checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb
+ languageName: node
+ linkType: hard
+
+"minizlib@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "minizlib@npm:3.1.0"
+ dependencies:
+ minipass: "npm:^7.1.2"
+ checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec
+ languageName: node
+ linkType: hard
+
+"mkdirp@npm:^0.5.1":
+ version: 0.5.6
+ resolution: "mkdirp@npm:0.5.6"
+ dependencies:
+ minimist: "npm:^1.2.6"
+ bin:
+ mkdirp: bin/cmd.js
+ checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01
+ languageName: node
+ linkType: hard
+
+"ms@npm:^2.1.3":
+ version: 2.1.3
+ resolution: "ms@npm:2.1.3"
+ checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
+ languageName: node
+ linkType: hard
+
+"mute-stream@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "mute-stream@npm:1.0.0"
+ checksum: 10c0/dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c
+ languageName: node
+ linkType: hard
+
+"nanoid@npm:^3.3.11":
+ version: 3.3.11
+ resolution: "nanoid@npm:3.3.11"
+ bin:
+ nanoid: bin/nanoid.cjs
+ checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b
+ languageName: node
+ linkType: hard
+
+"native-fetch@npm:^4.0.2":
+ version: 4.0.2
+ resolution: "native-fetch@npm:4.0.2"
+ peerDependencies:
+ undici: "*"
+ checksum: 10c0/e3b824721daaa628086d9dcd02e8eb12f0a6c5e13a1d182682bae238d80c9bbf3dfd6314a94692ebe20316aa354476804b4df148201d066b46fc552a5794cfab
+ languageName: node
+ linkType: hard
+
+"node-fetch@npm:^2.6.1, node-fetch@npm:^2.7.0":
+ version: 2.7.0
+ resolution: "node-fetch@npm:2.7.0"
+ dependencies:
+ whatwg-url: "npm:^5.0.0"
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8
+ languageName: node
+ linkType: hard
+
+"node-gyp@npm:latest":
+ version: 12.3.0
+ resolution: "node-gyp@npm:12.3.0"
+ dependencies:
+ env-paths: "npm:^2.2.0"
+ exponential-backoff: "npm:^3.1.1"
+ graceful-fs: "npm:^4.2.6"
+ nopt: "npm:^9.0.0"
+ proc-log: "npm:^6.0.0"
+ semver: "npm:^7.3.5"
+ tar: "npm:^7.5.4"
+ tinyglobby: "npm:^0.2.12"
+ undici: "npm:^6.25.0"
+ which: "npm:^6.0.0"
+ bin:
+ node-gyp: bin/node-gyp.js
+ checksum: 10c0/9d9032b405cbe42f72a105259d9eb679376470c102df4a2dbaa51e07d59bf741dcffb85897087ea9d8318b9cabb824a8978af51508ae142f0239ae1e6a3c2329
+ languageName: node
+ linkType: hard
+
+"nopt@npm:^9.0.0":
+ version: 9.0.0
+ resolution: "nopt@npm:9.0.0"
+ dependencies:
+ abbrev: "npm:^4.0.0"
+ bin:
+ nopt: bin/nopt.js
+ checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd
+ languageName: node
+ linkType: hard
+
+"normalize-path@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "normalize-path@npm:2.1.1"
+ dependencies:
+ remove-trailing-separator: "npm:^1.0.1"
+ checksum: 10c0/db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b
+ languageName: node
+ linkType: hard
+
+"number-is-nan@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "number-is-nan@npm:1.0.1"
+ checksum: 10c0/cb97149006acc5cd512c13c1838223abdf202e76ddfa059c5e8e7507aff2c3a78cd19057516885a2f6f5b576543dc4f7b6f3c997cc7df53ae26c260855466df5
+ languageName: node
+ linkType: hard
+
+"object-assign@npm:^4.1.0":
+ version: 4.1.1
+ resolution: "object-assign@npm:4.1.1"
+ checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414
+ languageName: node
+ linkType: hard
+
+"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4":
+ version: 1.13.4
+ resolution: "object-inspect@npm:1.13.4"
+ checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692
+ languageName: node
+ linkType: hard
+
+"once@npm:^1.3.0":
+ version: 1.4.0
+ resolution: "once@npm:1.4.0"
+ dependencies:
+ wrappy: "npm:1"
+ checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0
+ languageName: node
+ linkType: hard
+
+"onetime@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "onetime@npm:2.0.1"
+ dependencies:
+ mimic-fn: "npm:^1.0.0"
+ checksum: 10c0/b4e44a8c34e70e02251bfb578a6e26d6de6eedbed106cd78211d2fd64d28b6281d54924696554e4e966559644243753ac5df73c87f283b0927533d3315696215
+ languageName: node
+ linkType: hard
+
+"onetime@npm:^5.1.0":
+ version: 5.1.2
+ resolution: "onetime@npm:5.1.2"
+ dependencies:
+ mimic-fn: "npm:^2.1.0"
+ checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f
+ languageName: node
+ linkType: hard
+
+"openai@npm:^5.0.1":
+ version: 5.23.2
+ resolution: "openai@npm:5.23.2"
+ peerDependencies:
+ ws: ^8.18.0
+ zod: ^3.23.8
+ peerDependenciesMeta:
+ ws:
+ optional: true
+ zod:
+ optional: true
+ bin:
+ openai: bin/cli
+ checksum: 10c0/8ee37f37c64fd04a61622c4782d231e8f0245e2d85956d833e43d30946edbf07d5276cd74e09aa5d23006de8da43dad312246a9dd7ca6ca6d65d983fc976ffa6
+ languageName: node
+ linkType: hard
+
+"os-tmpdir@npm:~1.0.2":
+ version: 1.0.2
+ resolution: "os-tmpdir@npm:1.0.2"
+ checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990
+ languageName: node
+ linkType: hard
+
+"oxlint@npm:^0.16.0":
+ version: 0.16.12
+ resolution: "oxlint@npm:0.16.12"
+ dependencies:
+ "@oxlint/darwin-arm64": "npm:0.16.12"
+ "@oxlint/darwin-x64": "npm:0.16.12"
+ "@oxlint/linux-arm64-gnu": "npm:0.16.12"
+ "@oxlint/linux-arm64-musl": "npm:0.16.12"
+ "@oxlint/linux-x64-gnu": "npm:0.16.12"
+ "@oxlint/linux-x64-musl": "npm:0.16.12"
+ "@oxlint/win32-arm64": "npm:0.16.12"
+ "@oxlint/win32-x64": "npm:0.16.12"
+ dependenciesMeta:
+ "@oxlint/darwin-arm64":
+ optional: true
+ "@oxlint/darwin-x64":
+ optional: true
+ "@oxlint/linux-arm64-gnu":
+ optional: true
+ "@oxlint/linux-arm64-musl":
+ optional: true
+ "@oxlint/linux-x64-gnu":
+ optional: true
+ "@oxlint/linux-x64-musl":
+ optional: true
+ "@oxlint/win32-arm64":
+ optional: true
+ "@oxlint/win32-x64":
+ optional: true
+ bin:
+ oxc_language_server: bin/oxc_language_server
+ oxlint: bin/oxlint
+ checksum: 10c0/209c3484039c4f1fdd340689e81be93a70fdf74e8c111731e70d81580d223b0029439107c95fa4118cec3c9b03ba6c56624d3dcb8cdc79af222da3561122b3e7
+ languageName: node
+ linkType: hard
+
+"p-limit@npm:3.1.0":
+ version: 3.1.0
+ resolution: "p-limit@npm:3.1.0"
+ dependencies:
+ yocto-queue: "npm:^0.1.0"
+ checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a
+ languageName: node
+ linkType: hard
+
+"p-limit@npm:^2.2.0":
+ version: 2.3.0
+ resolution: "p-limit@npm:2.3.0"
+ dependencies:
+ p-try: "npm:^2.0.0"
+ checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12
+ languageName: node
+ linkType: hard
+
+"p-locate@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "p-locate@npm:4.1.0"
+ dependencies:
+ p-limit: "npm:^2.2.0"
+ checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9
+ languageName: node
+ linkType: hard
+
+"p-map@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "p-map@npm:2.1.0"
+ checksum: 10c0/735dae87badd4737a2dd582b6d8f93e49a1b79eabbc9815a4d63a528d5e3523e978e127a21d784cccb637010e32103a40d2aaa3ab23ae60250b1a820ca752043
+ languageName: node
+ linkType: hard
+
+"p-try@npm:^2.0.0":
+ version: 2.2.0
+ resolution: "p-try@npm:2.2.0"
+ checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f
+ languageName: node
+ linkType: hard
+
+"patch-console@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "patch-console@npm:2.0.0"
+ checksum: 10c0/486602591a0af7af8d4c76d8eea42cad32b6de7200488819c6383c75e43733ca7bdc80e30f2e68ce05f06a1607cce1683a1706c6672ca27dada1921b366e8f1c
+ languageName: node
+ linkType: hard
+
+"path-exists@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-exists@npm:4.0.0"
+ checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
+ languageName: node
+ linkType: hard
+
+"path-is-absolute@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "path-is-absolute@npm:1.0.1"
+ checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078
+ languageName: node
+ linkType: hard
+
+"path-type@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-type@npm:4.0.0"
+ checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c
+ languageName: node
+ linkType: hard
+
+"pathe@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "pathe@npm:2.0.3"
+ checksum: 10c0/c118dc5a8b5c4166011b2b70608762e260085180bb9e33e80a50dcdb1e78c010b1624f4280c492c92b05fc276715a4c357d1f9edc570f8f1b3d90b6839ebaca1
+ languageName: node
+ linkType: hard
+
+"pathval@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "pathval@npm:2.0.1"
+ checksum: 10c0/460f4709479fbf2c45903a65655fc8f0a5f6d808f989173aeef5fdea4ff4f303dc13f7870303999add60ec49d4c14733895c0a869392e9866f1091fa64fd7581
+ languageName: node
+ linkType: hard
+
+"picocolors@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "picocolors@npm:1.1.1"
+ checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
+ languageName: node
+ linkType: hard
+
+"picomatch@npm:^2.3.1":
+ version: 2.3.2
+ resolution: "picomatch@npm:2.3.2"
+ checksum: 10c0/a554d1709e59be97d1acb9eaedbbc700a5c03dbd4579807baed95100b00420bc729335440ef15004ae2378984e2487a7c1cebd743cfdb72b6fa9ab69223c0d61
+ languageName: node
+ linkType: hard
+
+"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4":
+ version: 4.0.4
+ resolution: "picomatch@npm:4.0.4"
+ checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0
+ languageName: node
+ linkType: hard
+
+"postcss@npm:^8.5.6":
+ version: 8.5.10
+ resolution: "postcss@npm:8.5.10"
+ dependencies:
+ nanoid: "npm:^3.3.11"
+ picocolors: "npm:^1.1.1"
+ source-map-js: "npm:^1.2.1"
+ checksum: 10c0/c592dffa0c4873b401f01955b265538d9942f425040df5e2b8f0ad34c83773a792ea0fa5859ccc99cfb5b955b4ebff118ab7056315388dc83b107b0fa8313576
+ languageName: node
+ linkType: hard
+
+"preact@npm:^10.28.3":
+ version: 10.29.1
+ resolution: "preact@npm:10.29.1"
+ checksum: 10c0/55da3994d0d9ebcc26476552c6571f8be1150cccdafe842aad40eff9abc84c867555f6d01db386fc63ac4cbe9f9da245002468bb24df0642365162d8f1b545e2
+ languageName: node
+ linkType: hard
+
+"prettier@npm:^2.8.0":
+ version: 2.8.8
+ resolution: "prettier@npm:2.8.8"
+ bin:
+ prettier: bin-prettier.js
+ checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a
+ languageName: node
+ linkType: hard
+
+"proc-log@npm:^6.0.0":
+ version: 6.1.0
+ resolution: "proc-log@npm:6.1.0"
+ checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82
+ languageName: node
+ linkType: hard
+
+"proxy-from-env@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "proxy-from-env@npm:2.1.0"
+ checksum: 10c0/ed01729fd4d094eab619cd7e17ce3698b3413b31eb102c4904f9875e677cd207392795d5b4adee9cec359dfd31c44d5ad7595a3a3ad51c40250e141512281c58
+ languageName: node
+ linkType: hard
+
+"qs@npm:^6.11.0":
+ version: 6.15.1
+ resolution: "qs@npm:6.15.1"
+ dependencies:
+ side-channel: "npm:^1.1.0"
+ checksum: 10c0/19ee504f0ebff72598503e38cd6d9bd7b52a8ab62ae18b1e6bee3d4db58469bd65871ef1893a881bafb0f80ef2f9ab586e1f255cf25cc8d816c0f5a704721d97
+ languageName: node
+ linkType: hard
+
+"queue-microtask@npm:^1.2.2":
+ version: 1.2.3
+ resolution: "queue-microtask@npm:1.2.3"
+ checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102
+ languageName: node
+ linkType: hard
+
+"react-dom@npm:^19.0.0":
+ version: 19.2.5
+ resolution: "react-dom@npm:19.2.5"
+ dependencies:
+ scheduler: "npm:^0.27.0"
+ peerDependencies:
+ react: ^19.2.5
+ checksum: 10c0/8067606e9f58e4c2e8cb5f09570217dbc71c4843ebcaa20ae2085912d3e3a351f17d8f7c1713313cdda7f272840c8c34ff6c860fcb840862071bceea218e0c63
+ languageName: node
+ linkType: hard
+
+"react-reconciler@npm:^0.33.0":
+ version: 0.33.0
+ resolution: "react-reconciler@npm:0.33.0"
+ dependencies:
+ scheduler: "npm:^0.27.0"
+ peerDependencies:
+ react: ^19.2.0
+ checksum: 10c0/3f7b27ea8d0ff4c8bf0e402a285e1af9b7d0e6f4c1a70a28f4384938bc1130bc82a90a31df0b79ef5e380e2e55e2598bd90b4dbf802b1203d735ba0355817d3a
+ languageName: node
+ linkType: hard
+
+"react@npm:^19.0.0":
+ version: 19.2.5
+ resolution: "react@npm:19.2.5"
+ checksum: 10c0/4b5f231dbef92886f602533c9ce3bde04d99f0e71dfb5d794c43e02726efaad0421c08688f75fc98a6d6e1dc017372e1af7abbfecdc86a79968f461675931a7a
+ languageName: node
+ linkType: hard
+
+"readdirp@npm:^4.0.1":
+ version: 4.1.2
+ resolution: "readdirp@npm:4.1.2"
+ checksum: 10c0/60a14f7619dec48c9c850255cd523e2717001b0e179dc7037cfa0895da7b9e9ab07532d324bfb118d73a710887d1e35f79c495fa91582784493e085d18c72c62
+ languageName: node
+ linkType: hard
+
+"remove-trailing-separator@npm:^1.0.1":
+ version: 1.1.0
+ resolution: "remove-trailing-separator@npm:1.1.0"
+ checksum: 10c0/3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc
+ languageName: node
+ linkType: hard
+
+"require-directory@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "require-directory@npm:2.1.1"
+ checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99
+ languageName: node
+ linkType: hard
+
+"require-main-filename@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "require-main-filename@npm:2.0.0"
+ checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6
+ languageName: node
+ linkType: hard
+
+"resolve-from@npm:5.0.0":
+ version: 5.0.0
+ resolution: "resolve-from@npm:5.0.0"
+ checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2
+ languageName: node
+ linkType: hard
+
+"restore-cursor@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "restore-cursor@npm:2.0.0"
+ dependencies:
+ onetime: "npm:^2.0.0"
+ signal-exit: "npm:^3.0.2"
+ checksum: 10c0/f5b335bee06f440445e976a7031a3ef53691f9b7c4a9d42a469a0edaf8a5508158a0d561ff2b26a1f4f38783bcca2c0e5c3a44f927326f6694d5b44d7a4993e6
+ languageName: node
+ linkType: hard
+
+"restore-cursor@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "restore-cursor@npm:4.0.0"
+ dependencies:
+ onetime: "npm:^5.1.0"
+ signal-exit: "npm:^3.0.2"
+ checksum: 10c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318
+ languageName: node
+ linkType: hard
+
+"reusify@npm:^1.0.4":
+ version: 1.1.0
+ resolution: "reusify@npm:1.1.0"
+ checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa
+ languageName: node
+ linkType: hard
+
+"rimraf@npm:^2.6.3":
+ version: 2.7.1
+ resolution: "rimraf@npm:2.7.1"
+ dependencies:
+ glob: "npm:^7.1.3"
+ bin:
+ rimraf: ./bin.js
+ checksum: 10c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40
+ languageName: node
+ linkType: hard
+
+"rollup@npm:^4.43.0":
+ version: 4.60.2
+ resolution: "rollup@npm:4.60.2"
+ dependencies:
+ "@rollup/rollup-android-arm-eabi": "npm:4.60.2"
+ "@rollup/rollup-android-arm64": "npm:4.60.2"
+ "@rollup/rollup-darwin-arm64": "npm:4.60.2"
+ "@rollup/rollup-darwin-x64": "npm:4.60.2"
+ "@rollup/rollup-freebsd-arm64": "npm:4.60.2"
+ "@rollup/rollup-freebsd-x64": "npm:4.60.2"
+ "@rollup/rollup-linux-arm-gnueabihf": "npm:4.60.2"
+ "@rollup/rollup-linux-arm-musleabihf": "npm:4.60.2"
+ "@rollup/rollup-linux-arm64-gnu": "npm:4.60.2"
+ "@rollup/rollup-linux-arm64-musl": "npm:4.60.2"
+ "@rollup/rollup-linux-loong64-gnu": "npm:4.60.2"
+ "@rollup/rollup-linux-loong64-musl": "npm:4.60.2"
+ "@rollup/rollup-linux-ppc64-gnu": "npm:4.60.2"
+ "@rollup/rollup-linux-ppc64-musl": "npm:4.60.2"
+ "@rollup/rollup-linux-riscv64-gnu": "npm:4.60.2"
+ "@rollup/rollup-linux-riscv64-musl": "npm:4.60.2"
+ "@rollup/rollup-linux-s390x-gnu": "npm:4.60.2"
+ "@rollup/rollup-linux-x64-gnu": "npm:4.60.2"
+ "@rollup/rollup-linux-x64-musl": "npm:4.60.2"
+ "@rollup/rollup-openbsd-x64": "npm:4.60.2"
+ "@rollup/rollup-openharmony-arm64": "npm:4.60.2"
+ "@rollup/rollup-win32-arm64-msvc": "npm:4.60.2"
+ "@rollup/rollup-win32-ia32-msvc": "npm:4.60.2"
+ "@rollup/rollup-win32-x64-gnu": "npm:4.60.2"
+ "@rollup/rollup-win32-x64-msvc": "npm:4.60.2"
+ "@types/estree": "npm:1.0.8"
+ fsevents: "npm:~2.3.2"
+ dependenciesMeta:
+ "@rollup/rollup-android-arm-eabi":
+ optional: true
+ "@rollup/rollup-android-arm64":
+ optional: true
+ "@rollup/rollup-darwin-arm64":
+ optional: true
+ "@rollup/rollup-darwin-x64":
+ optional: true
+ "@rollup/rollup-freebsd-arm64":
+ optional: true
+ "@rollup/rollup-freebsd-x64":
+ optional: true
+ "@rollup/rollup-linux-arm-gnueabihf":
+ optional: true
+ "@rollup/rollup-linux-arm-musleabihf":
+ optional: true
+ "@rollup/rollup-linux-arm64-gnu":
+ optional: true
+ "@rollup/rollup-linux-arm64-musl":
+ optional: true
+ "@rollup/rollup-linux-loong64-gnu":
+ optional: true
+ "@rollup/rollup-linux-loong64-musl":
+ optional: true
+ "@rollup/rollup-linux-ppc64-gnu":
+ optional: true
+ "@rollup/rollup-linux-ppc64-musl":
+ optional: true
+ "@rollup/rollup-linux-riscv64-gnu":
+ optional: true
+ "@rollup/rollup-linux-riscv64-musl":
+ optional: true
+ "@rollup/rollup-linux-s390x-gnu":
+ optional: true
+ "@rollup/rollup-linux-x64-gnu":
+ optional: true
+ "@rollup/rollup-linux-x64-musl":
+ optional: true
+ "@rollup/rollup-openbsd-x64":
+ optional: true
+ "@rollup/rollup-openharmony-arm64":
+ optional: true
+ "@rollup/rollup-win32-arm64-msvc":
+ optional: true
+ "@rollup/rollup-win32-ia32-msvc":
+ optional: true
+ "@rollup/rollup-win32-x64-gnu":
+ optional: true
+ "@rollup/rollup-win32-x64-msvc":
+ optional: true
+ fsevents:
+ optional: true
+ bin:
+ rollup: dist/bin/rollup
+ checksum: 10c0/f67d6156fc5b895f33b929a4762392906d00fa5550f0a1f5e66519ab1c05d835aec5f201b4e748c29d1c87f024d3d9c4b0a2d1285668456db661d82b961d379c
+ languageName: node
+ linkType: hard
+
+"run-async@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "run-async@npm:3.0.0"
+ checksum: 10c0/b18b562ae37c3020083dcaae29642e4cc360c824fbfb6b7d50d809a9d5227bb986152d09310255842c8dce40526e82ca768f02f00806c91ba92a8dfa6159cb85
+ languageName: node
+ linkType: hard
+
+"run-parallel@npm:^1.1.9":
+ version: 1.2.0
+ resolution: "run-parallel@npm:1.2.0"
+ dependencies:
+ queue-microtask: "npm:^1.2.2"
+ checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39
+ languageName: node
+ linkType: hard
+
+"rxjs@npm:^6.3.3":
+ version: 6.6.7
+ resolution: "rxjs@npm:6.6.7"
+ dependencies:
+ tslib: "npm:^1.9.0"
+ checksum: 10c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe
+ languageName: node
+ linkType: hard
+
+"rxjs@npm:^7.8.1":
+ version: 7.8.2
+ resolution: "rxjs@npm:7.8.2"
+ dependencies:
+ tslib: "npm:^2.1.0"
+ checksum: 10c0/1fcd33d2066ada98ba8f21fcbbcaee9f0b271de1d38dc7f4e256bfbc6ffcdde68c8bfb69093de7eeb46f24b1fb820620bf0223706cff26b4ab99a7ff7b2e2c45
+ languageName: node
+ linkType: hard
+
+"safer-buffer@npm:>= 2.1.2 < 3":
+ version: 2.1.2
+ resolution: "safer-buffer@npm:2.1.2"
+ checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4
+ languageName: node
+ linkType: hard
+
+"scheduler@npm:^0.27.0":
+ version: 0.27.0
+ resolution: "scheduler@npm:0.27.0"
+ checksum: 10c0/4f03048cb05a3c8fddc45813052251eca00688f413a3cee236d984a161da28db28ba71bd11e7a3dd02f7af84ab28d39fb311431d3b3772fed557945beb00c452
+ languageName: node
+ linkType: hard
+
+"semver@npm:^7.3.5":
+ version: 7.7.4
+ resolution: "semver@npm:7.7.4"
+ bin:
+ semver: bin/semver.js
+ checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2
+ languageName: node
+ linkType: hard
+
+"set-blocking@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "set-blocking@npm:2.0.0"
+ checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454
+ languageName: node
+ linkType: hard
+
+"side-channel-list@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "side-channel-list@npm:1.0.1"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ object-inspect: "npm:^1.13.4"
+ checksum: 10c0/d346c787fd2f9f1c2fdea14f00e8250118db0e7596d85a6cb9faa75f105d31a73a8f7a341c93d7df2a2429098c3d37a77bd3be9e88c37094b8c01807bc77c7a2
+ languageName: node
+ linkType: hard
+
+"side-channel-map@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "side-channel-map@npm:1.0.1"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ es-errors: "npm:^1.3.0"
+ get-intrinsic: "npm:^1.2.5"
+ object-inspect: "npm:^1.13.3"
+ checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672
+ languageName: node
+ linkType: hard
+
+"side-channel-weakmap@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "side-channel-weakmap@npm:1.0.2"
+ dependencies:
+ call-bound: "npm:^1.0.2"
+ es-errors: "npm:^1.3.0"
+ get-intrinsic: "npm:^1.2.5"
+ object-inspect: "npm:^1.13.3"
+ side-channel-map: "npm:^1.0.1"
+ checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185
+ languageName: node
+ linkType: hard
+
+"side-channel@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "side-channel@npm:1.1.0"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ object-inspect: "npm:^1.13.3"
+ side-channel-list: "npm:^1.0.0"
+ side-channel-map: "npm:^1.0.1"
+ side-channel-weakmap: "npm:^1.0.2"
+ checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6
+ languageName: node
+ linkType: hard
+
+"siginfo@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "siginfo@npm:2.0.0"
+ checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34
+ languageName: node
+ linkType: hard
+
+"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7":
+ version: 3.0.7
+ resolution: "signal-exit@npm:3.0.7"
+ checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912
+ languageName: node
+ linkType: hard
+
+"signal-exit@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "signal-exit@npm:4.1.0"
+ checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83
+ languageName: node
+ linkType: hard
+
+"slash@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "slash@npm:3.0.0"
+ checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b
+ languageName: node
+ linkType: hard
+
+"slice-ansi@npm:0.0.4":
+ version: 0.0.4
+ resolution: "slice-ansi@npm:0.0.4"
+ checksum: 10c0/997d4cc73e34aa8c0f60bdb71701b16c062cc4acd7a95e3b10e8c05d790eb5e735d9b470270dc6f443b1ba21492db7ceb849d5c93011d1256061bf7ed7216c7a
+ languageName: node
+ linkType: hard
+
+"slice-ansi@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "slice-ansi@npm:8.0.0"
+ dependencies:
+ ansi-styles: "npm:^6.2.3"
+ is-fullwidth-code-point: "npm:^5.1.0"
+ checksum: 10c0/0ce4aa91febb7cea4a00c2c27bb820fa53b6d2862ce0f80f7120134719f7914fc416b0ed966cf35250a3169e152916392f35917a2d7cad0fcc5d8b841010fa9a
+ languageName: node
+ linkType: hard
+
+"source-map-js@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "source-map-js@npm:1.2.1"
+ checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf
+ languageName: node
+ linkType: hard
+
+"stack-utils@npm:^2.0.6":
+ version: 2.0.6
+ resolution: "stack-utils@npm:2.0.6"
+ dependencies:
+ escape-string-regexp: "npm:^2.0.0"
+ checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a
+ languageName: node
+ linkType: hard
+
+"stackback@npm:0.0.2":
+ version: 0.0.2
+ resolution: "stackback@npm:0.0.2"
+ checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983
+ languageName: node
+ linkType: hard
+
+"std-env@npm:^3.9.0":
+ version: 3.10.0
+ resolution: "std-env@npm:3.10.0"
+ checksum: 10c0/1814927a45004d36dde6707eaf17552a546769bc79a6421be2c16ce77d238158dfe5de30910b78ec30d95135cc1c59ea73ee22d2ca170f8b9753f84da34c427f
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^1.0.1":
+ version: 1.0.2
+ resolution: "string-width@npm:1.0.2"
+ dependencies:
+ code-point-at: "npm:^1.0.0"
+ is-fullwidth-code-point: "npm:^1.0.0"
+ strip-ansi: "npm:^3.0.0"
+ checksum: 10c0/c558438baed23a9ab9370bb6a939acbdb2b2ffc517838d651aad0f5b2b674fb85d460d9b1d0b6a4c210dffd09e3235222d89a5bd4c0c1587f78b2bb7bc00c65e
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "string-width@npm:2.1.1"
+ dependencies:
+ is-fullwidth-code-point: "npm:^2.0.0"
+ strip-ansi: "npm:^4.0.0"
+ checksum: 10c0/e5f2b169fcf8a4257a399f95d069522f056e92ec97dbdcb9b0cdf14d688b7ca0b1b1439a1c7b9773cd79446cbafd582727279d6bfdd9f8edd306ea5e90e5b610
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^4.1.0, string-width@npm:^4.2.0":
+ version: 4.2.3
+ resolution: "string-width@npm:4.2.3"
+ dependencies:
+ emoji-regex: "npm:^8.0.0"
+ is-fullwidth-code-point: "npm:^3.0.0"
+ strip-ansi: "npm:^6.0.1"
+ checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^7.0.0":
+ version: 7.2.0
+ resolution: "string-width@npm:7.2.0"
+ dependencies:
+ emoji-regex: "npm:^10.3.0"
+ get-east-asian-width: "npm:^1.0.0"
+ strip-ansi: "npm:^7.1.0"
+ checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^8.1.0, string-width@npm:^8.1.1, string-width@npm:^8.2.0":
+ version: 8.2.0
+ resolution: "string-width@npm:8.2.0"
+ dependencies:
+ get-east-asian-width: "npm:^1.5.0"
+ strip-ansi: "npm:^7.1.2"
+ checksum: 10c0/d8915428b43519b0f494da6590dbe4491857d8a12e40250e50fc01fbb616ffd8400a436bbe25712255ee129511fe0414c49d3b6b9627e2bc3a33dcec1d2eda02
+ languageName: node
+ linkType: hard
+
+"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "strip-ansi@npm:3.0.1"
+ dependencies:
+ ansi-regex: "npm:^2.0.0"
+ checksum: 10c0/f6e7fbe8e700105dccf7102eae20e4f03477537c74b286fd22cfc970f139002ed6f0d9c10d0e21aa9ed9245e0fa3c9275930e8795c5b947da136e4ecb644a70f
+ languageName: node
+ linkType: hard
+
+"strip-ansi@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "strip-ansi@npm:4.0.0"
+ dependencies:
+ ansi-regex: "npm:^3.0.0"
+ checksum: 10c0/d75d9681e0637ea316ddbd7d4d3be010b1895a17e885155e0ed6a39755ae0fd7ef46e14b22162e66a62db122d3a98ab7917794e255532ab461bb0a04feb03e7d
+ languageName: node
+ linkType: hard
+
+"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "strip-ansi@npm:6.0.1"
+ dependencies:
+ ansi-regex: "npm:^5.0.1"
+ checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952
+ languageName: node
+ linkType: hard
+
+"strip-ansi@npm:^7.1.0, strip-ansi@npm:^7.1.2":
+ version: 7.2.0
+ resolution: "strip-ansi@npm:7.2.0"
+ dependencies:
+ ansi-regex: "npm:^6.2.2"
+ checksum: 10c0/544d13b7582f8254811ea97db202f519e189e59d35740c46095897e254e4f1aa9fe1524a83ad6bc5ad67d4dd6c0281d2e0219ed62b880a6238a16a17d375f221
+ languageName: node
+ linkType: hard
+
+"strip-literal@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "strip-literal@npm:3.1.0"
+ dependencies:
+ js-tokens: "npm:^9.0.1"
+ checksum: 10c0/50918f669915d9ad0fe4b7599902b735f853f2201c97791ead00104a654259c0c61bc2bc8fa3db05109339b61f4cf09e47b94ecc874ffbd0e013965223893af8
+ languageName: node
+ linkType: hard
+
+"subscriptions-transport-ws@npm:^0.9.16":
+ version: 0.9.19
+ resolution: "subscriptions-transport-ws@npm:0.9.19"
+ dependencies:
+ backo2: "npm:^1.0.2"
+ eventemitter3: "npm:^3.1.0"
+ iterall: "npm:^1.2.1"
+ symbol-observable: "npm:^1.0.4"
+ ws: "npm:^5.2.0 || ^6.0.0 || ^7.0.0"
+ peerDependencies:
+ graphql: ">=0.10.0"
+ checksum: 10c0/6f2ade56865f0ba291d3ff82c79781b051c2374873bac853286fedfdbc05001b8c4018ab7cba44af667ead7f573e48d18892d58a8f9ca8d90dfb4bff5c125045
+ languageName: node
+ linkType: hard
+
+"supports-color@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "supports-color@npm:2.0.0"
+ checksum: 10c0/570e0b63be36cccdd25186350a6cb2eaad332a95ff162fa06d9499982315f2fe4217e69dd98e862fbcd9c81eaff300a825a1fe7bf5cc752e5b84dfed042b0dda
+ languageName: node
+ linkType: hard
+
+"supports-color@npm:^5.3.0":
+ version: 5.5.0
+ resolution: "supports-color@npm:5.5.0"
+ dependencies:
+ has-flag: "npm:^3.0.0"
+ checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05
+ languageName: node
+ linkType: hard
+
+"symbol-observable@npm:^1.0.4, symbol-observable@npm:^1.1.0":
+ version: 1.2.0
+ resolution: "symbol-observable@npm:1.2.0"
+ checksum: 10c0/009fee50798ef80ed4b8195048288f108b03de162db07493f2e1fd993b33fafa72d659e832b584da5a2427daa78e5a738fb2a9ab027ee9454252e0bedbcd1fdc
+ languageName: node
+ linkType: hard
+
+"tagged-tag@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "tagged-tag@npm:1.0.0"
+ checksum: 10c0/91d25c9ffb86a91f20522cefb2cbec9b64caa1febe27ad0df52f08993ff60888022d771e868e6416cf2e72dab68449d2139e8709ba009b74c6c7ecd4000048d1
+ languageName: node
+ linkType: hard
+
+"tar@npm:^7.5.4":
+ version: 7.5.13
+ resolution: "tar@npm:7.5.13"
+ dependencies:
+ "@isaacs/fs-minipass": "npm:^4.0.0"
+ chownr: "npm:^3.0.0"
+ minipass: "npm:^7.1.2"
+ minizlib: "npm:^3.1.0"
+ yallist: "npm:^5.0.0"
+ checksum: 10c0/5c65b8084799bde7a791593a1c1a45d3d6ee98182e3700b24c247b7b8f8654df4191642abbdb07ff25043d45dcff35620827c3997b88ae6c12040f64bed5076b
+ languageName: node
+ linkType: hard
+
+"terminal-size@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "terminal-size@npm:4.0.1"
+ checksum: 10c0/89afd9d816dd9dbfe4499da9aeea70491bbde4ff4592226a9c8ac71074a7580afead6a78e95ecc35f6d42e09087b55ffcb1019302cd55e0cc957b6ce5c4847e8
+ languageName: node
+ linkType: hard
+
+"tinybench@npm:^2.9.0":
+ version: 2.9.0
+ resolution: "tinybench@npm:2.9.0"
+ checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c
+ languageName: node
+ linkType: hard
+
+"tinyexec@npm:^0.3.2":
+ version: 0.3.2
+ resolution: "tinyexec@npm:0.3.2"
+ checksum: 10c0/3efbf791a911be0bf0821eab37a3445c2ba07acc1522b1fa84ae1e55f10425076f1290f680286345ed919549ad67527d07281f1c19d584df3b74326909eb1f90
+ languageName: node
+ linkType: hard
+
+"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15":
+ version: 0.2.16
+ resolution: "tinyglobby@npm:0.2.16"
+ dependencies:
+ fdir: "npm:^6.5.0"
+ picomatch: "npm:^4.0.4"
+ checksum: 10c0/f2e09fd93dd95c41e522113b686ff6f7c13020962f8698a864a257f3d7737599afc47722b7ab726e12f8a813f779906187911ff8ee6701ede65072671a7e934b
+ languageName: node
+ linkType: hard
+
+"tinypool@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "tinypool@npm:1.1.1"
+ checksum: 10c0/bf26727d01443061b04fa863f571016950888ea994ba0cd8cba3a1c51e2458d84574341ab8dbc3664f1c3ab20885c8cf9ff1cc4b18201f04c2cde7d317fff69b
+ languageName: node
+ linkType: hard
+
+"tinyrainbow@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "tinyrainbow@npm:2.0.0"
+ checksum: 10c0/c83c52bef4e0ae7fb8ec6a722f70b5b6fa8d8be1c85792e829f56c0e1be94ab70b293c032dc5048d4d37cfe678f1f5babb04bdc65fd123098800148ca989184f
+ languageName: node
+ linkType: hard
+
+"tinyspy@npm:^4.0.3":
+ version: 4.0.4
+ resolution: "tinyspy@npm:4.0.4"
+ checksum: 10c0/a8020fc17799251e06a8398dcc352601d2770aa91c556b9531ecd7a12581161fd1c14e81cbdaff0c1306c93bfdde8ff6d1c1a3f9bbe6d91604f0fd4e01e2f1eb
+ languageName: node
+ linkType: hard
+
+"tmp@npm:^0.0.33":
+ version: 0.0.33
+ resolution: "tmp@npm:0.0.33"
+ dependencies:
+ os-tmpdir: "npm:~1.0.2"
+ checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408
+ languageName: node
+ linkType: hard
+
+"to-regex-range@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "to-regex-range@npm:5.0.1"
+ dependencies:
+ is-number: "npm:^7.0.0"
+ checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892
+ languageName: node
+ linkType: hard
+
+"tr46@npm:~0.0.3":
+ version: 0.0.3
+ resolution: "tr46@npm:0.0.3"
+ checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11
+ languageName: node
+ linkType: hard
+
+"tsconfck@npm:^3.0.3":
+ version: 3.1.6
+ resolution: "tsconfck@npm:3.1.6"
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ bin:
+ tsconfck: bin/tsconfck.js
+ checksum: 10c0/269c3c513540be44844117bb9b9258fe6f8aeab026d32aeebf458d5299125f330711429dbb556dbf125a0bc25f4a81e6c24ac96de2740badd295c3fb400f66c4
+ languageName: node
+ linkType: hard
+
+"tslib@npm:^1.9.0, tslib@npm:^1.9.3":
+ version: 1.14.1
+ resolution: "tslib@npm:1.14.1"
+ checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2
+ languageName: node
+ linkType: hard
+
+"tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.4.0":
+ version: 2.8.1
+ resolution: "tslib@npm:2.8.1"
+ checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62
+ languageName: node
+ linkType: hard
+
+"twenty-client-sdk@npm:2.0.0":
+ version: 2.0.0
+ resolution: "twenty-client-sdk@npm:2.0.0"
+ dependencies:
+ "@genql/cli": "npm:^3.0.3"
+ "@genql/runtime": "npm:^2.10.0"
+ esbuild: "npm:^0.25.0"
+ graphql: "npm:^16.8.1"
+ checksum: 10c0/f8cbeef32d72febe562387b881b89b8edf3eb92ab4268b47d24286b3c291e032b6cc065d9e9cd7e42a7ea0f27741651d3a270623f5c0478782eafbe3b62f30f8
+ languageName: node
+ linkType: hard
+
+"twenty-exa@workspace:.":
+ version: 0.0.0-use.local
+ resolution: "twenty-exa@workspace:."
+ dependencies:
+ "@types/node": "npm:^24.7.2"
+ exa-js: "npm:^2.12.1"
+ oxlint: "npm:^0.16.0"
+ twenty-client-sdk: "npm:2.0.0"
+ twenty-sdk: "npm:2.0.0"
+ typescript: "npm:^5.9.3"
+ vitest: "npm:^3.1.1"
+ languageName: unknown
+ linkType: soft
+
+"twenty-sdk@npm:2.0.0":
+ version: 2.0.0
+ resolution: "twenty-sdk@npm:2.0.0"
+ dependencies:
+ "@genql/cli": "npm:^3.0.3"
+ "@genql/runtime": "npm:^2.10.0"
+ "@sniptt/guards": "npm:^0.2.0"
+ axios: "npm:^1.13.5"
+ chalk: "npm:^5.3.0"
+ chokidar: "npm:^4.0.0"
+ commander: "npm:^12.0.0"
+ dotenv: "npm:^16.4.0"
+ esbuild: "npm:^0.25.0"
+ graphql: "npm:^16.8.1"
+ graphql-sse: "npm:^2.5.4"
+ ink: "npm:^6.8.0"
+ inquirer: "npm:^10.0.0"
+ jsonc-parser: "npm:^3.2.0"
+ preact: "npm:^10.28.3"
+ react: "npm:^19.0.0"
+ react-dom: "npm:^19.0.0"
+ tinyglobby: "npm:^0.2.15"
+ twenty-client-sdk: "npm:2.0.0"
+ typescript: "npm:^5.9.2"
+ uuid: "npm:^13.0.0"
+ vite: "npm:^7.0.0"
+ vite-tsconfig-paths: "npm:^4.2.1"
+ zod: "npm:^4.1.11"
+ bin:
+ twenty: dist/cli.cjs
+ checksum: 10c0/ea0d50a002e88b177555987840fa9dfeda0f3482f42240bda04a79485f69e9717492a265de8080f599e03960859cbcab0e686c6b6bf8fe0872139f9dc1645dd5
+ languageName: node
+ linkType: hard
+
+"type-fest@npm:^0.21.3":
+ version: 0.21.3
+ resolution: "type-fest@npm:0.21.3"
+ checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8
+ languageName: node
+ linkType: hard
+
+"type-fest@npm:^5.4.1":
+ version: 5.6.0
+ resolution: "type-fest@npm:5.6.0"
+ dependencies:
+ tagged-tag: "npm:^1.0.0"
+ checksum: 10c0/5468a8ffda7f3904e6f7bbd8069eb8b6dd4bd9156e206df7a01d09a73e28cd1afedf74ead9d0fc12841c8c90074194859feca240511c50800962fde1bd9ddcbc
+ languageName: node
+ linkType: hard
+
+"typescript@npm:^5.9.2, typescript@npm:^5.9.3":
+ version: 5.9.3
+ resolution: "typescript@npm:5.9.3"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5
+ languageName: node
+ linkType: hard
+
+"typescript@patch:typescript@npm%3A^5.9.2#optional!builtin, typescript@patch:typescript@npm%3A^5.9.3#optional!builtin":
+ version: 5.9.3
+ resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430
+ languageName: node
+ linkType: hard
+
+"undici-types@npm:~6.21.0":
+ version: 6.21.0
+ resolution: "undici-types@npm:6.21.0"
+ checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04
+ languageName: node
+ linkType: hard
+
+"undici-types@npm:~7.16.0":
+ version: 7.16.0
+ resolution: "undici-types@npm:7.16.0"
+ checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a
+ languageName: node
+ linkType: hard
+
+"undici-types@npm:~7.19.0":
+ version: 7.19.2
+ resolution: "undici-types@npm:7.19.2"
+ checksum: 10c0/7159f10546f9f6c47d36776bb1bbf8671e87c1e587a6fee84ae1f111ae8de4f914efa8ca0dfcd224f4f4a9dfc3f6028f627ccb5ddaccf82d7fd54671b89fac3e
+ languageName: node
+ linkType: hard
+
+"undici@npm:^5.18.0":
+ version: 5.29.0
+ resolution: "undici@npm:5.29.0"
+ dependencies:
+ "@fastify/busboy": "npm:^2.0.0"
+ checksum: 10c0/e4e4d631ca54ee0ad82d2e90e7798fa00a106e27e6c880687e445cc2f13b4bc87c5eba2a88c266c3eecffb18f26e227b778412da74a23acc374fca7caccec49b
+ languageName: node
+ linkType: hard
+
+"undici@npm:^6.25.0":
+ version: 6.25.0
+ resolution: "undici@npm:6.25.0"
+ checksum: 10c0/2597cc6689bdb02c210c557b1f85febbfda65becae6e6fc1061508e2f33734d25207f81cd8af56ada9956329eb3a7bd7431e87dcfeceba20ee87059b57dcf985
+ languageName: node
+ linkType: hard
+
+"unfetch@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "unfetch@npm:4.2.0"
+ checksum: 10c0/a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b
+ languageName: node
+ linkType: hard
+
+"universalify@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "universalify@npm:2.0.1"
+ checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a
+ languageName: node
+ linkType: hard
+
+"unixify@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "unixify@npm:1.0.0"
+ dependencies:
+ normalize-path: "npm:^2.1.1"
+ checksum: 10c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e
+ languageName: node
+ linkType: hard
+
+"utility-types@npm:^3.10.0":
+ version: 3.11.0
+ resolution: "utility-types@npm:3.11.0"
+ checksum: 10c0/2f1580137b0c3e6cf5405f37aaa8f5249961a76d26f1ca8efc0ff49a2fc0e0b2db56de8e521a174d075758e0c7eb3e590edec0832eb44478b958f09914920f19
+ languageName: node
+ linkType: hard
+
+"uuid@npm:^13.0.0":
+ version: 13.0.0
+ resolution: "uuid@npm:13.0.0"
+ bin:
+ uuid: dist-node/bin/uuid
+ checksum: 10c0/950e4c18d57fef6c69675344f5700a08af21e26b9eff2bf2180427564297368c538ea11ac9fb2e6528b17fc3966a9fd2c5049361b0b63c7d654f3c550c9b3d67
+ languageName: node
+ linkType: hard
+
+"value-or-promise@npm:^1.0.12":
+ version: 1.0.12
+ resolution: "value-or-promise@npm:1.0.12"
+ checksum: 10c0/b75657b74e4d17552bd88e0c2857020fbab34a4d091dc058db18c470e7da0336067e72c130b3358e3321ac0a6ff11c0b92b67a382318a3705ad5d57de7ff3262
+ languageName: node
+ linkType: hard
+
+"vite-node@npm:3.2.4":
+ version: 3.2.4
+ resolution: "vite-node@npm:3.2.4"
+ dependencies:
+ cac: "npm:^6.7.14"
+ debug: "npm:^4.4.1"
+ es-module-lexer: "npm:^1.7.0"
+ pathe: "npm:^2.0.3"
+ vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ bin:
+ vite-node: vite-node.mjs
+ checksum: 10c0/6ceca67c002f8ef6397d58b9539f80f2b5d79e103a18367288b3f00a8ab55affa3d711d86d9112fce5a7fa658a212a087a005a045eb8f4758947dd99af2a6c6b
+ languageName: node
+ linkType: hard
+
+"vite-tsconfig-paths@npm:^4.2.1":
+ version: 4.3.2
+ resolution: "vite-tsconfig-paths@npm:4.3.2"
+ dependencies:
+ debug: "npm:^4.1.1"
+ globrex: "npm:^0.1.2"
+ tsconfck: "npm:^3.0.3"
+ peerDependencies:
+ vite: "*"
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ checksum: 10c0/f390ac1d1c3992fc5ac50f9274c1090f8b55ab34a89ea88893db9a6924a3b26c9f64bc1163615150ad100749db73b6b2cf1d57f6cd60df6e762ceb5b8ad30024
+ languageName: node
+ linkType: hard
+
+"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0, vite@npm:^7.0.0":
+ version: 7.3.2
+ resolution: "vite@npm:7.3.2"
+ dependencies:
+ esbuild: "npm:^0.27.0"
+ fdir: "npm:^6.5.0"
+ fsevents: "npm:~2.3.3"
+ picomatch: "npm:^4.0.3"
+ postcss: "npm:^8.5.6"
+ rollup: "npm:^4.43.0"
+ tinyglobby: "npm:^0.2.15"
+ peerDependencies:
+ "@types/node": ^20.19.0 || >=22.12.0
+ jiti: ">=1.21.0"
+ less: ^4.0.0
+ lightningcss: ^1.21.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: ">=0.54.8"
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+ bin:
+ vite: bin/vite.js
+ checksum: 10c0/74be36907e208916f18bfec81c8eba18b869f0a170f1ece0a4dcb14874d0f0e7c022fb6c2ad896e3ee6c973fe88f53ac23b4078879ada340d8b263260868b8d4
+ languageName: node
+ linkType: hard
+
+"vitest@npm:^3.1.1":
+ version: 3.2.4
+ resolution: "vitest@npm:3.2.4"
+ dependencies:
+ "@types/chai": "npm:^5.2.2"
+ "@vitest/expect": "npm:3.2.4"
+ "@vitest/mocker": "npm:3.2.4"
+ "@vitest/pretty-format": "npm:^3.2.4"
+ "@vitest/runner": "npm:3.2.4"
+ "@vitest/snapshot": "npm:3.2.4"
+ "@vitest/spy": "npm:3.2.4"
+ "@vitest/utils": "npm:3.2.4"
+ chai: "npm:^5.2.0"
+ debug: "npm:^4.4.1"
+ expect-type: "npm:^1.2.1"
+ magic-string: "npm:^0.30.17"
+ pathe: "npm:^2.0.3"
+ picomatch: "npm:^4.0.2"
+ std-env: "npm:^3.9.0"
+ tinybench: "npm:^2.9.0"
+ tinyexec: "npm:^0.3.2"
+ tinyglobby: "npm:^0.2.14"
+ tinypool: "npm:^1.1.1"
+ tinyrainbow: "npm:^2.0.0"
+ vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ vite-node: "npm:3.2.4"
+ why-is-node-running: "npm:^2.3.0"
+ peerDependencies:
+ "@edge-runtime/vm": "*"
+ "@types/debug": ^4.1.12
+ "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0
+ "@vitest/browser": 3.2.4
+ "@vitest/ui": 3.2.4
+ happy-dom: "*"
+ jsdom: "*"
+ peerDependenciesMeta:
+ "@edge-runtime/vm":
+ optional: true
+ "@types/debug":
+ optional: true
+ "@types/node":
+ optional: true
+ "@vitest/browser":
+ optional: true
+ "@vitest/ui":
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+ bin:
+ vitest: vitest.mjs
+ checksum: 10c0/5bf53ede3ae6a0e08956d72dab279ae90503f6b5a05298a6a5e6ef47d2fd1ab386aaf48fafa61ed07a0ebfe9e371772f1ccbe5c258dd765206a8218bf2eb79eb
+ languageName: node
+ linkType: hard
+
+"webidl-conversions@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "webidl-conversions@npm:3.0.1"
+ checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db
+ languageName: node
+ linkType: hard
+
+"whatwg-url@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "whatwg-url@npm:5.0.0"
+ dependencies:
+ tr46: "npm:~0.0.3"
+ webidl-conversions: "npm:^3.0.0"
+ checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5
+ languageName: node
+ linkType: hard
+
+"which-module@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "which-module@npm:2.0.1"
+ checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e
+ languageName: node
+ linkType: hard
+
+"which@npm:^6.0.0":
+ version: 6.0.1
+ resolution: "which@npm:6.0.1"
+ dependencies:
+ isexe: "npm:^4.0.0"
+ bin:
+ node-which: bin/which.js
+ checksum: 10c0/7e710e54ea36d2d6183bee2f9caa27a3b47b9baf8dee55a199b736fcf85eab3b9df7556fca3d02b50af7f3dfba5ea3a45644189836df06267df457e354da66d5
+ languageName: node
+ linkType: hard
+
+"why-is-node-running@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "why-is-node-running@npm:2.3.0"
+ dependencies:
+ siginfo: "npm:^2.0.0"
+ stackback: "npm:0.0.2"
+ bin:
+ why-is-node-running: cli.js
+ checksum: 10c0/1cde0b01b827d2cf4cb11db962f3958b9175d5d9e7ac7361d1a7b0e2dc6069a263e69118bd974c4f6d0a890ef4eedfe34cf3d5167ec14203dbc9a18620537054
+ languageName: node
+ linkType: hard
+
+"widest-line@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "widest-line@npm:6.0.0"
+ dependencies:
+ string-width: "npm:^8.1.0"
+ checksum: 10c0/735f1fdcd97fe765a07bb8b5e73c020bed8e53ab34e83ce0ef01693ba3c914d9e7977fe5f5facf0d0b670297a82dd5e376d3efa0896860dfcdaf7cd6924c0fb7
+ languageName: node
+ linkType: hard
+
+"wrap-ansi@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "wrap-ansi@npm:3.0.1"
+ dependencies:
+ string-width: "npm:^2.1.1"
+ strip-ansi: "npm:^4.0.0"
+ checksum: 10c0/ad6fed8f242c26755badaf452da154122d0d862f8b7aab56e758466857f230efafdc5fbffca026650b947ac3fc0eb563df5c05b9e2190a52a4a68f4eef3d4555
+ languageName: node
+ linkType: hard
+
+"wrap-ansi@npm:^6.2.0":
+ version: 6.2.0
+ resolution: "wrap-ansi@npm:6.2.0"
+ dependencies:
+ ansi-styles: "npm:^4.0.0"
+ string-width: "npm:^4.1.0"
+ strip-ansi: "npm:^6.0.0"
+ checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c
+ languageName: node
+ linkType: hard
+
+"wrap-ansi@npm:^9.0.0":
+ version: 9.0.2
+ resolution: "wrap-ansi@npm:9.0.2"
+ dependencies:
+ ansi-styles: "npm:^6.2.1"
+ string-width: "npm:^7.0.0"
+ strip-ansi: "npm:^7.1.0"
+ checksum: 10c0/3305839b9a0d6fb930cb63a52f34d3936013d8b0682ff3ec133c9826512620f213800ffa19ea22904876d5b7e9a3c1f40682f03597d986a4ca881fa7b033688c
+ languageName: node
+ linkType: hard
+
+"wrappy@npm:1":
+ version: 1.0.2
+ resolution: "wrappy@npm:1.0.2"
+ checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0
+ languageName: node
+ linkType: hard
+
+"ws@npm:^5.2.0 || ^6.0.0 || ^7.0.0":
+ version: 7.5.10
+ resolution: "ws@npm:7.5.10"
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: 10c0/bd7d5f4aaf04fae7960c23dcb6c6375d525e00f795dd20b9385902bd008c40a94d3db3ce97d878acc7573df852056ca546328b27b39f47609f80fb22a0a9b61d
+ languageName: node
+ linkType: hard
+
+"ws@npm:^6.1.4":
+ version: 6.2.3
+ resolution: "ws@npm:6.2.3"
+ dependencies:
+ async-limiter: "npm:~1.0.0"
+ checksum: 10c0/56a35b9799993cea7ce2260197e7879f21bbbb194a967f31acbbda6f7f46ecda4365951966fb062044c95197e19fb2f053be6f65c172435455186835f494de41
+ languageName: node
+ linkType: hard
+
+"ws@npm:^8.18.0":
+ version: 8.20.0
+ resolution: "ws@npm:8.20.0"
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ">=5.0.2"
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: 10c0/956ac5f11738c914089b65878b9223692ace77337ba55379ae68e1ecbeae9b47a0c6eb9403688f609999a58c80d83d99865fe0029b229d308b08c1ef93d4ea14
+ languageName: node
+ linkType: hard
+
+"y18n@npm:^4.0.0":
+ version: 4.0.3
+ resolution: "y18n@npm:4.0.3"
+ checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024
+ languageName: node
+ linkType: hard
+
+"yallist@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "yallist@npm:5.0.0"
+ checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416
+ languageName: node
+ linkType: hard
+
+"yargs-parser@npm:^18.1.2":
+ version: 18.1.3
+ resolution: "yargs-parser@npm:18.1.3"
+ dependencies:
+ camelcase: "npm:^5.0.0"
+ decamelize: "npm:^1.2.0"
+ checksum: 10c0/25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499
+ languageName: node
+ linkType: hard
+
+"yargs@npm:^15.3.1":
+ version: 15.4.1
+ resolution: "yargs@npm:15.4.1"
+ dependencies:
+ cliui: "npm:^6.0.0"
+ decamelize: "npm:^1.2.0"
+ find-up: "npm:^4.1.0"
+ get-caller-file: "npm:^2.0.1"
+ require-directory: "npm:^2.1.1"
+ require-main-filename: "npm:^2.0.0"
+ set-blocking: "npm:^2.0.0"
+ string-width: "npm:^4.2.0"
+ which-module: "npm:^2.0.0"
+ y18n: "npm:^4.0.0"
+ yargs-parser: "npm:^18.1.2"
+ checksum: 10c0/f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d
+ languageName: node
+ linkType: hard
+
+"yocto-queue@npm:^0.1.0":
+ version: 0.1.0
+ resolution: "yocto-queue@npm:0.1.0"
+ checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
+ languageName: node
+ linkType: hard
+
+"yoctocolors-cjs@npm:^2.1.2":
+ version: 2.1.3
+ resolution: "yoctocolors-cjs@npm:2.1.3"
+ checksum: 10c0/584168ef98eb5d913473a4858dce128803c4a6cd87c0f09e954fa01126a59a33ab9e513b633ad9ab953786ed16efdd8c8700097a51635aafaeed3fef7712fa79
+ languageName: node
+ linkType: hard
+
+"yoga-layout@npm:~3.2.1":
+ version: 3.2.1
+ resolution: "yoga-layout@npm:3.2.1"
+ checksum: 10c0/9001e51be993c85e03757e5a04a2b61b8b30c9e5a7865d0156ca87a6431a3b717d51eb4990bfe588189fcfeac688dd9c3de707bbd50d1c344a84e63974cc54a8
+ languageName: node
+ linkType: hard
+
+"zen-observable-ts@npm:^0.8.21":
+ version: 0.8.21
+ resolution: "zen-observable-ts@npm:0.8.21"
+ dependencies:
+ tslib: "npm:^1.9.3"
+ zen-observable: "npm:^0.8.0"
+ checksum: 10c0/fe4a02f862b5f7e8ae0f86230c37b84c7d5611f5c206981afb4043e732d04cf7067a6cbe1ba82d20f18b735a3387937195a12542158a631d308ae3959a1d93c4
+ languageName: node
+ linkType: hard
+
+"zen-observable@npm:^0.8.0":
+ version: 0.8.15
+ resolution: "zen-observable@npm:0.8.15"
+ checksum: 10c0/71cc2f2bbb537300c3f569e25693d37b3bc91f225cefce251a71c30bc6bb3e7f8e9420ca0eb57f2ac9e492b085b8dfa075fd1e8195c40b83c951dd59c6e4fbf8
+ languageName: node
+ linkType: hard
+
+"zod-to-json-schema@npm:^3.20.0":
+ version: 3.25.2
+ resolution: "zod-to-json-schema@npm:3.25.2"
+ peerDependencies:
+ zod: ^3.25.28 || ^4
+ checksum: 10c0/dd300554393903022487688af14fbda5c719ba8179702bb55b3aa86318830467f0f7beb7d654036975ac963dc4843b72e59636448bfff9a0608f277bb6a14939
+ languageName: node
+ linkType: hard
+
+"zod@npm:^3.22.0":
+ version: 3.25.76
+ resolution: "zod@npm:3.25.76"
+ checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c
+ languageName: node
+ linkType: hard
+
+"zod@npm:^4.1.11":
+ version: 4.3.6
+ resolution: "zod@npm:4.3.6"
+ checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307
+ languageName: node
+ linkType: hard
diff --git a/packages/twenty-client-sdk/src/metadata/generated/schema.graphql b/packages/twenty-client-sdk/src/metadata/generated/schema.graphql
index d2f59a3ab0..ffeef02597 100644
--- a/packages/twenty-client-sdk/src/metadata/generated/schema.graphql
+++ b/packages/twenty-client-sdk/src/metadata/generated/schema.graphql
@@ -47,6 +47,7 @@ type ApplicationRegistration {
latestAvailableVersion: String
isListed: Boolean!
isFeatured: Boolean!
+ isPreInstalled: Boolean!
logoUrl: String
createdAt: DateTime!
updatedAt: DateTime!
@@ -3008,10 +3009,6 @@ type Query {
sorting: [AgentChatThreadSort!]! = [{field: updatedAt, direction: DESC}]
): AgentChatThreadConnection!
agentTurns(agentId: UUID!): [AgentTurn!]!
- eventLogs(input: EventLogQueryInput!): EventLogQueryResult!
- pieChartData(input: PieChartDataInput!): PieChartData!
- lineChartData(input: LineChartDataInput!): LineChartData!
- barChartData(input: BarChartDataInput!): BarChartData!
checkUserExists(email: String!, captchaToken: String): CheckUserExist!
checkWorkspaceInviteHashIsValid(inviteHash: String!): WorkspaceInviteHashValid!
findWorkspaceFromInviteHash(inviteHash: String!): Workspace!
@@ -3027,7 +3024,13 @@ type Query {
currentWorkspace: Workspace!
getPublicWorkspaceDataByDomain(origin: String): PublicWorkspaceData!
getPublicWorkspaceDataById(id: UUID!): PublicWorkspaceDataSummary!
+ findManyApplications: [Application!]!
+ findOneApplication(id: UUID, universalIdentifier: UUID): Application!
getSSOIdentityProviders: [FindAvailableSSOIDP!]!
+ eventLogs(input: EventLogQueryInput!): EventLogQueryResult!
+ pieChartData(input: PieChartDataInput!): PieChartData!
+ lineChartData(input: LineChartDataInput!): LineChartData!
+ barChartData(input: BarChartDataInput!): BarChartData!
getConnectedImapSmtpCaldavAccount(id: UUID!): ConnectedImapSmtpCaldavAccount!
getAutoCompleteAddress(address: String!, token: String!, country: String, isFieldCity: Boolean): [AutocompleteResult!]!
getAddressDetails(placeId: String!, token: String!): PlaceDetailsResult!
@@ -3037,8 +3040,6 @@ type Query {
getEmailingDomains: [EmailingDomain!]!
findManyMarketplaceApps: [MarketplaceApp!]!
findMarketplaceAppDetail(universalIdentifier: String!): MarketplaceAppDetail!
- findManyApplications: [Application!]!
- findOneApplication(id: UUID, universalIdentifier: UUID): Application!
}
input GetApiKeyInput {
@@ -3297,7 +3298,6 @@ type Mutation {
deactivateSkill(id: UUID!): Skill!
evaluateAgentTurn(turnId: UUID!): AgentTurnEvaluation!
runEvaluationInput(agentId: UUID!, input: String!): AgentTurn!
- duplicateDashboard(id: UUID!): DuplicatedDashboard!
getAuthorizationUrlForSSO(input: GetAuthorizationUrlForSSOInput!): GetAuthorizationUrlForSSO!
getLoginTokenFromCredentials(email: String!, password: String!, captchaToken: String, locale: String, verifyEmailRedirectPath: String, origin: String!): LoginToken!
signIn(email: String!, password: String!, captchaToken: String, locale: String, verifyEmailRedirectPath: String): AvailableWorkspacesAndAccessTokens!
@@ -3336,10 +3336,15 @@ type Mutation {
updateWorkspace(data: UpdateWorkspaceInput!): Workspace!
deleteCurrentWorkspace: Workspace!
checkCustomDomainValidRecords: DomainValidRecords
+ installApplication(appRegistrationId: String!, version: String): Boolean!
+ runWorkspaceMigration(workspaceMigration: WorkspaceMigrationInput!): Boolean!
+ uninstallApplication(universalIdentifier: String!): Boolean!
+ updateOneApplicationVariable(key: String!, value: String!, applicationId: UUID!): Boolean!
createOIDCIdentityProvider(input: SetupOIDCSsoInput!): SetupSso!
createSAMLIdentityProvider(input: SetupSAMLSsoInput!): SetupSso!
deleteSSOIdentityProvider(input: DeleteSsoInput!): DeleteSso!
editSSOIdentityProvider(input: EditSsoInput!): EditSso!
+ duplicateDashboard(id: UUID!): DuplicatedDashboard!
impersonate(userId: UUID!, workspaceId: UUID!): Impersonate!
sendEmail(input: SendEmailInput!): SendEmailOutput!
startChannelSync(connectedAccountId: UUID!): ChannelSyncSuccess!
@@ -3356,10 +3361,6 @@ type Mutation {
createOneAppToken(input: CreateOneAppTokenInput!): AppToken!
installMarketplaceApp(universalIdentifier: String!, version: String): Boolean!
syncMarketplaceCatalog: Boolean!
- installApplication(appRegistrationId: String!, version: String): Boolean!
- runWorkspaceMigration(workspaceMigration: WorkspaceMigrationInput!): Boolean!
- uninstallApplication(universalIdentifier: String!): Boolean!
- updateOneApplicationVariable(key: String!, value: String!, applicationId: UUID!): Boolean!
createDevelopmentApplication(universalIdentifier: String!, name: String!): DevelopmentApplication!
generateApplicationToken(applicationId: UUID!): ApplicationTokenPair!
syncApplication(manifest: JSON!): WorkspaceMigration!
@@ -4285,6 +4286,22 @@ input UpdateWorkspaceInput {
useRecommendedModels: Boolean
}
+input WorkspaceMigrationInput {
+ actions: [WorkspaceMigrationDeleteActionInput!]!
+}
+
+input WorkspaceMigrationDeleteActionInput {
+ type: WorkspaceMigrationActionType!
+ metadataName: AllMetadataName!
+ universalIdentifier: String!
+}
+
+enum WorkspaceMigrationActionType {
+ delete
+ create
+ update
+}
+
input SetupOIDCSsoInput {
name: String!
issuer: String!
@@ -4354,22 +4371,6 @@ input CreateAppTokenInput {
expiresAt: DateTime!
}
-input WorkspaceMigrationInput {
- actions: [WorkspaceMigrationDeleteActionInput!]!
-}
-
-input WorkspaceMigrationDeleteActionInput {
- type: WorkspaceMigrationActionType!
- metadataName: AllMetadataName!
- universalIdentifier: String!
-}
-
-enum WorkspaceMigrationActionType {
- delete
- create
- update
-}
-
enum FileFolder {
ProfilePicture
WorkspaceLogo
diff --git a/packages/twenty-client-sdk/src/metadata/generated/schema.ts b/packages/twenty-client-sdk/src/metadata/generated/schema.ts
index c7b92134bd..d5090bd58e 100644
--- a/packages/twenty-client-sdk/src/metadata/generated/schema.ts
+++ b/packages/twenty-client-sdk/src/metadata/generated/schema.ts
@@ -51,6 +51,7 @@ export interface ApplicationRegistration {
latestAvailableVersion?: Scalars['String']
isListed: Scalars['Boolean']
isFeatured: Scalars['Boolean']
+ isPreInstalled: Scalars['Boolean']
logoUrl?: Scalars['String']
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
@@ -2596,10 +2597,6 @@ export interface Query {
skill?: Skill
chatThreads: AgentChatThreadConnection
agentTurns: AgentTurn[]
- eventLogs: EventLogQueryResult
- pieChartData: PieChartData
- lineChartData: LineChartData
- barChartData: BarChartData
checkUserExists: CheckUserExist
checkWorkspaceInviteHashIsValid: WorkspaceInviteHashValid
findWorkspaceFromInviteHash: Workspace
@@ -2615,7 +2612,13 @@ export interface Query {
currentWorkspace: Workspace
getPublicWorkspaceDataByDomain: PublicWorkspaceData
getPublicWorkspaceDataById: PublicWorkspaceDataSummary
+ findManyApplications: Application[]
+ findOneApplication: Application
getSSOIdentityProviders: FindAvailableSSOIDP[]
+ eventLogs: EventLogQueryResult
+ pieChartData: PieChartData
+ lineChartData: LineChartData
+ barChartData: BarChartData
getConnectedImapSmtpCaldavAccount: ConnectedImapSmtpCaldavAccount
getAutoCompleteAddress: AutocompleteResult[]
getAddressDetails: PlaceDetailsResult
@@ -2625,8 +2628,6 @@ export interface Query {
getEmailingDomains: EmailingDomain[]
findManyMarketplaceApps: MarketplaceApp[]
findMarketplaceAppDetail: MarketplaceAppDetail
- findManyApplications: Application[]
- findOneApplication: Application
__typename: 'Query'
}
@@ -2778,7 +2779,6 @@ export interface Mutation {
deactivateSkill: Skill
evaluateAgentTurn: AgentTurnEvaluation
runEvaluationInput: AgentTurn
- duplicateDashboard: DuplicatedDashboard
getAuthorizationUrlForSSO: GetAuthorizationUrlForSSO
getLoginTokenFromCredentials: LoginToken
signIn: AvailableWorkspacesAndAccessTokens
@@ -2817,10 +2817,15 @@ export interface Mutation {
updateWorkspace: Workspace
deleteCurrentWorkspace: Workspace
checkCustomDomainValidRecords?: DomainValidRecords
+ installApplication: Scalars['Boolean']
+ runWorkspaceMigration: Scalars['Boolean']
+ uninstallApplication: Scalars['Boolean']
+ updateOneApplicationVariable: Scalars['Boolean']
createOIDCIdentityProvider: SetupSso
createSAMLIdentityProvider: SetupSso
deleteSSOIdentityProvider: DeleteSso
editSSOIdentityProvider: EditSso
+ duplicateDashboard: DuplicatedDashboard
impersonate: Impersonate
sendEmail: SendEmailOutput
startChannelSync: ChannelSyncSuccess
@@ -2837,10 +2842,6 @@ export interface Mutation {
createOneAppToken: AppToken
installMarketplaceApp: Scalars['Boolean']
syncMarketplaceCatalog: Scalars['Boolean']
- installApplication: Scalars['Boolean']
- runWorkspaceMigration: Scalars['Boolean']
- uninstallApplication: Scalars['Boolean']
- updateOneApplicationVariable: Scalars['Boolean']
createDevelopmentApplication: DevelopmentApplication
generateApplicationToken: ApplicationTokenPair
syncApplication: WorkspaceMigration
@@ -2912,6 +2913,7 @@ export interface ApplicationRegistrationGenqlSelection{
latestAvailableVersion?: boolean | number
isListed?: boolean | number
isFeatured?: boolean | number
+ isPreInstalled?: boolean | number
logoUrl?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
@@ -5624,10 +5626,6 @@ export interface QueryGenqlSelection{
/** Specify to sort results. */
sorting: AgentChatThreadSort[]} })
agentTurns?: (AgentTurnGenqlSelection & { __args: {agentId: Scalars['UUID']} })
- eventLogs?: (EventLogQueryResultGenqlSelection & { __args: {input: EventLogQueryInput} })
- pieChartData?: (PieChartDataGenqlSelection & { __args: {input: PieChartDataInput} })
- lineChartData?: (LineChartDataGenqlSelection & { __args: {input: LineChartDataInput} })
- barChartData?: (BarChartDataGenqlSelection & { __args: {input: BarChartDataInput} })
checkUserExists?: (CheckUserExistGenqlSelection & { __args: {email: Scalars['String'], captchaToken?: (Scalars['String'] | null)} })
checkWorkspaceInviteHashIsValid?: (WorkspaceInviteHashValidGenqlSelection & { __args: {inviteHash: Scalars['String']} })
findWorkspaceFromInviteHash?: (WorkspaceGenqlSelection & { __args: {inviteHash: Scalars['String']} })
@@ -5643,7 +5641,13 @@ export interface QueryGenqlSelection{
currentWorkspace?: WorkspaceGenqlSelection
getPublicWorkspaceDataByDomain?: (PublicWorkspaceDataGenqlSelection & { __args?: {origin?: (Scalars['String'] | null)} })
getPublicWorkspaceDataById?: (PublicWorkspaceDataSummaryGenqlSelection & { __args: {id: Scalars['UUID']} })
+ findManyApplications?: ApplicationGenqlSelection
+ findOneApplication?: (ApplicationGenqlSelection & { __args?: {id?: (Scalars['UUID'] | null), universalIdentifier?: (Scalars['UUID'] | null)} })
getSSOIdentityProviders?: FindAvailableSSOIDPGenqlSelection
+ eventLogs?: (EventLogQueryResultGenqlSelection & { __args: {input: EventLogQueryInput} })
+ pieChartData?: (PieChartDataGenqlSelection & { __args: {input: PieChartDataInput} })
+ lineChartData?: (LineChartDataGenqlSelection & { __args: {input: LineChartDataInput} })
+ barChartData?: (BarChartDataGenqlSelection & { __args: {input: BarChartDataInput} })
getConnectedImapSmtpCaldavAccount?: (ConnectedImapSmtpCaldavAccountGenqlSelection & { __args: {id: Scalars['UUID']} })
getAutoCompleteAddress?: (AutocompleteResultGenqlSelection & { __args: {address: Scalars['String'], token: Scalars['String'], country?: (Scalars['String'] | null), isFieldCity?: (Scalars['Boolean'] | null)} })
getAddressDetails?: (PlaceDetailsResultGenqlSelection & { __args: {placeId: Scalars['String'], token: Scalars['String']} })
@@ -5653,8 +5657,6 @@ export interface QueryGenqlSelection{
getEmailingDomains?: EmailingDomainGenqlSelection
findManyMarketplaceApps?: MarketplaceAppGenqlSelection
findMarketplaceAppDetail?: (MarketplaceAppDetailGenqlSelection & { __args: {universalIdentifier: Scalars['String']} })
- findManyApplications?: ApplicationGenqlSelection
- findOneApplication?: (ApplicationGenqlSelection & { __args?: {id?: (Scalars['UUID'] | null), universalIdentifier?: (Scalars['UUID'] | null)} })
__typename?: boolean | number
__scalar?: boolean | number
}
@@ -5825,7 +5827,6 @@ export interface MutationGenqlSelection{
deactivateSkill?: (SkillGenqlSelection & { __args: {id: Scalars['UUID']} })
evaluateAgentTurn?: (AgentTurnEvaluationGenqlSelection & { __args: {turnId: Scalars['UUID']} })
runEvaluationInput?: (AgentTurnGenqlSelection & { __args: {agentId: Scalars['UUID'], input: Scalars['String']} })
- duplicateDashboard?: (DuplicatedDashboardGenqlSelection & { __args: {id: Scalars['UUID']} })
getAuthorizationUrlForSSO?: (GetAuthorizationUrlForSSOGenqlSelection & { __args: {input: GetAuthorizationUrlForSSOInput} })
getLoginTokenFromCredentials?: (LoginTokenGenqlSelection & { __args: {email: Scalars['String'], password: Scalars['String'], captchaToken?: (Scalars['String'] | null), locale?: (Scalars['String'] | null), verifyEmailRedirectPath?: (Scalars['String'] | null), origin: Scalars['String']} })
signIn?: (AvailableWorkspacesAndAccessTokensGenqlSelection & { __args: {email: Scalars['String'], password: Scalars['String'], captchaToken?: (Scalars['String'] | null), locale?: (Scalars['String'] | null), verifyEmailRedirectPath?: (Scalars['String'] | null)} })
@@ -5864,10 +5865,15 @@ export interface MutationGenqlSelection{
updateWorkspace?: (WorkspaceGenqlSelection & { __args: {data: UpdateWorkspaceInput} })
deleteCurrentWorkspace?: WorkspaceGenqlSelection
checkCustomDomainValidRecords?: DomainValidRecordsGenqlSelection
+ installApplication?: { __args: {appRegistrationId: Scalars['String'], version?: (Scalars['String'] | null)} }
+ runWorkspaceMigration?: { __args: {workspaceMigration: WorkspaceMigrationInput} }
+ uninstallApplication?: { __args: {universalIdentifier: Scalars['String']} }
+ updateOneApplicationVariable?: { __args: {key: Scalars['String'], value: Scalars['String'], applicationId: Scalars['UUID']} }
createOIDCIdentityProvider?: (SetupSsoGenqlSelection & { __args: {input: SetupOIDCSsoInput} })
createSAMLIdentityProvider?: (SetupSsoGenqlSelection & { __args: {input: SetupSAMLSsoInput} })
deleteSSOIdentityProvider?: (DeleteSsoGenqlSelection & { __args: {input: DeleteSsoInput} })
editSSOIdentityProvider?: (EditSsoGenqlSelection & { __args: {input: EditSsoInput} })
+ duplicateDashboard?: (DuplicatedDashboardGenqlSelection & { __args: {id: Scalars['UUID']} })
impersonate?: (ImpersonateGenqlSelection & { __args: {userId: Scalars['UUID'], workspaceId: Scalars['UUID']} })
sendEmail?: (SendEmailOutputGenqlSelection & { __args: {input: SendEmailInput} })
startChannelSync?: (ChannelSyncSuccessGenqlSelection & { __args: {connectedAccountId: Scalars['UUID']} })
@@ -5884,10 +5890,6 @@ export interface MutationGenqlSelection{
createOneAppToken?: (AppTokenGenqlSelection & { __args: {input: CreateOneAppTokenInput} })
installMarketplaceApp?: { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} }
syncMarketplaceCatalog?: boolean | number
- installApplication?: { __args: {appRegistrationId: Scalars['String'], version?: (Scalars['String'] | null)} }
- runWorkspaceMigration?: { __args: {workspaceMigration: WorkspaceMigrationInput} }
- uninstallApplication?: { __args: {universalIdentifier: Scalars['String']} }
- updateOneApplicationVariable?: { __args: {key: Scalars['String'], value: Scalars['String'], applicationId: Scalars['UUID']} }
createDevelopmentApplication?: (DevelopmentApplicationGenqlSelection & { __args: {universalIdentifier: Scalars['String'], name: Scalars['String']} })
generateApplicationToken?: (ApplicationTokenPairGenqlSelection & { __args: {applicationId: Scalars['UUID']} })
syncApplication?: (WorkspaceMigrationGenqlSelection & { __args: {manifest: Scalars['JSON']} })
@@ -6198,6 +6200,10 @@ export interface ActivateWorkspaceInput {displayName?: (Scalars['String'] | null
export interface UpdateWorkspaceInput {subdomain?: (Scalars['String'] | null),customDomain?: (Scalars['String'] | null),displayName?: (Scalars['String'] | null),logo?: (Scalars['String'] | null),inviteHash?: (Scalars['String'] | null),isPublicInviteLinkEnabled?: (Scalars['Boolean'] | null),allowImpersonation?: (Scalars['Boolean'] | null),isGoogleAuthEnabled?: (Scalars['Boolean'] | null),isMicrosoftAuthEnabled?: (Scalars['Boolean'] | null),isPasswordAuthEnabled?: (Scalars['Boolean'] | null),isGoogleAuthBypassEnabled?: (Scalars['Boolean'] | null),isMicrosoftAuthBypassEnabled?: (Scalars['Boolean'] | null),isPasswordAuthBypassEnabled?: (Scalars['Boolean'] | null),defaultRoleId?: (Scalars['UUID'] | null),isTwoFactorAuthenticationEnforced?: (Scalars['Boolean'] | null),trashRetentionDays?: (Scalars['Float'] | null),eventLogRetentionDays?: (Scalars['Float'] | null),fastModel?: (Scalars['String'] | null),smartModel?: (Scalars['String'] | null),aiAdditionalInstructions?: (Scalars['String'] | null),editableProfileFields?: (Scalars['String'][] | null),enabledAiModelIds?: (Scalars['String'][] | null),useRecommendedModels?: (Scalars['Boolean'] | null)}
+export interface WorkspaceMigrationInput {actions: WorkspaceMigrationDeleteActionInput[]}
+
+export interface WorkspaceMigrationDeleteActionInput {type: WorkspaceMigrationActionType,metadataName: AllMetadataName,universalIdentifier: Scalars['String']}
+
export interface SetupOIDCSsoInput {name: Scalars['String'],issuer: Scalars['String'],clientID: Scalars['String'],clientSecret: Scalars['String']}
export interface SetupSAMLSsoInput {name: Scalars['String'],issuer: Scalars['String'],id: Scalars['UUID'],ssoURL: Scalars['String'],certificate: Scalars['String'],fingerprint?: (Scalars['String'] | null)}
@@ -6222,10 +6228,6 @@ appToken: CreateAppTokenInput}
export interface CreateAppTokenInput {expiresAt: Scalars['DateTime']}
-export interface WorkspaceMigrationInput {actions: WorkspaceMigrationDeleteActionInput[]}
-
-export interface WorkspaceMigrationDeleteActionInput {type: WorkspaceMigrationActionType,metadataName: AllMetadataName,universalIdentifier: Scalars['String']}
-
export interface SubscriptionGenqlSelection{
onEventSubscription?: (EventSubscriptionGenqlSelection & { __args: {eventStreamId: Scalars['String']} })
logicFunctionLogs?: (LogicFunctionLogsGenqlSelection & { __args: {input: LogicFunctionLogsInput} })
diff --git a/packages/twenty-client-sdk/src/metadata/generated/types.ts b/packages/twenty-client-sdk/src/metadata/generated/types.ts
index f7996044cd..afaa0853b4 100644
--- a/packages/twenty-client-sdk/src/metadata/generated/types.ts
+++ b/packages/twenty-client-sdk/src/metadata/generated/types.ts
@@ -81,7 +81,7 @@ export default {
341,
348,
379,
- 465,
+ 454,
466
],
"types": {
@@ -204,6 +204,9 @@ export default {
"isFeatured": [
6
],
+ "isPreInstalled": [
+ 6
+ ],
"logoUrl": [
1
],
@@ -6218,42 +6221,6 @@ export default {
]
}
],
- "eventLogs": [
- 287,
- {
- "input": [
- 333,
- "EventLogQueryInput!"
- ]
- }
- ],
- "pieChartData": [
- 278,
- {
- "input": [
- 337,
- "PieChartDataInput!"
- ]
- }
- ],
- "lineChartData": [
- 276,
- {
- "input": [
- 338,
- "LineChartDataInput!"
- ]
- }
- ],
- "barChartData": [
- 273,
- {
- "input": [
- 339,
- "BarChartDataInput!"
- ]
- }
- ],
"checkUserExists": [
239,
{
@@ -6373,9 +6340,59 @@ export default {
]
}
],
+ "findManyApplications": [
+ 52
+ ],
+ "findOneApplication": [
+ 52,
+ {
+ "id": [
+ 3
+ ],
+ "universalIdentifier": [
+ 3
+ ]
+ }
+ ],
"getSSOIdentityProviders": [
195
],
+ "eventLogs": [
+ 287,
+ {
+ "input": [
+ 333,
+ "EventLogQueryInput!"
+ ]
+ }
+ ],
+ "pieChartData": [
+ 278,
+ {
+ "input": [
+ 337,
+ "PieChartDataInput!"
+ ]
+ }
+ ],
+ "lineChartData": [
+ 276,
+ {
+ "input": [
+ 338,
+ "LineChartDataInput!"
+ ]
+ }
+ ],
+ "barChartData": [
+ 273,
+ {
+ "input": [
+ 339,
+ "BarChartDataInput!"
+ ]
+ }
+ ],
"getConnectedImapSmtpCaldavAccount": [
260,
{
@@ -6446,20 +6463,6 @@ export default {
]
}
],
- "findManyApplications": [
- 52
- ],
- "findOneApplication": [
- 52,
- {
- "id": [
- 3
- ],
- "universalIdentifier": [
- 3
- ]
- }
- ],
"__typename": [
1
]
@@ -7913,15 +7916,6 @@ export default {
]
}
],
- "duplicateDashboard": [
- 279,
- {
- "id": [
- 3,
- "UUID!"
- ]
- }
- ],
"getAuthorizationUrlForSSO": [
229,
{
@@ -8368,11 +8362,58 @@ export default {
"checkCustomDomainValidRecords": [
219
],
+ "installApplication": [
+ 6,
+ {
+ "appRegistrationId": [
+ 1,
+ "String!"
+ ],
+ "version": [
+ 1
+ ]
+ }
+ ],
+ "runWorkspaceMigration": [
+ 6,
+ {
+ "workspaceMigration": [
+ 452,
+ "WorkspaceMigrationInput!"
+ ]
+ }
+ ],
+ "uninstallApplication": [
+ 6,
+ {
+ "universalIdentifier": [
+ 1,
+ "String!"
+ ]
+ }
+ ],
+ "updateOneApplicationVariable": [
+ 6,
+ {
+ "key": [
+ 1,
+ "String!"
+ ],
+ "value": [
+ 1,
+ "String!"
+ ],
+ "applicationId": [
+ 3,
+ "UUID!"
+ ]
+ }
+ ],
"createOIDCIdentityProvider": [
196,
{
"input": [
- 452,
+ 455,
"SetupOIDCSsoInput!"
]
}
@@ -8381,7 +8422,7 @@ export default {
196,
{
"input": [
- 453,
+ 456,
"SetupSAMLSsoInput!"
]
}
@@ -8390,7 +8431,7 @@ export default {
192,
{
"input": [
- 454,
+ 457,
"DeleteSsoInput!"
]
}
@@ -8399,11 +8440,20 @@ export default {
193,
{
"input": [
- 455,
+ 458,
"EditSsoInput!"
]
}
],
+ "duplicateDashboard": [
+ 279,
+ {
+ "id": [
+ 3,
+ "UUID!"
+ ]
+ }
+ ],
"impersonate": [
241,
{
@@ -8421,7 +8471,7 @@ export default {
284,
{
"input": [
- 456,
+ 459,
"SendEmailInput!"
]
}
@@ -8447,7 +8497,7 @@ export default {
"String!"
],
"connectionParameters": [
- 458,
+ 461,
"EmailAccountConnectionParameters!"
],
"id": [
@@ -8459,7 +8509,7 @@ export default {
160,
{
"input": [
- 460,
+ 463,
"UpdateLabPublicFeatureFlagInput!"
]
}
@@ -8532,7 +8582,7 @@ export default {
71,
{
"input": [
- 461,
+ 464,
"CreateOneAppTokenInput!"
]
}
@@ -8552,53 +8602,6 @@ export default {
"syncMarketplaceCatalog": [
6
],
- "installApplication": [
- 6,
- {
- "appRegistrationId": [
- 1,
- "String!"
- ],
- "version": [
- 1
- ]
- }
- ],
- "runWorkspaceMigration": [
- 6,
- {
- "workspaceMigration": [
- 463,
- "WorkspaceMigrationInput!"
- ]
- }
- ],
- "uninstallApplication": [
- 6,
- {
- "universalIdentifier": [
- 1,
- "String!"
- ]
- }
- ],
- "updateOneApplicationVariable": [
- 6,
- {
- "key": [
- 1,
- "String!"
- ],
- "value": [
- 1,
- "String!"
- ],
- "applicationId": [
- 3,
- "UUID!"
- ]
- }
- ],
"createDevelopmentApplication": [
245,
{
@@ -10783,6 +10786,29 @@ export default {
1
]
},
+ "WorkspaceMigrationInput": {
+ "actions": [
+ 453
+ ],
+ "__typename": [
+ 1
+ ]
+ },
+ "WorkspaceMigrationDeleteActionInput": {
+ "type": [
+ 454
+ ],
+ "metadataName": [
+ 316
+ ],
+ "universalIdentifier": [
+ 1
+ ],
+ "__typename": [
+ 1
+ ]
+ },
+ "WorkspaceMigrationActionType": {},
"SetupOIDCSsoInput": {
"name": [
1
@@ -10865,7 +10891,7 @@ export default {
1
],
"files": [
- 457
+ 460
],
"__typename": [
1
@@ -10884,13 +10910,13 @@ export default {
},
"EmailAccountConnectionParameters": {
"IMAP": [
- 459
+ 462
],
"SMTP": [
- 459
+ 462
],
"CALDAV": [
- 459
+ 462
],
"__typename": [
1
@@ -10929,7 +10955,7 @@ export default {
},
"CreateOneAppTokenInput": {
"appToken": [
- 462
+ 465
],
"__typename": [
1
@@ -10943,29 +10969,6 @@ export default {
1
]
},
- "WorkspaceMigrationInput": {
- "actions": [
- 464
- ],
- "__typename": [
- 1
- ]
- },
- "WorkspaceMigrationDeleteActionInput": {
- "type": [
- 465
- ],
- "metadataName": [
- 316
- ],
- "universalIdentifier": [
- 1
- ],
- "__typename": [
- 1
- ]
- },
- "WorkspaceMigrationActionType": {},
"FileFolder": {},
"Subscription": {
"onEventSubscription": [
diff --git a/packages/twenty-front/src/generated-admin/graphql.ts b/packages/twenty-front/src/generated-admin/graphql.ts
index 8645ee535f..d5d5b45116 100644
--- a/packages/twenty-front/src/generated-admin/graphql.ts
+++ b/packages/twenty-front/src/generated-admin/graphql.ts
@@ -136,6 +136,7 @@ export type ApplicationRegistration = {
id: Scalars['UUID'];
isFeatured: Scalars['Boolean'];
isListed: Scalars['Boolean'];
+ isPreInstalled: Scalars['Boolean'];
latestAvailableVersion?: Maybe;
logoUrl?: Maybe;
name: Scalars['String'];
@@ -771,7 +772,7 @@ export type GetModelsDevSuggestionsQuery = { __typename?: 'Query', getModelsDevS
export type FindAllApplicationRegistrationsQueryVariables = Exact<{ [key: string]: never; }>;
-export type FindAllApplicationRegistrationsQuery = { __typename?: 'Query', findAllApplicationRegistrations: Array<{ __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string }> };
+export type FindAllApplicationRegistrationsQuery = { __typename?: 'Query', findAllApplicationRegistrations: Array<{ __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, isPreInstalled: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string }> };
export type CreateDatabaseConfigVariableMutationVariables = Exact<{
key: Scalars['String'];
@@ -838,7 +839,7 @@ export type FindOneAdminApplicationRegistrationQueryVariables = Exact<{
}>;
-export type FindOneAdminApplicationRegistrationQuery = { __typename?: 'Query', findOneAdminApplicationRegistration: { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string } };
+export type FindOneAdminApplicationRegistrationQuery = { __typename?: 'Query', findOneAdminApplicationRegistration: { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, isPreInstalled: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string } };
export type GetAdminChatThreadMessagesQueryVariables = Exact<{
threadId: Scalars['UUID'];
@@ -938,10 +939,10 @@ export type GetMaintenanceModeQueryVariables = Exact<{ [key: string]: never; }>;
export type GetMaintenanceModeQuery = { __typename?: 'Query', getMaintenanceMode?: { __typename?: 'MaintenanceMode', startAt: string, endAt: string, link?: string | null } | null };
-export type ApplicationRegistrationFragmentFragment = { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string };
+export type ApplicationRegistrationFragmentFragment = { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, isPreInstalled: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string };
export const UserInfoFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"UserInfoFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"UserInfo"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]} as unknown as DocumentNode;
-export const ApplicationRegistrationFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
+export const ApplicationRegistrationFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const AddAiProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AddAiProvider"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerConfig"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"addAiProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerName"}}},{"kind":"Argument","name":{"kind":"Name","value":"providerConfig"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerConfig"}}}]}]}}]} as unknown as DocumentNode;
export const AddModelToProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AddModelToProvider"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modelConfig"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"addModelToProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerName"}}},{"kind":"Argument","name":{"kind":"Name","value":"modelConfig"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelConfig"}}}]}]}}]} as unknown as DocumentNode;
export const RemoveAiProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RemoveAiProvider"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeAiProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerName"}}}]}]}}]} as unknown as DocumentNode;
@@ -956,7 +957,7 @@ export const GetAdminAiUsageByWorkspaceDocument = {"kind":"Document","definition
export const GetAiProvidersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAiProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAiProviders"}}]}}]} as unknown as DocumentNode;
export const GetModelsDevProvidersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetModelsDevProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getModelsDevProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"modelCount"}},{"kind":"Field","name":{"kind":"Name","value":"npm"}}]}}]}}]} as unknown as DocumentNode;
export const GetModelsDevSuggestionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetModelsDevSuggestions"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getModelsDevSuggestions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerType"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"inputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"outputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"cachedInputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"cacheCreationCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"contextWindowTokens"}},{"kind":"Field","name":{"kind":"Name","value":"maxOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"modalities"}},{"kind":"Field","name":{"kind":"Name","value":"supportsReasoning"}}]}}]}}]} as unknown as DocumentNode;
-export const FindAllApplicationRegistrationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
+export const FindAllApplicationRegistrationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const CreateDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"value"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}},{"kind":"Argument","name":{"kind":"Name","value":"value"},"value":{"kind":"Variable","name":{"kind":"Name","value":"value"}}}]}]}}]} as unknown as DocumentNode;
export const DeleteDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}]}]}}]} as unknown as DocumentNode;
export const UpdateDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"value"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}},{"kind":"Argument","name":{"kind":"Name","value":"value"},"value":{"kind":"Variable","name":{"kind":"Name","value":"value"}}}]}]}}]} as unknown as DocumentNode;
@@ -965,7 +966,7 @@ export const GetDatabaseConfigVariableDocument = {"kind":"Document","definitions
export const UpdateWorkspaceFeatureFlagDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateWorkspaceFeatureFlag"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"featureFlag"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"value"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateWorkspaceFeatureFlag"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}},{"kind":"Argument","name":{"kind":"Name","value":"featureFlag"},"value":{"kind":"Variable","name":{"kind":"Name","value":"featureFlag"}}},{"kind":"Argument","name":{"kind":"Name","value":"value"},"value":{"kind":"Variable","name":{"kind":"Name","value":"value"}}}]}]}}]} as unknown as DocumentNode;
export const AdminPanelRecentUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdminPanelRecentUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adminPanelRecentUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"searchTerm"},"value":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceName"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}}]}}]}}]} as unknown as DocumentNode;
export const AdminPanelTopWorkspacesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdminPanelTopWorkspaces"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adminPanelTopWorkspaces"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"searchTerm"},"value":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"subdomain"}}]}}]}}]} as unknown as DocumentNode;
-export const FindOneAdminApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneAdminApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneAdminApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
+export const FindOneAdminApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneAdminApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneAdminApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const GetAdminChatThreadMessagesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminChatThreadMessages"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"threadId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminChatThreadMessages"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"threadId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"threadId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"thread"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"totalInputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"totalOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"conversationSize"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"messages"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"parts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"textContent"}},{"kind":"Field","name":{"kind":"Name","value":"toolName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode;
export const GetAdminWorkspaceChatThreadsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminWorkspaceChatThreads"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminWorkspaceChatThreads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"totalInputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"totalOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"conversationSize"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode;
export const GetVersionInfoDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetVersionInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"versionInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currentVersion"}},{"kind":"Field","name":{"kind":"Name","value":"latestVersion"}}]}}]}}]} as unknown as DocumentNode;
diff --git a/packages/twenty-front/src/generated-metadata/graphql.ts b/packages/twenty-front/src/generated-metadata/graphql.ts
index 1c9303b4c0..d7ec938a27 100644
--- a/packages/twenty-front/src/generated-metadata/graphql.ts
+++ b/packages/twenty-front/src/generated-metadata/graphql.ts
@@ -324,6 +324,7 @@ export type ApplicationRegistration = {
id: Scalars['UUID'];
isFeatured: Scalars['Boolean'];
isListed: Scalars['Boolean'];
+ isPreInstalled: Scalars['Boolean'];
latestAvailableVersion?: Maybe;
logoUrl?: Maybe;
name: Scalars['String'];
@@ -6822,7 +6823,7 @@ export type MyMessageFoldersQueryVariables = Exact<{
export type MyMessageFoldersQuery = { __typename?: 'Query', myMessageFolders: Array<{ __typename?: 'MessageFolder', id: string, name?: string | null, isSynced: boolean, isSentFolder: boolean, parentFolderId?: string | null, externalId?: string | null, messageChannelId: string, createdAt: string, updatedAt: string }> };
-export type ApplicationRegistrationFragmentFragment = { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string };
+export type ApplicationRegistrationFragmentFragment = { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, isPreInstalled: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string };
export type DeleteApplicationRegistrationMutationVariables = Exact<{
id: Scalars['String'];
@@ -6851,7 +6852,7 @@ export type UpdateApplicationRegistrationMutationVariables = Exact<{
}>;
-export type UpdateApplicationRegistrationMutation = { __typename?: 'Mutation', updateApplicationRegistration: { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string } };
+export type UpdateApplicationRegistrationMutation = { __typename?: 'Mutation', updateApplicationRegistration: { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, isPreInstalled: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string } };
export type UpdateApplicationRegistrationVariableMutationVariables = Exact<{
input: UpdateApplicationRegistrationVariableInput;
@@ -6884,14 +6885,14 @@ export type FindApplicationRegistrationVariablesQuery = { __typename?: 'Query',
export type FindManyApplicationRegistrationsQueryVariables = Exact<{ [key: string]: never; }>;
-export type FindManyApplicationRegistrationsQuery = { __typename?: 'Query', findManyApplicationRegistrations: Array<{ __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string }> };
+export type FindManyApplicationRegistrationsQuery = { __typename?: 'Query', findManyApplicationRegistrations: Array<{ __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, isPreInstalled: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string }> };
export type FindOneApplicationRegistrationQueryVariables = Exact<{
id: Scalars['String'];
}>;
-export type FindOneApplicationRegistrationQuery = { __typename?: 'Query', findOneApplicationRegistration: { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string } };
+export type FindOneApplicationRegistrationQuery = { __typename?: 'Query', findOneApplicationRegistration: { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array, oAuthScopes: Array, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, isPreInstalled: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string } };
export type UninstallApplicationMutationVariables = Exact<{
universalIdentifier: Scalars['String'];
@@ -7785,7 +7786,7 @@ export const MarketplaceAppFieldsFragmentDoc = {"kind":"Document","definitions":
export const NavigationMenuItemFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"NavigationMenuItemFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"NavigationMenuItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"userWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"targetRecordId"}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"viewId"}},{"kind":"Field","name":{"kind":"Name","value":"folderId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"link"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"pageLayoutId"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const NavigationMenuItemQueryFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"NavigationMenuItemQueryFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"NavigationMenuItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"NavigationMenuItemFields"}},{"kind":"Field","name":{"kind":"Name","value":"targetRecordIdentifier"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifier"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"NavigationMenuItemFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"NavigationMenuItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"userWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"targetRecordId"}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"viewId"}},{"kind":"Field","name":{"kind":"Name","value":"folderId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"link"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"pageLayoutId"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const PublicConnectionParamsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PublicConnectionParams"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PublicConnectionParametersOutput"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"host"}},{"kind":"Field","name":{"kind":"Name","value":"port"}},{"kind":"Field","name":{"kind":"Name","value":"secure"}},{"kind":"Field","name":{"kind":"Name","value":"username"}}]}}]} as unknown as DocumentNode;
-export const ApplicationRegistrationFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
+export const ApplicationRegistrationFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const BillingPriceLicensedFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BillingPriceLicensedFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingPriceLicensed"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePriceId"}},{"kind":"Field","name":{"kind":"Name","value":"unitAmount"}},{"kind":"Field","name":{"kind":"Name","value":"recurringInterval"}},{"kind":"Field","name":{"kind":"Name","value":"priceUsageType"}}]}}]} as unknown as DocumentNode;
export const BillingPriceMeteredFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BillingPriceMeteredFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingPriceMetered"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"priceUsageType"}},{"kind":"Field","name":{"kind":"Name","value":"recurringInterval"}},{"kind":"Field","name":{"kind":"Name","value":"stripePriceId"}},{"kind":"Field","name":{"kind":"Name","value":"tiers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"flatAmount"}},{"kind":"Field","name":{"kind":"Name","value":"unitAmount"}},{"kind":"Field","name":{"kind":"Name","value":"upTo"}}]}}]}}]} as unknown as DocumentNode;
export const ApiKeyFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApiKeyFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApiKey"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"revokedAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}}]}}]}}]} as unknown as DocumentNode;
@@ -7937,13 +7938,13 @@ export const MyMessageFoldersDocument = {"kind":"Document","definitions":[{"kind
export const DeleteApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}]}}]} as unknown as DocumentNode;
export const RotateApplicationRegistrationClientSecretDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RotateApplicationRegistrationClientSecret"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"rotateApplicationRegistrationClientSecret"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clientSecret"}}]}}]}}]} as unknown as DocumentNode;
export const TransferApplicationRegistrationOwnershipDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"TransferApplicationRegistrationOwnership"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetWorkspaceSubdomain"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"transferApplicationRegistrationOwnership"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"applicationRegistrationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"targetWorkspaceSubdomain"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetWorkspaceSubdomain"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
-export const UpdateApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateApplicationRegistrationInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
+export const UpdateApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateApplicationRegistrationInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const UpdateApplicationRegistrationVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateApplicationRegistrationVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateApplicationRegistrationVariableInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateApplicationRegistrationVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode;
export const ApplicationRegistrationTarballUrlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ApplicationRegistrationTarballUrl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"applicationRegistrationTarballUrl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}]}}]} as unknown as DocumentNode;
export const FindApplicationRegistrationStatsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindApplicationRegistrationStats"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findApplicationRegistrationStats"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeInstalls"}},{"kind":"Field","name":{"kind":"Name","value":"mostInstalledVersion"}},{"kind":"Field","name":{"kind":"Name","value":"versionDistribution"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]}}]} as unknown as DocumentNode;
export const FindApplicationRegistrationVariablesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindApplicationRegistrationVariables"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findApplicationRegistrationVariables"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"applicationRegistrationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode;
-export const FindManyApplicationRegistrationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindManyApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findManyApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
-export const FindOneApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
+export const FindManyApplicationRegistrationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindManyApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findManyApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
+export const FindOneApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const UninstallApplicationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UninstallApplication"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uninstallApplication"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"universalIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}}}]}]}}]} as unknown as DocumentNode;
export const UpdateOneApplicationVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateOneApplicationVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"value"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateOneApplicationVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}},{"kind":"Argument","name":{"kind":"Name","value":"value"},"value":{"kind":"Variable","name":{"kind":"Name","value":"value"}}},{"kind":"Argument","name":{"kind":"Name","value":"applicationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationId"}}}]}]}}]} as unknown as DocumentNode;
export const CancelSwitchBillingIntervalDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CancelSwitchBillingInterval"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cancelSwitchBillingInterval"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currentBillingSubscription"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CurrentBillingSubscriptionFragment"}}]}},{"kind":"Field","name":{"kind":"Name","value":"billingSubscriptions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BillingSubscriptionFragment"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BillingSubscriptionSchedulePhaseItemFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingSubscriptionSchedulePhaseItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BillingSubscriptionSchedulePhaseFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingSubscriptionSchedulePhase"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start_date"}},{"kind":"Field","name":{"kind":"Name","value":"end_date"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BillingSubscriptionSchedulePhaseItemFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CurrentBillingSubscriptionFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingSubscription"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"interval"}},{"kind":"Field","name":{"kind":"Name","value":"metadata"}},{"kind":"Field","name":{"kind":"Name","value":"currentPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"phases"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BillingSubscriptionSchedulePhaseFragment"}}]}},{"kind":"Field","name":{"kind":"Name","value":"billingSubscriptionItems"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"hasReachedCurrentPeriodCap"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"stripePriceId"}},{"kind":"Field","name":{"kind":"Name","value":"billingProduct"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"images"}},{"kind":"Field","name":{"kind":"Name","value":"metadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productKey"}},{"kind":"Field","name":{"kind":"Name","value":"planKey"}},{"kind":"Field","name":{"kind":"Name","value":"priceUsageBased"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BillingSubscriptionFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BillingSubscription"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"metadata"}},{"kind":"Field","name":{"kind":"Name","value":"phases"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BillingSubscriptionSchedulePhaseFragment"}}]}}]}}]} as unknown as DocumentNode;
diff --git a/packages/twenty-front/src/modules/ai/utils/__tests__/getToolDisplayMessage.test.ts b/packages/twenty-front/src/modules/ai/utils/__tests__/getToolDisplayMessage.test.ts
index 670582f586..bd0c3b8948 100644
--- a/packages/twenty-front/src/modules/ai/utils/__tests__/getToolDisplayMessage.test.ts
+++ b/packages/twenty-front/src/modules/ai/utils/__tests__/getToolDisplayMessage.test.ts
@@ -86,11 +86,11 @@ describe('getToolDisplayMessage', () => {
});
});
- describe('exa_web_search', () => {
+ describe('app_exa_web_search', () => {
it('should show the same searching-the-web message as native web_search', () => {
const message = getToolDisplayMessage(
{ query: 'CRM tools' },
- 'exa_web_search',
+ 'app_exa_web_search',
false,
);
@@ -99,7 +99,7 @@ describe('getToolDisplayMessage', () => {
});
it('should handle missing query', () => {
- const message = getToolDisplayMessage({}, 'exa_web_search', true);
+ const message = getToolDisplayMessage({}, 'app_exa_web_search', true);
expect(message).toContain('Searched the web');
});
diff --git a/packages/twenty-front/src/modules/ai/utils/getToolDisplayMessage.ts b/packages/twenty-front/src/modules/ai/utils/getToolDisplayMessage.ts
index 086e8ada4d..51f8f48f53 100644
--- a/packages/twenty-front/src/modules/ai/utils/getToolDisplayMessage.ts
+++ b/packages/twenty-front/src/modules/ai/utils/getToolDisplayMessage.ts
@@ -88,7 +88,7 @@ export const getToolDisplayMessage = (
if (
resolvedToolName === 'web_search' ||
- resolvedToolName === 'exa_web_search'
+ resolvedToolName === 'app_exa_web_search'
) {
const query = extractSearchQuery(resolvedInput);
diff --git a/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx b/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
index c92158588e..9568e231e0 100644
--- a/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
+++ b/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
@@ -1,4 +1,7 @@
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
+import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
+import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent';
+import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { Table } from '@/ui/layout/table/components/Table';
import { TableBody } from '@/ui/layout/table/components/TableBody';
import { TableCell } from '@/ui/layout/table/components/TableCell';
@@ -7,16 +10,18 @@ import { TableRow } from '@/ui/layout/table/components/TableRow';
import { useQuery } from '@apollo/client/react';
import { styled } from '@linaria/react';
import { t } from '@lingui/core/macro';
-import { useContext, useState } from 'react';
+import { type ReactNode, useContext, useState } from 'react';
import { assertUnreachable, getSettingsPath } from 'twenty-shared/utils';
import { SettingsPath } from 'twenty-shared/types';
import {
H2Title,
IconChevronRight,
+ IconPinned,
OverflowingTextWithTooltip,
} from 'twenty-ui/display';
import { SearchInput } from 'twenty-ui/input';
import { Section } from 'twenty-ui/layout';
+import { MenuItemToggle } from 'twenty-ui/navigation';
import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants';
import {
type ApplicationRegistrationFragmentFragment,
@@ -35,6 +40,7 @@ const TABLE_GRID_MOBILE = '3fr 3fr 1fr 40px';
export const SettingsAdminApps = () => {
const apolloAdminClient = useApolloAdminClient();
const [searchQuery, setSearchQuery] = useState('');
+ const [showPreInstalledOnly, setShowPreInstalledOnly] = useState(false);
const { theme } = useContext(ThemeContext);
const { data } = useQuery(FindAllApplicationRegistrationsDocument, {
@@ -44,18 +50,23 @@ export const SettingsAdminApps = () => {
const registrations: ApplicationRegistrationFragmentFragment[] =
data?.findAllApplicationRegistrations ?? [];
- const filtered =
- searchQuery.trim().length === 0
- ? registrations
- : registrations.filter((registration) => {
- const query = searchQuery.toLowerCase();
+ const query = searchQuery.trim().toLowerCase();
- return (
- registration.name.toLowerCase().includes(query) ||
- (registration.sourcePackage ?? '').toLowerCase().includes(query) ||
- registration.universalIdentifier.toLowerCase().includes(query)
- );
- });
+ const filtered = registrations.filter((registration) => {
+ if (showPreInstalledOnly && !registration.isPreInstalled) {
+ return false;
+ }
+
+ if (query.length === 0) {
+ return true;
+ }
+
+ return (
+ registration.name.toLowerCase().includes(query) ||
+ (registration.sourcePackage ?? '').toLowerCase().includes(query) ||
+ registration.universalIdentifier.toLowerCase().includes(query)
+ );
+ });
const getFormattedSource = (
registration: ApplicationRegistrationFragmentFragment,
@@ -88,6 +99,29 @@ export const SettingsAdminApps = () => {
placeholder={t`Search registrations...`}
value={searchQuery}
onChange={setSearchQuery}
+ filterDropdown={(filterButton: ReactNode) => (
+
+
+
+ setShowPreInstalledOnly(!showPreInstalledOnly)
+ }
+ toggled={showPreInstalledOnly}
+ text={t`Pre-installed only`}
+ toggleSize="small"
+ />
+
+
+ }
+ />
+ )}
/>
diff --git a/packages/twenty-front/src/modules/settings/application-registrations/graphql/fragments/applicationRegistrationFragment.ts b/packages/twenty-front/src/modules/settings/application-registrations/graphql/fragments/applicationRegistrationFragment.ts
index 8573730c1b..44ba6ca05b 100644
--- a/packages/twenty-front/src/modules/settings/application-registrations/graphql/fragments/applicationRegistrationFragment.ts
+++ b/packages/twenty-front/src/modules/settings/application-registrations/graphql/fragments/applicationRegistrationFragment.ts
@@ -13,6 +13,7 @@ export const APPLICATION_REGISTRATION_FRAGMENT = gql`
latestAvailableVersion
isListed
isFeatured
+ isPreInstalled
ownerWorkspaceId
createdAt
updatedAt
diff --git a/packages/twenty-sdk/package.json b/packages/twenty-sdk/package.json
index 665763b951..d6e9653870 100644
--- a/packages/twenty-sdk/package.json
+++ b/packages/twenty-sdk/package.json
@@ -1,6 +1,6 @@
{
"name": "twenty-sdk",
- "version": "2.0.0",
+ "version": "2.1.0",
"sideEffects": false,
"bin": {
"twenty": "dist/cli.cjs"
@@ -22,6 +22,11 @@
"development"
],
"exports": {
+ "./billing": {
+ "types": "./dist/billing/index.d.ts",
+ "import": "./dist/billing/index.mjs",
+ "require": "./dist/billing/index.cjs"
+ },
"./define": {
"types": "./dist/define/index.d.ts",
"import": "./dist/define/index.mjs",
diff --git a/packages/twenty-sdk/project.json b/packages/twenty-sdk/project.json
index acbf9e1d79..4fa38db83f 100644
--- a/packages/twenty-sdk/project.json
+++ b/packages/twenty-sdk/project.json
@@ -14,9 +14,9 @@
"options": {
"cwd": "{projectRoot}",
"commands": [
- "npx rimraf dist && npx vite build -c vite.config.node.ts && npx vite build -c vite.config.define.ts && npx vite build -c vite.config.front-component.ts && npx vite build -c vite.config.browser.ts",
+ "npx rimraf dist && npx vite build -c vite.config.node.ts && npx vite build -c vite.config.define.ts && npx vite build -c vite.config.billing.ts && npx vite build -c vite.config.front-component.ts && npx vite build -c vite.config.browser.ts",
"tsgo -p tsconfig.lib.json --declaration --emitDeclarationOnly --noEmit false --outDir dist --rootDir src && npx tsc-alias -p tsconfig.lib.json --outDir dist",
- "npx rimraf 'dist/sdk' 'dist/define/**/*.d.ts' 'dist/define/**/*.d.ts.map' 'dist/front-component/**/*.d.ts' 'dist/front-component/**/*.d.ts.map' && npx rollup -c rollup.config.sdk-dts.mjs"
+ "npx rimraf 'dist/sdk' 'dist/define/**/*.d.ts' 'dist/define/**/*.d.ts.map' 'dist/billing/**/*.d.ts' 'dist/billing/**/*.d.ts.map' 'dist/front-component/**/*.d.ts' 'dist/front-component/**/*.d.ts.map' && npx rollup -c rollup.config.sdk-dts.mjs"
],
"parallel": false
}
@@ -26,7 +26,7 @@
"dependsOn": ["^build"],
"options": {
"cwd": "packages/twenty-sdk",
- "command": "npx rimraf dist && npx vite build -c vite.config.node.ts && npx vite build -c vite.config.define.ts && npx vite build -c vite.config.front-component.ts && npx vite build -c vite.config.browser.ts && tsgo -p tsconfig.lib.json --declaration --emitDeclarationOnly --noEmit false --outDir dist --rootDir src && npx tsc-alias -p tsconfig.lib.json --outDir dist && npx rimraf 'dist/sdk' 'dist/define/**/*.d.ts' 'dist/define/**/*.d.ts.map' 'dist/front-component/**/*.d.ts' 'dist/front-component/**/*.d.ts.map' && npx rollup -c rollup.config.sdk-dts.mjs && npx vite build -c vite.config.node.ts --watch & npx vite build -c vite.config.define.ts --watch & npx vite build -c vite.config.front-component.ts --watch & npx vite build -c vite.config.browser.ts --watch"
+ "command": "npx rimraf dist && npx vite build -c vite.config.node.ts && npx vite build -c vite.config.define.ts && npx vite build -c vite.config.billing.ts && npx vite build -c vite.config.front-component.ts && npx vite build -c vite.config.browser.ts && tsgo -p tsconfig.lib.json --declaration --emitDeclarationOnly --noEmit false --outDir dist --rootDir src && npx tsc-alias -p tsconfig.lib.json --outDir dist && npx rimraf 'dist/sdk' 'dist/define/**/*.d.ts' 'dist/define/**/*.d.ts.map' 'dist/billing/**/*.d.ts' 'dist/billing/**/*.d.ts.map' 'dist/front-component/**/*.d.ts' 'dist/front-component/**/*.d.ts.map' && npx rollup -c rollup.config.sdk-dts.mjs && npx vite build -c vite.config.node.ts --watch & npx vite build -c vite.config.define.ts --watch & npx vite build -c vite.config.billing.ts --watch & npx vite build -c vite.config.front-component.ts --watch & npx vite build -c vite.config.browser.ts --watch"
}
},
"start": {
diff --git a/packages/twenty-sdk/rollup.config.sdk-dts.mjs b/packages/twenty-sdk/rollup.config.sdk-dts.mjs
index a718732b04..e1bdfd5d3b 100644
--- a/packages/twenty-sdk/rollup.config.sdk-dts.mjs
+++ b/packages/twenty-sdk/rollup.config.sdk-dts.mjs
@@ -30,4 +30,10 @@ export default [
external,
plugins,
},
+ {
+ input: 'src/sdk/billing/index.ts',
+ output: { file: 'dist/billing/index.d.ts', format: 'es' },
+ external,
+ plugins,
+ },
];
diff --git a/packages/twenty-sdk/src/sdk/billing/charge-credits.ts b/packages/twenty-sdk/src/sdk/billing/charge-credits.ts
new file mode 100644
index 0000000000..f9964a8dbd
--- /dev/null
+++ b/packages/twenty-sdk/src/sdk/billing/charge-credits.ts
@@ -0,0 +1,65 @@
+import {
+ DEFAULT_API_URL_NAME,
+ DEFAULT_APP_ACCESS_TOKEN_NAME,
+} from 'twenty-shared/application';
+
+const BILLING_CHARGE_TIMEOUT_MS = 5_000;
+
+export type ChargeCreditsParams = {
+ creditsUsedMicro: number;
+ operationType: string;
+ quantity?: number;
+ resourceContext?: string;
+};
+
+// Records credit usage against the running application via the Twenty
+// server's `/app/billing/charge` endpoint. Reads `TWENTY_API_URL` and
+// `TWENTY_APP_ACCESS_TOKEN` from the execution env (injected by the
+// logic-function runtime). No-ops silently when either is missing so
+// local/test runs don't crash. Failures are non-fatal — a billing error
+// never surfaces as a tool failure.
+export const chargeCredits = async ({
+ creditsUsedMicro,
+ operationType,
+ quantity = 1,
+ resourceContext,
+}: ChargeCreditsParams): Promise => {
+ const apiUrl = process.env[DEFAULT_API_URL_NAME];
+ const token = process.env[DEFAULT_APP_ACCESS_TOKEN_NAME];
+
+ if (!apiUrl || !token) {
+ return;
+ }
+
+ try {
+ const response = await fetch(
+ `${apiUrl.replace(/\/$/, '')}/app/billing/charge`,
+ {
+ method: 'POST',
+ headers: {
+ Authorization: `Bearer ${token}`,
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ creditsUsedMicro,
+ quantity,
+ operationType,
+ resourceContext,
+ }),
+ signal: AbortSignal.timeout(BILLING_CHARGE_TIMEOUT_MS),
+ },
+ );
+
+ if (!response.ok) {
+ const body = await response.text().catch(() => '');
+
+ console.error(
+ `chargeCredits: ${response.status} ${response.statusText}: ${body}`,
+ );
+ }
+ } catch (error) {
+ console.error(
+ `chargeCredits: ${error instanceof Error ? error.message : String(error)}`,
+ );
+ }
+};
diff --git a/packages/twenty-sdk/src/sdk/billing/index.ts b/packages/twenty-sdk/src/sdk/billing/index.ts
new file mode 100644
index 0000000000..5cd10192a4
--- /dev/null
+++ b/packages/twenty-sdk/src/sdk/billing/index.ts
@@ -0,0 +1 @@
+export { chargeCredits, type ChargeCreditsParams } from './charge-credits';
diff --git a/packages/twenty-sdk/vite.config.billing.ts b/packages/twenty-sdk/vite.config.billing.ts
new file mode 100644
index 0000000000..00d9dea513
--- /dev/null
+++ b/packages/twenty-sdk/vite.config.billing.ts
@@ -0,0 +1,65 @@
+import path from 'path';
+import { type PackageJson } from 'type-fest';
+import { defineConfig } from 'vite';
+import tsconfigPaths from 'vite-tsconfig-paths';
+
+import packageJson from './package.json';
+
+export default defineConfig(() => {
+ return {
+ root: __dirname,
+ cacheDir: '../../node_modules/.vite/packages/twenty-sdk-billing',
+ resolve: {
+ alias: {
+ '@/': path.resolve(__dirname, 'src') + '/',
+ },
+ },
+ plugins: [
+ tsconfigPaths({
+ root: __dirname,
+ }),
+ ],
+ build: {
+ emptyOutDir: false,
+ outDir: 'dist/billing',
+ sourcemap: true,
+ lib: {
+ entry: 'src/sdk/billing/index.ts',
+ name: 'twenty-sdk-billing',
+ formats: ['es', 'cjs'],
+ fileName: (format) => `index.${format === 'es' ? 'mjs' : 'cjs'}`,
+ },
+ rollupOptions: {
+ external: (id: string) => {
+ if (/^node:/.test(id)) {
+ return true;
+ }
+
+ const builtins = [
+ 'child_process',
+ 'crypto',
+ 'fs',
+ 'fs/promises',
+ 'module',
+ 'os',
+ 'path',
+ 'stream',
+ 'url',
+ 'util',
+ ];
+
+ if (builtins.includes(id)) {
+ return true;
+ }
+
+ const deps = Object.keys(
+ (packageJson as PackageJson).dependencies || {},
+ );
+
+ return deps.some((dep) => id === dep || id.startsWith(dep + '/'));
+ },
+ },
+ },
+ logLevel: 'warn' as const,
+ };
+});
diff --git a/packages/twenty-server/src/database/commands/database-command.module.ts b/packages/twenty-server/src/database/commands/database-command.module.ts
index bcfcb56d19..82e55e49cf 100644
--- a/packages/twenty-server/src/database/commands/database-command.module.ts
+++ b/packages/twenty-server/src/database/commands/database-command.module.ts
@@ -4,6 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { CronRegisterAllCommand } from 'src/database/commands/cron-register-all.command';
import { DataSeedWorkspaceCommand } from 'src/database/commands/data-seed-dev-workspace.command';
import { GenerateInstanceCommandCommand } from 'src/database/commands/generate-instance-command.command';
+import { InstallPreInstalledAppsCommand } from 'src/database/commands/install-pre-installed-apps.command';
import { InstanceCommandGenerationService } from 'src/database/commands/instance-command-generation.service';
import { ListOrphanedWorkspaceEntitiesCommand } from 'src/database/commands/list-and-delete-orphaned-workspace-entities.command';
import { ConfirmationQuestion } from 'src/database/commands/questions/confirmation.question';
@@ -15,6 +16,7 @@ import { ApiKeyModule } from 'src/engine/core-modules/api-key/api-key.module';
import { GenerateApiKeyCommand } from 'src/engine/core-modules/api-key/commands/generate-api-key.command';
import { MarketplaceModule } from 'src/engine/core-modules/application/application-marketplace/marketplace.module';
import { StaleRegistrationCleanupModule } from 'src/engine/core-modules/application/application-oauth/stale-registration-cleanup/stale-registration-cleanup.module';
+import { PreInstalledAppsModule } from 'src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.module';
import { ApplicationUpgradeModule } from 'src/engine/core-modules/application/application-upgrade/application-upgrade.module';
import { RebuildApplicationDefaultDepsCommand } from 'src/database/commands/rebuild-application-default-deps.command';
import { WorkspaceIteratorModule } from 'src/database/commands/command-runners/workspace-iterator.module';
@@ -77,6 +79,7 @@ import { AutomatedTriggerModule } from 'src/modules/workflow/workflow-trigger/au
MarketplaceModule,
ApplicationUpgradeModule,
StaleRegistrationCleanupModule,
+ PreInstalledAppsModule,
WorkspaceIteratorModule,
ApplicationModule,
WorkspaceCacheModule,
@@ -96,6 +99,7 @@ import { AutomatedTriggerModule } from 'src/modules/workflow/workflow-trigger/au
EnforceUsageCapCronCommand,
UpgradeStatusCommand,
RebuildApplicationDefaultDepsCommand,
+ InstallPreInstalledAppsCommand,
],
})
export class DatabaseCommandModule {}
diff --git a/packages/twenty-server/src/database/commands/install-pre-installed-apps.command.ts b/packages/twenty-server/src/database/commands/install-pre-installed-apps.command.ts
new file mode 100644
index 0000000000..7daa9ae831
--- /dev/null
+++ b/packages/twenty-server/src/database/commands/install-pre-installed-apps.command.ts
@@ -0,0 +1,41 @@
+import { Command } from 'nest-commander';
+
+import { ActiveOrSuspendedWorkspaceCommandRunner } from 'src/database/commands/command-runners/active-or-suspended-workspace.command-runner';
+import { WorkspaceIteratorService } from 'src/database/commands/command-runners/workspace-iterator.service';
+import { type RunOnWorkspaceArgs } from 'src/database/commands/command-runners/workspace.command-runner';
+import { PreInstalledAppsService } from 'src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service';
+
+// Backfill: rolls `isPreInstalled=true` registrations out to workspaces
+// that existed before the flag was flipped. Idempotent.
+@Command({
+ name: 'install-pre-installed-apps',
+ description:
+ 'Install every application registration flagged `isPreInstalled` on every active and suspended workspace. Idempotent.',
+})
+export class InstallPreInstalledAppsCommand extends ActiveOrSuspendedWorkspaceCommandRunner {
+ constructor(
+ protected readonly workspaceIteratorService: WorkspaceIteratorService,
+ private readonly preInstalledAppsService: PreInstalledAppsService,
+ ) {
+ super(workspaceIteratorService);
+ }
+
+ override async runOnWorkspace({
+ workspaceId,
+ options,
+ index,
+ total,
+ }: RunOnWorkspaceArgs): Promise {
+ const dryRun = options.dryRun ?? false;
+
+ this.logger.log(
+ `${dryRun ? '[DRY RUN] ' : ''}Installing pre-installed apps on workspace ${workspaceId} (${index + 1}/${total})`,
+ );
+
+ if (dryRun) {
+ return;
+ }
+
+ await this.preInstalledAppsService.installOnWorkspace(workspaceId);
+ }
+}
diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/2-0/2-0-instance-command-fast-1776886452831-add-is-pre-installed-to-application-registration.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/2-0/2-0-instance-command-fast-1776886452831-add-is-pre-installed-to-application-registration.ts
new file mode 100644
index 0000000000..fcc45a41dd
--- /dev/null
+++ b/packages/twenty-server/src/database/commands/upgrade-version-command/2-0/2-0-instance-command-fast-1776886452831-add-is-pre-installed-to-application-registration.ts
@@ -0,0 +1,21 @@
+import { QueryRunner } from 'typeorm';
+
+import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
+import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
+
+@RegisteredInstanceCommand('2.0.0', 1776886452831)
+export class AddIsPreInstalledToApplicationRegistrationFastInstanceCommand
+ implements FastInstanceCommand
+{
+ public async up(queryRunner: QueryRunner): Promise {
+ await queryRunner.query(
+ 'ALTER TABLE "core"."applicationRegistration" ADD "isPreInstalled" boolean NOT NULL DEFAULT false',
+ );
+ }
+
+ public async down(queryRunner: QueryRunner): Promise {
+ await queryRunner.query(
+ 'ALTER TABLE "core"."applicationRegistration" DROP COLUMN "isPreInstalled"',
+ );
+ }
+}
diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts
index 415cafd8b9..1ff661851d 100644
--- a/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts
+++ b/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts
@@ -15,6 +15,7 @@ import { DropWorkspaceVersionColumnFastInstanceCommand } from 'src/database/comm
import { AddGlobalObjectContextToCommandMenuItemAvailabilityTypeFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1776090711153-add-global-object-context-to-command-menu-item-availability-type';
import { AddPageLayoutIdToCommandMenuItemFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1776168404836-add-page-layout-id-to-command-menu-item';
import { AddConditionalAvailabilityExpressionToPageLayoutWidgetFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1775654781000-add-conditional-availability-expression-to-page-layout-widget';
+import { AddIsPreInstalledToApplicationRegistrationFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-0/2-0-instance-command-fast-1776886452831-add-is-pre-installed-to-application-registration';
export const INSTANCE_COMMANDS = [
AddViewFieldGroupIdIndexOnViewFieldFastInstanceCommand,
@@ -32,4 +33,5 @@ export const INSTANCE_COMMANDS = [
AddGlobalObjectContextToCommandMenuItemAvailabilityTypeFastInstanceCommand,
AddPageLayoutIdToCommandMenuItemFastInstanceCommand,
AddConditionalAvailabilityExpressionToPageLayoutWidgetFastInstanceCommand,
+ AddIsPreInstalledToApplicationRegistrationFastInstanceCommand,
];
diff --git a/packages/twenty-server/src/engine/core-modules/application/application-marketplace/marketplace.module.ts b/packages/twenty-server/src/engine/core-modules/application/application-marketplace/marketplace.module.ts
index e825cb7e0e..080a307d36 100644
--- a/packages/twenty-server/src/engine/core-modules/application/application-marketplace/marketplace.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/application/application-marketplace/marketplace.module.ts
@@ -34,6 +34,7 @@ import { MarketplaceCatalogSyncCommand } from 'src/engine/core-modules/applicati
MarketplaceCatalogSyncService,
MarketplaceQueryService,
MarketplaceCatalogSyncCronCommand,
+ MarketplaceService,
],
})
export class MarketplaceModule {}
diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration/application-registration.entity.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration/application-registration.entity.ts
index 633bf68876..7708e78ec7 100644
--- a/packages/twenty-server/src/engine/core-modules/application/application-registration/application-registration.entity.ts
+++ b/packages/twenty-server/src/engine/core-modules/application/application-registration/application-registration.entity.ts
@@ -124,6 +124,12 @@ export class ApplicationRegistrationEntity {
@Column({ name: 'isFeatured', type: 'boolean', default: false })
isFeatured: boolean;
+ // Auto-installed on every new workspace; existing workspaces are
+ // backfilled by the `install-pre-installed-apps` CLI command.
+ @Field(() => Boolean)
+ @Column({ type: 'boolean', default: false })
+ isPreInstalled: boolean;
+
@Column({ type: 'jsonb', nullable: true })
manifest: Manifest | null;
diff --git a/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.module.ts b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.module.ts
new file mode 100644
index 0000000000..7501e8fc8d
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.module.ts
@@ -0,0 +1,16 @@
+import { Module } from '@nestjs/common';
+import { TypeOrmModule } from '@nestjs/typeorm';
+
+import { ApplicationInstallModule } from 'src/engine/core-modules/application/application-install/application-install.module';
+import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity';
+import { PreInstalledAppsService } from 'src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service';
+
+@Module({
+ imports: [
+ TypeOrmModule.forFeature([ApplicationRegistrationEntity]),
+ ApplicationInstallModule,
+ ],
+ providers: [PreInstalledAppsService],
+ exports: [PreInstalledAppsService],
+})
+export class PreInstalledAppsModule {}
diff --git a/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service.ts b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service.ts
new file mode 100644
index 0000000000..523340fe8d
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service.ts
@@ -0,0 +1,48 @@
+import { Injectable, Logger } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
+
+import { Repository } from 'typeorm';
+
+import { ApplicationInstallService } from 'src/engine/core-modules/application/application-install/application-install.service';
+import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity';
+
+@Injectable()
+export class PreInstalledAppsService {
+ private readonly logger = new Logger(PreInstalledAppsService.name);
+
+ constructor(
+ private readonly applicationInstallService: ApplicationInstallService,
+ @InjectRepository(ApplicationRegistrationEntity)
+ private readonly applicationRegistrationRepository: Repository,
+ ) {}
+
+ // Per-app failures are logged but never block the other installs —
+ // `ApplicationInstallService` holds a per-app cache lock so parallel
+ // installs are safe.
+ async installOnWorkspace(workspaceId: string): Promise {
+ const registrations = await this.applicationRegistrationRepository.find({
+ where: { isPreInstalled: true },
+ });
+
+ if (registrations.length === 0) {
+ return;
+ }
+
+ await Promise.allSettled(
+ registrations.map(async (registration) => {
+ try {
+ await this.applicationInstallService.installApplication({
+ appRegistrationId: registration.id,
+ workspaceId,
+ });
+ } catch (error) {
+ this.logger.error(
+ `Failed to install pre-installed app "${registration.name}" (${registration.id}) on workspace ${workspaceId}: ${
+ error instanceof Error ? error.message : String(error)
+ }`,
+ );
+ }
+ }),
+ );
+ }
+}
diff --git a/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.controller.ts b/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.controller.ts
new file mode 100644
index 0000000000..84a85f7eea
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.controller.ts
@@ -0,0 +1,77 @@
+/* @license Enterprise */
+
+import {
+ Body,
+ Controller,
+ ForbiddenException,
+ HttpCode,
+ HttpStatus,
+ NotFoundException,
+ Post,
+ Req,
+ UseGuards,
+ UsePipes,
+ ValidationPipe,
+} from '@nestjs/common';
+
+import { Request } from 'express';
+import { isDefined } from 'twenty-shared/utils';
+
+import { AppBillingService } from 'src/engine/core-modules/billing/app-billing/app-billing.service';
+import { ChargeDto } from 'src/engine/core-modules/billing/app-billing/dtos/charge.dto';
+import { ThrottlerService } from 'src/engine/core-modules/throttler/throttler.service';
+import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
+import { JwtAuthGuard } from 'src/engine/guards/jwt-auth.guard';
+import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard';
+import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
+
+// Belt-and-suspenders on top of LogicFunctionExecutorService's execution
+// throttle: application-access tokens are JWTs usable outside the runtime.
+const APP_BILLING_CHARGE_THROTTLE_LIMIT = 1000;
+const APP_BILLING_CHARGE_THROTTLE_TTL_MS = 60_000;
+
+@Controller('app/billing')
+@UseGuards(JwtAuthGuard, WorkspaceAuthGuard, NoPermissionGuard)
+export class AppBillingController {
+ constructor(
+ private readonly appBillingService: AppBillingService,
+ private readonly throttlerService: ThrottlerService,
+ private readonly twentyConfigService: TwentyConfigService,
+ ) {}
+
+ @Post('charge')
+ @HttpCode(HttpStatus.NO_CONTENT)
+ @UsePipes(new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true }))
+ async charge(
+ @Req() request: Request,
+ @Body() charge: ChargeDto,
+ ): Promise {
+ // Billing disabled: no listener consumes the event — fail fast so apps
+ // don't silently discard charges on Community instances.
+ if (!this.twentyConfigService.get('IS_BILLING_ENABLED')) {
+ throw new NotFoundException();
+ }
+
+ // Reject user-access / api-key tokens — only application-access tokens
+ // populate `request.application`.
+ if (!isDefined(request.application) || !isDefined(request.workspace)) {
+ throw new ForbiddenException(
+ 'App billing endpoint requires an APPLICATION_ACCESS token.',
+ );
+ }
+
+ await this.throttlerService.tokenBucketThrottleOrThrow(
+ `${request.workspace.id}-${request.application.id}-app-billing-charge`,
+ 1,
+ APP_BILLING_CHARGE_THROTTLE_LIMIT,
+ APP_BILLING_CHARGE_THROTTLE_TTL_MS,
+ );
+
+ this.appBillingService.emitChargeEvent({
+ workspaceId: request.workspace.id,
+ applicationId: request.application.id,
+ userWorkspaceId: request.userWorkspaceId,
+ charge,
+ });
+ }
+}
diff --git a/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.module.ts b/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.module.ts
new file mode 100644
index 0000000000..8c9f0c6a97
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.module.ts
@@ -0,0 +1,25 @@
+/* @license Enterprise */
+
+import { Module } from '@nestjs/common';
+
+import { AppBillingController } from 'src/engine/core-modules/billing/app-billing/app-billing.controller';
+import { AppBillingService } from 'src/engine/core-modules/billing/app-billing/app-billing.service';
+import { AuthModule } from 'src/engine/core-modules/auth/auth.module';
+import { ThrottlerModule } from 'src/engine/core-modules/throttler/throttler.module';
+import { TwentyConfigModule } from 'src/engine/core-modules/twenty-config/twenty-config.module';
+import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module';
+import { WorkspaceEventEmitterModule } from 'src/engine/workspace-event-emitter/workspace-event-emitter.module';
+
+@Module({
+ imports: [
+ AuthModule,
+ ThrottlerModule,
+ TwentyConfigModule,
+ WorkspaceCacheStorageModule,
+ WorkspaceEventEmitterModule,
+ ],
+ controllers: [AppBillingController],
+ providers: [AppBillingService],
+ exports: [AppBillingService],
+})
+export class AppBillingModule {}
diff --git a/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.service.ts b/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.service.ts
new file mode 100644
index 0000000000..c890867059
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/billing/app-billing/app-billing.service.ts
@@ -0,0 +1,63 @@
+/* @license Enterprise */
+
+import { Injectable, Logger } from '@nestjs/common';
+
+import { type ChargeDto } from 'src/engine/core-modules/billing/app-billing/dtos/charge.dto';
+import { USAGE_RECORDED } from 'src/engine/core-modules/usage/constants/usage-recorded.constant';
+import { UsageOperationType } from 'src/engine/core-modules/usage/enums/usage-operation-type.enum';
+import { UsageResourceType } from 'src/engine/core-modules/usage/enums/usage-resource-type.enum';
+import { UsageUnit } from 'src/engine/core-modules/usage/enums/usage-unit.enum';
+import { type UsageEvent } from 'src/engine/core-modules/usage/types/usage-event.type';
+import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
+
+// Each operation type has one canonical counting unit — matches how
+// `ai-billing.service.ts` emits native usage events.
+const USAGE_UNIT_BY_OPERATION_TYPE: Record = {
+ [UsageOperationType.AI_CHAT_TOKEN]: UsageUnit.TOKEN,
+ [UsageOperationType.AI_WORKFLOW_TOKEN]: UsageUnit.TOKEN,
+ [UsageOperationType.WORKFLOW_EXECUTION]: UsageUnit.INVOCATION,
+ [UsageOperationType.CODE_EXECUTION]: UsageUnit.INVOCATION,
+ [UsageOperationType.WEB_SEARCH]: UsageUnit.INVOCATION,
+};
+
+// `workspaceId` + `applicationId` come from the application-access token,
+// never from the body — an app can't charge a different workspace or
+// masquerade as a different app.
+@Injectable()
+export class AppBillingService {
+ private readonly logger = new Logger(AppBillingService.name);
+
+ constructor(private readonly workspaceEventEmitter: WorkspaceEventEmitter) {}
+
+ emitChargeEvent(params: {
+ workspaceId: string;
+ applicationId: string;
+ userWorkspaceId?: string | null;
+ charge: ChargeDto;
+ }): void {
+ const { workspaceId, applicationId, userWorkspaceId, charge } = params;
+ const unit = USAGE_UNIT_BY_OPERATION_TYPE[charge.operationType];
+
+ this.logger.log(
+ `App charge from applicationId=${applicationId} workspaceId=${workspaceId}: ` +
+ `${charge.creditsUsedMicro} micro-credits (${charge.quantity} ${unit}, ${charge.operationType})`,
+ );
+
+ this.workspaceEventEmitter.emitCustomBatchEvent(
+ USAGE_RECORDED,
+ [
+ {
+ resourceType: UsageResourceType.APP,
+ operationType: charge.operationType,
+ creditsUsedMicro: charge.creditsUsedMicro,
+ quantity: charge.quantity,
+ unit,
+ resourceId: applicationId,
+ resourceContext: charge.resourceContext ?? null,
+ userWorkspaceId: userWorkspaceId ?? null,
+ },
+ ],
+ workspaceId,
+ );
+ }
+}
diff --git a/packages/twenty-server/src/engine/core-modules/billing/app-billing/dtos/charge.dto.ts b/packages/twenty-server/src/engine/core-modules/billing/app-billing/dtos/charge.dto.ts
new file mode 100644
index 0000000000..66dfceb5ce
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/billing/app-billing/dtos/charge.dto.ts
@@ -0,0 +1,29 @@
+/* @license Enterprise */
+
+import { IsEnum, IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
+
+import { UsageOperationType } from 'src/engine/core-modules/usage/enums/usage-operation-type.enum';
+
+// $1000 in micro-credits (1 USD = 1_000_000 micro-credits). Bounds a single
+// charge so a compromised or buggy app can't drain credits in one request.
+const MAX_CREDITS_USED_MICRO_PER_CHARGE = 1_000_000_000;
+const MAX_QUANTITY_PER_CHARGE = 10_000;
+
+export class ChargeDto {
+ @IsInt()
+ @Min(0)
+ @Max(MAX_CREDITS_USED_MICRO_PER_CHARGE)
+ creditsUsedMicro!: number;
+
+ @IsInt()
+ @Min(1)
+ @Max(MAX_QUANTITY_PER_CHARGE)
+ quantity!: number;
+
+ @IsEnum(UsageOperationType)
+ operationType!: UsageOperationType;
+
+ @IsOptional()
+ @IsString()
+ resourceContext?: string;
+}
diff --git a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts
index f05bb46ab4..d8015ea445 100644
--- a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts
@@ -16,9 +16,11 @@ import { ApplicationOAuthModule } from 'src/engine/core-modules/application/appl
import { ApplicationRegistrationModule } from 'src/engine/core-modules/application/application-registration/application-registration.module';
import { ApplicationUpgradeModule } from 'src/engine/core-modules/application/application-upgrade/application-upgrade.module';
import { ApplicationModule } from 'src/engine/core-modules/application/application.module';
+import { PreInstalledAppsModule } from 'src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.module';
import { ApprovedAccessDomainModule } from 'src/engine/core-modules/approved-access-domain/approved-access-domain.module';
import { AuthModule } from 'src/engine/core-modules/auth/auth.module';
import { BillingWebhookModule } from 'src/engine/core-modules/billing-webhook/billing-webhook.module';
+import { AppBillingModule } from 'src/engine/core-modules/billing/app-billing/app-billing.module';
import { BillingModule } from 'src/engine/core-modules/billing/billing.module';
import { BillingGraphqlApiExceptionFilter } from 'src/engine/core-modules/billing/filters/billing-graphql-api-exception.filter';
import { CacheStorageModule } from 'src/engine/core-modules/cache-storage/cache-storage.module';
@@ -26,7 +28,6 @@ import { TimelineCalendarEventModule } from 'src/engine/core-modules/calendar/ti
import { CaptchaModule } from 'src/engine/core-modules/captcha/captcha.module';
import { CloudflareModule } from 'src/engine/core-modules/cloudflare/cloudflare.module';
import { CodeInterpreterModule } from 'src/engine/core-modules/code-interpreter/code-interpreter.module';
-import { WebSearchModule } from 'src/engine/core-modules/web-search/web-search.module';
import { DnsManagerModule } from 'src/engine/core-modules/dns-manager/dns-manager.module';
import { EmailModule } from 'src/engine/core-modules/email/email.module';
import { EmailingDomainModule } from 'src/engine/core-modules/emailing-domain/emailing-domain.module';
@@ -156,7 +157,6 @@ import { FileModule } from './file/file.module';
AiBillingModule,
LogicFunctionModule.forRoot(),
CodeInterpreterModule.forRoot(),
- WebSearchModule.forRoot(),
SearchModule,
ApiKeyModule,
PageLayoutModule,
@@ -164,6 +164,8 @@ import { FileModule } from './file/file.module';
TrashCleanupModule,
DashboardModule,
EventLogsModule,
+ PreInstalledAppsModule,
+ AppBillingModule,
],
providers: [
{
diff --git a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.module.ts b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.module.ts
index 130387357e..6d933ab2f1 100644
--- a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.module.ts
@@ -1,5 +1,7 @@
import { Module } from '@nestjs/common';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { ApplicationRegistrationVariableEntity } from 'src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity';
import { LogicFunctionExecutorService } from 'src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.service';
import { ThrottlerModule } from 'src/engine/core-modules/throttler/throttler.module';
import { AuditModule } from 'src/engine/core-modules/audit/audit.module';
@@ -16,6 +18,7 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache
SecretEncryptionModule,
SubscriptionsModule,
WorkspaceCacheModule,
+ TypeOrmModule.forFeature([ApplicationRegistrationVariableEntity]),
],
providers: [LogicFunctionExecutorService],
exports: [LogicFunctionExecutorService],
diff --git a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.service.ts b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.service.ts
index 58f751debf..378d3f129c 100644
--- a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.service.ts
@@ -1,4 +1,5 @@
import { Injectable, Logger } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
import {
DEFAULT_API_KEY_NAME,
@@ -6,6 +7,7 @@ import {
DEFAULT_APP_ACCESS_TOKEN_NAME,
} from 'twenty-shared/application';
import { isDefined } from 'twenty-shared/utils';
+import { Not, Repository } from 'typeorm';
import { v4 } from 'uuid';
import {
@@ -16,6 +18,7 @@ import {
import { ApplicationLogsService } from 'src/engine/core-modules/application-logs/application-logs.service';
import { parseApplicationLogLines } from 'src/engine/core-modules/application-logs/utils/parse-application-log-lines';
+import { ApplicationRegistrationVariableEntity } from 'src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity';
import type { FlatApplicationVariable } from 'src/engine/core-modules/application/application-variable/types/flat-application-variable.type';
import { FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type';
import { AuditService } from 'src/engine/core-modules/audit/services/audit.service';
@@ -69,6 +72,8 @@ export class LogicFunctionExecutorService {
private readonly auditService: AuditService,
private readonly applicationLogsService: ApplicationLogsService,
private readonly workspaceEventEmitter: WorkspaceEventEmitter,
+ @InjectRepository(ApplicationRegistrationVariableEntity)
+ private readonly applicationRegistrationVariableRepository: Repository,
) {}
async execute({
@@ -219,15 +224,66 @@ export class LogicFunctionExecutorService {
const baseUrl = cleanServerUrl(this.twentyConfigService.get('SERVER_URL'));
+ const serverVariables = await this.buildServerVariableEnvMap(
+ flatApplication.applicationRegistrationId,
+ );
+ const workspaceVariables = buildEnvVar(
+ flatApplicationVariables,
+ this.secretEncryptionService,
+ );
+
return {
[DEFAULT_API_URL_NAME]: baseUrl ?? '',
[DEFAULT_APP_ACCESS_TOKEN_NAME]: applicationAccessToken.token,
[DEFAULT_API_KEY_NAME]: applicationAccessToken.token,
APPLICATION_ID: flatApplication.id,
- ...buildEnvVar(flatApplicationVariables, this.secretEncryptionService),
+ // Server variables first, workspace variables override. Workspace-level
+ // values let a specific tenant customize a server default.
+ ...serverVariables,
+ ...workspaceVariables,
};
}
+ // Resolves encrypted server-level variables (ApplicationRegistrationVariable)
+ // for the application's registration. Returns an empty object when the
+ // application isn't linked to a registration (legacy LOCAL apps).
+ //
+ // Runs on every logic function execution — the query is indexed on
+ // applicationRegistrationId and filters unfilled rows server-side. Most
+ // apps have 0-3 server variables so the round-trip is cheap, but if this
+ // becomes a hot path, move to a WorkspaceCacheProvider mirroring
+ // WorkspaceApplicationVariableMapCacheService.
+ private async buildServerVariableEnvMap(
+ applicationRegistrationId: string | null,
+ ): Promise> {
+ if (!isDefined(applicationRegistrationId)) {
+ return {};
+ }
+
+ const serverVariables =
+ await this.applicationRegistrationVariableRepository.find({
+ where: {
+ applicationRegistrationId,
+ encryptedValue: Not(''),
+ },
+ });
+
+ const envMap: Record = {};
+
+ // ApplicationRegistrationVariable.encryptedValue is always written
+ // encrypted (ApplicationRegistrationVariableService.createVariable and
+ // .updateVariable call encrypt unconditionally), independent of
+ // `isSecret`. `isSecret` is display metadata — the storage contract is
+ // not conditional, so decryption isn't either.
+ for (const variable of serverVariables) {
+ envMap[variable.key] = this.secretEncryptionService.decrypt(
+ variable.encryptedValue,
+ );
+ }
+
+ return envMap;
+ }
+
private async handleExecutionResult({
result,
flatApplication,
diff --git a/packages/twenty-server/src/engine/core-modules/tool-provider/providers/action-tool.provider.ts b/packages/twenty-server/src/engine/core-modules/tool-provider/providers/action-tool.provider.ts
index 037edb3edc..0a0322f910 100644
--- a/packages/twenty-server/src/engine/core-modules/tool-provider/providers/action-tool.provider.ts
+++ b/packages/twenty-server/src/engine/core-modules/tool-provider/providers/action-tool.provider.ts
@@ -17,10 +17,8 @@ import { SendEmailTool } from 'src/engine/core-modules/tool/tools/email-tool/sen
import { HttpTool } from 'src/engine/core-modules/tool/tools/http-tool/http-tool';
import { NavigateAppTool } from 'src/engine/core-modules/tool/tools/navigate-tool/navigate-app-tool';
import { SearchHelpCenterTool } from 'src/engine/core-modules/tool/tools/search-help-center-tool/search-help-center-tool';
-import { WebSearchTool } from 'src/engine/core-modules/tool/tools/web-search-tool/web-search-tool';
import { type ToolOutput } from 'src/engine/core-modules/tool/types/tool-output.type';
import { type Tool } from 'src/engine/core-modules/tool/types/tool.type';
-import { WebSearchService } from 'src/engine/core-modules/web-search/web-search.service';
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
@Injectable()
@@ -36,9 +34,7 @@ export class ActionToolProvider implements ToolProvider {
private readonly searchHelpCenterTool: SearchHelpCenterTool,
private readonly codeInterpreterTool: CodeInterpreterTool,
private readonly navigateAppTool: NavigateAppTool,
- private readonly webSearchTool: WebSearchTool,
private readonly codeInterpreterService: CodeInterpreterService,
- private readonly webSearchService: WebSearchService,
private readonly permissionsService: PermissionsService,
) {
this.toolMap = new Map([
@@ -48,7 +44,6 @@ export class ActionToolProvider implements ToolProvider {
['search_help_center', this.searchHelpCenterTool],
['code_interpreter', this.codeInterpreterTool],
['navigate_app', this.navigateAppTool],
- ['exa_web_search', this.webSearchTool],
]);
}
@@ -128,16 +123,6 @@ export class ActionToolProvider implements ToolProvider {
);
}
- if (this.webSearchService.isEnabled()) {
- descriptors.push(
- this.buildDescriptor(
- 'exa_web_search',
- this.webSearchTool,
- includeSchemas,
- ),
- );
- }
-
return descriptors;
}
diff --git a/packages/twenty-server/src/engine/core-modules/tool-provider/providers/logic-function-tool.provider.ts b/packages/twenty-server/src/engine/core-modules/tool-provider/providers/logic-function-tool.provider.ts
index 30bd19de0a..ee9d6cb9e8 100644
--- a/packages/twenty-server/src/engine/core-modules/tool-provider/providers/logic-function-tool.provider.ts
+++ b/packages/twenty-server/src/engine/core-modules/tool-provider/providers/logic-function-tool.provider.ts
@@ -94,7 +94,7 @@ export class LogicFunctionToolProvider implements ToolProvider {
}
private buildLogicFunctionToolName(functionName: string): string {
- return `logic_function_${functionName
+ return `app_${functionName
.toLowerCase()
.replace(/[^a-z0-9]+/g, '_')
.replace(/^_+|_+$/g, '')}`;
diff --git a/packages/twenty-server/src/engine/core-modules/tool/tool.module.ts b/packages/twenty-server/src/engine/core-modules/tool/tool.module.ts
index 1b3c27f61f..19948b9bcd 100644
--- a/packages/twenty-server/src/engine/core-modules/tool/tool.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/tool/tool.module.ts
@@ -14,7 +14,6 @@ import { SendEmailTool } from 'src/engine/core-modules/tool/tools/email-tool/sen
import { HttpTool } from 'src/engine/core-modules/tool/tools/http-tool/http-tool';
import { NavigateAppTool } from 'src/engine/core-modules/tool/tools/navigate-tool/navigate-app-tool';
import { SearchHelpCenterTool } from 'src/engine/core-modules/tool/tools/search-help-center-tool/search-help-center-tool';
-import { WebSearchTool } from 'src/engine/core-modules/tool/tools/web-search-tool/web-search-tool';
import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module';
import { ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import { NavigationMenuItemModule } from 'src/engine/metadata-modules/navigation-menu-item/navigation-menu-item.module';
@@ -46,7 +45,6 @@ import { MessagingSendManagerModule } from 'src/modules/messaging/message-outbou
SearchHelpCenterTool,
CodeInterpreterTool,
NavigateAppTool,
- WebSearchTool,
],
exports: [
HttpTool,
@@ -56,7 +54,6 @@ import { MessagingSendManagerModule } from 'src/modules/messaging/message-outbou
SearchHelpCenterTool,
CodeInterpreterTool,
NavigateAppTool,
- WebSearchTool,
],
})
export class ToolModule {}
diff --git a/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-input.type.ts b/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-input.type.ts
deleted file mode 100644
index 060257889c..0000000000
--- a/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-input.type.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { type z } from 'zod';
-
-import { type WebSearchInputZodSchema } from 'src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.schema';
-
-export type WebSearchInput = z.infer;
diff --git a/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.schema.ts b/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.schema.ts
deleted file mode 100644
index 95a5f53dc9..0000000000
--- a/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.schema.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { z } from 'zod';
-
-import { WEB_SEARCH_CATEGORIES } from 'src/engine/core-modules/web-search/constants/web-search-categories.const';
-
-export const WEB_SEARCH_DEFAULT_NUM_RESULTS = 10;
-export const WEB_SEARCH_MAX_NUM_RESULTS = 30;
-
-export const WebSearchInputZodSchema = z.object({
- query: z
- .string()
- .describe(
- 'The search query to look up on the web. Be specific and include relevant keywords for better results.',
- ),
- category: z
- .enum(WEB_SEARCH_CATEGORIES)
- .optional()
- .describe(
- 'Optional content category to focus the search. Use "company" for business/organization info, "people" for person profiles, "news" for recent articles, "research paper" for academic content.',
- ),
- numResults: z
- .number()
- .int()
- .min(1)
- .max(WEB_SEARCH_MAX_NUM_RESULTS)
- .optional()
- .describe(
- `Number of search results to return. Defaults to ${WEB_SEARCH_DEFAULT_NUM_RESULTS}, max ${WEB_SEARCH_MAX_NUM_RESULTS}. Use more results when you need comprehensive coverage.`,
- ),
-});
diff --git a/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.ts b/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.ts
deleted file mode 100644
index 112eefdbcd..0000000000
--- a/packages/twenty-server/src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { Injectable } from '@nestjs/common';
-
-import { type WebSearchInput } from 'src/engine/core-modules/tool/tools/web-search-tool/web-search-input.type';
-import { WebSearchInputZodSchema } from 'src/engine/core-modules/tool/tools/web-search-tool/web-search-tool.schema';
-import { type ToolExecutionContext } from 'src/engine/core-modules/tool/types/tool-execution-context.type';
-import { type ToolInput } from 'src/engine/core-modules/tool/types/tool-input.type';
-import { type ToolOutput } from 'src/engine/core-modules/tool/types/tool-output.type';
-import { type Tool } from 'src/engine/core-modules/tool/types/tool.type';
-import { WebSearchService } from 'src/engine/core-modules/web-search/web-search.service';
-
-@Injectable()
-export class WebSearchTool implements Tool {
- description =
- 'Structured web search powered by Exa. Returns entity-aware results with category filtering (companies, people, research papers, news, and other content types). Prefer this when the query benefits from structured data or a specific category. For general real-time web browsing, prefer the native `web_search` tool when it is available.';
- inputSchema = WebSearchInputZodSchema;
-
- constructor(private readonly webSearchService: WebSearchService) {}
-
- async execute(
- parameters: ToolInput,
- context: ToolExecutionContext,
- ): Promise {
- const { query, category, numResults } = parameters as WebSearchInput;
-
- try {
- const results = await this.webSearchService.search(
- query,
- { category, numResults },
- {
- workspaceId: context.workspaceId,
- userWorkspaceId: context.userWorkspaceId,
- },
- );
-
- return {
- success: true,
- message: `Found ${results.length} results for "${query}"${category ? ` (category: ${category})` : ''}`,
- result: results,
- };
- } catch (error) {
- return {
- success: false,
- message: `Web search failed for "${query}"`,
- error: error instanceof Error ? error.message : 'Web search failed',
- };
- }
- }
-}
diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts
index 5343dc27ae..34d090f5c0 100644
--- a/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts
+++ b/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts
@@ -42,7 +42,6 @@ import {
ConfigVariableException,
ConfigVariableExceptionCode,
} from 'src/engine/core-modules/twenty-config/twenty-config.exception';
-import { WebSearchDriverType } from 'src/engine/core-modules/web-search/web-search.interface';
import { type AiModelPreferences } from 'src/engine/metadata-modules/ai/ai-models/types/ai-model-preferences.type';
import { type AiProvidersConfig } from 'src/engine/metadata-modules/ai/ai-models/types/ai-providers-config.type';
import { loadDefaultModelPreferences } from 'src/engine/metadata-modules/ai/ai-models/utils/load-default-model-preferences.util';
@@ -675,26 +674,6 @@ export class ConfigVariables {
@CastToPositiveNumber()
CODE_INTERPRETER_TIMEOUT_MS = 300_000;
- @ConfigVariablesMetadata({
- group: ConfigVariablesGroup.LLM,
- description:
- 'Web search driver type - EXA for Exa search, DISABLED to turn off',
- type: ConfigVariableType.STRING,
- options: Object.values(WebSearchDriverType),
- })
- @IsOptional()
- @CastToUpperSnakeCase()
- WEB_SEARCH_DRIVER: WebSearchDriverType = WebSearchDriverType.DISABLED;
-
- @ConfigVariablesMetadata({
- group: ConfigVariablesGroup.LLM,
- description: 'Exa API key for web search',
- type: ConfigVariableType.STRING,
- isSensitive: true,
- })
- @ValidateIf((env) => env.WEB_SEARCH_DRIVER === WebSearchDriverType.EXA)
- EXA_API_KEY?: string;
-
@ConfigVariablesMetadata({
group: ConfigVariablesGroup.ANALYTICS_CONFIG,
description: 'Enable or disable analytics for telemetry',
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/constants/web-search-categories.const.ts b/packages/twenty-server/src/engine/core-modules/web-search/constants/web-search-categories.const.ts
deleted file mode 100644
index 3f82e101d0..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/constants/web-search-categories.const.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-export const WEB_SEARCH_CATEGORIES = [
- 'company',
- 'research paper',
- 'news',
- 'pdf',
- 'personal site',
- 'financial report',
- 'people',
-] as const;
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/drivers/disabled.driver.ts b/packages/twenty-server/src/engine/core-modules/web-search/drivers/disabled.driver.ts
deleted file mode 100644
index 8a3223bf75..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/drivers/disabled.driver.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {
- type WebSearchCostModel,
- type WebSearchDriver,
-} from 'src/engine/core-modules/web-search/drivers/interfaces/web-search-driver.interface';
-import { type WebSearchResult } from 'src/engine/core-modules/web-search/types/web-search-result.type';
-
-export class DisabledWebSearchDriver implements WebSearchDriver {
- readonly costModel: WebSearchCostModel = {
- baseResultCount: 0,
- baseCostDollars: 0,
- costPerAdditionalResultDollars: 0,
- };
-
- constructor(private readonly reason: string) {}
-
- async search(): Promise {
- throw new Error(this.reason);
- }
-}
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/drivers/exa.driver.ts b/packages/twenty-server/src/engine/core-modules/web-search/drivers/exa.driver.ts
deleted file mode 100644
index f1a069cd4e..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/drivers/exa.driver.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import Exa from 'exa-js';
-
-import {
- type WebSearchCostModel,
- type WebSearchDriver,
-} from 'src/engine/core-modules/web-search/drivers/interfaces/web-search-driver.interface';
-import { type WebSearchOptions } from 'src/engine/core-modules/web-search/types/web-search-options.type';
-import { type WebSearchResult } from 'src/engine/core-modules/web-search/types/web-search-result.type';
-
-const DEFAULT_NUM_RESULTS = 10;
-const MAX_HIGHLIGHT_CHARACTERS = 4000;
-
-// Exa charges $7/1k requests for auto search type (up to 10 results)
-// Additional results above 10 cost $1/1k = $0.001 each
-const EXA_BASE_COST_DOLLARS = 0.007;
-const EXA_COST_PER_ADDITIONAL_RESULT_DOLLARS = 0.001;
-
-export class ExaDriver implements WebSearchDriver {
- readonly costModel: WebSearchCostModel = {
- baseResultCount: DEFAULT_NUM_RESULTS,
- baseCostDollars: EXA_BASE_COST_DOLLARS,
- costPerAdditionalResultDollars: EXA_COST_PER_ADDITIONAL_RESULT_DOLLARS,
- };
-
- private readonly client: Exa;
-
- constructor(apiKey: string) {
- this.client = new Exa(apiKey);
- }
-
- async search(
- query: string,
- options?: WebSearchOptions,
- ): Promise {
- const numResults = options?.numResults ?? DEFAULT_NUM_RESULTS;
-
- const response = await this.client.search(query, {
- type: 'auto',
- numResults,
- category: options?.category,
- contents: {
- highlights: { maxCharacters: MAX_HIGHLIGHT_CHARACTERS },
- },
- });
-
- return response.results.map((result) => ({
- title: result.title ?? '',
- url: result.url,
- snippet: result.highlights?.join('\n') ?? '',
- }));
- }
-}
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/drivers/interfaces/web-search-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/web-search/drivers/interfaces/web-search-driver.interface.ts
deleted file mode 100644
index e4e9c9691a..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/drivers/interfaces/web-search-driver.interface.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { type WebSearchOptions } from 'src/engine/core-modules/web-search/types/web-search-options.type';
-import { type WebSearchResult } from 'src/engine/core-modules/web-search/types/web-search-result.type';
-
-export type WebSearchCostModel = {
- baseResultCount: number;
- baseCostDollars: number;
- costPerAdditionalResultDollars: number;
-};
-
-export interface WebSearchDriver {
- readonly costModel: WebSearchCostModel;
-
- search(query: string, options?: WebSearchOptions): Promise;
-}
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-billing-context.type.ts b/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-billing-context.type.ts
deleted file mode 100644
index e71aac66a1..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-billing-context.type.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export type WebSearchBillingContext = {
- workspaceId: string;
- userWorkspaceId?: string;
-};
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-category.type.ts b/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-category.type.ts
deleted file mode 100644
index 4e661efefc..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-category.type.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { type WEB_SEARCH_CATEGORIES } from 'src/engine/core-modules/web-search/constants/web-search-categories.const';
-
-export type WebSearchCategory = (typeof WEB_SEARCH_CATEGORIES)[number];
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-options.type.ts b/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-options.type.ts
deleted file mode 100644
index 27b3549409..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-options.type.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { type WebSearchCategory } from 'src/engine/core-modules/web-search/types/web-search-category.type';
-
-export type WebSearchOptions = {
- category?: WebSearchCategory;
- numResults?: number;
-};
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-result.type.ts b/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-result.type.ts
deleted file mode 100644
index e7870f8841..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/types/web-search-result.type.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export type WebSearchResult = {
- title: string;
- url: string;
- snippet: string;
-};
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/web-search-driver.factory.ts b/packages/twenty-server/src/engine/core-modules/web-search/web-search-driver.factory.ts
deleted file mode 100644
index ad75402f38..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/web-search-driver.factory.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Injectable } from '@nestjs/common';
-
-import { type WebSearchDriver } from 'src/engine/core-modules/web-search/drivers/interfaces/web-search-driver.interface';
-
-import { DisabledWebSearchDriver } from 'src/engine/core-modules/web-search/drivers/disabled.driver';
-import { ExaDriver } from 'src/engine/core-modules/web-search/drivers/exa.driver';
-import { WebSearchDriverType } from 'src/engine/core-modules/web-search/web-search.interface';
-import { DriverFactoryBase } from 'src/engine/core-modules/twenty-config/dynamic-factory.base';
-import { ConfigVariablesGroup } from 'src/engine/core-modules/twenty-config/enums/config-variables-group.enum';
-import { ConfigGroupHashService } from 'src/engine/core-modules/twenty-config/services/config-group-hash.service';
-import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
-
-@Injectable()
-export class WebSearchDriverFactory extends DriverFactoryBase {
- constructor(
- twentyConfigService: TwentyConfigService,
- configGroupHashService: ConfigGroupHashService,
- ) {
- super(twentyConfigService, configGroupHashService);
- }
-
- protected buildConfigKey(): string {
- const driverType = this.twentyConfigService.get('WEB_SEARCH_DRIVER');
-
- if (driverType !== WebSearchDriverType.DISABLED) {
- return `${driverType}|${this.configGroupHashService.computeHash(ConfigVariablesGroup.LLM)}`;
- }
-
- return driverType;
- }
-
- protected createDriver(): WebSearchDriver {
- const driverType = this.twentyConfigService.get('WEB_SEARCH_DRIVER');
-
- switch (driverType) {
- case WebSearchDriverType.DISABLED:
- return new DisabledWebSearchDriver(
- 'Web search is disabled. Set WEB_SEARCH_DRIVER to EXA and provide EXA_API_KEY to enable it.',
- );
-
- case WebSearchDriverType.EXA: {
- const apiKey = this.twentyConfigService.get('EXA_API_KEY');
-
- if (!apiKey) {
- throw new Error(
- 'EXA_API_KEY is required when WEB_SEARCH_DRIVER is EXA',
- );
- }
-
- return new ExaDriver(apiKey);
- }
-
- default:
- throw new Error(
- `Invalid web search driver type (${driverType}), check your .env file`,
- );
- }
- }
-}
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/web-search.interface.ts b/packages/twenty-server/src/engine/core-modules/web-search/web-search.interface.ts
deleted file mode 100644
index 04323016ab..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/web-search.interface.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export enum WebSearchDriverType {
- EXA = 'EXA',
- DISABLED = 'DISABLED',
-}
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/web-search.module.ts b/packages/twenty-server/src/engine/core-modules/web-search/web-search.module.ts
deleted file mode 100644
index 8e909f3e6a..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/web-search.module.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { type DynamicModule, Global } from '@nestjs/common';
-
-import { WebSearchDriverFactory } from 'src/engine/core-modules/web-search/web-search-driver.factory';
-import { WebSearchService } from 'src/engine/core-modules/web-search/web-search.service';
-import { TwentyConfigModule } from 'src/engine/core-modules/twenty-config/twenty-config.module';
-
-@Global()
-export class WebSearchModule {
- static forRoot(): DynamicModule {
- return {
- module: WebSearchModule,
- imports: [TwentyConfigModule],
- providers: [WebSearchDriverFactory, WebSearchService],
- exports: [WebSearchService],
- };
- }
-}
diff --git a/packages/twenty-server/src/engine/core-modules/web-search/web-search.service.ts b/packages/twenty-server/src/engine/core-modules/web-search/web-search.service.ts
deleted file mode 100644
index f4b8f5cf35..0000000000
--- a/packages/twenty-server/src/engine/core-modules/web-search/web-search.service.ts
+++ /dev/null
@@ -1,95 +0,0 @@
-import { Injectable } from '@nestjs/common';
-
-import {
- type WebSearchCostModel,
- type WebSearchDriver,
-} from 'src/engine/core-modules/web-search/drivers/interfaces/web-search-driver.interface';
-import { type WebSearchBillingContext } from 'src/engine/core-modules/web-search/types/web-search-billing-context.type';
-import { type WebSearchOptions } from 'src/engine/core-modules/web-search/types/web-search-options.type';
-import { type WebSearchResult } from 'src/engine/core-modules/web-search/types/web-search-result.type';
-import { WebSearchDriverFactory } from 'src/engine/core-modules/web-search/web-search-driver.factory';
-import { WebSearchDriverType } from 'src/engine/core-modules/web-search/web-search.interface';
-import { USAGE_RECORDED } from 'src/engine/core-modules/usage/constants/usage-recorded.constant';
-import { UsageOperationType } from 'src/engine/core-modules/usage/enums/usage-operation-type.enum';
-import { UsageResourceType } from 'src/engine/core-modules/usage/enums/usage-resource-type.enum';
-import { UsageUnit } from 'src/engine/core-modules/usage/enums/usage-unit.enum';
-import { type UsageEvent } from 'src/engine/core-modules/usage/types/usage-event.type';
-import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
-import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
-import { DOLLAR_TO_CREDIT_MULTIPLIER } from 'src/engine/metadata-modules/ai/ai-billing/constants/dollar-to-credit-multiplier';
-
-@Injectable()
-export class WebSearchService {
- constructor(
- private readonly webSearchDriverFactory: WebSearchDriverFactory,
- private readonly twentyConfigService: TwentyConfigService,
- private readonly workspaceEventEmitter: WorkspaceEventEmitter,
- ) {}
-
- isEnabled(): boolean {
- return (
- this.twentyConfigService.get('WEB_SEARCH_DRIVER') !==
- WebSearchDriverType.DISABLED
- );
- }
-
- async search(
- query: string,
- options?: WebSearchOptions,
- billingContext?: WebSearchBillingContext,
- ): Promise {
- const driver = this.webSearchDriverFactory.getCurrentDriver();
- const results = await driver.search(query, options);
-
- if (billingContext) {
- this.emitUsageEvent(driver, results.length, billingContext);
- }
-
- return results;
- }
-
- static computeQueryCostDollars(
- costModel: WebSearchCostModel,
- numResults: number,
- ): number {
- const additionalResults = Math.max(
- 0,
- numResults - costModel.baseResultCount,
- );
-
- return (
- costModel.baseCostDollars +
- additionalResults * costModel.costPerAdditionalResultDollars
- );
- }
-
- private emitUsageEvent(
- driver: WebSearchDriver,
- numResults: number,
- billingContext: WebSearchBillingContext,
- ): void {
- const costDollars = WebSearchService.computeQueryCostDollars(
- driver.costModel,
- numResults,
- );
- const creditsUsedMicro = Math.round(
- costDollars * DOLLAR_TO_CREDIT_MULTIPLIER,
- );
-
- this.workspaceEventEmitter.emitCustomBatchEvent(
- USAGE_RECORDED,
- [
- {
- resourceType: UsageResourceType.AI,
- operationType: UsageOperationType.WEB_SEARCH,
- creditsUsedMicro,
- quantity: 1,
- unit: UsageUnit.INVOCATION,
- resourceContext: this.twentyConfigService.get('WEB_SEARCH_DRIVER'),
- userWorkspaceId: billingContext.userWorkspaceId ?? null,
- },
- ],
- billingContext.workspaceId,
- );
- }
-}
diff --git a/packages/twenty-server/src/engine/core-modules/workspace/services/__tests__/workspace.service.spec.ts b/packages/twenty-server/src/engine/core-modules/workspace/services/__tests__/workspace.service.spec.ts
index 0b14a7a877..1f4f422723 100644
--- a/packages/twenty-server/src/engine/core-modules/workspace/services/__tests__/workspace.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/workspace/services/__tests__/workspace.service.spec.ts
@@ -38,6 +38,7 @@ import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
import { PrefillLogicFunctionService } from 'src/engine/workspace-manager/standard-objects-prefill-data/services/prefill-logic-function.service';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
+import { PreInstalledAppsService } from 'src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service';
import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service';
import { WorkspaceManagerService } from 'src/engine/workspace-manager/workspace-manager.service';
@@ -126,6 +127,7 @@ describe('WorkspaceService', () => {
FileCorePictureService,
AiModelRegistryService,
ApplicationService,
+ PreInstalledAppsService,
PrefillLogicFunctionService,
WorkspaceMigrationValidateBuildAndRunService,
UpgradeMigrationService,
diff --git a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts
index 545865de8d..9f5ad9557f 100644
--- a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts
@@ -13,6 +13,7 @@ import { DataSource, QueryRunner, Repository } from 'typeorm';
import { CoreEntityCacheService } from 'src/engine/core-entity-cache/services/core-entity-cache.service';
import { ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
+import { PreInstalledAppsService } from 'src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service';
import { type AuthContextUser } from 'src/engine/core-modules/auth/types/auth-context.type';
import { BillingSubscriptionService } from 'src/engine/core-modules/billing/services/billing-subscription.service';
import { BillingService } from 'src/engine/core-modules/billing/services/billing.service';
@@ -119,6 +120,7 @@ export class WorkspaceService extends TypeOrmQueryService {
private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService,
private readonly prefillLogicFunctionService: PrefillLogicFunctionService,
private readonly applicationService: ApplicationService,
+ private readonly preInstalledAppsService: PreInstalledAppsService,
private readonly workspaceMigrationValidateBuildAndRunService: WorkspaceMigrationValidateBuildAndRunService,
private readonly workspaceCacheStorageService: WorkspaceCacheStorageService,
private readonly subdomainManagerService: SubdomainManagerService,
@@ -819,6 +821,16 @@ export class WorkspaceService extends TypeOrmQueryService {
);
this.exceptionHandlerService.captureExceptions([error as Error]);
}
+
+ try {
+ await this.preInstalledAppsService.installOnWorkspace(workspaceId);
+ } catch (error) {
+ this.logger.error(
+ `Non-critical: failed to install pre-installed apps for workspace ${workspaceId}`,
+ error,
+ );
+ this.exceptionHandlerService.captureExceptions([error as Error]);
+ }
}
async findOneWorkspaceById(id: string) {
diff --git a/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts b/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts
index 33263e7591..828a93a9fb 100644
--- a/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts
@@ -6,6 +6,7 @@ import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm';
import { TypeORMModule } from 'src/database/typeorm/typeorm.module';
import { ApplicationModule } from 'src/engine/core-modules/application/application.module';
+import { PreInstalledAppsModule } from 'src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.module';
import { AuditModule } from 'src/engine/core-modules/audit/audit.module';
import { TokenModule } from 'src/engine/core-modules/auth/token/token.module';
import { BillingModule } from 'src/engine/core-modules/billing/billing.module';
@@ -82,6 +83,7 @@ import { StandardObjectsPrefillModule } from 'src/engine/workspace-manager/stand
ViewModule,
WorkspaceManyOrAllFlatEntityMapsCacheModule,
ApplicationModule,
+ PreInstalledAppsModule,
EnterpriseModule,
StandardObjectsPrefillModule,
WorkspaceMigrationModule,
diff --git a/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/services/chat-execution.service.ts b/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/services/chat-execution.service.ts
index e317bbc7e9..db87cd6897 100644
--- a/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/services/chat-execution.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/services/chat-execution.service.ts
@@ -139,10 +139,13 @@ export class ChatExecutionService {
`Built tool catalog with ${toolCatalog.length} tools, ${skillCatalog.length} skills available`,
);
- // Preload Exa when the workspace has it enabled; ActionToolProvider
- // only emits the exa_web_search descriptor when isEnabled() is true,
- // so getToolsByName silently skips it otherwise.
- const toolNamesToPreload = [...COMMON_PRELOAD_TOOLS, 'exa_web_search'];
+ // Preload the Exa app tool (shipped as the `twenty-exa` npm package) so chat
+ // has structured web search ready without discovery. getToolsByName
+ // silently skips the entry when the workspace doesn't have the Exa app
+ // installed (admin hasn't registered it + flipped `isPreInstalled`).
+ // TODO(app-preloading): move this list into the app manifest so any
+ // app can declare `preloadedInChat: true` instead of hardcoding here.
+ const toolNamesToPreload = [...COMMON_PRELOAD_TOOLS, 'app_exa_web_search'];
const preloadedTools = await this.toolRegistry.getToolsByName(
toolNamesToPreload,
@@ -167,8 +170,8 @@ export class ChatExecutionService {
);
// Native web_search is returned when the resolved model's SDK provider
- // exposes it (Anthropic, OpenAI). Coexists with exa_web_search when both
- // are available — the model picks based on tool descriptions.
+ // exposes it (Anthropic, OpenAI). Coexists with app_exa_web_search when
+ // both are available — the model picks based on tool descriptions.
const { tools: nativeSearchTools, callableToolNames: searchToolNames } =
this.getNativeWebSearchTools(registeredModel);
diff --git a/packages/twenty-shared/src/logic-function/input-json-schema.type.ts b/packages/twenty-shared/src/logic-function/input-json-schema.type.ts
index 4a40447a97..7d3fecdf84 100644
--- a/packages/twenty-shared/src/logic-function/input-json-schema.type.ts
+++ b/packages/twenty-shared/src/logic-function/input-json-schema.type.ts
@@ -13,4 +13,6 @@ export type InputJsonSchema = {
properties?: Record;
required?: string[];
additionalProperties?: boolean | InputJsonSchema;
+ minimum?: number;
+ maximum?: number;
};