mirror of
https://github.com/twentyhq/twenty
synced 2026-04-21 13:37:22 +00:00
feat: move admin panel to dedicated /admin-panel GraphQL endpoint (#19852)
Some checks are pending
CD deploy main / deploy-main (push) Waiting to run
CI Create App E2E minimal / changed-files-check (push) Waiting to run
CI Create App E2E minimal / create-app-e2e-minimal (push) Blocked by required conditions
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Blocked by required conditions
CI Emails / emails-test (push) Blocked by required conditions
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Blocked by required conditions
CI Example App Postcard / changed-files-check (push) Waiting to run
CI Example App Postcard / example-app-postcard (push) Blocked by required conditions
CI Example App Postcard / ci-example-app-postcard-status-check (push) Blocked by required conditions
Push translations to Crowdin / Extract and upload translations (push) Waiting to run
CI Create App / changed-files-check (push) Waiting to run
CI Create App / create-app-test (lint) (push) Blocked by required conditions
CI Create App / create-app-test (test) (push) Blocked by required conditions
CI Create App / create-app-test (typecheck) (push) Blocked by required conditions
CI Create App / ci-create-app-status-check (push) Blocked by required conditions
CI Docs / changed-files-check (push) Waiting to run
CI Docs / docs-lint (push) Blocked by required conditions
CI Emails / changed-files-check (push) Waiting to run
CI Emails / ci-emails-status-check (push) Blocked by required conditions
CI Example App Hello World / changed-files-check (push) Waiting to run
CI Example App Hello World / example-app-hello-world (push) Blocked by required conditions
Some checks are pending
CD deploy main / deploy-main (push) Waiting to run
CI Create App E2E minimal / changed-files-check (push) Waiting to run
CI Create App E2E minimal / create-app-e2e-minimal (push) Blocked by required conditions
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Blocked by required conditions
CI Emails / emails-test (push) Blocked by required conditions
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Blocked by required conditions
CI Example App Postcard / changed-files-check (push) Waiting to run
CI Example App Postcard / example-app-postcard (push) Blocked by required conditions
CI Example App Postcard / ci-example-app-postcard-status-check (push) Blocked by required conditions
Push translations to Crowdin / Extract and upload translations (push) Waiting to run
CI Create App / changed-files-check (push) Waiting to run
CI Create App / create-app-test (lint) (push) Blocked by required conditions
CI Create App / create-app-test (test) (push) Blocked by required conditions
CI Create App / create-app-test (typecheck) (push) Blocked by required conditions
CI Create App / ci-create-app-status-check (push) Blocked by required conditions
CI Docs / changed-files-check (push) Waiting to run
CI Docs / docs-lint (push) Blocked by required conditions
CI Emails / changed-files-check (push) Waiting to run
CI Emails / ci-emails-status-check (push) Blocked by required conditions
CI Example App Hello World / changed-files-check (push) Waiting to run
CI Example App Hello World / example-app-hello-world (push) Blocked by required conditions
## Summary Splits admin-panel resolvers off the shared `/metadata` GraphQL endpoint onto a dedicated `/admin-panel` endpoint. The backend plumbing mirrors the existing `metadata` / `core` pattern (new scope, decorator, module, factory), and admin types now live in their own `generated-admin/graphql.ts` on the frontend — dropping 877 lines of admin noise from `generated-metadata`. ## Why - **Smaller attack surface on `/metadata`** — every authenticated user hits that endpoint; admin ops don't belong there. - **Independent complexity limits and monitoring** per endpoint. - **Cleaner module boundaries** — admin is a cross-cutting concern that doesn't match the "shared-schema configuration" meaning of `/metadata`. - **Deploy / blast-radius isolation** — a broken admin query can't affect `/metadata`. Runtime behavior, auth, and authorization are unchanged — this is a relocation, not a re-permissioning. All existing guards (`WorkspaceAuthGuard`, `UserAuthGuard`, `SettingsPermissionGuard(SECURITY)` at class level; `AdminPanelGuard` / `ServerLevelImpersonateGuard` at method level) remain on `AdminPanelResolver`. ## What changed ### Backend - `@AdminResolver()` decorator with scope `'admin'`, naming parallels `CoreResolver` / `MetadataResolver`. - `AdminPanelGraphQLApiModule` + `adminPanelModuleFactory` registered at `/admin-panel`, same Yoga hook set as the metadata factory (Sentry tracing, error handler, introspection-disabling in prod, complexity validation). - Middleware chain on `/admin-panel` is identical to `/metadata`. - `@nestjs/graphql` patch extended: `resolverSchemaScope?: 'core' | 'metadata' | 'admin'`. - `AdminPanelResolver` class decorator swapped from `@MetadataResolver()` to `@AdminResolver()` — no other changes. ### Frontend - `codegen-admin.cjs` → `src/generated-admin/graphql.ts` (982 lines). - `codegen-metadata.cjs` excludes admin paths; metadata file shrinks by 877 lines. - `ApolloAdminProvider` / `useApolloAdminClient` follow the existing `ApolloCoreProvider` / `useApolloCoreClient` pattern, wired inside `AppRouterProviders` alongside the core provider. - 37 admin consumer files migrated: imports switched to `~/generated-admin/graphql` and `client: useApolloAdminClient()` is passed to `useQuery` / `useMutation`. - Three files intentionally kept on `generated-metadata` because they consume non-admin Documents: `useHandleImpersonate.ts`, `SettingsAdminApplicationRegistrationDangerZone.tsx`, `SettingsAdminApplicationRegistrationGeneralToggles.tsx`. ### CI - `ci-server.yaml` runs all three `graphql:generate` configurations and diff-checks all three generated dirs. ## Authorization (unchanged, but audited while reviewing) Every one of the 38 methods on `AdminPanelResolver` has a method-level guard: - `AdminPanelGuard` (32 methods) — requires `canAccessFullAdminPanel === true` - `ServerLevelImpersonateGuard` (6 methods: user/workspace lookup + chat thread views) — requires `canImpersonate === true` On top of the class-level guards above. No resolver method is accessible without these flags + `SECURITY` permission in the workspace. ## Test plan - [ ] Dev server boots; `/graphql`, `/metadata`, `/admin-panel` all mapped as separate GraphQL routes (confirmed locally during development). - [ ] `nx typecheck twenty-server` passes. - [ ] `nx typecheck twenty-front` passes. - [ ] `nx lint:diff-with-main twenty-server` and `twenty-front` both clean. - [ ] Manual smoke test: log in with a user who has `canAccessFullAdminPanel=true`, open the admin panel at `/settings/admin-panel`, verify each tab loads (General, Health, Config variables, AI, Apps, Workspace details, User details, chat threads). - [ ] Manual smoke test: log in with a user who has `canImpersonate=false` and `canAccessFullAdminPanel=false`, hit `/admin-panel` directly with a raw GraphQL request, confirm permission error on every operation. - [ ] Production deploy note: reverse proxy / ingress must route the new `/admin-panel` path to the Nest server. If the proxy has an explicit allowlist, infra change required before cutover. ## Follow-ups (out of scope here) - Consider cutting over the three `SettingsAdminApplicationRegistration*` components to admin-scope versions of the app-registration operations so the admin page is fully on the admin endpoint. - The `renderGraphiQL` double-assignment in `admin-panel.module-factory.ts` is copied from `metadata.module-factory.ts` — worth cleaning up in both.
This commit is contained in:
parent
90661cc821
commit
75848ff8ea
70 changed files with 1857 additions and 3844 deletions
8
.github/workflows/ci-server.yaml
vendored
8
.github/workflows/ci-server.yaml
vendored
|
|
@ -25,6 +25,7 @@ jobs:
|
|||
packages/twenty-server/**
|
||||
packages/twenty-front/src/generated/**
|
||||
packages/twenty-front/src/generated-metadata/**
|
||||
packages/twenty-front/src/generated-admin/**
|
||||
packages/twenty-client-sdk/**
|
||||
packages/twenty-emails/**
|
||||
packages/twenty-shared/**
|
||||
|
|
@ -165,13 +166,14 @@ jobs:
|
|||
|
||||
npx nx run twenty-front:graphql:generate
|
||||
npx nx run twenty-front:graphql:generate --configuration=metadata
|
||||
npx nx run twenty-front:graphql:generate --configuration=admin
|
||||
|
||||
if ! git diff --quiet -- packages/twenty-front/src/generated packages/twenty-front/src/generated-metadata; then
|
||||
echo "::error::GraphQL schema changes detected. Please run 'npx nx run twenty-front:graphql:generate' and 'npx nx run twenty-front:graphql:generate --configuration=metadata' and commit the changes."
|
||||
if ! git diff --quiet -- packages/twenty-front/src/generated packages/twenty-front/src/generated-metadata packages/twenty-front/src/generated-admin; then
|
||||
echo "::error::GraphQL schema changes detected. Please run the three graphql:generate configurations ('data', 'metadata', 'admin') and commit the changes."
|
||||
echo ""
|
||||
echo "The following GraphQL schema changes were detected:"
|
||||
echo "==================================================="
|
||||
git diff -- packages/twenty-front/src/generated packages/twenty-front/src/generated-metadata
|
||||
git diff -- packages/twenty-front/src/generated packages/twenty-front/src/generated-metadata packages/twenty-front/src/generated-admin
|
||||
echo "==================================================="
|
||||
echo ""
|
||||
HAS_ERRORS=true
|
||||
|
|
|
|||
|
|
@ -1607,84 +1607,6 @@ type WorkspaceUrls {
|
|||
subdomainUrl: String!
|
||||
}
|
||||
|
||||
type UserInfo {
|
||||
id: UUID!
|
||||
email: String!
|
||||
firstName: String
|
||||
lastName: String
|
||||
createdAt: DateTime!
|
||||
}
|
||||
|
||||
type WorkspaceInfo {
|
||||
id: UUID!
|
||||
name: String!
|
||||
allowImpersonation: Boolean!
|
||||
logo: String
|
||||
totalUsers: Float!
|
||||
activationStatus: WorkspaceActivationStatus!
|
||||
createdAt: DateTime!
|
||||
workspaceUrls: WorkspaceUrls!
|
||||
users: [UserInfo!]!
|
||||
featureFlags: [FeatureFlag!]!
|
||||
}
|
||||
|
||||
type UserLookup {
|
||||
user: UserInfo!
|
||||
workspaces: [WorkspaceInfo!]!
|
||||
}
|
||||
|
||||
type AdminPanelRecentUser {
|
||||
id: UUID!
|
||||
email: String!
|
||||
firstName: String
|
||||
lastName: String
|
||||
createdAt: DateTime!
|
||||
workspaceName: String
|
||||
workspaceId: UUID
|
||||
}
|
||||
|
||||
type AdminPanelTopWorkspace {
|
||||
id: UUID!
|
||||
name: String!
|
||||
totalUsers: Int!
|
||||
subdomain: String!
|
||||
}
|
||||
|
||||
type AdminWorkspaceChatThread {
|
||||
id: UUID!
|
||||
title: String
|
||||
totalInputTokens: Int!
|
||||
totalOutputTokens: Int!
|
||||
conversationSize: Int!
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
}
|
||||
|
||||
type AdminChatMessagePart {
|
||||
type: String!
|
||||
textContent: String
|
||||
toolName: String
|
||||
}
|
||||
|
||||
type AdminChatMessage {
|
||||
id: UUID!
|
||||
role: AgentMessageRole!
|
||||
parts: [AdminChatMessagePart!]!
|
||||
createdAt: DateTime!
|
||||
}
|
||||
|
||||
"""Role of a message in a chat thread"""
|
||||
enum AgentMessageRole {
|
||||
SYSTEM
|
||||
USER
|
||||
ASSISTANT
|
||||
}
|
||||
|
||||
type AdminChatThreadMessages {
|
||||
thread: AdminWorkspaceChatThread!
|
||||
messages: [AdminChatMessage!]!
|
||||
}
|
||||
|
||||
type BillingTrialPeriod {
|
||||
duration: Float!
|
||||
isCreditCardRequired: Boolean!
|
||||
|
|
@ -1769,32 +1691,6 @@ enum ModelFamily {
|
|||
GROK
|
||||
}
|
||||
|
||||
type AdminAiModelConfig {
|
||||
modelId: String!
|
||||
label: String!
|
||||
modelFamily: ModelFamily
|
||||
modelFamilyLabel: String
|
||||
sdkPackage: String
|
||||
isAvailable: Boolean!
|
||||
isAdminEnabled: Boolean!
|
||||
isDeprecated: Boolean
|
||||
isRecommended: Boolean
|
||||
contextWindowTokens: Float
|
||||
maxOutputTokens: Float
|
||||
inputCostPerMillionTokens: Float
|
||||
outputCostPerMillionTokens: Float
|
||||
providerName: String
|
||||
providerLabel: String
|
||||
name: String
|
||||
dataResidency: String
|
||||
}
|
||||
|
||||
type AdminAiModels {
|
||||
models: [AdminAiModelConfig!]!
|
||||
defaultSmartModelId: String
|
||||
defaultFastModelId: String
|
||||
}
|
||||
|
||||
type Billing {
|
||||
isBillingEnabled: Boolean!
|
||||
billingUrl: String
|
||||
|
|
@ -1886,228 +1782,6 @@ type UsageBreakdownItem {
|
|||
creditsUsed: Float!
|
||||
}
|
||||
|
||||
type ConfigVariable {
|
||||
name: String!
|
||||
description: String!
|
||||
value: JSON
|
||||
isSensitive: Boolean!
|
||||
source: ConfigSource!
|
||||
isEnvOnly: Boolean!
|
||||
type: ConfigVariableType!
|
||||
options: JSON
|
||||
}
|
||||
|
||||
enum ConfigSource {
|
||||
ENVIRONMENT
|
||||
DATABASE
|
||||
DEFAULT
|
||||
}
|
||||
|
||||
enum ConfigVariableType {
|
||||
BOOLEAN
|
||||
NUMBER
|
||||
ARRAY
|
||||
STRING
|
||||
ENUM
|
||||
JSON
|
||||
}
|
||||
|
||||
type ConfigVariablesGroupData {
|
||||
variables: [ConfigVariable!]!
|
||||
name: ConfigVariablesGroup!
|
||||
description: String!
|
||||
isHiddenOnLoad: Boolean!
|
||||
}
|
||||
|
||||
enum ConfigVariablesGroup {
|
||||
SERVER_CONFIG
|
||||
RATE_LIMITING
|
||||
STORAGE_CONFIG
|
||||
GOOGLE_AUTH
|
||||
MICROSOFT_AUTH
|
||||
EMAIL_SETTINGS
|
||||
LOGGING
|
||||
ADVANCED_SETTINGS
|
||||
BILLING_CONFIG
|
||||
CAPTCHA_CONFIG
|
||||
CLOUDFLARE_CONFIG
|
||||
LLM
|
||||
LOGIC_FUNCTION_CONFIG
|
||||
CODE_INTERPRETER_CONFIG
|
||||
SSL
|
||||
SUPPORT_CHAT_CONFIG
|
||||
ANALYTICS_CONFIG
|
||||
TOKENS_DURATION
|
||||
AWS_SES_SETTINGS
|
||||
}
|
||||
|
||||
type ConfigVariables {
|
||||
groups: [ConfigVariablesGroupData!]!
|
||||
}
|
||||
|
||||
type JobOperationResult {
|
||||
jobId: String!
|
||||
success: Boolean!
|
||||
error: String
|
||||
}
|
||||
|
||||
type DeleteJobsResponse {
|
||||
deletedCount: Int!
|
||||
results: [JobOperationResult!]!
|
||||
}
|
||||
|
||||
type QueueJob {
|
||||
id: String!
|
||||
name: String!
|
||||
data: JSON
|
||||
state: JobState!
|
||||
timestamp: Float
|
||||
failedReason: String
|
||||
processedOn: Float
|
||||
finishedOn: Float
|
||||
attemptsMade: Float!
|
||||
returnValue: JSON
|
||||
logs: [String!]
|
||||
stackTrace: [String!]
|
||||
}
|
||||
|
||||
"""Job state in the queue"""
|
||||
enum JobState {
|
||||
COMPLETED
|
||||
FAILED
|
||||
ACTIVE
|
||||
WAITING
|
||||
DELAYED
|
||||
PRIORITIZED
|
||||
WAITING_CHILDREN
|
||||
}
|
||||
|
||||
type QueueRetentionConfig {
|
||||
completedMaxAge: Float!
|
||||
completedMaxCount: Float!
|
||||
failedMaxAge: Float!
|
||||
failedMaxCount: Float!
|
||||
}
|
||||
|
||||
type QueueJobsResponse {
|
||||
jobs: [QueueJob!]!
|
||||
count: Float!
|
||||
totalCount: Float!
|
||||
hasMore: Boolean!
|
||||
retentionConfig: QueueRetentionConfig!
|
||||
}
|
||||
|
||||
type RetryJobsResponse {
|
||||
retriedCount: Int!
|
||||
results: [JobOperationResult!]!
|
||||
}
|
||||
|
||||
type SystemHealthService {
|
||||
id: HealthIndicatorId!
|
||||
label: String!
|
||||
status: AdminPanelHealthServiceStatus!
|
||||
}
|
||||
|
||||
enum HealthIndicatorId {
|
||||
database
|
||||
redis
|
||||
worker
|
||||
connectedAccount
|
||||
app
|
||||
}
|
||||
|
||||
enum AdminPanelHealthServiceStatus {
|
||||
OPERATIONAL
|
||||
OUTAGE
|
||||
}
|
||||
|
||||
type SystemHealth {
|
||||
services: [SystemHealthService!]!
|
||||
}
|
||||
|
||||
type VersionInfo {
|
||||
currentVersion: String
|
||||
latestVersion: String!
|
||||
}
|
||||
|
||||
type AdminPanelWorkerQueueHealth {
|
||||
id: String!
|
||||
queueName: String!
|
||||
status: AdminPanelHealthServiceStatus!
|
||||
}
|
||||
|
||||
type AdminPanelHealthServiceData {
|
||||
id: HealthIndicatorId!
|
||||
label: String!
|
||||
description: String!
|
||||
status: AdminPanelHealthServiceStatus!
|
||||
errorMessage: String
|
||||
details: String
|
||||
queues: [AdminPanelWorkerQueueHealth!]
|
||||
}
|
||||
|
||||
type MaintenanceMode {
|
||||
startAt: DateTime!
|
||||
endAt: DateTime!
|
||||
link: String
|
||||
}
|
||||
|
||||
type ModelsDevModelSuggestion {
|
||||
modelId: String!
|
||||
name: String!
|
||||
inputCostPerMillionTokens: Float!
|
||||
outputCostPerMillionTokens: Float!
|
||||
cachedInputCostPerMillionTokens: Float
|
||||
cacheCreationCostPerMillionTokens: Float
|
||||
contextWindowTokens: Float!
|
||||
maxOutputTokens: Float!
|
||||
modalities: [String!]!
|
||||
supportsReasoning: Boolean!
|
||||
}
|
||||
|
||||
type ModelsDevProviderSuggestion {
|
||||
id: String!
|
||||
modelCount: Float!
|
||||
npm: String!
|
||||
}
|
||||
|
||||
type QueueMetricsDataPoint {
|
||||
x: Float!
|
||||
y: Float!
|
||||
}
|
||||
|
||||
type QueueMetricsSeries {
|
||||
id: String!
|
||||
data: [QueueMetricsDataPoint!]!
|
||||
}
|
||||
|
||||
type WorkerQueueMetrics {
|
||||
failed: Float!
|
||||
completed: Float!
|
||||
waiting: Float!
|
||||
active: Float!
|
||||
delayed: Float!
|
||||
failureRate: Float!
|
||||
failedData: [Float!]
|
||||
completedData: [Float!]
|
||||
}
|
||||
|
||||
type QueueMetricsData {
|
||||
queueName: String!
|
||||
workers: Float!
|
||||
timeRange: QueueMetricsTimeRange!
|
||||
details: WorkerQueueMetrics
|
||||
data: [QueueMetricsSeries!]!
|
||||
}
|
||||
|
||||
enum QueueMetricsTimeRange {
|
||||
SevenDays
|
||||
OneDay
|
||||
TwelveHours
|
||||
FourHours
|
||||
OneHour
|
||||
}
|
||||
|
||||
type VersionDistributionEntry {
|
||||
version: String!
|
||||
count: Int!
|
||||
|
|
@ -3356,27 +3030,6 @@ type Query {
|
|||
getConnectedImapSmtpCaldavAccount(id: UUID!): ConnectedImapSmtpCaldavAccount!
|
||||
getAutoCompleteAddress(address: String!, token: String!, country: String, isFieldCity: Boolean): [AutocompleteResult!]!
|
||||
getAddressDetails(placeId: String!, token: String!): PlaceDetailsResult!
|
||||
userLookupAdminPanel(userIdentifier: String!): UserLookup!
|
||||
adminPanelRecentUsers(searchTerm: String = ""): [AdminPanelRecentUser!]!
|
||||
adminPanelTopWorkspaces(searchTerm: String = ""): [AdminPanelTopWorkspace!]!
|
||||
getConfigVariablesGrouped: ConfigVariables!
|
||||
getSystemHealthStatus: SystemHealth!
|
||||
getIndicatorHealthStatus(indicatorId: HealthIndicatorId!): AdminPanelHealthServiceData!
|
||||
getQueueMetrics(queueName: String!, timeRange: QueueMetricsTimeRange = OneHour): QueueMetricsData!
|
||||
versionInfo: VersionInfo!
|
||||
getAdminAiModels: AdminAiModels!
|
||||
getDatabaseConfigVariable(key: String!): ConfigVariable!
|
||||
getQueueJobs(queueName: String!, state: JobState!, limit: Int = 50, offset: Int = 0): QueueJobsResponse!
|
||||
findAllApplicationRegistrations: [ApplicationRegistration!]!
|
||||
getAiProviders: JSON!
|
||||
getModelsDevProviders: [ModelsDevProviderSuggestion!]!
|
||||
getModelsDevSuggestions(providerType: String!): [ModelsDevModelSuggestion!]!
|
||||
getAdminAiUsageByWorkspace(periodStart: DateTime, periodEnd: DateTime): [UsageBreakdownItem!]!
|
||||
getMaintenanceMode: MaintenanceMode
|
||||
workspaceLookupAdminPanel(workspaceId: UUID!): UserLookup!
|
||||
getAdminWorkspaceChatThreads(workspaceId: UUID!): [AdminWorkspaceChatThread!]!
|
||||
getAdminChatThreadMessages(threadId: UUID!): AdminChatThreadMessages!
|
||||
findOneAdminApplicationRegistration(id: String!): ApplicationRegistration!
|
||||
getUsageAnalytics(input: UsageAnalyticsInput): UsageAnalytics!
|
||||
getPostgresCredentials: PostgresCredentials
|
||||
findManyPublicDomains: [PublicDomain!]!
|
||||
|
|
@ -3691,23 +3344,6 @@ type Mutation {
|
|||
startChannelSync(connectedAccountId: UUID!): ChannelSyncSuccess!
|
||||
saveImapSmtpCaldavAccount(accountOwnerId: UUID!, handle: String!, connectionParameters: EmailAccountConnectionParameters!, id: UUID): ImapSmtpCaldavConnectionSuccess!
|
||||
updateLabPublicFeatureFlag(input: UpdateLabPublicFeatureFlagInput!): FeatureFlag!
|
||||
updateWorkspaceFeatureFlag(workspaceId: UUID!, featureFlag: String!, value: Boolean!): Boolean!
|
||||
setAdminAiModelEnabled(modelId: String!, enabled: Boolean!): Boolean!
|
||||
setAdminAiModelsEnabled(modelIds: [String!]!, enabled: Boolean!): Boolean!
|
||||
setAdminAiModelRecommended(modelId: String!, recommended: Boolean!): Boolean!
|
||||
setAdminAiModelsRecommended(modelIds: [String!]!, recommended: Boolean!): Boolean!
|
||||
setAdminDefaultAiModel(role: AiModelRole!, modelId: String!): Boolean!
|
||||
createDatabaseConfigVariable(key: String!, value: JSON!): Boolean!
|
||||
updateDatabaseConfigVariable(key: String!, value: JSON!): Boolean!
|
||||
deleteDatabaseConfigVariable(key: String!): Boolean!
|
||||
retryJobs(queueName: String!, jobIds: [String!]!): RetryJobsResponse!
|
||||
deleteJobs(queueName: String!, jobIds: [String!]!): DeleteJobsResponse!
|
||||
addAiProvider(providerName: String!, providerConfig: JSON!): Boolean!
|
||||
removeAiProvider(providerName: String!): Boolean!
|
||||
addModelToProvider(providerName: String!, modelConfig: JSON!): Boolean!
|
||||
removeModelFromProvider(providerName: String!, modelName: String!): Boolean!
|
||||
setMaintenanceMode(startAt: DateTime!, endAt: DateTime!, link: String): Boolean!
|
||||
clearMaintenanceMode: Boolean!
|
||||
enablePostgresProxy: PostgresCredentials!
|
||||
disablePostgresProxy: PostgresCredentials!
|
||||
createPublicDomain(domain: String!): PublicDomain!
|
||||
|
|
@ -4708,11 +4344,6 @@ input UpdateLabPublicFeatureFlagInput {
|
|||
value: Boolean!
|
||||
}
|
||||
|
||||
enum AiModelRole {
|
||||
FAST
|
||||
SMART
|
||||
}
|
||||
|
||||
input CreateOneAppTokenInput {
|
||||
"""The record to create"""
|
||||
appToken: CreateAppTokenInput!
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -9,6 +9,7 @@
|
|||
"node_modules",
|
||||
"src/generated",
|
||||
"src/generated-metadata",
|
||||
"src/generated-admin",
|
||||
"src/locales/generated",
|
||||
"src/testing/mock-data",
|
||||
"**/__mocks__/**",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
src/generated
|
||||
src/generated-metadata
|
||||
src/generated-admin
|
||||
src/locales/generated
|
||||
src/testing/mock-data/generated
|
||||
27
packages/twenty-front/codegen-admin.cjs
Normal file
27
packages/twenty-front/codegen-admin.cjs
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
module.exports = {
|
||||
schema:
|
||||
(process.env.REACT_APP_SERVER_BASE_URL ?? 'http://localhost:3000') +
|
||||
'/admin-panel',
|
||||
documents: [
|
||||
'./src/modules/settings/admin-panel/**/graphql/**/*.{ts,tsx}',
|
||||
'./src/modules/settings/application-registrations/graphql/fragments/*.{ts,tsx}',
|
||||
|
||||
'!./src/**/*.test.{ts,tsx}',
|
||||
'!./src/**/*.stories.{ts,tsx}',
|
||||
'!./src/**/__mocks__/*.ts',
|
||||
],
|
||||
overwrite: true,
|
||||
generates: {
|
||||
'./src/generated-admin/graphql.ts': {
|
||||
plugins: ['typescript', 'typescript-operations', 'typed-document-node'],
|
||||
config: {
|
||||
skipTypename: false,
|
||||
scalars: {
|
||||
DateTime: 'string',
|
||||
UUID: 'string',
|
||||
},
|
||||
namingConvention: { enumValues: 'keep' },
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
@ -16,6 +16,7 @@ module.exports = {
|
|||
'./src/modules/workspace-invitation/graphql/**/*.{ts,tsx}',
|
||||
|
||||
'./src/modules/settings/**/graphql/**/*.{ts,tsx}',
|
||||
'!./src/modules/settings/admin-panel/**/graphql/**/*.{ts,tsx}',
|
||||
'./src/modules/logic-functions/graphql/**/*.{ts,tsx}',
|
||||
|
||||
'./src/modules/databases/graphql/**/*.{ts,tsx}',
|
||||
|
|
|
|||
|
|
@ -275,6 +275,9 @@
|
|||
},
|
||||
"metadata": {
|
||||
"config": "codegen-metadata.cjs"
|
||||
},
|
||||
"admin": {
|
||||
"config": "codegen-admin.cjs"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
983
packages/twenty-front/src/generated-admin/graphql.ts
Normal file
983
packages/twenty-front/src/generated-admin/graphql.ts
Normal file
|
|
@ -0,0 +1,983 @@
|
|||
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
||||
export type Maybe<T> = T | null;
|
||||
export type InputMaybe<T> = Maybe<T>;
|
||||
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
|
||||
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
|
||||
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
|
||||
/** All built-in and custom scalars, mapped to their actual values */
|
||||
export type Scalars = {
|
||||
ID: string;
|
||||
String: string;
|
||||
Boolean: boolean;
|
||||
Int: number;
|
||||
Float: number;
|
||||
DateTime: string;
|
||||
JSON: any;
|
||||
UUID: string;
|
||||
};
|
||||
|
||||
export type AdminAiModelConfig = {
|
||||
__typename?: 'AdminAiModelConfig';
|
||||
contextWindowTokens?: Maybe<Scalars['Float']>;
|
||||
dataResidency?: Maybe<Scalars['String']>;
|
||||
inputCostPerMillionTokens?: Maybe<Scalars['Float']>;
|
||||
isAdminEnabled: Scalars['Boolean'];
|
||||
isAvailable: Scalars['Boolean'];
|
||||
isDeprecated?: Maybe<Scalars['Boolean']>;
|
||||
isRecommended?: Maybe<Scalars['Boolean']>;
|
||||
label: Scalars['String'];
|
||||
maxOutputTokens?: Maybe<Scalars['Float']>;
|
||||
modelFamily?: Maybe<ModelFamily>;
|
||||
modelFamilyLabel?: Maybe<Scalars['String']>;
|
||||
modelId: Scalars['String'];
|
||||
name?: Maybe<Scalars['String']>;
|
||||
outputCostPerMillionTokens?: Maybe<Scalars['Float']>;
|
||||
providerLabel?: Maybe<Scalars['String']>;
|
||||
providerName?: Maybe<Scalars['String']>;
|
||||
sdkPackage?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type AdminAiModels = {
|
||||
__typename?: 'AdminAiModels';
|
||||
defaultFastModelId?: Maybe<Scalars['String']>;
|
||||
defaultSmartModelId?: Maybe<Scalars['String']>;
|
||||
models: Array<AdminAiModelConfig>;
|
||||
};
|
||||
|
||||
export type AdminChatMessage = {
|
||||
__typename?: 'AdminChatMessage';
|
||||
createdAt: Scalars['DateTime'];
|
||||
id: Scalars['UUID'];
|
||||
parts: Array<AdminChatMessagePart>;
|
||||
role: AgentMessageRole;
|
||||
};
|
||||
|
||||
export type AdminChatMessagePart = {
|
||||
__typename?: 'AdminChatMessagePart';
|
||||
textContent?: Maybe<Scalars['String']>;
|
||||
toolName?: Maybe<Scalars['String']>;
|
||||
type: Scalars['String'];
|
||||
};
|
||||
|
||||
export type AdminChatThreadMessages = {
|
||||
__typename?: 'AdminChatThreadMessages';
|
||||
messages: Array<AdminChatMessage>;
|
||||
thread: AdminWorkspaceChatThread;
|
||||
};
|
||||
|
||||
export type AdminPanelHealthServiceData = {
|
||||
__typename?: 'AdminPanelHealthServiceData';
|
||||
description: Scalars['String'];
|
||||
details?: Maybe<Scalars['String']>;
|
||||
errorMessage?: Maybe<Scalars['String']>;
|
||||
id: HealthIndicatorId;
|
||||
label: Scalars['String'];
|
||||
queues?: Maybe<Array<AdminPanelWorkerQueueHealth>>;
|
||||
status: AdminPanelHealthServiceStatus;
|
||||
};
|
||||
|
||||
export enum AdminPanelHealthServiceStatus {
|
||||
OPERATIONAL = 'OPERATIONAL',
|
||||
OUTAGE = 'OUTAGE'
|
||||
}
|
||||
|
||||
export type AdminPanelRecentUser = {
|
||||
__typename?: 'AdminPanelRecentUser';
|
||||
createdAt: Scalars['DateTime'];
|
||||
email: Scalars['String'];
|
||||
firstName?: Maybe<Scalars['String']>;
|
||||
id: Scalars['UUID'];
|
||||
lastName?: Maybe<Scalars['String']>;
|
||||
workspaceId?: Maybe<Scalars['UUID']>;
|
||||
workspaceName?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type AdminPanelTopWorkspace = {
|
||||
__typename?: 'AdminPanelTopWorkspace';
|
||||
id: Scalars['UUID'];
|
||||
name: Scalars['String'];
|
||||
subdomain: Scalars['String'];
|
||||
totalUsers: Scalars['Int'];
|
||||
};
|
||||
|
||||
export type AdminPanelWorkerQueueHealth = {
|
||||
__typename?: 'AdminPanelWorkerQueueHealth';
|
||||
id: Scalars['String'];
|
||||
queueName: Scalars['String'];
|
||||
status: AdminPanelHealthServiceStatus;
|
||||
};
|
||||
|
||||
export type AdminWorkspaceChatThread = {
|
||||
__typename?: 'AdminWorkspaceChatThread';
|
||||
conversationSize: Scalars['Int'];
|
||||
createdAt: Scalars['DateTime'];
|
||||
id: Scalars['UUID'];
|
||||
title?: Maybe<Scalars['String']>;
|
||||
totalInputTokens: Scalars['Int'];
|
||||
totalOutputTokens: Scalars['Int'];
|
||||
updatedAt: Scalars['DateTime'];
|
||||
};
|
||||
|
||||
/** Role of a message in a chat thread */
|
||||
export enum AgentMessageRole {
|
||||
ASSISTANT = 'ASSISTANT',
|
||||
SYSTEM = 'SYSTEM',
|
||||
USER = 'USER'
|
||||
}
|
||||
|
||||
export enum AiModelRole {
|
||||
FAST = 'FAST',
|
||||
SMART = 'SMART'
|
||||
}
|
||||
|
||||
export type ApplicationRegistration = {
|
||||
__typename?: 'ApplicationRegistration';
|
||||
createdAt: Scalars['DateTime'];
|
||||
id: Scalars['UUID'];
|
||||
isFeatured: Scalars['Boolean'];
|
||||
isListed: Scalars['Boolean'];
|
||||
latestAvailableVersion?: Maybe<Scalars['String']>;
|
||||
logoUrl?: Maybe<Scalars['String']>;
|
||||
name: Scalars['String'];
|
||||
oAuthClientId: Scalars['String'];
|
||||
oAuthRedirectUris: Array<Scalars['String']>;
|
||||
oAuthScopes: Array<Scalars['String']>;
|
||||
ownerWorkspaceId?: Maybe<Scalars['UUID']>;
|
||||
sourcePackage?: Maybe<Scalars['String']>;
|
||||
sourceType: ApplicationRegistrationSourceType;
|
||||
universalIdentifier: Scalars['String'];
|
||||
updatedAt: Scalars['DateTime'];
|
||||
};
|
||||
|
||||
export enum ApplicationRegistrationSourceType {
|
||||
LOCAL = 'LOCAL',
|
||||
NPM = 'NPM',
|
||||
OAUTH_ONLY = 'OAUTH_ONLY',
|
||||
TARBALL = 'TARBALL'
|
||||
}
|
||||
|
||||
export enum ConfigSource {
|
||||
DATABASE = 'DATABASE',
|
||||
DEFAULT = 'DEFAULT',
|
||||
ENVIRONMENT = 'ENVIRONMENT'
|
||||
}
|
||||
|
||||
export type ConfigVariable = {
|
||||
__typename?: 'ConfigVariable';
|
||||
description: Scalars['String'];
|
||||
isEnvOnly: Scalars['Boolean'];
|
||||
isSensitive: Scalars['Boolean'];
|
||||
name: Scalars['String'];
|
||||
options?: Maybe<Scalars['JSON']>;
|
||||
source: ConfigSource;
|
||||
type: ConfigVariableType;
|
||||
value?: Maybe<Scalars['JSON']>;
|
||||
};
|
||||
|
||||
export enum ConfigVariableType {
|
||||
ARRAY = 'ARRAY',
|
||||
BOOLEAN = 'BOOLEAN',
|
||||
ENUM = 'ENUM',
|
||||
JSON = 'JSON',
|
||||
NUMBER = 'NUMBER',
|
||||
STRING = 'STRING'
|
||||
}
|
||||
|
||||
export type ConfigVariables = {
|
||||
__typename?: 'ConfigVariables';
|
||||
groups: Array<ConfigVariablesGroupData>;
|
||||
};
|
||||
|
||||
export enum ConfigVariablesGroup {
|
||||
ADVANCED_SETTINGS = 'ADVANCED_SETTINGS',
|
||||
ANALYTICS_CONFIG = 'ANALYTICS_CONFIG',
|
||||
AWS_SES_SETTINGS = 'AWS_SES_SETTINGS',
|
||||
BILLING_CONFIG = 'BILLING_CONFIG',
|
||||
CAPTCHA_CONFIG = 'CAPTCHA_CONFIG',
|
||||
CLOUDFLARE_CONFIG = 'CLOUDFLARE_CONFIG',
|
||||
CODE_INTERPRETER_CONFIG = 'CODE_INTERPRETER_CONFIG',
|
||||
EMAIL_SETTINGS = 'EMAIL_SETTINGS',
|
||||
GOOGLE_AUTH = 'GOOGLE_AUTH',
|
||||
LLM = 'LLM',
|
||||
LOGGING = 'LOGGING',
|
||||
LOGIC_FUNCTION_CONFIG = 'LOGIC_FUNCTION_CONFIG',
|
||||
MICROSOFT_AUTH = 'MICROSOFT_AUTH',
|
||||
RATE_LIMITING = 'RATE_LIMITING',
|
||||
SERVER_CONFIG = 'SERVER_CONFIG',
|
||||
SSL = 'SSL',
|
||||
STORAGE_CONFIG = 'STORAGE_CONFIG',
|
||||
SUPPORT_CHAT_CONFIG = 'SUPPORT_CHAT_CONFIG',
|
||||
TOKENS_DURATION = 'TOKENS_DURATION'
|
||||
}
|
||||
|
||||
export type ConfigVariablesGroupData = {
|
||||
__typename?: 'ConfigVariablesGroupData';
|
||||
description: Scalars['String'];
|
||||
isHiddenOnLoad: Scalars['Boolean'];
|
||||
name: ConfigVariablesGroup;
|
||||
variables: Array<ConfigVariable>;
|
||||
};
|
||||
|
||||
export type DeleteJobsResponse = {
|
||||
__typename?: 'DeleteJobsResponse';
|
||||
deletedCount: Scalars['Int'];
|
||||
results: Array<JobOperationResult>;
|
||||
};
|
||||
|
||||
export type FeatureFlag = {
|
||||
__typename?: 'FeatureFlag';
|
||||
key: FeatureFlagKey;
|
||||
value: Scalars['Boolean'];
|
||||
};
|
||||
|
||||
export enum FeatureFlagKey {
|
||||
IS_AI_ENABLED = 'IS_AI_ENABLED',
|
||||
IS_COMMAND_MENU_ITEM_ENABLED = 'IS_COMMAND_MENU_ITEM_ENABLED',
|
||||
IS_CONNECTED_ACCOUNT_MIGRATED = 'IS_CONNECTED_ACCOUNT_MIGRATED',
|
||||
IS_DATASOURCE_MIGRATED = 'IS_DATASOURCE_MIGRATED',
|
||||
IS_EMAILING_DOMAIN_ENABLED = 'IS_EMAILING_DOMAIN_ENABLED',
|
||||
IS_JSON_FILTER_ENABLED = 'IS_JSON_FILTER_ENABLED',
|
||||
IS_JUNCTION_RELATIONS_ENABLED = 'IS_JUNCTION_RELATIONS_ENABLED',
|
||||
IS_MARKETPLACE_SETTING_TAB_VISIBLE = 'IS_MARKETPLACE_SETTING_TAB_VISIBLE',
|
||||
IS_PUBLIC_DOMAIN_ENABLED = 'IS_PUBLIC_DOMAIN_ENABLED',
|
||||
IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED = 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED',
|
||||
IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED = 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED',
|
||||
IS_RICH_TEXT_V1_MIGRATED = 'IS_RICH_TEXT_V1_MIGRATED',
|
||||
IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED'
|
||||
}
|
||||
|
||||
export enum HealthIndicatorId {
|
||||
app = 'app',
|
||||
connectedAccount = 'connectedAccount',
|
||||
database = 'database',
|
||||
redis = 'redis',
|
||||
worker = 'worker'
|
||||
}
|
||||
|
||||
export type JobOperationResult = {
|
||||
__typename?: 'JobOperationResult';
|
||||
error?: Maybe<Scalars['String']>;
|
||||
jobId: Scalars['String'];
|
||||
success: Scalars['Boolean'];
|
||||
};
|
||||
|
||||
/** Job state in the queue */
|
||||
export enum JobState {
|
||||
ACTIVE = 'ACTIVE',
|
||||
COMPLETED = 'COMPLETED',
|
||||
DELAYED = 'DELAYED',
|
||||
FAILED = 'FAILED',
|
||||
PRIORITIZED = 'PRIORITIZED',
|
||||
WAITING = 'WAITING',
|
||||
WAITING_CHILDREN = 'WAITING_CHILDREN'
|
||||
}
|
||||
|
||||
export type MaintenanceMode = {
|
||||
__typename?: 'MaintenanceMode';
|
||||
endAt: Scalars['DateTime'];
|
||||
link?: Maybe<Scalars['String']>;
|
||||
startAt: Scalars['DateTime'];
|
||||
};
|
||||
|
||||
export enum ModelFamily {
|
||||
CLAUDE = 'CLAUDE',
|
||||
GEMINI = 'GEMINI',
|
||||
GPT = 'GPT',
|
||||
GROK = 'GROK',
|
||||
MISTRAL = 'MISTRAL'
|
||||
}
|
||||
|
||||
export type ModelsDevModelSuggestion = {
|
||||
__typename?: 'ModelsDevModelSuggestion';
|
||||
cacheCreationCostPerMillionTokens?: Maybe<Scalars['Float']>;
|
||||
cachedInputCostPerMillionTokens?: Maybe<Scalars['Float']>;
|
||||
contextWindowTokens: Scalars['Float'];
|
||||
inputCostPerMillionTokens: Scalars['Float'];
|
||||
maxOutputTokens: Scalars['Float'];
|
||||
modalities: Array<Scalars['String']>;
|
||||
modelId: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
outputCostPerMillionTokens: Scalars['Float'];
|
||||
supportsReasoning: Scalars['Boolean'];
|
||||
};
|
||||
|
||||
export type ModelsDevProviderSuggestion = {
|
||||
__typename?: 'ModelsDevProviderSuggestion';
|
||||
id: Scalars['String'];
|
||||
modelCount: Scalars['Float'];
|
||||
npm: Scalars['String'];
|
||||
};
|
||||
|
||||
export type Mutation = {
|
||||
__typename?: 'Mutation';
|
||||
addAiProvider: Scalars['Boolean'];
|
||||
addModelToProvider: Scalars['Boolean'];
|
||||
clearMaintenanceMode: Scalars['Boolean'];
|
||||
createDatabaseConfigVariable: Scalars['Boolean'];
|
||||
deleteDatabaseConfigVariable: Scalars['Boolean'];
|
||||
deleteJobs: DeleteJobsResponse;
|
||||
removeAiProvider: Scalars['Boolean'];
|
||||
removeModelFromProvider: Scalars['Boolean'];
|
||||
retryJobs: RetryJobsResponse;
|
||||
setAdminAiModelEnabled: Scalars['Boolean'];
|
||||
setAdminAiModelRecommended: Scalars['Boolean'];
|
||||
setAdminAiModelsEnabled: Scalars['Boolean'];
|
||||
setAdminAiModelsRecommended: Scalars['Boolean'];
|
||||
setAdminDefaultAiModel: Scalars['Boolean'];
|
||||
setMaintenanceMode: Scalars['Boolean'];
|
||||
updateDatabaseConfigVariable: Scalars['Boolean'];
|
||||
updateWorkspaceFeatureFlag: Scalars['Boolean'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationAddAiProviderArgs = {
|
||||
providerConfig: Scalars['JSON'];
|
||||
providerName: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationAddModelToProviderArgs = {
|
||||
modelConfig: Scalars['JSON'];
|
||||
providerName: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateDatabaseConfigVariableArgs = {
|
||||
key: Scalars['String'];
|
||||
value: Scalars['JSON'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteDatabaseConfigVariableArgs = {
|
||||
key: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteJobsArgs = {
|
||||
jobIds: Array<Scalars['String']>;
|
||||
queueName: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationRemoveAiProviderArgs = {
|
||||
providerName: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationRemoveModelFromProviderArgs = {
|
||||
modelName: Scalars['String'];
|
||||
providerName: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationRetryJobsArgs = {
|
||||
jobIds: Array<Scalars['String']>;
|
||||
queueName: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationSetAdminAiModelEnabledArgs = {
|
||||
enabled: Scalars['Boolean'];
|
||||
modelId: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationSetAdminAiModelRecommendedArgs = {
|
||||
modelId: Scalars['String'];
|
||||
recommended: Scalars['Boolean'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationSetAdminAiModelsEnabledArgs = {
|
||||
enabled: Scalars['Boolean'];
|
||||
modelIds: Array<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type MutationSetAdminAiModelsRecommendedArgs = {
|
||||
modelIds: Array<Scalars['String']>;
|
||||
recommended: Scalars['Boolean'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationSetAdminDefaultAiModelArgs = {
|
||||
modelId: Scalars['String'];
|
||||
role: AiModelRole;
|
||||
};
|
||||
|
||||
|
||||
export type MutationSetMaintenanceModeArgs = {
|
||||
endAt: Scalars['DateTime'];
|
||||
link?: InputMaybe<Scalars['String']>;
|
||||
startAt: Scalars['DateTime'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateDatabaseConfigVariableArgs = {
|
||||
key: Scalars['String'];
|
||||
value: Scalars['JSON'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateWorkspaceFeatureFlagArgs = {
|
||||
featureFlag: Scalars['String'];
|
||||
value: Scalars['Boolean'];
|
||||
workspaceId: Scalars['UUID'];
|
||||
};
|
||||
|
||||
export type Query = {
|
||||
__typename?: 'Query';
|
||||
adminPanelRecentUsers: Array<AdminPanelRecentUser>;
|
||||
adminPanelTopWorkspaces: Array<AdminPanelTopWorkspace>;
|
||||
findAllApplicationRegistrations: Array<ApplicationRegistration>;
|
||||
findOneAdminApplicationRegistration: ApplicationRegistration;
|
||||
getAdminAiModels: AdminAiModels;
|
||||
getAdminAiUsageByWorkspace: Array<UsageBreakdownItem>;
|
||||
getAdminChatThreadMessages: AdminChatThreadMessages;
|
||||
getAdminWorkspaceChatThreads: Array<AdminWorkspaceChatThread>;
|
||||
getAiProviders: Scalars['JSON'];
|
||||
getConfigVariablesGrouped: ConfigVariables;
|
||||
getDatabaseConfigVariable: ConfigVariable;
|
||||
getIndicatorHealthStatus: AdminPanelHealthServiceData;
|
||||
getMaintenanceMode?: Maybe<MaintenanceMode>;
|
||||
getModelsDevProviders: Array<ModelsDevProviderSuggestion>;
|
||||
getModelsDevSuggestions: Array<ModelsDevModelSuggestion>;
|
||||
getQueueJobs: QueueJobsResponse;
|
||||
getQueueMetrics: QueueMetricsData;
|
||||
getSystemHealthStatus: SystemHealth;
|
||||
userLookupAdminPanel: UserLookup;
|
||||
versionInfo: VersionInfo;
|
||||
workspaceLookupAdminPanel: UserLookup;
|
||||
};
|
||||
|
||||
|
||||
export type QueryAdminPanelRecentUsersArgs = {
|
||||
searchTerm?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryAdminPanelTopWorkspacesArgs = {
|
||||
searchTerm?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryFindOneAdminApplicationRegistrationArgs = {
|
||||
id: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetAdminAiUsageByWorkspaceArgs = {
|
||||
periodEnd?: InputMaybe<Scalars['DateTime']>;
|
||||
periodStart?: InputMaybe<Scalars['DateTime']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetAdminChatThreadMessagesArgs = {
|
||||
threadId: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetAdminWorkspaceChatThreadsArgs = {
|
||||
workspaceId: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetDatabaseConfigVariableArgs = {
|
||||
key: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetIndicatorHealthStatusArgs = {
|
||||
indicatorId: HealthIndicatorId;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetModelsDevSuggestionsArgs = {
|
||||
providerType: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetQueueJobsArgs = {
|
||||
limit?: InputMaybe<Scalars['Int']>;
|
||||
offset?: InputMaybe<Scalars['Int']>;
|
||||
queueName: Scalars['String'];
|
||||
state: JobState;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetQueueMetricsArgs = {
|
||||
queueName: Scalars['String'];
|
||||
timeRange?: InputMaybe<QueueMetricsTimeRange>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUserLookupAdminPanelArgs = {
|
||||
userIdentifier: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryWorkspaceLookupAdminPanelArgs = {
|
||||
workspaceId: Scalars['UUID'];
|
||||
};
|
||||
|
||||
export type QueueJob = {
|
||||
__typename?: 'QueueJob';
|
||||
attemptsMade: Scalars['Float'];
|
||||
data?: Maybe<Scalars['JSON']>;
|
||||
failedReason?: Maybe<Scalars['String']>;
|
||||
finishedOn?: Maybe<Scalars['Float']>;
|
||||
id: Scalars['String'];
|
||||
logs?: Maybe<Array<Scalars['String']>>;
|
||||
name: Scalars['String'];
|
||||
processedOn?: Maybe<Scalars['Float']>;
|
||||
returnValue?: Maybe<Scalars['JSON']>;
|
||||
stackTrace?: Maybe<Array<Scalars['String']>>;
|
||||
state: JobState;
|
||||
timestamp?: Maybe<Scalars['Float']>;
|
||||
};
|
||||
|
||||
export type QueueJobsResponse = {
|
||||
__typename?: 'QueueJobsResponse';
|
||||
count: Scalars['Float'];
|
||||
hasMore: Scalars['Boolean'];
|
||||
jobs: Array<QueueJob>;
|
||||
retentionConfig: QueueRetentionConfig;
|
||||
totalCount: Scalars['Float'];
|
||||
};
|
||||
|
||||
export type QueueMetricsData = {
|
||||
__typename?: 'QueueMetricsData';
|
||||
data: Array<QueueMetricsSeries>;
|
||||
details?: Maybe<WorkerQueueMetrics>;
|
||||
queueName: Scalars['String'];
|
||||
timeRange: QueueMetricsTimeRange;
|
||||
workers: Scalars['Float'];
|
||||
};
|
||||
|
||||
export type QueueMetricsDataPoint = {
|
||||
__typename?: 'QueueMetricsDataPoint';
|
||||
x: Scalars['Float'];
|
||||
y: Scalars['Float'];
|
||||
};
|
||||
|
||||
export type QueueMetricsSeries = {
|
||||
__typename?: 'QueueMetricsSeries';
|
||||
data: Array<QueueMetricsDataPoint>;
|
||||
id: Scalars['String'];
|
||||
};
|
||||
|
||||
export enum QueueMetricsTimeRange {
|
||||
FourHours = 'FourHours',
|
||||
OneDay = 'OneDay',
|
||||
OneHour = 'OneHour',
|
||||
SevenDays = 'SevenDays',
|
||||
TwelveHours = 'TwelveHours'
|
||||
}
|
||||
|
||||
export type QueueRetentionConfig = {
|
||||
__typename?: 'QueueRetentionConfig';
|
||||
completedMaxAge: Scalars['Float'];
|
||||
completedMaxCount: Scalars['Float'];
|
||||
failedMaxAge: Scalars['Float'];
|
||||
failedMaxCount: Scalars['Float'];
|
||||
};
|
||||
|
||||
export type RetryJobsResponse = {
|
||||
__typename?: 'RetryJobsResponse';
|
||||
results: Array<JobOperationResult>;
|
||||
retriedCount: Scalars['Int'];
|
||||
};
|
||||
|
||||
export type SystemHealth = {
|
||||
__typename?: 'SystemHealth';
|
||||
services: Array<SystemHealthService>;
|
||||
};
|
||||
|
||||
export type SystemHealthService = {
|
||||
__typename?: 'SystemHealthService';
|
||||
id: HealthIndicatorId;
|
||||
label: Scalars['String'];
|
||||
status: AdminPanelHealthServiceStatus;
|
||||
};
|
||||
|
||||
export type UsageBreakdownItem = {
|
||||
__typename?: 'UsageBreakdownItem';
|
||||
creditsUsed: Scalars['Float'];
|
||||
key: Scalars['String'];
|
||||
label?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type UserInfo = {
|
||||
__typename?: 'UserInfo';
|
||||
createdAt: Scalars['DateTime'];
|
||||
email: Scalars['String'];
|
||||
firstName?: Maybe<Scalars['String']>;
|
||||
id: Scalars['UUID'];
|
||||
lastName?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type UserLookup = {
|
||||
__typename?: 'UserLookup';
|
||||
user: UserInfo;
|
||||
workspaces: Array<WorkspaceInfo>;
|
||||
};
|
||||
|
||||
export type VersionInfo = {
|
||||
__typename?: 'VersionInfo';
|
||||
currentVersion?: Maybe<Scalars['String']>;
|
||||
latestVersion: Scalars['String'];
|
||||
};
|
||||
|
||||
export type WorkerQueueMetrics = {
|
||||
__typename?: 'WorkerQueueMetrics';
|
||||
active: Scalars['Float'];
|
||||
completed: Scalars['Float'];
|
||||
completedData?: Maybe<Array<Scalars['Float']>>;
|
||||
delayed: Scalars['Float'];
|
||||
failed: Scalars['Float'];
|
||||
failedData?: Maybe<Array<Scalars['Float']>>;
|
||||
failureRate: Scalars['Float'];
|
||||
waiting: Scalars['Float'];
|
||||
};
|
||||
|
||||
export enum WorkspaceActivationStatus {
|
||||
ACTIVE = 'ACTIVE',
|
||||
INACTIVE = 'INACTIVE',
|
||||
ONGOING_CREATION = 'ONGOING_CREATION',
|
||||
PENDING_CREATION = 'PENDING_CREATION',
|
||||
SUSPENDED = 'SUSPENDED'
|
||||
}
|
||||
|
||||
export type WorkspaceInfo = {
|
||||
__typename?: 'WorkspaceInfo';
|
||||
activationStatus: WorkspaceActivationStatus;
|
||||
allowImpersonation: Scalars['Boolean'];
|
||||
createdAt: Scalars['DateTime'];
|
||||
featureFlags: Array<FeatureFlag>;
|
||||
id: Scalars['UUID'];
|
||||
logo?: Maybe<Scalars['String']>;
|
||||
name: Scalars['String'];
|
||||
totalUsers: Scalars['Float'];
|
||||
users: Array<UserInfo>;
|
||||
workspaceUrls: WorkspaceUrls;
|
||||
};
|
||||
|
||||
export type WorkspaceUrls = {
|
||||
__typename?: 'WorkspaceUrls';
|
||||
customUrl?: Maybe<Scalars['String']>;
|
||||
subdomainUrl: Scalars['String'];
|
||||
};
|
||||
|
||||
export type AddAiProviderMutationVariables = Exact<{
|
||||
providerName: Scalars['String'];
|
||||
providerConfig: Scalars['JSON'];
|
||||
}>;
|
||||
|
||||
|
||||
export type AddAiProviderMutation = { __typename?: 'Mutation', addAiProvider: boolean };
|
||||
|
||||
export type AddModelToProviderMutationVariables = Exact<{
|
||||
providerName: Scalars['String'];
|
||||
modelConfig: Scalars['JSON'];
|
||||
}>;
|
||||
|
||||
|
||||
export type AddModelToProviderMutation = { __typename?: 'Mutation', addModelToProvider: boolean };
|
||||
|
||||
export type RemoveAiProviderMutationVariables = Exact<{
|
||||
providerName: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type RemoveAiProviderMutation = { __typename?: 'Mutation', removeAiProvider: boolean };
|
||||
|
||||
export type RemoveModelFromProviderMutationVariables = Exact<{
|
||||
providerName: Scalars['String'];
|
||||
modelName: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type RemoveModelFromProviderMutation = { __typename?: 'Mutation', removeModelFromProvider: boolean };
|
||||
|
||||
export type SetAdminAiModelEnabledMutationVariables = Exact<{
|
||||
modelId: Scalars['String'];
|
||||
enabled: Scalars['Boolean'];
|
||||
}>;
|
||||
|
||||
|
||||
export type SetAdminAiModelEnabledMutation = { __typename?: 'Mutation', setAdminAiModelEnabled: boolean };
|
||||
|
||||
export type SetAdminAiModelRecommendedMutationVariables = Exact<{
|
||||
modelId: Scalars['String'];
|
||||
recommended: Scalars['Boolean'];
|
||||
}>;
|
||||
|
||||
|
||||
export type SetAdminAiModelRecommendedMutation = { __typename?: 'Mutation', setAdminAiModelRecommended: boolean };
|
||||
|
||||
export type SetAdminAiModelsEnabledMutationVariables = Exact<{
|
||||
modelIds: Array<Scalars['String']> | Scalars['String'];
|
||||
enabled: Scalars['Boolean'];
|
||||
}>;
|
||||
|
||||
|
||||
export type SetAdminAiModelsEnabledMutation = { __typename?: 'Mutation', setAdminAiModelsEnabled: boolean };
|
||||
|
||||
export type SetAdminAiModelsRecommendedMutationVariables = Exact<{
|
||||
modelIds: Array<Scalars['String']> | Scalars['String'];
|
||||
recommended: Scalars['Boolean'];
|
||||
}>;
|
||||
|
||||
|
||||
export type SetAdminAiModelsRecommendedMutation = { __typename?: 'Mutation', setAdminAiModelsRecommended: boolean };
|
||||
|
||||
export type SetAdminDefaultAiModelMutationVariables = Exact<{
|
||||
role: AiModelRole;
|
||||
modelId: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type SetAdminDefaultAiModelMutation = { __typename?: 'Mutation', setAdminDefaultAiModel: boolean };
|
||||
|
||||
export type GetAdminAiModelsQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type GetAdminAiModelsQuery = { __typename?: 'Query', getAdminAiModels: { __typename?: 'AdminAiModels', defaultSmartModelId?: string | null, defaultFastModelId?: string | null, models: Array<{ __typename?: 'AdminAiModelConfig', modelId: string, label: string, modelFamily?: ModelFamily | null, sdkPackage?: string | null, isAvailable: boolean, isAdminEnabled: boolean, isDeprecated?: boolean | null, isRecommended?: boolean | null, contextWindowTokens?: number | null, maxOutputTokens?: number | null, inputCostPerMillionTokens?: number | null, outputCostPerMillionTokens?: number | null, providerName?: string | null, providerLabel?: string | null, name?: string | null, dataResidency?: string | null }> } };
|
||||
|
||||
export type GetAdminAiUsageByWorkspaceQueryVariables = Exact<{
|
||||
periodStart?: InputMaybe<Scalars['DateTime']>;
|
||||
periodEnd?: InputMaybe<Scalars['DateTime']>;
|
||||
}>;
|
||||
|
||||
|
||||
export type GetAdminAiUsageByWorkspaceQuery = { __typename?: 'Query', getAdminAiUsageByWorkspace: Array<{ __typename?: 'UsageBreakdownItem', key: string, label?: string | null, creditsUsed: number }> };
|
||||
|
||||
export type GetAiProvidersQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type GetAiProvidersQuery = { __typename?: 'Query', getAiProviders: any };
|
||||
|
||||
export type GetModelsDevProvidersQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type GetModelsDevProvidersQuery = { __typename?: 'Query', getModelsDevProviders: Array<{ __typename?: 'ModelsDevProviderSuggestion', id: string, modelCount: number, npm: string }> };
|
||||
|
||||
export type GetModelsDevSuggestionsQueryVariables = Exact<{
|
||||
providerType: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetModelsDevSuggestionsQuery = { __typename?: 'Query', getModelsDevSuggestions: Array<{ __typename?: 'ModelsDevModelSuggestion', modelId: string, name: string, inputCostPerMillionTokens: number, outputCostPerMillionTokens: number, cachedInputCostPerMillionTokens?: number | null, cacheCreationCostPerMillionTokens?: number | null, contextWindowTokens: number, maxOutputTokens: number, modalities: Array<string>, supportsReasoning: boolean }> };
|
||||
|
||||
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<string>, oAuthScopes: Array<string>, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string }> };
|
||||
|
||||
export type CreateDatabaseConfigVariableMutationVariables = Exact<{
|
||||
key: Scalars['String'];
|
||||
value: Scalars['JSON'];
|
||||
}>;
|
||||
|
||||
|
||||
export type CreateDatabaseConfigVariableMutation = { __typename?: 'Mutation', createDatabaseConfigVariable: boolean };
|
||||
|
||||
export type DeleteDatabaseConfigVariableMutationVariables = Exact<{
|
||||
key: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type DeleteDatabaseConfigVariableMutation = { __typename?: 'Mutation', deleteDatabaseConfigVariable: boolean };
|
||||
|
||||
export type UpdateDatabaseConfigVariableMutationVariables = Exact<{
|
||||
key: Scalars['String'];
|
||||
value: Scalars['JSON'];
|
||||
}>;
|
||||
|
||||
|
||||
export type UpdateDatabaseConfigVariableMutation = { __typename?: 'Mutation', updateDatabaseConfigVariable: boolean };
|
||||
|
||||
export type GetConfigVariablesGroupedQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type GetConfigVariablesGroupedQuery = { __typename?: 'Query', getConfigVariablesGrouped: { __typename?: 'ConfigVariables', groups: Array<{ __typename?: 'ConfigVariablesGroupData', name: ConfigVariablesGroup, description: string, isHiddenOnLoad: boolean, variables: Array<{ __typename?: 'ConfigVariable', name: string, description: string, value?: any | null, isSensitive: boolean, isEnvOnly: boolean, type: ConfigVariableType, options?: any | null, source: ConfigSource }> }> } };
|
||||
|
||||
export type GetDatabaseConfigVariableQueryVariables = Exact<{
|
||||
key: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetDatabaseConfigVariableQuery = { __typename?: 'Query', getDatabaseConfigVariable: { __typename?: 'ConfigVariable', name: string, description: string, value?: any | null, isSensitive: boolean, isEnvOnly: boolean, type: ConfigVariableType, options?: any | null, source: ConfigSource } };
|
||||
|
||||
export type UserInfoFragmentFragment = { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string };
|
||||
|
||||
export type UpdateWorkspaceFeatureFlagMutationVariables = Exact<{
|
||||
workspaceId: Scalars['UUID'];
|
||||
featureFlag: Scalars['String'];
|
||||
value: Scalars['Boolean'];
|
||||
}>;
|
||||
|
||||
|
||||
export type UpdateWorkspaceFeatureFlagMutation = { __typename?: 'Mutation', updateWorkspaceFeatureFlag: boolean };
|
||||
|
||||
export type AdminPanelRecentUsersQueryVariables = Exact<{
|
||||
searchTerm?: InputMaybe<Scalars['String']>;
|
||||
}>;
|
||||
|
||||
|
||||
export type AdminPanelRecentUsersQuery = { __typename?: 'Query', adminPanelRecentUsers: Array<{ __typename?: 'AdminPanelRecentUser', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string, workspaceName?: string | null, workspaceId?: string | null }> };
|
||||
|
||||
export type AdminPanelTopWorkspacesQueryVariables = Exact<{
|
||||
searchTerm?: InputMaybe<Scalars['String']>;
|
||||
}>;
|
||||
|
||||
|
||||
export type AdminPanelTopWorkspacesQuery = { __typename?: 'Query', adminPanelTopWorkspaces: Array<{ __typename?: 'AdminPanelTopWorkspace', id: string, name: string, totalUsers: number, subdomain: string }> };
|
||||
|
||||
export type FindOneAdminApplicationRegistrationQueryVariables = Exact<{
|
||||
id: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type FindOneAdminApplicationRegistrationQuery = { __typename?: 'Query', findOneAdminApplicationRegistration: { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, oAuthClientId: string, oAuthRedirectUris: Array<string>, oAuthScopes: Array<string>, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: boolean, ownerWorkspaceId?: string | null, createdAt: string, updatedAt: string } };
|
||||
|
||||
export type GetAdminChatThreadMessagesQueryVariables = Exact<{
|
||||
threadId: Scalars['UUID'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetAdminChatThreadMessagesQuery = { __typename?: 'Query', getAdminChatThreadMessages: { __typename?: 'AdminChatThreadMessages', thread: { __typename?: 'AdminWorkspaceChatThread', id: string, title?: string | null, totalInputTokens: number, totalOutputTokens: number, conversationSize: number, createdAt: string, updatedAt: string }, messages: Array<{ __typename?: 'AdminChatMessage', id: string, role: AgentMessageRole, createdAt: string, parts: Array<{ __typename?: 'AdminChatMessagePart', type: string, textContent?: string | null, toolName?: string | null }> }> } };
|
||||
|
||||
export type GetAdminWorkspaceChatThreadsQueryVariables = Exact<{
|
||||
workspaceId: Scalars['UUID'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetAdminWorkspaceChatThreadsQuery = { __typename?: 'Query', getAdminWorkspaceChatThreads: Array<{ __typename?: 'AdminWorkspaceChatThread', id: string, title?: string | null, totalInputTokens: number, totalOutputTokens: number, conversationSize: number, createdAt: string, updatedAt: string }> };
|
||||
|
||||
export type GetVersionInfoQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type GetVersionInfoQuery = { __typename?: 'Query', versionInfo: { __typename?: 'VersionInfo', currentVersion?: string | null, latestVersion: string } };
|
||||
|
||||
export type UserLookupAdminPanelQueryVariables = Exact<{
|
||||
userIdentifier: Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type UserLookupAdminPanelQuery = { __typename?: 'Query', userLookupAdminPanel: { __typename?: 'UserLookup', user: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string }, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, allowImpersonation: boolean, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
|
||||
|
||||
export type WorkspaceLookupAdminPanelQueryVariables = Exact<{
|
||||
workspaceId: Scalars['UUID'];
|
||||
}>;
|
||||
|
||||
|
||||
export type WorkspaceLookupAdminPanelQuery = { __typename?: 'Query', workspaceLookupAdminPanel: { __typename?: 'UserLookup', user: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string }, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, allowImpersonation: boolean, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
|
||||
|
||||
export type DeleteJobsMutationVariables = Exact<{
|
||||
queueName: Scalars['String'];
|
||||
jobIds: Array<Scalars['String']> | Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type DeleteJobsMutation = { __typename?: 'Mutation', deleteJobs: { __typename?: 'DeleteJobsResponse', deletedCount: number, results: Array<{ __typename?: 'JobOperationResult', jobId: string, success: boolean, error?: string | null }> } };
|
||||
|
||||
export type RetryJobsMutationVariables = Exact<{
|
||||
queueName: Scalars['String'];
|
||||
jobIds: Array<Scalars['String']> | Scalars['String'];
|
||||
}>;
|
||||
|
||||
|
||||
export type RetryJobsMutation = { __typename?: 'Mutation', retryJobs: { __typename?: 'RetryJobsResponse', retriedCount: number, results: Array<{ __typename?: 'JobOperationResult', jobId: string, success: boolean, error?: string | null }> } };
|
||||
|
||||
export type GetIndicatorHealthStatusQueryVariables = Exact<{
|
||||
indicatorId: HealthIndicatorId;
|
||||
}>;
|
||||
|
||||
|
||||
export type GetIndicatorHealthStatusQuery = { __typename?: 'Query', getIndicatorHealthStatus: { __typename?: 'AdminPanelHealthServiceData', id: HealthIndicatorId, label: string, description: string, status: AdminPanelHealthServiceStatus, errorMessage?: string | null, details?: string | null, queues?: Array<{ __typename?: 'AdminPanelWorkerQueueHealth', id: string, queueName: string, status: AdminPanelHealthServiceStatus }> | null } };
|
||||
|
||||
export type GetQueueJobsQueryVariables = Exact<{
|
||||
queueName: Scalars['String'];
|
||||
state: JobState;
|
||||
limit?: InputMaybe<Scalars['Int']>;
|
||||
offset?: InputMaybe<Scalars['Int']>;
|
||||
}>;
|
||||
|
||||
|
||||
export type GetQueueJobsQuery = { __typename?: 'Query', getQueueJobs: { __typename?: 'QueueJobsResponse', count: number, totalCount: number, hasMore: boolean, jobs: Array<{ __typename?: 'QueueJob', id: string, name: string, data?: any | null, state: JobState, timestamp?: number | null, failedReason?: string | null, processedOn?: number | null, finishedOn?: number | null, attemptsMade: number, returnValue?: any | null, logs?: Array<string> | null, stackTrace?: Array<string> | null }>, retentionConfig: { __typename?: 'QueueRetentionConfig', completedMaxAge: number, completedMaxCount: number, failedMaxAge: number, failedMaxCount: number } } };
|
||||
|
||||
export type GetQueueMetricsQueryVariables = Exact<{
|
||||
queueName: Scalars['String'];
|
||||
timeRange?: InputMaybe<QueueMetricsTimeRange>;
|
||||
}>;
|
||||
|
||||
|
||||
export type GetQueueMetricsQuery = { __typename?: 'Query', getQueueMetrics: { __typename?: 'QueueMetricsData', queueName: string, timeRange: QueueMetricsTimeRange, workers: number, details?: { __typename?: 'WorkerQueueMetrics', failed: number, completed: number, waiting: number, active: number, delayed: number, failureRate: number } | null, data: Array<{ __typename?: 'QueueMetricsSeries', id: string, data: Array<{ __typename?: 'QueueMetricsDataPoint', x: number, y: number }> }> } };
|
||||
|
||||
export type GetSystemHealthStatusQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type GetSystemHealthStatusQuery = { __typename?: 'Query', getSystemHealthStatus: { __typename?: 'SystemHealth', services: Array<{ __typename?: 'SystemHealthService', id: HealthIndicatorId, label: string, status: AdminPanelHealthServiceStatus }> } };
|
||||
|
||||
export type ClearMaintenanceModeMutationVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type ClearMaintenanceModeMutation = { __typename?: 'Mutation', clearMaintenanceMode: boolean };
|
||||
|
||||
export type SetMaintenanceModeMutationVariables = Exact<{
|
||||
startAt: Scalars['DateTime'];
|
||||
endAt: Scalars['DateTime'];
|
||||
link?: InputMaybe<Scalars['String']>;
|
||||
}>;
|
||||
|
||||
|
||||
export type SetMaintenanceModeMutation = { __typename?: 'Mutation', setMaintenanceMode: boolean };
|
||||
|
||||
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<string>, oAuthScopes: Array<string>, sourceType: ApplicationRegistrationSourceType, sourcePackage?: string | null, latestAvailableVersion?: string | null, isListed: boolean, isFeatured: 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<UserInfoFragmentFragment, unknown>;
|
||||
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<ApplicationRegistrationFragmentFragment, unknown>;
|
||||
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<AddAiProviderMutation, AddAiProviderMutationVariables>;
|
||||
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<AddModelToProviderMutation, AddModelToProviderMutationVariables>;
|
||||
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<RemoveAiProviderMutation, RemoveAiProviderMutationVariables>;
|
||||
export const RemoveModelFromProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RemoveModelFromProvider"},"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":"modelName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeModelFromProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerName"}}},{"kind":"Argument","name":{"kind":"Name","value":"modelName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelName"}}}]}]}}]} as unknown as DocumentNode<RemoveModelFromProviderMutation, RemoveModelFromProviderMutationVariables>;
|
||||
export const SetAdminAiModelEnabledDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SetAdminAiModelEnabled"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"enabled"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"setAdminAiModelEnabled"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"modelId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}}},{"kind":"Argument","name":{"kind":"Name","value":"enabled"},"value":{"kind":"Variable","name":{"kind":"Name","value":"enabled"}}}]}]}}]} as unknown as DocumentNode<SetAdminAiModelEnabledMutation, SetAdminAiModelEnabledMutationVariables>;
|
||||
export const SetAdminAiModelRecommendedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SetAdminAiModelRecommended"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recommended"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"setAdminAiModelRecommended"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"modelId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}}},{"kind":"Argument","name":{"kind":"Name","value":"recommended"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recommended"}}}]}]}}]} as unknown as DocumentNode<SetAdminAiModelRecommendedMutation, SetAdminAiModelRecommendedMutationVariables>;
|
||||
export const SetAdminAiModelsEnabledDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SetAdminAiModelsEnabled"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modelIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"enabled"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"setAdminAiModelsEnabled"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"modelIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"enabled"},"value":{"kind":"Variable","name":{"kind":"Name","value":"enabled"}}}]}]}}]} as unknown as DocumentNode<SetAdminAiModelsEnabledMutation, SetAdminAiModelsEnabledMutationVariables>;
|
||||
export const SetAdminAiModelsRecommendedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SetAdminAiModelsRecommended"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modelIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recommended"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"setAdminAiModelsRecommended"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"modelIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"recommended"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recommended"}}}]}]}}]} as unknown as DocumentNode<SetAdminAiModelsRecommendedMutation, SetAdminAiModelsRecommendedMutationVariables>;
|
||||
export const SetAdminDefaultAiModelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SetAdminDefaultAiModel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"role"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AiModelRole"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"setAdminDefaultAiModel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"role"},"value":{"kind":"Variable","name":{"kind":"Name","value":"role"}}},{"kind":"Argument","name":{"kind":"Name","value":"modelId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}}}]}]}}]} as unknown as DocumentNode<SetAdminDefaultAiModelMutation, SetAdminDefaultAiModelMutationVariables>;
|
||||
export const GetAdminAiModelsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminAiModels"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminAiModels"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"defaultSmartModelId"}},{"kind":"Field","name":{"kind":"Name","value":"defaultFastModelId"}},{"kind":"Field","name":{"kind":"Name","value":"models"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"modelFamily"}},{"kind":"Field","name":{"kind":"Name","value":"sdkPackage"}},{"kind":"Field","name":{"kind":"Name","value":"isAvailable"}},{"kind":"Field","name":{"kind":"Name","value":"isAdminEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"isDeprecated"}},{"kind":"Field","name":{"kind":"Name","value":"isRecommended"}},{"kind":"Field","name":{"kind":"Name","value":"contextWindowTokens"}},{"kind":"Field","name":{"kind":"Name","value":"maxOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"inputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"outputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"providerName"}},{"kind":"Field","name":{"kind":"Name","value":"providerLabel"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"dataResidency"}}]}}]}}]}}]} as unknown as DocumentNode<GetAdminAiModelsQuery, GetAdminAiModelsQueryVariables>;
|
||||
export const GetAdminAiUsageByWorkspaceDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminAiUsageByWorkspace"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"periodStart"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DateTime"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"periodEnd"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DateTime"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminAiUsageByWorkspace"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"periodStart"},"value":{"kind":"Variable","name":{"kind":"Name","value":"periodStart"}}},{"kind":"Argument","name":{"kind":"Name","value":"periodEnd"},"value":{"kind":"Variable","name":{"kind":"Name","value":"periodEnd"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"creditsUsed"}}]}}]}}]} as unknown as DocumentNode<GetAdminAiUsageByWorkspaceQuery, GetAdminAiUsageByWorkspaceQueryVariables>;
|
||||
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<GetAiProvidersQuery, GetAiProvidersQueryVariables>;
|
||||
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<GetModelsDevProvidersQuery, GetModelsDevProvidersQueryVariables>;
|
||||
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<GetModelsDevSuggestionsQuery, GetModelsDevSuggestionsQueryVariables>;
|
||||
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<FindAllApplicationRegistrationsQuery, FindAllApplicationRegistrationsQueryVariables>;
|
||||
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<CreateDatabaseConfigVariableMutation, CreateDatabaseConfigVariableMutationVariables>;
|
||||
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<DeleteDatabaseConfigVariableMutation, DeleteDatabaseConfigVariableMutationVariables>;
|
||||
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<UpdateDatabaseConfigVariableMutation, UpdateDatabaseConfigVariableMutationVariables>;
|
||||
export const GetConfigVariablesGroupedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetConfigVariablesGrouped"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getConfigVariablesGrouped"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"groups"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isHiddenOnLoad"}},{"kind":"Field","name":{"kind":"Name","value":"variables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"isSensitive"}},{"kind":"Field","name":{"kind":"Name","value":"isEnvOnly"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"source"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetConfigVariablesGroupedQuery, GetConfigVariablesGroupedQueryVariables>;
|
||||
export const GetDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetDatabaseConfigVariable"},"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":"getDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"isSensitive"}},{"kind":"Field","name":{"kind":"Name","value":"isEnvOnly"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"source"}}]}}]}}]} as unknown as DocumentNode<GetDatabaseConfigVariableQuery, GetDatabaseConfigVariableQueryVariables>;
|
||||
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<UpdateWorkspaceFeatureFlagMutation, UpdateWorkspaceFeatureFlagMutationVariables>;
|
||||
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<AdminPanelRecentUsersQuery, AdminPanelRecentUsersQueryVariables>;
|
||||
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<AdminPanelTopWorkspacesQuery, AdminPanelTopWorkspacesQueryVariables>;
|
||||
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<FindOneAdminApplicationRegistrationQuery, FindOneAdminApplicationRegistrationQueryVariables>;
|
||||
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<GetAdminChatThreadMessagesQuery, GetAdminChatThreadMessagesQueryVariables>;
|
||||
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<GetAdminWorkspaceChatThreadsQuery, GetAdminWorkspaceChatThreadsQueryVariables>;
|
||||
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<GetVersionInfoQuery, GetVersionInfoQueryVariables>;
|
||||
export const UserLookupAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"UserLookupAdminPanel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"userLookupAdminPanel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"userIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"UserInfoFragment"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"activationStatus"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"allowImpersonation"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceUrls"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customUrl"}},{"kind":"Field","name":{"kind":"Name","value":"subdomainUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"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":"featureFlags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}},{"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<UserLookupAdminPanelQuery, UserLookupAdminPanelQueryVariables>;
|
||||
export const WorkspaceLookupAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"WorkspaceLookupAdminPanel"},"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":"workspaceLookupAdminPanel"},"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":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"UserInfoFragment"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"allowImpersonation"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"activationStatus"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceUrls"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customUrl"}},{"kind":"Field","name":{"kind":"Name","value":"subdomainUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"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":"featureFlags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}},{"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<WorkspaceLookupAdminPanelQuery, WorkspaceLookupAdminPanelQueryVariables>;
|
||||
export const DeleteJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"jobIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deletedCount"}},{"kind":"Field","name":{"kind":"Name","value":"results"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobId"}},{"kind":"Field","name":{"kind":"Name","value":"success"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode<DeleteJobsMutation, DeleteJobsMutationVariables>;
|
||||
export const RetryJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RetryJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"retryJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"jobIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"retriedCount"}},{"kind":"Field","name":{"kind":"Name","value":"results"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobId"}},{"kind":"Field","name":{"kind":"Name","value":"success"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode<RetryJobsMutation, RetryJobsMutationVariables>;
|
||||
export const GetIndicatorHealthStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetIndicatorHealthStatus"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"indicatorId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"HealthIndicatorId"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getIndicatorHealthStatus"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"indicatorId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"indicatorId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"errorMessage"}},{"kind":"Field","name":{"kind":"Name","value":"details"}},{"kind":"Field","name":{"kind":"Name","value":"queues"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"queueName"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]} as unknown as DocumentNode<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>;
|
||||
export const GetQueueJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetQueueJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"state"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JobState"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"offset"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getQueueJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"state"},"value":{"kind":"Variable","name":{"kind":"Name","value":"state"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"offset"},"value":{"kind":"Variable","name":{"kind":"Name","value":"offset"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobs"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"data"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"timestamp"}},{"kind":"Field","name":{"kind":"Name","value":"failedReason"}},{"kind":"Field","name":{"kind":"Name","value":"processedOn"}},{"kind":"Field","name":{"kind":"Name","value":"finishedOn"}},{"kind":"Field","name":{"kind":"Name","value":"attemptsMade"}},{"kind":"Field","name":{"kind":"Name","value":"returnValue"}},{"kind":"Field","name":{"kind":"Name","value":"logs"}},{"kind":"Field","name":{"kind":"Name","value":"stackTrace"}}]}},{"kind":"Field","name":{"kind":"Name","value":"count"}},{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"hasMore"}},{"kind":"Field","name":{"kind":"Name","value":"retentionConfig"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"completedMaxAge"}},{"kind":"Field","name":{"kind":"Name","value":"completedMaxCount"}},{"kind":"Field","name":{"kind":"Name","value":"failedMaxAge"}},{"kind":"Field","name":{"kind":"Name","value":"failedMaxCount"}}]}}]}}]}}]} as unknown as DocumentNode<GetQueueJobsQuery, GetQueueJobsQueryVariables>;
|
||||
export const GetQueueMetricsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetQueueMetrics"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"timeRange"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"QueueMetricsTimeRange"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getQueueMetrics"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"timeRange"},"value":{"kind":"Variable","name":{"kind":"Name","value":"timeRange"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"queueName"}},{"kind":"Field","name":{"kind":"Name","value":"timeRange"}},{"kind":"Field","name":{"kind":"Name","value":"workers"}},{"kind":"Field","name":{"kind":"Name","value":"details"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"failed"}},{"kind":"Field","name":{"kind":"Name","value":"completed"}},{"kind":"Field","name":{"kind":"Name","value":"waiting"}},{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"delayed"}},{"kind":"Field","name":{"kind":"Name","value":"failureRate"}}]}},{"kind":"Field","name":{"kind":"Name","value":"data"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"data"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetQueueMetricsQuery, GetQueueMetricsQueryVariables>;
|
||||
export const GetSystemHealthStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetSystemHealthStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getSystemHealthStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]} as unknown as DocumentNode<GetSystemHealthStatusQuery, GetSystemHealthStatusQueryVariables>;
|
||||
export const ClearMaintenanceModeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ClearMaintenanceMode"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clearMaintenanceMode"}}]}}]} as unknown as DocumentNode<ClearMaintenanceModeMutation, ClearMaintenanceModeMutationVariables>;
|
||||
export const SetMaintenanceModeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SetMaintenanceMode"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"startAt"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DateTime"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"endAt"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DateTime"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"link"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"setMaintenanceMode"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"startAt"},"value":{"kind":"Variable","name":{"kind":"Name","value":"startAt"}}},{"kind":"Argument","name":{"kind":"Name","value":"endAt"},"value":{"kind":"Variable","name":{"kind":"Name","value":"endAt"}}},{"kind":"Argument","name":{"kind":"Name","value":"link"},"value":{"kind":"Variable","name":{"kind":"Name","value":"link"}}}]}]}}]} as unknown as DocumentNode<SetMaintenanceModeMutation, SetMaintenanceModeMutationVariables>;
|
||||
export const GetMaintenanceModeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetMaintenanceMode"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getMaintenanceMode"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"link"}}]}}]}}]} as unknown as DocumentNode<GetMaintenanceModeQuery, GetMaintenanceModeQueryVariables>;
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -18,6 +18,7 @@ import { MinimalMetadataLoadEffect } from '@/metadata-store/effect-components/Mi
|
|||
import { UserMetadataProviderInitialEffect } from '@/metadata-store/effect-components/UserMetadataProviderInitialEffect';
|
||||
import { ApolloCoreProvider } from '@/object-metadata/components/ApolloCoreProvider';
|
||||
import { PreComputedChipGeneratorsProvider } from '@/object-metadata/components/PreComputedChipGeneratorsProvider';
|
||||
import { ApolloAdminProvider } from '@/settings/admin-panel/apollo/components/ApolloAdminProvider';
|
||||
|
||||
import { CommandRunner } from '@/command-menu-item/engine-command/components/CommandRunner';
|
||||
import { SSEProvider } from '@/sse-db-event/components/SSEProvider';
|
||||
|
|
@ -52,36 +53,38 @@ export const AppRouterProviders = () => {
|
|||
<MinimalMetadataGater>
|
||||
<AuthProvider>
|
||||
<ApolloCoreProvider>
|
||||
<SSEProvider>
|
||||
<PreComputedChipGeneratorsProvider>
|
||||
<UserThemeProviderEffect />
|
||||
<SnackBarProvider>
|
||||
<ErrorMessageEffect />
|
||||
<AgentChatProvider>
|
||||
<DialogComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'dialog-manager' }}
|
||||
>
|
||||
<DialogManager>
|
||||
<StrictMode>
|
||||
<PromiseRejectionEffect />
|
||||
<GotoHotkeysEffectsProvider />
|
||||
<PageTitle title={pageTitle} />
|
||||
<PageFavicon />
|
||||
<Outlet />
|
||||
<GlobalFilePreviewModal />
|
||||
<CommandMenuConfirmationModalManager />
|
||||
<CommandRunner />
|
||||
</StrictMode>
|
||||
</DialogManager>
|
||||
</DialogComponentInstanceContext.Provider>
|
||||
</AgentChatProvider>
|
||||
</SnackBarProvider>
|
||||
<MainContextStoreProvider />
|
||||
<SupportChatEffect />
|
||||
<PageChangeEffect />
|
||||
<SignOutOnOtherTabSignOutEffect />
|
||||
</PreComputedChipGeneratorsProvider>
|
||||
</SSEProvider>
|
||||
<ApolloAdminProvider>
|
||||
<SSEProvider>
|
||||
<PreComputedChipGeneratorsProvider>
|
||||
<UserThemeProviderEffect />
|
||||
<SnackBarProvider>
|
||||
<ErrorMessageEffect />
|
||||
<AgentChatProvider>
|
||||
<DialogComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'dialog-manager' }}
|
||||
>
|
||||
<DialogManager>
|
||||
<StrictMode>
|
||||
<PromiseRejectionEffect />
|
||||
<GotoHotkeysEffectsProvider />
|
||||
<PageTitle title={pageTitle} />
|
||||
<PageFavicon />
|
||||
<Outlet />
|
||||
<GlobalFilePreviewModal />
|
||||
<CommandMenuConfirmationModalManager />
|
||||
<CommandRunner />
|
||||
</StrictMode>
|
||||
</DialogManager>
|
||||
</DialogComponentInstanceContext.Provider>
|
||||
</AgentChatProvider>
|
||||
</SnackBarProvider>
|
||||
<MainContextStoreProvider />
|
||||
<SupportChatEffect />
|
||||
<PageChangeEffect />
|
||||
<SignOutOnOtherTabSignOutEffect />
|
||||
</PreComputedChipGeneratorsProvider>
|
||||
</SSEProvider>
|
||||
</ApolloAdminProvider>
|
||||
</ApolloCoreProvider>
|
||||
</AuthProvider>
|
||||
</MinimalMetadataGater>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
|||
import { billingState } from '@/client-config/states/billingState';
|
||||
import { useClientConfig } from '@/client-config/hooks/useClientConfig';
|
||||
import { SettingsAiModelsTable } from '@/settings/ai/components/SettingsAiModelsTable';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminAiProviderListCard } from '@/settings/admin-panel/ai/components/SettingsAdminAiProviderListCard';
|
||||
import { AI_PROVIDER_SOURCE } from '@/settings/admin-panel/ai/constants/AiProviderSource';
|
||||
import { SET_ADMIN_AI_MODEL_RECOMMENDED } from '@/settings/admin-panel/ai/graphql/mutations/setAdminAiModelRecommended';
|
||||
|
|
@ -42,7 +43,7 @@ import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/Gene
|
|||
import {
|
||||
AiModelRole,
|
||||
type AdminAiModelConfig,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const USAGE_TABLE_GRID_TEMPLATE_COLUMNS = '1fr 120px';
|
||||
|
||||
|
|
@ -53,6 +54,7 @@ type UsageBreakdownItem = {
|
|||
};
|
||||
|
||||
export const SettingsAdminAI = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { enqueueErrorSnackBar } = useSnackBar();
|
||||
const { refetch: refetchClientConfig } = useClientConfig();
|
||||
const { formatUsageValue } = useUsageValueFormatter();
|
||||
|
|
@ -75,18 +77,27 @@ export const SettingsAdminAI = () => {
|
|||
defaultFastModelId?: string | null;
|
||||
models: AdminAiModelConfig[];
|
||||
};
|
||||
}>(GET_ADMIN_AI_MODELS);
|
||||
}>(GET_ADMIN_AI_MODELS, { client: apolloAdminClient });
|
||||
|
||||
const [setModelRecommended] = useMutation(SET_ADMIN_AI_MODEL_RECOMMENDED);
|
||||
const [setModelsRecommended] = useMutation(SET_ADMIN_AI_MODELS_RECOMMENDED);
|
||||
const [setDefaultModel] = useMutation(SET_ADMIN_DEFAULT_AI_MODEL);
|
||||
const [setModelRecommended] = useMutation(SET_ADMIN_AI_MODEL_RECOMMENDED, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
const [setModelsRecommended] = useMutation(SET_ADMIN_AI_MODELS_RECOMMENDED, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
const [setDefaultModel] = useMutation(SET_ADMIN_DEFAULT_AI_MODEL, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const { data: providersData, loading: isLoadingProviders } =
|
||||
useQuery<GetAiProvidersResult>(GET_AI_PROVIDERS);
|
||||
useQuery<GetAiProvidersResult>(GET_AI_PROVIDERS, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const { data: usageData, previousData: previousUsageData } = useQuery<{
|
||||
getAdminAiUsageByWorkspace: UsageBreakdownItem[];
|
||||
}>(GET_ADMIN_AI_USAGE_BY_WORKSPACE, {
|
||||
client: apolloAdminClient,
|
||||
variables: {
|
||||
periodStart: usageDates.periodStart,
|
||||
periodEnd: usageDates.periodEnd,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import {
|
|||
type IconComponent,
|
||||
} from 'twenty-ui/display';
|
||||
|
||||
import { ModelFamily } from '~/generated-metadata/graphql';
|
||||
import { ModelFamily } from '~/generated-admin/graphql';
|
||||
|
||||
export type ModelIconConfigKey = ModelFamily | 'FALLBACK';
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
import { useApolloFactory } from '@/apollo/hooks/useApolloFactory';
|
||||
import { ApolloAdminClientContext } from '@/settings/admin-panel/apollo/contexts/ApolloAdminClientContext';
|
||||
import { REACT_APP_SERVER_BASE_URL } from '~/config';
|
||||
|
||||
export const ApolloAdminProvider = ({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) => {
|
||||
const apolloAdminClient = useApolloFactory({
|
||||
uri: `${REACT_APP_SERVER_BASE_URL}/admin-panel`,
|
||||
});
|
||||
|
||||
return (
|
||||
<ApolloAdminClientContext.Provider value={apolloAdminClient}>
|
||||
{children}
|
||||
</ApolloAdminClientContext.Provider>
|
||||
);
|
||||
};
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
import { type ApolloClient } from '@apollo/client';
|
||||
import { createContext } from 'react';
|
||||
|
||||
export const ApolloAdminClientContext = createContext<ApolloClient | null>(
|
||||
null,
|
||||
);
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
import { useApolloClient } from '@apollo/client/react';
|
||||
import { useContext } from 'react';
|
||||
|
||||
import { ApolloAdminClientContext } from '@/settings/admin-panel/apollo/contexts/ApolloAdminClientContext';
|
||||
|
||||
export const useApolloAdminClient = () => {
|
||||
const apolloAdminClient = useContext(ApolloAdminClientContext);
|
||||
const apolloClient = useApolloClient();
|
||||
|
||||
if (process.env.NODE_ENV === 'test') {
|
||||
return apolloClient;
|
||||
}
|
||||
|
||||
if (!apolloAdminClient) {
|
||||
throw new Error('ApolloAdminClient not found');
|
||||
}
|
||||
|
||||
return apolloAdminClient;
|
||||
};
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { Table } from '@/ui/layout/table/components/Table';
|
||||
import { TableBody } from '@/ui/layout/table/components/TableBody';
|
||||
import { TableCell } from '@/ui/layout/table/components/TableCell';
|
||||
|
|
@ -21,7 +22,7 @@ import {
|
|||
type ApplicationRegistrationFragmentFragment,
|
||||
ApplicationRegistrationSourceType,
|
||||
FindAllApplicationRegistrationsDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const StyledTableContainer = styled.div`
|
||||
border-bottom: 1px solid ${themeCssVariables.border.color.light};
|
||||
|
|
@ -32,10 +33,13 @@ const TABLE_GRID = '1fr 100px 100px 40px';
|
|||
const TABLE_GRID_MOBILE = '3fr 3fr 1fr 40px';
|
||||
|
||||
export const SettingsAdminApps = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const [searchQuery, setSearchQuery] = useState('');
|
||||
const { theme } = useContext(ThemeContext);
|
||||
|
||||
const { data } = useQuery(FindAllApplicationRegistrationsDocument);
|
||||
const { data } = useQuery(FindAllApplicationRegistrationsDocument, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const registrations: ApplicationRegistrationFragmentFragment[] =
|
||||
data?.findAllApplicationRegistrations ?? [];
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import { themeCssVariables } from 'twenty-ui/theme-constants';
|
|||
import {
|
||||
AgentMessageRole,
|
||||
type GetAdminChatThreadMessagesQuery,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
type ChatMessage = NonNullable<
|
||||
GetAdminChatThreadMessagesQuery['getAdminChatThreadMessages']
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { canManageFeatureFlagsState } from '@/client-config/states/canManageFeatureFlagsState';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminVersionContainer } from '@/settings/admin-panel/components/SettingsAdminVersionContainer';
|
||||
import { ADMIN_PANEL_RECENT_USERS } from '@/settings/admin-panel/graphql/queries/adminPanelRecentUsers';
|
||||
import { ADMIN_PANEL_TOP_WORKSPACES } from '@/settings/admin-panel/graphql/queries/adminPanelTopWorkspaces';
|
||||
|
|
@ -29,6 +30,7 @@ const StyledEmptyState = styled.div`
|
|||
`;
|
||||
|
||||
export const SettingsAdminGeneral = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const [userSearchTerm, setUserSearchTerm] = useState('');
|
||||
const [debouncedUserSearchTerm] = useDebounce(userSearchTerm, 300);
|
||||
|
||||
|
|
@ -51,6 +53,7 @@ export const SettingsAdminGeneral = () => {
|
|||
workspaceId?: string | null;
|
||||
}[];
|
||||
}>(ADMIN_PANEL_RECENT_USERS, {
|
||||
client: apolloAdminClient,
|
||||
variables: { searchTerm: debouncedUserSearchTerm },
|
||||
skip: !canImpersonate,
|
||||
});
|
||||
|
|
@ -63,6 +66,7 @@ export const SettingsAdminGeneral = () => {
|
|||
subdomain: string;
|
||||
}[];
|
||||
}>(ADMIN_PANEL_TOP_WORKSPACES, {
|
||||
client: apolloAdminClient,
|
||||
variables: { searchTerm: debouncedWorkspaceSearchTerm },
|
||||
skip: !canImpersonate,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,12 +1,16 @@
|
|||
import { SettingsTableCard } from '@/settings/components/SettingsTableCard';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminVersionDisplay } from '@/settings/admin-panel/components/SettingsAdminVersionDisplay';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { IconCircleDot, IconStatusChange } from 'twenty-ui/display';
|
||||
import { useQuery } from '@apollo/client/react';
|
||||
import { GetVersionInfoDocument } from '~/generated-metadata/graphql';
|
||||
import { GetVersionInfoDocument } from '~/generated-admin/graphql';
|
||||
|
||||
export const SettingsAdminVersionContainer = () => {
|
||||
const { data, loading } = useQuery(GetVersionInfoDocument);
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { data, loading } = useQuery(GetVersionInfoDocument, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
const { currentVersion, latestVersion } = data?.versionInfo ?? {};
|
||||
|
||||
const versionItems = [
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import { CustomError } from 'twenty-shared/utils';
|
|||
import { CodeEditor } from 'twenty-ui/input';
|
||||
import { MenuItemMultiSelect } from 'twenty-ui/navigation';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
import { ConfigVariableType } from '~/generated-metadata/graphql';
|
||||
import { ConfigVariableType } from '~/generated-admin/graphql';
|
||||
import { type ConfigVariableOptions } from '@/settings/admin-panel/config-variables/types/ConfigVariableOptions';
|
||||
|
||||
const StyledJsonEditorContainer = styled.div`
|
||||
|
|
|
|||
|
|
@ -4,10 +4,7 @@ import { useLingui } from '@lingui/react/macro';
|
|||
import { isConfigVariablesInDbEnabledState } from '@/client-config/states/isConfigVariablesInDbEnabledState';
|
||||
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
import {
|
||||
ConfigSource,
|
||||
type ConfigVariable,
|
||||
} from '~/generated-metadata/graphql';
|
||||
import { ConfigSource, type ConfigVariable } from '~/generated-admin/graphql';
|
||||
|
||||
const StyledHelpText = styled.div<{ color?: string }>`
|
||||
color: ${themeCssVariables.font.color.tertiary};
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { TextInput } from '@/ui/input/components/TextInput';
|
|||
import { styled } from '@linaria/react';
|
||||
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||
import { type ConfigVariableValue } from 'twenty-shared/types';
|
||||
import { type ConfigVariable } from '~/generated-metadata/graphql';
|
||||
import { type ConfigVariable } from '~/generated-admin/graphql';
|
||||
import { ConfigVariableDatabaseInput } from './ConfigVariableDatabaseInput';
|
||||
|
||||
type ConfigVariableValueInputProps = {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { SettingsAdminTabSkeletonLoader } from '@/settings/admin-panel/components/SettingsAdminTabSkeletonLoader';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { ConfigVariableFilterContainer } from '@/settings/admin-panel/config-variables/components/ConfigVariableFilterContainer';
|
||||
import { ConfigVariableFilterDropdown } from '@/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown';
|
||||
import { SettingsAdminConfigVariablesTable } from '@/settings/admin-panel/config-variables/components/SettingsAdminConfigVariablesTable';
|
||||
|
|
@ -15,7 +16,7 @@ import { useQuery } from '@apollo/client/react';
|
|||
import {
|
||||
ConfigSource,
|
||||
GetConfigVariablesGroupedDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
import { normalizeSearchText } from '~/utils/normalizeSearchText';
|
||||
import { ConfigVariableSearchInput } from './ConfigVariableSearchInput';
|
||||
import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState';
|
||||
|
|
@ -31,9 +32,11 @@ const StyledTableContainer = styled.div`
|
|||
`;
|
||||
|
||||
export const SettingsAdminConfigVariables = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { data: configVariables, loading: configVariablesLoading } = useQuery(
|
||||
GetConfigVariablesGroupedDocument,
|
||||
{
|
||||
client: apolloAdminClient,
|
||||
fetchPolicy: 'network-only',
|
||||
},
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { type ConfigVariable } from '~/generated-metadata/graphql';
|
||||
import { type ConfigVariable } from '~/generated-admin/graphql';
|
||||
import { ConfigVariableTable } from '@/settings/config-variables/components/ConfigVariableTable';
|
||||
import { getSettingsPath } from 'twenty-shared/utils';
|
||||
import { SettingsPath } from 'twenty-shared/types';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { useClientConfig } from '@/client-config/hooks/useClientConfig';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { GET_DATABASE_CONFIG_VARIABLE } from '@/settings/admin-panel/config-variables/graphql/queries/getDatabaseConfigVariable';
|
||||
import { type ConfigVariableValue } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
|
@ -7,19 +8,23 @@ import {
|
|||
CreateDatabaseConfigVariableDocument,
|
||||
DeleteDatabaseConfigVariableDocument,
|
||||
UpdateDatabaseConfigVariableDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
export const useConfigVariableActions = (variableName: string) => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { refetch: refetchClientConfig } = useClientConfig();
|
||||
|
||||
const [updateDatabaseConfigVariable] = useMutation(
|
||||
UpdateDatabaseConfigVariableDocument,
|
||||
{ client: apolloAdminClient },
|
||||
);
|
||||
const [createDatabaseConfigVariable] = useMutation(
|
||||
CreateDatabaseConfigVariableDocument,
|
||||
{ client: apolloAdminClient },
|
||||
);
|
||||
const [deleteDatabaseConfigVariable] = useMutation(
|
||||
DeleteDatabaseConfigVariableDocument,
|
||||
{ client: apolloAdminClient },
|
||||
);
|
||||
|
||||
const handleUpdateVariable = async (
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { useContext } from 'react';
|
|||
import { CustomError } from 'twenty-shared/utils';
|
||||
import { ThemeContext } from 'twenty-ui/theme-constants';
|
||||
|
||||
import { ConfigSource } from '~/generated-metadata/graphql';
|
||||
import { ConfigSource } from '~/generated-admin/graphql';
|
||||
|
||||
export const useSourceContent = (source: ConfigSource) => {
|
||||
const { theme } = useContext(ThemeContext);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { styled } from '@linaria/react';
|
|||
import { t } from '@lingui/core/macro';
|
||||
import { useContext } from 'react';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-metadata/graphql';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-admin/graphql';
|
||||
|
||||
const StyledErrorMessage = styled.div`
|
||||
color: ${themeCssVariables.color.red};
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminTabSkeletonLoader } from '@/settings/admin-panel/components/SettingsAdminTabSkeletonLoader';
|
||||
import { SettingsAdminHealthStatusListCard } from '@/settings/admin-panel/health-status/components/SettingsAdminHealthStatusListCard';
|
||||
import { SettingsAdminMaintenanceModeFetchEffect } from '@/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceModeFetchEffect';
|
||||
|
|
@ -6,12 +7,14 @@ import { t } from '@lingui/core/macro';
|
|||
import { H2Title } from 'twenty-ui/display';
|
||||
import { Section } from 'twenty-ui/layout';
|
||||
import { useQuery } from '@apollo/client/react';
|
||||
import { GetSystemHealthStatusDocument } from '~/generated-metadata/graphql';
|
||||
import { GetSystemHealthStatusDocument } from '~/generated-admin/graphql';
|
||||
|
||||
export const SettingsAdminHealthStatus = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { data, loading: loadingHealthStatus } = useQuery(
|
||||
GetSystemHealthStatusDocument,
|
||||
{
|
||||
client: apolloAdminClient,
|
||||
fetchPolicy: 'network-only',
|
||||
},
|
||||
);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import { ThemeContext } from 'twenty-ui/theme-constants';
|
|||
import {
|
||||
HealthIndicatorId,
|
||||
type SystemHealthService,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
import { SettingsAdminHealthStatusRightContainer } from './SettingsAdminHealthStatusRightContainer';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { t } from '@lingui/core/macro';
|
||||
import { Status } from 'twenty-ui/display';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-metadata/graphql';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-admin/graphql';
|
||||
|
||||
export const SettingsAdminHealthStatusRightContainer = ({
|
||||
status,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { SettingsAdminConnectedAccountHealthStatus } from '@/settings/admin-pane
|
|||
import { SettingsAdminJsonDataIndicatorHealthStatus } from '@/settings/admin-panel/health-status/components/SettingsAdminJsonDataIndicatorHealthStatus';
|
||||
import { SettingsAdminWorkerHealthStatus } from '@/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import { HealthIndicatorId } from '~/generated-metadata/graphql';
|
||||
import { HealthIndicatorId } from '~/generated-admin/graphql';
|
||||
|
||||
export const SettingsAdminIndicatorHealthStatusContent = () => {
|
||||
const { indicatorId } = useParams();
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { t } from '@lingui/core/macro';
|
|||
import { JsonTree } from 'twenty-ui/json-visualizer';
|
||||
import { AnimatedExpandableContainer } from 'twenty-ui/layout';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
import { type QueueJob } from '~/generated-metadata/graphql';
|
||||
import { type QueueJob } from '~/generated-admin/graphql';
|
||||
import { useCopyToClipboard } from '~/hooks/useCopyToClipboard';
|
||||
|
||||
type SettingsAdminJobDetailsExpandableProps = {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { styled } from '@linaria/react';
|
||||
import { Tag, type TagColor } from 'twenty-ui/components';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
import { JobState } from '~/generated-metadata/graphql';
|
||||
import { JobState } from '~/generated-admin/graphql';
|
||||
|
||||
type SettingsAdminJobStateBadgeProps = {
|
||||
state: JobState;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { useContext } from 'react';
|
|||
import { JsonTree } from 'twenty-ui/json-visualizer';
|
||||
import { Section } from 'twenty-ui/layout';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-metadata/graphql';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-admin/graphql';
|
||||
import { useCopyToClipboard } from '~/hooks/useCopyToClipboard';
|
||||
|
||||
const StyledDetailsContainer = styled.div`
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { t } from '@lingui/core/macro';
|
|||
import { IconDotsVertical, IconRefresh, IconTrash } from 'twenty-ui/display';
|
||||
import { LightIconButton } from 'twenty-ui/input';
|
||||
import { MenuItem } from 'twenty-ui/navigation';
|
||||
import { JobState } from '~/generated-metadata/graphql';
|
||||
import { JobState } from '~/generated-admin/graphql';
|
||||
|
||||
type SettingsAdminQueueJobRowDropdownMenuProps = {
|
||||
jobId: string;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { SettingsAdminJobDetailsExpandable } from '@/settings/admin-panel/health
|
|||
import { SettingsAdminJobStateBadge } from '@/settings/admin-panel/health-status/components/SettingsAdminJobStateBadge';
|
||||
import { SettingsAdminQueueJobRowDropdownMenu } from '@/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu';
|
||||
import { SettingsAdminRetryJobsConfirmationModal } from '@/settings/admin-panel/health-status/components/SettingsAdminRetryJobsConfirmationModal';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { useDeleteJobs } from '@/settings/admin-panel/health-status/hooks/useDeleteJobs';
|
||||
import { useRetryJobs } from '@/settings/admin-panel/health-status/hooks/useRetryJobs';
|
||||
import { Select } from '@/ui/input/components/Select';
|
||||
|
|
@ -24,7 +25,7 @@ import {
|
|||
JobState,
|
||||
type QueueJob,
|
||||
GetQueueJobsDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
import { beautifyPastDateRelativeToNow } from '~/utils/date-utils';
|
||||
|
||||
type SettingsAdminQueueJobsTableProps = {
|
||||
|
|
@ -74,6 +75,7 @@ export const SettingsAdminQueueJobsTable = ({
|
|||
queueName,
|
||||
onRetentionConfigLoaded,
|
||||
}: SettingsAdminQueueJobsTableProps) => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const [page, setPage] = useState(0);
|
||||
const [stateFilter, setStateFilter] = useState<JobState>(JobState.COMPLETED);
|
||||
const [expandedJobId, setExpandedJobId] = useState<string | null>(null);
|
||||
|
|
@ -93,6 +95,7 @@ export const SettingsAdminQueueJobsTable = ({
|
|||
const offset = page * LIMIT;
|
||||
|
||||
const { data, loading, refetch } = useQuery(GetQueueJobsDocument, {
|
||||
client: apolloAdminClient,
|
||||
variables: {
|
||||
queueName,
|
||||
state: stateFilter,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { SettingsAdminWorkerQueueMetricsSection } from '@/settings/admin-panel/h
|
|||
import { styled } from '@linaria/react';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { useContext } from 'react';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-metadata/graphql';
|
||||
import { AdminPanelHealthServiceStatus } from '~/generated-admin/graphql';
|
||||
import { SettingsAdminIndicatorHealthContext } from '@/settings/admin-panel/health-status/contexts/SettingsAdminIndicatorHealthContext';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { SettingsTableCard } from '@/settings/components/SettingsTableCard';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminWorkerMetricsTooltip } from '@/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsTooltip';
|
||||
import { useSnackBarOnQueryError } from '@/apollo/hooks/useSnackBarOnQueryError';
|
||||
import { styled } from '@linaria/react';
|
||||
|
|
@ -11,7 +12,7 @@ import { useQuery } from '@apollo/client/react';
|
|||
import {
|
||||
QueueMetricsTimeRange,
|
||||
GetQueueMetricsDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const StyledGraphContainer = styled.div`
|
||||
background-color: ${themeCssVariables.background.secondary};
|
||||
|
|
@ -48,9 +49,11 @@ export const SettingsAdminWorkerMetricsGraph = ({
|
|||
queueName,
|
||||
timeRange,
|
||||
}: SettingsAdminWorkerMetricsGraphProps) => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { theme } = useContext(ThemeContext);
|
||||
|
||||
const { loading, data, error } = useQuery(GetQueueMetricsDocument, {
|
||||
client: apolloAdminClient,
|
||||
variables: {
|
||||
queueName,
|
||||
timeRange,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { themeCssVariables } from 'twenty-ui/theme-constants';
|
|||
import {
|
||||
type AdminPanelWorkerQueueHealth,
|
||||
QueueMetricsTimeRange,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const SettingsAdminWorkerMetricsGraph = lazy(() =>
|
||||
import('./SettingsAdminWorkerMetricsGraph').then((module) => ({
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { msg } from '@lingui/core/macro';
|
||||
import { QueueMetricsTimeRange } from '~/generated-metadata/graphql';
|
||||
import { QueueMetricsTimeRange } from '~/generated-admin/graphql';
|
||||
|
||||
export const WORKER_QUEUE_METRICS_SELECT_OPTIONS = [
|
||||
{ value: QueueMetricsTimeRange.SevenDays, label: msg`This week` },
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import {
|
|||
AdminPanelHealthServiceStatus,
|
||||
HealthIndicatorId,
|
||||
type AdminPanelHealthServiceData,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
type SettingsAdminIndicatorHealthContextType = {
|
||||
indicatorHealth: AdminPanelHealthServiceData;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||
import { CombinedGraphQLErrors } from '@apollo/client/errors';
|
||||
import { plural, t } from '@lingui/core/macro';
|
||||
import { useState } from 'react';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { useMutation } from '@apollo/client/react';
|
||||
import { DeleteJobsDocument } from '~/generated-metadata/graphql';
|
||||
import { DeleteJobsDocument } from '~/generated-admin/graphql';
|
||||
import { getErrorMessageFromApolloError } from '~/utils/get-error-message-from-apollo-error.util';
|
||||
|
||||
export const useDeleteJobs = (queueName: string, onSuccess?: () => void) => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { enqueueSuccessSnackBar, enqueueErrorSnackBar } = useSnackBar();
|
||||
const [isDeleting, setIsDeleting] = useState(false);
|
||||
const [deleteJobsMutation] = useMutation(DeleteJobsDocument);
|
||||
const [deleteJobsMutation] = useMutation(DeleteJobsDocument, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const deleteJobs = async (jobIds: string[]) => {
|
||||
setIsDeleting(true);
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||
import { CombinedGraphQLErrors } from '@apollo/client/errors';
|
||||
import { plural, t } from '@lingui/core/macro';
|
||||
import { useState } from 'react';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { useMutation } from '@apollo/client/react';
|
||||
import { RetryJobsDocument } from '~/generated-metadata/graphql';
|
||||
import { RetryJobsDocument } from '~/generated-admin/graphql';
|
||||
import { getErrorMessageFromApolloError } from '~/utils/get-error-message-from-apollo-error.util';
|
||||
|
||||
export const useRetryJobs = (queueName: string, onSuccess?: () => void) => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { enqueueSuccessSnackBar, enqueueErrorSnackBar } = useSnackBar();
|
||||
const [isRetrying, setIsRetrying] = useState(false);
|
||||
const [retryJobsMutation] = useMutation(RetryJobsDocument);
|
||||
const [retryJobsMutation] = useMutation(RetryJobsDocument, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const retryJobs = async (jobIds: string[]) => {
|
||||
setIsRetrying(true);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import { Card, CardContent, Section } from 'twenty-ui/layout';
|
|||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
|
||||
import { maintenanceModeState } from '@/client-config/states/maintenanceModeState';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { CLEAR_MAINTENANCE_MODE } from '@/settings/admin-panel/health-status/maintenance-mode/graphql/mutations/clearMaintenanceMode';
|
||||
import { SET_MAINTENANCE_MODE } from '@/settings/admin-panel/health-status/maintenance-mode/graphql/mutations/setMaintenanceMode';
|
||||
import { adminPanelMaintenanceModeState } from '@/settings/admin-panel/health-status/maintenance-mode/states/adminPanelMaintenanceModeState';
|
||||
|
|
@ -34,6 +35,7 @@ const StyledStatusRow = styled.div`
|
|||
`;
|
||||
|
||||
export const SettingsAdminMaintenanceMode = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const [adminPanelMaintenanceMode, setAdminPanelMaintenanceMode] =
|
||||
useAtomState(adminPanelMaintenanceModeState);
|
||||
|
||||
|
|
@ -43,8 +45,12 @@ export const SettingsAdminMaintenanceMode = () => {
|
|||
const { userTimezone } = useUserTimezone();
|
||||
const { enqueueErrorSnackBar } = useSnackBar();
|
||||
|
||||
const [setMaintenanceModeMutation] = useMutation(SET_MAINTENANCE_MODE);
|
||||
const [clearMaintenanceModeMutation] = useMutation(CLEAR_MAINTENANCE_MODE);
|
||||
const [setMaintenanceModeMutation] = useMutation(SET_MAINTENANCE_MODE, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
const [clearMaintenanceModeMutation] = useMutation(CLEAR_MAINTENANCE_MODE, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const isEnabled = isDefined(adminPanelMaintenanceMode);
|
||||
|
||||
|
|
|
|||
|
|
@ -2,13 +2,16 @@ import { useQuery } from '@apollo/client/react';
|
|||
import { useEffect } from 'react';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { GET_MAINTENANCE_MODE } from '@/settings/admin-panel/health-status/maintenance-mode/graphql/queries/getMaintenanceMode';
|
||||
import { adminPanelMaintenanceModeState } from '@/settings/admin-panel/health-status/maintenance-mode/states/adminPanelMaintenanceModeState';
|
||||
import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState';
|
||||
import { type GetMaintenanceModeQuery } from '~/generated-metadata/graphql';
|
||||
import { type GetMaintenanceModeQuery } from '~/generated-admin/graphql';
|
||||
|
||||
export const SettingsAdminMaintenanceModeFetchEffect = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { data } = useQuery<GetMaintenanceModeQuery>(GET_MAINTENANCE_MODE, {
|
||||
client: apolloAdminClient,
|
||||
fetchPolicy: 'network-only',
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
||||
import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { type FeatureFlagKey } from '~/generated-metadata/graphql';
|
||||
import { type FeatureFlagKey } from '~/generated-admin/graphql';
|
||||
|
||||
export const useFeatureFlagState = () => {
|
||||
const [currentWorkspace, setCurrentWorkspace] = useAtomState(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { type WorkspaceLookupAdminPanelQuery } from '~/generated-metadata/graphql';
|
||||
import { type WorkspaceLookupAdminPanelQuery } from '~/generated-admin/graphql';
|
||||
|
||||
export type WorkspaceInfo =
|
||||
WorkspaceLookupAdminPanelQuery['workspaceLookupAdminPanel']['workspaces'][number];
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import { Section } from 'twenty-ui/layout';
|
|||
import { RoundedLink, UndecoratedLink } from 'twenty-ui/navigation';
|
||||
|
||||
import { useClientConfig } from '@/client-config/hooks/useClientConfig';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsSkeletonLoader } from '@/settings/components/SettingsSkeletonLoader';
|
||||
import { SettingsAiModelsTable } from '@/settings/ai/components/SettingsAiModelsTable';
|
||||
import { REMOVE_AI_PROVIDER } from '@/settings/admin-panel/ai/graphql/mutations/removeAiProvider';
|
||||
|
|
@ -43,13 +44,14 @@ import { SubMenuTopBarContainer } from '@/ui/layout/page/components/SubMenuTopBa
|
|||
import {
|
||||
type AdminAiModelConfig,
|
||||
SetAdminAiModelEnabledDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const REMOVE_PROVIDER_MODAL_ID = 'settings-ai-provider-remove';
|
||||
const REMOVE_MODEL_MODAL_ID = 'settings-ai-model-remove';
|
||||
|
||||
export const SettingsAdminAiProviderDetail = () => {
|
||||
const { providerName } = useParams<{ providerName: string }>();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const navigate = useNavigate();
|
||||
const { enqueueErrorSnackBar, enqueueSuccessSnackBar } = useSnackBar();
|
||||
const { refetch: refetchClientConfig } = useClientConfig();
|
||||
|
|
@ -62,7 +64,9 @@ export const SettingsAdminAiProviderDetail = () => {
|
|||
} | null>(null);
|
||||
|
||||
const { data: providersData, loading: isLoadingProviders } =
|
||||
useQuery<GetAiProvidersResult>(GET_AI_PROVIDERS);
|
||||
useQuery<GetAiProvidersResult>(GET_AI_PROVIDERS, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const {
|
||||
data: modelsData,
|
||||
|
|
@ -72,12 +76,20 @@ export const SettingsAdminAiProviderDetail = () => {
|
|||
getAdminAiModels: {
|
||||
models: AdminAiModelConfig[];
|
||||
};
|
||||
}>(GET_ADMIN_AI_MODELS);
|
||||
}>(GET_ADMIN_AI_MODELS, { client: apolloAdminClient });
|
||||
|
||||
const [setModelEnabled] = useMutation(SetAdminAiModelEnabledDocument);
|
||||
const [setModelsEnabled] = useMutation(SET_ADMIN_AI_MODELS_ENABLED);
|
||||
const [removeAiProvider] = useMutation(REMOVE_AI_PROVIDER);
|
||||
const [removeModelFromProvider] = useMutation(REMOVE_MODEL_FROM_PROVIDER);
|
||||
const [setModelEnabled] = useMutation(SetAdminAiModelEnabledDocument, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
const [setModelsEnabled] = useMutation(SET_ADMIN_AI_MODELS_ENABLED, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
const [removeAiProvider] = useMutation(REMOVE_AI_PROVIDER, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
const [removeModelFromProvider] = useMutation(REMOVE_MODEL_FROM_PROVIDER, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const handleRemoveProvider = async () => {
|
||||
if (!providerName) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
import { useParams } from 'react-router-dom';
|
||||
import { useQuery } from '@apollo/client/react';
|
||||
import { FindOneAdminApplicationRegistrationDocument } from '~/generated-metadata/graphql';
|
||||
import { FindOneAdminApplicationRegistrationDocument } from '~/generated-admin/graphql';
|
||||
import { getSettingsPath, isDefined } from 'twenty-shared/utils';
|
||||
import { SettingsPath } from 'twenty-shared/types';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { SubMenuTopBarContainer } from '@/ui/layout/page/components/SubMenuTopBarContainer';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { APPLICATION_REGISTRATION_ADMIN_PATH } from '@/settings/admin-panel/apps/constants/ApplicationRegistrationAdminPath';
|
||||
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
|
||||
import {
|
||||
|
|
@ -26,6 +27,7 @@ const REGISTRATION_DETAIL_TAB_LIST_ID =
|
|||
|
||||
export const SettingsAdminApplicationRegistrationDetail = () => {
|
||||
const { t } = useLingui();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
|
||||
const activeTabId = useAtomComponentStateValue(
|
||||
activeTabIdComponentState,
|
||||
|
|
@ -39,6 +41,7 @@ export const SettingsAdminApplicationRegistrationDetail = () => {
|
|||
const { data, loading } = useQuery(
|
||||
FindOneAdminApplicationRegistrationDocument,
|
||||
{
|
||||
client: apolloAdminClient,
|
||||
variables: { id: applicationRegistrationId },
|
||||
skip: !applicationRegistrationId,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { useState } from 'react';
|
|||
import { useParams } from 'react-router-dom';
|
||||
|
||||
import { isConfigVariablesInDbEnabledState } from '@/client-config/states/isConfigVariablesInDbEnabledState';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { ConfigVariableHelpText } from '@/settings/admin-panel/config-variables/components/ConfigVariableHelpText';
|
||||
import { ConfigVariableValueInput } from '@/settings/admin-panel/config-variables/components/ConfigVariableValueInput';
|
||||
import { useConfigVariableActions } from '@/settings/admin-panel/config-variables/hooks/useConfigVariableActions';
|
||||
|
|
@ -16,7 +17,7 @@ import { useQuery } from '@apollo/client/react';
|
|||
import {
|
||||
ConfigSource,
|
||||
GetDatabaseConfigVariableDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const hasMeaningfulValue = (value: ConfigVariableValue): boolean => {
|
||||
if (value === null || value === undefined) {
|
||||
|
|
@ -33,6 +34,7 @@ const hasMeaningfulValue = (value: ConfigVariableValue): boolean => {
|
|||
|
||||
export const SettingsAdminConfigVariableDetails = () => {
|
||||
const { variableName } = useParams();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
|
||||
const { t } = useLingui();
|
||||
|
||||
|
|
@ -45,6 +47,7 @@ export const SettingsAdminConfigVariableDetails = () => {
|
|||
const { data: configVariableData, loading } = useQuery(
|
||||
GetDatabaseConfigVariableDocument,
|
||||
{
|
||||
client: apolloAdminClient,
|
||||
variables: { key: variableName ?? '' },
|
||||
fetchPolicy: 'network-only',
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminHealthStatusRightContainer } from '@/settings/admin-panel/health-status/components/SettingsAdminHealthStatusRightContainer';
|
||||
import { SettingsAdminIndicatorHealthStatusContent } from '@/settings/admin-panel/health-status/components/SettingsAdminIndicatorHealthStatusContent';
|
||||
import { SettingsAdminIndicatorHealthContext } from '@/settings/admin-panel/health-status/contexts/SettingsAdminIndicatorHealthContext';
|
||||
|
|
@ -17,7 +18,7 @@ import {
|
|||
AdminPanelHealthServiceStatus,
|
||||
HealthIndicatorId,
|
||||
GetIndicatorHealthStatusDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const StyledTitleContainer = styled.div`
|
||||
align-items: center;
|
||||
|
|
@ -29,9 +30,11 @@ const StyledTitleContainer = styled.div`
|
|||
export const SettingsAdminIndicatorHealthStatus = () => {
|
||||
const { t } = useLingui();
|
||||
const { indicatorId } = useParams();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const { data, loading: loadingIndicatorHealthStatus } = useQuery(
|
||||
GetIndicatorHealthStatusDocument,
|
||||
{
|
||||
client: apolloAdminClient,
|
||||
variables: {
|
||||
indicatorId: indicatorId as HealthIndicatorId,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import { H2Title, IconPlus } from 'twenty-ui/display';
|
|||
import { Section } from 'twenty-ui/layout';
|
||||
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
||||
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { ADD_MODEL_TO_PROVIDER } from '@/settings/admin-panel/ai/graphql/mutations/addModelToProvider';
|
||||
import { GET_ADMIN_AI_MODELS } from '@/settings/admin-panel/ai/graphql/queries/getAdminAiModels';
|
||||
import { GET_AI_PROVIDERS } from '@/settings/admin-panel/ai/graphql/queries/getAiProviders';
|
||||
|
|
@ -79,14 +80,19 @@ type FormValues = {
|
|||
|
||||
export const SettingsAdminNewAiModel = () => {
|
||||
const { providerName } = useParams<{ providerName: string }>();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const navigate = useNavigate();
|
||||
const { t } = useLingui();
|
||||
const { enqueueSuccessSnackBar, enqueueErrorSnackBar } = useSnackBar();
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
const [isCustomModelId, setIsCustomModelId] = useState(false);
|
||||
|
||||
const { data: providersData } =
|
||||
useQuery<GetAiProvidersResult>(GET_AI_PROVIDERS);
|
||||
const { data: providersData } = useQuery<GetAiProvidersResult>(
|
||||
GET_AI_PROVIDERS,
|
||||
{
|
||||
client: apolloAdminClient,
|
||||
},
|
||||
);
|
||||
|
||||
const provider =
|
||||
providerName && providersData?.getAiProviders
|
||||
|
|
@ -98,6 +104,7 @@ export const SettingsAdminNewAiModel = () => {
|
|||
const { data: suggestionsData } = useQuery<{
|
||||
getModelsDevSuggestions: ModelSuggestion[];
|
||||
}>(GET_MODELS_DEV_SUGGESTIONS, {
|
||||
client: apolloAdminClient,
|
||||
variables: { providerType: modelsDevName ?? '' },
|
||||
skip: !modelsDevName,
|
||||
});
|
||||
|
|
@ -122,7 +129,9 @@ export const SettingsAdminNewAiModel = () => {
|
|||
label: `${suggestion.name} (${suggestion.modelId})`,
|
||||
}));
|
||||
|
||||
const [addModelToProvider] = useMutation(ADD_MODEL_TO_PROVIDER);
|
||||
const [addModelToProvider] = useMutation(ADD_MODEL_TO_PROVIDER, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const form = useForm<FormValues>({
|
||||
mode: 'onSubmit',
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import { Section } from 'twenty-ui/layout';
|
|||
|
||||
import { AI_ADMIN_PATH } from '@/settings/admin-panel/ai/constants/AiAdminPath';
|
||||
import { DATA_RESIDENCY_OPTIONS } from '@/settings/admin-panel/ai/constants/DataResidencyOptions';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { ADD_AI_PROVIDER } from '@/settings/admin-panel/ai/graphql/mutations/addAiProvider';
|
||||
import { GET_ADMIN_AI_MODELS } from '@/settings/admin-panel/ai/graphql/queries/getAdminAiModels';
|
||||
import { GET_AI_PROVIDERS } from '@/settings/admin-panel/ai/graphql/queries/getAiProviders';
|
||||
|
|
@ -40,6 +41,7 @@ type FormValues = {
|
|||
};
|
||||
|
||||
export const SettingsAdminNewAiProvider = () => {
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
const navigate = useNavigate();
|
||||
const { t } = useLingui();
|
||||
const { enqueueSuccessSnackBar, enqueueErrorSnackBar } = useSnackBar();
|
||||
|
|
@ -49,11 +51,13 @@ export const SettingsAdminNewAiProvider = () => {
|
|||
);
|
||||
const [isCustomMode, setIsCustomMode] = useState(false);
|
||||
|
||||
const [addAiProvider] = useMutation(ADD_AI_PROVIDER);
|
||||
const [addAiProvider] = useMutation(ADD_AI_PROVIDER, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const { data: modelsDevData } = useQuery<{
|
||||
getModelsDevProviders: ModelsDevProvider[];
|
||||
}>(GET_MODELS_DEV_PROVIDERS);
|
||||
}>(GET_MODELS_DEV_PROVIDERS, { client: apolloAdminClient });
|
||||
|
||||
const modelsDevProviders = useMemo(
|
||||
() => modelsDevData?.getModelsDevProviders ?? [],
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import { SettingsPath } from 'twenty-shared/types';
|
|||
import { getImageAbsoluteURI, getSettingsPath } from 'twenty-shared/utils';
|
||||
|
||||
import { currentUserState } from '@/auth/states/currentUserState';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminWorkspaceContent } from '@/settings/admin-panel/components/SettingsAdminWorkspaceContent';
|
||||
import { SETTINGS_ADMIN_USER_LOOKUP_WORKSPACE_TABS_ID } from '@/settings/admin-panel/constants/SettingsAdminUserLookupWorkspaceTabsId';
|
||||
import { useHandleImpersonate } from '@/settings/admin-panel/hooks/useHandleImpersonate';
|
||||
|
|
@ -35,7 +36,7 @@ import { REACT_APP_SERVER_BASE_URL } from '~/config';
|
|||
import {
|
||||
type UserLookupAdminPanelQuery,
|
||||
UserLookupAdminPanelDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const StyledButtonContainer = styled.div`
|
||||
margin-top: ${themeCssVariables.spacing[3]};
|
||||
|
|
@ -43,6 +44,7 @@ const StyledButtonContainer = styled.div`
|
|||
|
||||
export const SettingsAdminUserDetail = () => {
|
||||
const { userId } = useParams<{ userId: string }>();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
|
||||
const activeTabId = useAtomComponentStateValue(
|
||||
activeTabIdComponentState,
|
||||
|
|
@ -51,6 +53,7 @@ export const SettingsAdminUserDetail = () => {
|
|||
|
||||
const { data: userLookupData, loading: isLoading } =
|
||||
useQuery<UserLookupAdminPanelQuery>(UserLookupAdminPanelDocument, {
|
||||
client: apolloAdminClient,
|
||||
variables: { userIdentifier: userId },
|
||||
skip: !userId,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import { SettingsPath } from 'twenty-shared/types';
|
|||
import { getSettingsPath } from 'twenty-shared/utils';
|
||||
|
||||
import { AI_ADMIN_PATH } from '@/settings/admin-panel/ai/constants/AiAdminPath';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminChatThreadMessageList } from '@/settings/admin-panel/components/SettingsAdminChatThreadMessageList';
|
||||
import { GET_ADMIN_CHAT_THREAD_MESSAGES } from '@/settings/admin-panel/graphql/queries/getAdminChatThreadMessages';
|
||||
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
|
||||
|
|
@ -13,16 +14,18 @@ import { SettingsSkeletonLoader } from '@/settings/components/SettingsSkeletonLo
|
|||
import { SubMenuTopBarContainer } from '@/ui/layout/page/components/SubMenuTopBarContainer';
|
||||
import { H2Title } from 'twenty-ui/display';
|
||||
import { Section } from 'twenty-ui/layout';
|
||||
import { type GetAdminChatThreadMessagesQuery } from '~/generated-metadata/graphql';
|
||||
import { type GetAdminChatThreadMessagesQuery } from '~/generated-admin/graphql';
|
||||
|
||||
export const SettingsAdminWorkspaceChatThread = () => {
|
||||
const { workspaceId, threadId } = useParams<{
|
||||
workspaceId: string;
|
||||
threadId: string;
|
||||
}>();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
|
||||
const { data, loading: isLoading } =
|
||||
useQuery<GetAdminChatThreadMessagesQuery>(GET_ADMIN_CHAT_THREAD_MESSAGES, {
|
||||
client: apolloAdminClient,
|
||||
variables: { threadId },
|
||||
skip: !threadId,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import { getSettingsPath, isDefined } from 'twenty-shared/utils';
|
|||
import { currentUserState } from '@/auth/states/currentUserState';
|
||||
import { canManageFeatureFlagsState } from '@/client-config/states/canManageFeatureFlagsState';
|
||||
import { AI_ADMIN_PATH } from '@/settings/admin-panel/ai/constants/AiAdminPath';
|
||||
import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient';
|
||||
import { SettingsAdminWorkspaceContent } from '@/settings/admin-panel/components/SettingsAdminWorkspaceContent';
|
||||
import { GET_ADMIN_WORKSPACE_CHAT_THREADS } from '@/settings/admin-panel/graphql/queries/getAdminWorkspaceChatThreads';
|
||||
import { WORKSPACE_LOOKUP_ADMIN_PANEL } from '@/settings/admin-panel/graphql/queries/workspaceLookupAdminPanel';
|
||||
|
|
@ -42,7 +43,7 @@ import {
|
|||
type GetAdminWorkspaceChatThreadsQuery,
|
||||
type WorkspaceLookupAdminPanelQuery,
|
||||
UpdateWorkspaceFeatureFlagDocument,
|
||||
} from '~/generated-metadata/graphql';
|
||||
} from '~/generated-admin/graphql';
|
||||
|
||||
const WORKSPACE_DETAIL_TABS_ID = 'settings-admin-workspace-detail-tabs';
|
||||
|
||||
|
|
@ -55,6 +56,7 @@ const WORKSPACE_DETAIL_TAB_IDS = {
|
|||
|
||||
export const SettingsAdminWorkspaceDetail = () => {
|
||||
const { workspaceId } = useParams<{ workspaceId: string }>();
|
||||
const apolloAdminClient = useApolloAdminClient();
|
||||
|
||||
const activeTabId = useAtomComponentStateValue(
|
||||
activeTabIdComponentState,
|
||||
|
|
@ -66,10 +68,13 @@ export const SettingsAdminWorkspaceDetail = () => {
|
|||
const { enqueueErrorSnackBar } = useSnackBar();
|
||||
const { updateFeatureFlagState } = useFeatureFlagState();
|
||||
const { handleImpersonate, impersonatingUserId } = useHandleImpersonate();
|
||||
const [updateFeatureFlag] = useMutation(UpdateWorkspaceFeatureFlagDocument);
|
||||
const [updateFeatureFlag] = useMutation(UpdateWorkspaceFeatureFlagDocument, {
|
||||
client: apolloAdminClient,
|
||||
});
|
||||
|
||||
const { data: workspaceData, loading: isLoadingWorkspace } =
|
||||
useQuery<WorkspaceLookupAdminPanelQuery>(WORKSPACE_LOOKUP_ADMIN_PANEL, {
|
||||
client: apolloAdminClient,
|
||||
variables: { workspaceId },
|
||||
skip: !workspaceId,
|
||||
});
|
||||
|
|
@ -82,6 +87,7 @@ export const SettingsAdminWorkspaceDetail = () => {
|
|||
useQuery<GetAdminWorkspaceChatThreadsQuery>(
|
||||
GET_ADMIN_WORKSPACE_CHAT_THREADS,
|
||||
{
|
||||
client: apolloAdminClient,
|
||||
variables: { workspaceId },
|
||||
skip:
|
||||
!workspaceId ||
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ export default defineConfig(({ mode }) => {
|
|||
include: [path.resolve(__dirname, 'src') + '/**/*.{ts,tsx}'],
|
||||
exclude: [
|
||||
'**/generated-metadata/**',
|
||||
'**/generated-admin/**',
|
||||
'**/testing/mock-data/**',
|
||||
'**/testing/jest/**',
|
||||
'**/testing/hooks/**',
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ index 72bab49dcc2b411408c75adf64c3f250cdeaa195..068dc04966e3f7ac7c7093f9ed8f29f2
|
|||
+ /**
|
||||
+ * When set, only resolvers decorated with a matching scope will be included in this schema.
|
||||
+ */
|
||||
+ resolverSchemaScope?: 'core' | 'metadata';
|
||||
+ resolverSchemaScope?: 'core' | 'metadata' | 'admin';
|
||||
}
|
||||
export interface GqlOptionsFactory<T extends Record<string, any> = GqlModuleOptions> {
|
||||
createGqlOptions(): Promise<Omit<T, 'driver'>> | Omit<T, 'driver'>;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import { join } from 'path';
|
|||
import { YogaDriver, type YogaDriverConfig } from '@graphql-yoga/nestjs';
|
||||
import { SentryModule } from '@sentry/nestjs/setup';
|
||||
|
||||
import { AdminPanelGraphQLApiModule } from 'src/engine/api/graphql/admin-panel-graphql-api.module';
|
||||
import { CoreGraphQLApiModule } from 'src/engine/api/graphql/core-graphql-api.module';
|
||||
import { GraphQLConfigModule } from 'src/engine/api/graphql/graphql-config/graphql-config.module';
|
||||
import { GraphQLConfigService } from 'src/engine/api/graphql/graphql-config/graphql-config.service';
|
||||
|
|
@ -65,6 +66,7 @@ const MIGRATED_REST_METHODS = [
|
|||
// Api modules
|
||||
CoreGraphQLApiModule,
|
||||
MetadataGraphQLApiModule,
|
||||
AdminPanelGraphQLApiModule,
|
||||
RestApiModule,
|
||||
McpModule,
|
||||
MiddlewareModule,
|
||||
|
|
@ -124,6 +126,13 @@ export class AppModule {
|
|||
)
|
||||
.forRoutes({ path: 'metadata', method: RequestMethod.ALL });
|
||||
|
||||
consumer
|
||||
.apply(
|
||||
GraphQLHydrateRequestFromTokenMiddleware,
|
||||
WorkspaceAuthContextMiddleware,
|
||||
)
|
||||
.forRoutes({ path: 'admin-panel', method: RequestMethod.ALL });
|
||||
|
||||
consumer
|
||||
.apply(McpMethodGuardMiddleware)
|
||||
.forRoutes({ path: 'mcp', method: RequestMethod.ALL });
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
import { Module } from '@nestjs/common';
|
||||
import { GraphQLModule } from '@nestjs/graphql';
|
||||
|
||||
import { YogaDriver, type YogaDriverConfig } from '@graphql-yoga/nestjs';
|
||||
|
||||
import { adminPanelModuleFactory } from 'src/engine/api/graphql/admin-panel.module-factory';
|
||||
import { GraphQLConfigModule } from 'src/engine/api/graphql/graphql-config/graphql-config.module';
|
||||
import { AdminPanelModule } from 'src/engine/core-modules/admin-panel/admin-panel.module';
|
||||
import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
|
||||
import { I18nModule } from 'src/engine/core-modules/i18n/i18n.module';
|
||||
import { I18nService } from 'src/engine/core-modules/i18n/i18n.service';
|
||||
import { MetricsModule } from 'src/engine/core-modules/metrics/metrics.module';
|
||||
import { MetricsService } from 'src/engine/core-modules/metrics/metrics.service';
|
||||
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
|
||||
import { DataloaderModule } from 'src/engine/dataloaders/dataloader.module';
|
||||
import { DataloaderService } from 'src/engine/dataloaders/dataloader.service';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
GraphQLModule.forRootAsync<YogaDriverConfig>({
|
||||
driver: YogaDriver,
|
||||
useFactory: adminPanelModuleFactory,
|
||||
imports: [
|
||||
GraphQLConfigModule,
|
||||
DataloaderModule,
|
||||
MetricsModule,
|
||||
I18nModule,
|
||||
],
|
||||
inject: [
|
||||
TwentyConfigService,
|
||||
ExceptionHandlerService,
|
||||
DataloaderService,
|
||||
MetricsService,
|
||||
I18nService,
|
||||
],
|
||||
}),
|
||||
AdminPanelModule,
|
||||
],
|
||||
})
|
||||
export class AdminPanelGraphQLApiModule {}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
import { type YogaDriverConfig } from '@graphql-yoga/nestjs';
|
||||
import * as Sentry from '@sentry/node';
|
||||
import GraphQLJSON from 'graphql-type-json';
|
||||
|
||||
import { NodeEnvironment } from 'src/engine/core-modules/twenty-config/interfaces/node-environment.interface';
|
||||
|
||||
import { AdminPanelGraphQLApiModule } from 'src/engine/api/graphql/admin-panel-graphql-api.module';
|
||||
import { type ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
|
||||
import { useSentryTracing } from 'src/engine/core-modules/exception-handler/hooks/use-sentry-tracing';
|
||||
import { useDisableIntrospectionAndSuggestionsForUnauthenticatedUsers } from 'src/engine/core-modules/graphql/hooks/use-disable-introspection-and-suggestions-for-unauthenticated-users.hook';
|
||||
import { useGraphQLErrorHandlerHook } from 'src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook';
|
||||
import { useValidateGraphqlQueryComplexity } from 'src/engine/core-modules/graphql/hooks/use-validate-graphql-query-complexity.hook';
|
||||
import { type I18nService } from 'src/engine/core-modules/i18n/i18n.service';
|
||||
import { type MetricsService } from 'src/engine/core-modules/metrics/metrics.service';
|
||||
import { type TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
|
||||
import { type DataloaderService } from 'src/engine/dataloaders/dataloader.service';
|
||||
import { renderApolloPlayground } from 'src/engine/utils/render-apollo-playground.util';
|
||||
|
||||
export const adminPanelModuleFactory = async (
|
||||
twentyConfigService: TwentyConfigService,
|
||||
exceptionHandlerService: ExceptionHandlerService,
|
||||
dataloaderService: DataloaderService,
|
||||
metricsService: MetricsService,
|
||||
i18nService: I18nService,
|
||||
): Promise<YogaDriverConfig> => {
|
||||
const config: YogaDriverConfig = {
|
||||
autoSchemaFile: true,
|
||||
include: [AdminPanelGraphQLApiModule],
|
||||
resolverSchemaScope: 'admin',
|
||||
buildSchemaOptions: {},
|
||||
renderGraphiQL() {
|
||||
return renderApolloPlayground({ path: 'admin-panel' });
|
||||
},
|
||||
resolvers: { JSON: GraphQLJSON },
|
||||
plugins: [
|
||||
...(Sentry.isInitialized() ? [useSentryTracing()] : []),
|
||||
useGraphQLErrorHandlerHook({
|
||||
metricsService: metricsService,
|
||||
exceptionHandlerService,
|
||||
i18nService,
|
||||
twentyConfigService,
|
||||
}),
|
||||
useDisableIntrospectionAndSuggestionsForUnauthenticatedUsers(
|
||||
twentyConfigService.get('NODE_ENV') === NodeEnvironment.PRODUCTION,
|
||||
),
|
||||
useValidateGraphqlQueryComplexity({
|
||||
maximumAllowedFields: twentyConfigService.get('GRAPHQL_MAX_FIELDS'),
|
||||
maximumAllowedRootResolvers: 10,
|
||||
maximumAllowedNestedFields: 10,
|
||||
checkDuplicateRootResolvers: true,
|
||||
}),
|
||||
],
|
||||
path: '/admin-panel',
|
||||
context: () => ({
|
||||
loaders: dataloaderService.createLoaders(),
|
||||
}),
|
||||
};
|
||||
|
||||
if (twentyConfigService.get('NODE_ENV') === NodeEnvironment.DEVELOPMENT) {
|
||||
config.renderGraphiQL = () => {
|
||||
return renderApolloPlayground({ path: 'admin-panel' });
|
||||
};
|
||||
}
|
||||
|
||||
return config;
|
||||
};
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import { applyDecorators, SetMetadata } from '@nestjs/common';
|
||||
import { Resolver } from '@nestjs/graphql';
|
||||
|
||||
import { RESOLVER_SCHEMA_SCOPE_KEY } from 'src/engine/api/graphql/graphql-config/constants/resolver-schema-scope-key.constant';
|
||||
import { type ResolverSchemaScope } from 'src/engine/api/graphql/graphql-config/types/resolver-schema-scope.type';
|
||||
|
||||
export const AdminResolver = (typeFunc?: () => unknown) =>
|
||||
applyDecorators(
|
||||
typeFunc ? Resolver(typeFunc) : Resolver(),
|
||||
SetMetadata(RESOLVER_SCHEMA_SCOPE_KEY, 'admin' as ResolverSchemaScope),
|
||||
);
|
||||
|
|
@ -1 +1 @@
|
|||
export type ResolverSchemaScope = 'core' | 'metadata';
|
||||
export type ResolverSchemaScope = 'core' | 'metadata' | 'admin';
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ import { type AiProviderModelConfig } from 'src/engine/metadata-modules/ai/ai-mo
|
|||
import { extractConfigVariableName } from 'src/engine/metadata-modules/ai/ai-models/utils/extract-config-variable-name.util';
|
||||
import { loadDefaultAiProviders } from 'src/engine/metadata-modules/ai/ai-models/utils/load-default-ai-providers.util';
|
||||
import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||
import { MetadataResolver } from 'src/engine/api/graphql/graphql-config/decorators/metadata-resolver.decorator';
|
||||
import { AdminResolver } from 'src/engine/api/graphql/graphql-config/decorators/admin-resolver.decorator';
|
||||
import { AdminPanelGuard } from 'src/engine/guards/admin-panel-guard';
|
||||
import { ServerLevelImpersonateGuard } from 'src/engine/guards/server-level-impersonate.guard';
|
||||
import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.guard';
|
||||
|
|
@ -74,7 +74,7 @@ import { SetMaintenanceModeInput } from './dtos/set-maintenance-mode.input';
|
|||
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
|
||||
|
||||
@UsePipes(ResolverValidationPipe)
|
||||
@MetadataResolver()
|
||||
@AdminResolver()
|
||||
@UseFilters(
|
||||
AuthGraphqlApiExceptionFilter,
|
||||
PreventNestToAutoLogGraphqlErrorsFilter,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { makeMetadataAPIRequest } from 'test/integration/metadata/suites/utils/make-metadata-api-request.util';
|
||||
import { makeAdminPanelAPIRequest } from 'test/integration/twenty-config/utils/make-admin-panel-api-request.util';
|
||||
import { updateFeatureFlagFactory } from 'test/integration/graphql/utils/update-feature-flag-factory.util';
|
||||
import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util';
|
||||
import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util';
|
||||
|
|
@ -23,7 +23,7 @@ export const updateFeatureFlag = async ({
|
|||
value,
|
||||
);
|
||||
|
||||
const response = await makeMetadataAPIRequest(enablePermissionsQuery);
|
||||
const response = await makeAdminPanelAPIRequest(enablePermissionsQuery);
|
||||
|
||||
if (expectToFail === false) {
|
||||
warnIfErrorButNotExpectedToFail({
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export const makeAdminPanelAPIRequest = (
|
|||
const client = request(`http://localhost:${APP_PORT}`);
|
||||
|
||||
return client
|
||||
.post('/metadata')
|
||||
.post('/admin-panel')
|
||||
.set('Authorization', `Bearer ${APPLE_JANE_ADMIN_ACCESS_TOKEN}`)
|
||||
.send({
|
||||
query: print(graphqlOperation.query),
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ export const makeUnauthenticatedAPIRequest = async (query: string) => {
|
|||
const client = request(`http://localhost:${APP_PORT}`);
|
||||
|
||||
return client
|
||||
.post('/metadata')
|
||||
.post('/admin-panel')
|
||||
.send({
|
||||
query,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -12866,7 +12866,7 @@ __metadata:
|
|||
|
||||
"@nestjs/graphql@patch:@nestjs/graphql@12.1.1#./patches/@nestjs+graphql+12.1.1.patch::locator=twenty-server%40workspace%3Apackages%2Ftwenty-server":
|
||||
version: 12.1.1
|
||||
resolution: "@nestjs/graphql@patch:@nestjs/graphql@npm%3A12.1.1#./patches/@nestjs+graphql+12.1.1.patch::version=12.1.1&hash=c6f13a&locator=twenty-server%40workspace%3Apackages%2Ftwenty-server"
|
||||
resolution: "@nestjs/graphql@patch:@nestjs/graphql@npm%3A12.1.1#./patches/@nestjs+graphql+12.1.1.patch::version=12.1.1&hash=eaf96d&locator=twenty-server%40workspace%3Apackages%2Ftwenty-server"
|
||||
dependencies:
|
||||
"@graphql-tools/merge": "npm:9.0.1"
|
||||
"@graphql-tools/schema": "npm:10.0.2"
|
||||
|
|
@ -12900,7 +12900,7 @@ __metadata:
|
|||
optional: true
|
||||
ts-morph:
|
||||
optional: true
|
||||
checksum: 10c0/807541d7f7d8a3261787c04bd9456ad1a3198645b967ad68371406f5038ec5e5f3dd26912a914cce25465b828e7d1b037558c79461adb93efbc78382424444c2
|
||||
checksum: 10c0/0d13646d982c3d18de9a5d4989edf2e8d1ef15974d41795f8b220819a8b27c4d4cb9c71bd73524978fe12457e1e955b86f47efa3a4621a571b139d1918702125
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue