diff --git a/packages/twenty-apps/fixtures/rich-app/application.config.ts b/packages/twenty-apps/fixtures/rich-app/application.config.ts index 04a0bd71d2..0b5e80b307 100644 --- a/packages/twenty-apps/fixtures/rich-app/application.config.ts +++ b/packages/twenty-apps/fixtures/rich-app/application.config.ts @@ -1,4 +1,4 @@ -import { defineApplication } from 'twenty-sdk/define'; +import { defineApplication, FieldType } from 'twenty-sdk/define'; import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from './src/roles/default-function.role'; export default defineApplication({ @@ -12,6 +12,83 @@ export default defineApplication({ value: 'Alex Karp', isSecret: false, }, + + GREETING_TEXT: { + universalIdentifier: 'ad19edc5-4cc5-4003-a996-aef53a5c8de0', + description: 'Free text shown on the postcard', + type: FieldType.TEXT, + value: 'Hello from Rich App', + }, + ENABLE_TRACKING: { + universalIdentifier: 'b9c58bb2-58c3-4c6c-9877-498ea6c03fde', + description: 'Toggle delivery tracking', + type: FieldType.BOOLEAN, + value: true, + }, + MAX_POSTCARDS: { + universalIdentifier: '5f4497e4-9030-4085-85eb-2c48b8d53713', + description: 'Maximum postcards per batch', + type: FieldType.NUMBER, + value: 10, + }, + DISCOUNT_RATE: { + universalIdentifier: 'd32f810f-06bb-4d29-b0ee-1dc4228f7cb8', + description: 'Bulk discount rate applied at checkout', + type: FieldType.NUMERIC, + value: 2.5, + }, + CAMPAIGN_START_DATE: { + universalIdentifier: '5aa4fcec-e8a3-4bc1-9c7f-762e1f9dfb40', + description: 'Date the campaign starts', + type: FieldType.DATE, + value: '2026-01-01', + }, + CAMPAIGN_START_AT: { + universalIdentifier: '273d0cfd-d6ab-4148-8816-c4a5d4b1d600', + description: 'Exact moment the campaign starts', + type: FieldType.DATE_TIME, + value: '2026-01-01T09:00:00.000Z', + }, + DEFAULT_REGION: { + universalIdentifier: '76c5c321-b6b6-46eb-b4fc-f9f04bb04227', + description: 'Default shipping region', + type: FieldType.SELECT, + options: [ + { label: 'Europe', value: 'eu' }, + { label: 'United States', value: 'us' }, + { label: 'Asia-Pacific', value: 'apac' }, + ], + value: 'eu', + }, + ENABLED_CHANNELS: { + universalIdentifier: '706a2b08-8284-4715-8bc0-922a99cb26af', + description: 'Channels the app is allowed to use', + type: FieldType.MULTI_SELECT, + options: [ + { label: 'Email', value: 'email' }, + { label: 'SMS', value: 'sms' }, + { label: 'Postcard', value: 'postcard' }, + ], + value: ['email', 'postcard'], + }, + ALLOWED_TAGS: { + universalIdentifier: 'c1c8a4c9-9130-4ab8-8dce-18d2b50879ed', + description: 'Free-form tags applied to recipients', + type: FieldType.ARRAY, + value: ['vip', 'returning'], + }, + PROVIDER_CONFIG: { + universalIdentifier: '183d5285-c70c-4f29-96e0-c68659fbe5ae', + description: 'Raw JSON configuration for the printing provider', + type: FieldType.RAW_JSON, + value: { retries: 3, timeoutMs: 5000 }, + }, + WELCOME_MESSAGE: { + universalIdentifier: '25a66ff5-8458-498e-9e7e-33ea458a6f3c', + description: 'Rich text welcome message', + type: FieldType.RICH_TEXT, + value: { blocknote: null, markdown: 'Welcome to **Rich App**!' }, + }, }, serverVariables: { POSTCARD_API_KEY: { @@ -24,6 +101,75 @@ export default defineApplication({ isSecret: false, isRequired: false, }, + POSTCARD_DELIVERY_SPEED: { + description: 'Delivery speed requested from the provider', + type: FieldType.SELECT, + options: [ + { label: 'Standard', value: 'standard' }, + { label: 'Express', value: 'express' }, + ], + isSecret: false, + isRequired: true, + }, + POSTCARD_DAILY_LIMIT: { + description: 'Maximum postcards the provider will accept per day', + type: FieldType.NUMBER, + isSecret: false, + isRequired: false, + }, + POSTCARD_UNIT_PRICE: { + description: 'Price charged by the provider per postcard', + type: FieldType.NUMERIC, + isSecret: false, + isRequired: false, + }, + POSTCARD_SANDBOX_MODE: { + description: 'Send postcards through the provider sandbox instead of production', + type: FieldType.BOOLEAN, + isSecret: false, + isRequired: false, + }, + POSTCARD_CONTRACT_START_DATE: { + description: 'Date the provider contract starts', + type: FieldType.DATE, + isSecret: false, + isRequired: false, + }, + POSTCARD_CONTRACT_RENEWAL_AT: { + description: 'Exact moment the provider contract renews', + type: FieldType.DATE_TIME, + isSecret: false, + isRequired: false, + }, + POSTCARD_ENABLED_REGIONS: { + description: 'Regions the provider is allowed to ship to', + type: FieldType.MULTI_SELECT, + options: [ + { label: 'Europe', value: 'eu' }, + { label: 'United States', value: 'us' }, + { label: 'Asia-Pacific', value: 'apac' }, + ], + isSecret: false, + isRequired: false, + }, + POSTCARD_WEBHOOK_EVENTS: { + description: 'Provider webhook events the app subscribes to', + type: FieldType.ARRAY, + isSecret: false, + isRequired: false, + }, + POSTCARD_PROVIDER_CONFIG: { + description: 'Raw JSON configuration for the printing provider', + type: FieldType.RAW_JSON, + isSecret: false, + isRequired: false, + }, + POSTCARD_INVOICE_NOTE: { + description: 'Rich text note appended to provider invoices', + type: FieldType.RICH_TEXT, + isSecret: false, + isRequired: false, + }, }, defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, }); diff --git a/packages/twenty-client-sdk/src/metadata/generated/schema.graphql b/packages/twenty-client-sdk/src/metadata/generated/schema.graphql index 4eca6cc521..c1f34cc30a 100644 --- a/packages/twenty-client-sdk/src/metadata/generated/schema.graphql +++ b/packages/twenty-client-sdk/src/metadata/generated/schema.graphql @@ -29,11 +29,18 @@ type ApplicationRegistrationVariable { description: String! isSecret: Boolean! isRequired: Boolean! + type: String! + options: JSON isFilled: Boolean! createdAt: DateTime! updatedAt: DateTime! } +""" +The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). +""" +scalar JSON + type ApplicationRegistration { id: UUID! universalIdentifier: String! @@ -114,11 +121,6 @@ enum RowLevelPermissionPredicateOperand { VECTOR_SEARCH } -""" -The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). -""" -scalar JSON - type ObjectPermission { objectMetadataId: UUID! canReadObjectRecords: Boolean @@ -297,6 +299,8 @@ type ApplicationVariable { value: String! description: String! isSecret: Boolean! + type: String! + options: JSON } type AuthToken { @@ -1763,6 +1767,8 @@ type ApplicationRegistrationVariableDTO { isSecret: Boolean! isRequired: Boolean! isFilled: Boolean! + type: String! + options: JSON createdAt: DateTime! updatedAt: DateTime! } diff --git a/packages/twenty-client-sdk/src/metadata/generated/schema.ts b/packages/twenty-client-sdk/src/metadata/generated/schema.ts index e136cc88ca..8a3a9b8a3a 100644 --- a/packages/twenty-client-sdk/src/metadata/generated/schema.ts +++ b/packages/twenty-client-sdk/src/metadata/generated/schema.ts @@ -4,8 +4,8 @@ export type Scalars = { UUID: string, DateTime: string, Boolean: boolean, - Float: number, JSON: Record, + Float: number, Int: number, ConnectionCursor: any, JSONObject: any, @@ -32,6 +32,8 @@ export interface ApplicationRegistrationVariable { description: Scalars['String'] isSecret: Scalars['Boolean'] isRequired: Scalars['Boolean'] + type: Scalars['String'] + options?: Scalars['JSON'] isFilled: Scalars['Boolean'] createdAt: Scalars['DateTime'] updatedAt: Scalars['DateTime'] @@ -246,6 +248,8 @@ export interface ApplicationVariable { value: Scalars['String'] description: Scalars['String'] isSecret: Scalars['Boolean'] + type: Scalars['String'] + options?: Scalars['JSON'] __typename: 'ApplicationVariable' } @@ -1399,6 +1403,8 @@ export interface ApplicationRegistrationVariableDTO { isSecret: Scalars['Boolean'] isRequired: Scalars['Boolean'] isFilled: Scalars['Boolean'] + type: Scalars['String'] + options?: Scalars['JSON'] createdAt: Scalars['DateTime'] updatedAt: Scalars['DateTime'] __typename: 'ApplicationRegistrationVariableDTO' @@ -3029,6 +3035,8 @@ export interface ApplicationRegistrationVariableGenqlSelection{ description?: boolean | number isSecret?: boolean | number isRequired?: boolean | number + type?: boolean | number + options?: boolean | number isFilled?: boolean | number createdAt?: boolean | number updatedAt?: boolean | number @@ -3238,6 +3246,8 @@ export interface ApplicationVariableGenqlSelection{ value?: boolean | number description?: boolean | number isSecret?: boolean | number + type?: boolean | number + options?: boolean | number __typename?: boolean | number __scalar?: boolean | number } @@ -4441,6 +4451,8 @@ export interface ApplicationRegistrationVariableDTOGenqlSelection{ isSecret?: boolean | number isRequired?: boolean | number isFilled?: boolean | number + type?: boolean | number + options?: boolean | number createdAt?: boolean | number updatedAt?: boolean | number __typename?: boolean | number diff --git a/packages/twenty-client-sdk/src/metadata/generated/types.ts b/packages/twenty-client-sdk/src/metadata/generated/types.ts index f3166d27c1..e9410d12a1 100644 --- a/packages/twenty-client-sdk/src/metadata/generated/types.ts +++ b/packages/twenty-client-sdk/src/metadata/generated/types.ts @@ -4,10 +4,10 @@ export default { 3, 4, 6, - 8, - 11, + 7, + 9, 12, - 14, + 13, 15, 18, 21, @@ -154,6 +154,12 @@ export default { "isRequired": [ 6 ], + "type": [ + 1 + ], + "options": [ + 7 + ], "isFilled": [ 6 ], @@ -168,6 +174,7 @@ export default { ] }, "Boolean": {}, + "JSON": {}, "ApplicationRegistration": { "id": [ 3 @@ -191,7 +198,7 @@ export default { 3 ], "sourceType": [ - 8 + 9 ], "sourcePackage": [ 1 @@ -247,10 +254,10 @@ export default { 1 ], "logicalOperator": [ - 12 + 13 ], "positionInRowLevelPermissionPredicateGroup": [ - 11 + 12 ], "roleId": [ 1 @@ -275,7 +282,7 @@ export default { 1 ], "operand": [ - 14 + 15 ], "subFieldName": [ 1 @@ -290,20 +297,19 @@ export default { 1 ], "positionInRowLevelPermissionPredicateGroup": [ - 11 + 12 ], "roleId": [ 1 ], "value": [ - 15 + 7 ], "__typename": [ 1 ] }, "RowLevelPermissionPredicateOperand": {}, - "JSON": {}, "ObjectPermission": { "objectMetadataId": [ 3 @@ -321,13 +327,13 @@ export default { 6 ], "restrictedFields": [ - 15 + 7 ], "rowLevelPermissionPredicates": [ - 13 + 14 ], "rowLevelPermissionPredicateGroups": [ - 10 + 11 ], "__typename": [ 1 @@ -365,7 +371,7 @@ export default { 16 ], "twoFactorAuthenticationMethodSummary": [ - 9 + 10 ], "__typename": [ 1 @@ -454,7 +460,7 @@ export default { 1 ], "responseFormat": [ - 15 + 7 ], "roleId": [ 3 @@ -472,7 +478,7 @@ export default { 4 ], "modelConfiguration": [ - 15 + 7 ], "evaluationInputs": [ 1 @@ -600,10 +606,10 @@ export default { 26 ], "rowLevelPermissionPredicates": [ - 13 + 14 ], "rowLevelPermissionPredicateGroups": [ - 10 + 11 ], "__typename": [ 1 @@ -617,7 +623,7 @@ export default { 1 ], "sourceType": [ - 8 + 9 ], "logoUrl": [ 1 @@ -642,6 +648,12 @@ export default { "isSecret": [ 6 ], + "type": [ + 1 + ], + "options": [ + 7 + ], "__typename": [ 1 ] @@ -712,7 +724,7 @@ export default { 33 ], "applicationVariables": [ - 15 + 7 ], "__typename": [ 1 @@ -744,7 +756,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isPinned": [ 6 @@ -829,7 +841,7 @@ export default { 1 ], "timeoutSeconds": [ - 11 + 12 ], "executionMode": [ 42 @@ -841,19 +853,19 @@ export default { 1 ], "cronTriggerSettings": [ - 15 + 7 ], "databaseEventTriggerSettings": [ - 15 + 7 ], "httpRouteTriggerSettings": [ - 15 + 7 ], "toolTriggerSettings": [ - 15 + 7 ], "workflowActionTriggerSettings": [ - 15 + 7 ], "applicationId": [ 3 @@ -913,13 +925,13 @@ export default { 6 ], "defaultValue": [ - 15 + 7 ], "options": [ - 15 + 7 ], "settings": [ - 15 + 7 ], "objectMetadataId": [ 3 @@ -1300,7 +1312,7 @@ export default { 3 ], "availablePackages": [ - 15 + 7 ], "applicationRegistrationId": [ 3 @@ -1353,10 +1365,10 @@ export default { 6 ], "size": [ - 11 + 12 ], "position": [ - 11 + 12 ], "aggregateOperation": [ 57 @@ -1401,7 +1413,7 @@ export default { 59 ], "positionInViewFilterGroup": [ - 11 + 12 ], "viewId": [ 3 @@ -1434,13 +1446,13 @@ export default { 61 ], "value": [ - 15 + 7 ], "viewFilterGroupId": [ 3 ], "positionInViewFilterGroup": [ - 11 + 12 ], "subFieldName": [ 1 @@ -1479,7 +1491,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "viewId": [ 3 @@ -1541,7 +1553,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isVisible": [ 6 @@ -1594,7 +1606,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isCompact": [ 6 @@ -1712,13 +1724,13 @@ export default { 73 ], "trashRetentionDays": [ - 11 + 12 ], "eventLogRetentionDays": [ - 11 + 12 ], "workspaceMembersCount": [ - 11 + 12 ], "activationStatus": [ 74 @@ -1742,7 +1754,7 @@ export default { 63 ], "metadataVersion": [ - 11 + 12 ], "databaseSchema": [ 1 @@ -1966,16 +1978,16 @@ export default { }, "GridPosition": { "row": [ - 11 + 12 ], "column": [ - 11 + 12 ], "rowSpan": [ - 11 + 12 ], "columnSpan": [ - 11 + 12 ], "__typename": [ 1 @@ -2010,7 +2022,7 @@ export default { 89 ], "conditionalDisplay": [ - 15 + 7 ], "conditionalAvailabilityExpression": [ 1 @@ -2183,7 +2195,7 @@ export default { 1 ], "filter": [ - 15 + 7 ], "timezone": [ 1 @@ -2264,7 +2276,7 @@ export default { 1 ], "filter": [ - 15 + 7 ], "timezone": [ 1 @@ -2334,10 +2346,10 @@ export default { 6 ], "rangeMin": [ - 11 + 12 ], "rangeMax": [ - 11 + 12 ], "description": [ 1 @@ -2346,7 +2358,7 @@ export default { 1 ], "filter": [ - 15 + 7 ], "isStacked": [ 6 @@ -2432,10 +2444,10 @@ export default { 6 ], "rangeMin": [ - 11 + 12 ], "rangeMax": [ - 11 + 12 ], "description": [ 1 @@ -2444,7 +2456,7 @@ export default { 1 ], "filter": [ - 15 + 7 ], "groupMode": [ 101 @@ -2634,7 +2646,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "pageLayoutId": [ 3 @@ -2802,7 +2814,7 @@ export default { 1 ], "size": [ - 11 + 12 ], "createdAt": [ 4 @@ -2819,7 +2831,7 @@ export default { 1 ], "quantity": [ - 11 + 12 ], "__typename": [ 1 @@ -2827,10 +2839,10 @@ export default { }, "BillingSubscriptionSchedulePhase": { "start_date": [ - 11 + 12 ], "end_date": [ - 11 + 12 ], "items": [ 129 @@ -2861,7 +2873,7 @@ export default { 136 ], "unitAmount": [ - 11 + 12 ], "stripePriceId": [ 1 @@ -2870,7 +2882,7 @@ export default { 133 ], "creditAmount": [ - 11 + 12 ], "__typename": [ 1 @@ -2879,13 +2891,13 @@ export default { "SubscriptionInterval": {}, "BillingPriceTier": { "upTo": [ - 11 + 12 ], "flatAmount": [ - 11 + 12 ], "unitAmount": [ - 11 + 12 ], "__typename": [ 1 @@ -2973,7 +2985,7 @@ export default { 6 ], "quantity": [ - 11 + 12 ], "stripePriceId": [ 1 @@ -3013,7 +3025,7 @@ export default { 4 ], "metadata": [ - 15 + 7 ], "phases": [ 130 @@ -3051,19 +3063,19 @@ export default { 4 ], "usedCredits": [ - 11 + 12 ], "grantedCredits": [ - 11 + 12 ], "rolloverCredits": [ - 11 + 12 ], "totalGrantedCredits": [ - 11 + 12 ], "unitPriceCents": [ - 11 + 12 ], "__typename": [ 1 @@ -3218,7 +3230,7 @@ export default { 3 ], "position": [ - 11 + 12 ], "applicationId": [ 3 @@ -3242,13 +3254,13 @@ export default { 1 ], "before": [ - 15 + 7 ], "after": [ - 15 + 7 ], "diff": [ - 15 + 7 ], "__typename": [ 1 @@ -3326,19 +3338,19 @@ export default { }, "LogicFunctionExecutionResult": { "data": [ - 15 + 7 ], "logs": [ 1 ], "duration": [ - 11 + 12 ], "status": [ 167 ], "error": [ - 15 + 7 ], "__typename": [ 1 @@ -3390,6 +3402,12 @@ export default { "isFilled": [ 6 ], + "type": [ + 1 + ], + "options": [ + 7 + ], "createdAt": [ 4 ], @@ -3427,7 +3445,7 @@ export default { }, "BillingTrialPeriod": { "duration": [ - 11 + 12 ], "isCreditCardRequired": [ 6 @@ -3557,10 +3575,10 @@ export default { 1 ], "inputCostPerMillionTokens": [ - 11 + 12 ], "outputCostPerMillionTokens": [ - 11 + 12 ], "nativeCapabilities": [ 182 @@ -3578,10 +3596,10 @@ export default { 1 ], "contextWindowTokens": [ - 11 + 12 ], "maxOutputTokens": [ - 11 + 12 ], "dataResidency": [ 1 @@ -3648,7 +3666,7 @@ export default { "CaptchaDriverType": {}, "ApiConfig": { "mutationMaximumAffectedRecords": [ - 11 + 12 ], "__typename": [ 1 @@ -3799,7 +3817,7 @@ export default { 1 ], "creditsUsed": [ - 11 + 12 ], "__typename": [ 1 @@ -3807,7 +3825,7 @@ export default { }, "CreateApplicationRegistration": { "applicationRegistration": [ - 7 + 8 ], "clientSecret": [ 1 @@ -3873,7 +3891,7 @@ export default { 3 ], "order": [ - 11 + 12 ], "subFieldName": [ 1 @@ -3971,7 +3989,7 @@ export default { 3 ], "position": [ - 11 + 12 ], "createdAt": [ 4 @@ -4292,10 +4310,10 @@ export default { }, "UpsertRowLevelPermissionPredicatesResult": { "predicates": [ - 13 + 14 ], "predicateGroups": [ - 10 + 11 ], "__typename": [ 1 @@ -4314,7 +4332,7 @@ export default { 1 ], "port": [ - 11 + 12 ], "username": [ 1 @@ -4593,7 +4611,7 @@ export default { 6 ], "availableWorkspacesCount": [ - 11 + 12 ], "isEmailVerified": [ 6 @@ -4626,7 +4644,7 @@ export default { 1 ], "creditsUsed": [ - 11 + 12 ], "__typename": [ 1 @@ -4685,7 +4703,7 @@ export default { 1 ], "actions": [ - 15 + 7 ], "__typename": [ 1 @@ -4699,7 +4717,7 @@ export default { 1 ], "size": [ - 11 + 12 ], "createdAt": [ 4 @@ -4748,7 +4766,7 @@ export default { 1 ], "sourceType": [ - 8 + 9 ], "sourcePackage": [ 1 @@ -4763,7 +4781,7 @@ export default { 6 ], "manifest": [ - 15 + 7 ], "__typename": [ 1 @@ -4800,7 +4818,7 @@ export default { 1 ], "priority": [ - 11 + 12 ], "__typename": [ 1 @@ -4880,7 +4898,7 @@ export default { 4 ], "throttleFailureCount": [ - 11 + 12 ], "throttleRetryAfter": [ 4 @@ -5015,10 +5033,10 @@ export default { }, "Location": { "lat": [ - 11 + 12 ], "lng": [ - 11 + 12 ], "__typename": [ 1 @@ -5052,7 +5070,7 @@ export default { 1 ], "port": [ - 11 + 12 ], "username": [ 1 @@ -5161,7 +5179,7 @@ export default { 1 ], "inputSchema": [ - 15 + 7 ], "__typename": [ 1 @@ -5193,10 +5211,10 @@ export default { 1 ], "toolInput": [ - 15 + 7 ], "toolOutput": [ - 15 + 7 ], "state": [ 1 @@ -5208,7 +5226,7 @@ export default { 1 ], "errorDetails": [ - 15 + 7 ], "sourceUrlSourceId": [ 1 @@ -5244,7 +5262,7 @@ export default { 1 ], "providerMetadata": [ - 15 + 7 ], "createdAt": [ 4 @@ -5255,7 +5273,7 @@ export default { }, "RunAgentResult": { "result": [ - 15 + 7 ], "error": [ 1 @@ -5305,7 +5323,7 @@ export default { }, "BarChartData": { "data": [ - 15 + 7 ], "indexBy": [ 1 @@ -5338,7 +5356,7 @@ export default { 6 ], "formattedToRawLookup": [ - 15 + 7 ], "__typename": [ 1 @@ -5349,7 +5367,7 @@ export default { 1 ], "y": [ - 11 + 12 ], "__typename": [ 1 @@ -5389,7 +5407,7 @@ export default { 6 ], "formattedToRawLookup": [ - 15 + 7 ], "__typename": [ 1 @@ -5400,7 +5418,7 @@ export default { 1 ], "value": [ - 11 + 12 ], "__typename": [ 1 @@ -5423,7 +5441,7 @@ export default { 6 ], "formattedToRawLookup": [ - 15 + 7 ], "__typename": [ 1 @@ -5440,7 +5458,7 @@ export default { 3 ], "position": [ - 11 + 12 ], "createdAt": [ 1 @@ -5485,7 +5503,7 @@ export default { 1 ], "properties": [ - 15 + 7 ], "recordId": [ 1 @@ -5615,10 +5633,10 @@ export default { 21 ], "totalInputCredits": [ - 11 + 12 ], "totalOutputCredits": [ - 11 + 12 ], "createdAt": [ 4 @@ -5674,7 +5692,7 @@ export default { }, "ChatStreamCatchupChunks": { "chunks": [ - 15 + 7 ], "maxSeq": [ 21 @@ -5705,7 +5723,7 @@ export default { 1 ], "event": [ - 15 + 7 ], "__typename": [ 1 @@ -5800,7 +5818,7 @@ export default { 4 ], "throttleFailureCount": [ - 11 + 12 ], "connectedAccountId": [ 3 @@ -6248,7 +6266,7 @@ export default { 41 ], "getAvailablePackages": [ - 15, + 7, { "input": [ 339, @@ -6375,7 +6393,7 @@ export default { } ], "findApplicationRegistrationByUniversalIdentifier": [ - 7, + 8, { "universalIdentifier": [ 1, @@ -6384,10 +6402,10 @@ export default { } ], "findManyApplicationRegistrations": [ - 7 + 8 ], "findOneApplicationRegistration": [ - 7, + 8, { "id": [ 1, @@ -6455,7 +6473,7 @@ export default { 294 ], "getToolInputSchema": [ - 15, + 7, { "toolName": [ 1, @@ -6832,7 +6850,7 @@ export default { 3 ], "configuration": [ - 15 + 7 ], "__typename": [ 1 @@ -6843,7 +6861,7 @@ export default { 3 ], "configuration": [ - 15 + 7 ], "__typename": [ 1 @@ -6854,7 +6872,7 @@ export default { 3 ], "configuration": [ - 15 + 7 ], "__typename": [ 1 @@ -8032,7 +8050,7 @@ export default { } ], "updateApplicationRegistration": [ - 7, + 8, { "input": [ 453, @@ -8086,7 +8104,7 @@ export default { } ], "uploadAppTarball": [ - 7, + 8, { "file": [ 357, @@ -8098,7 +8116,7 @@ export default { } ], "transferApplicationRegistrationOwnership": [ - 7, + 8, { "applicationRegistrationId": [ 1, @@ -8300,7 +8318,7 @@ export default { "UUID!" ], "browsingContext": [ - 15 + 7 ], "modelId": [ 1 @@ -8875,7 +8893,7 @@ export default { "UUID!" ], "properties": [ - 15 + 7 ] } ], @@ -8893,7 +8911,7 @@ export default { 1 ], "properties": [ - 15 + 7 ] } ], @@ -9064,7 +9082,7 @@ export default { 263, { "manifest": [ - 15, + 7, "JSON!" ], "dryRun": [ @@ -9127,7 +9145,7 @@ export default { 1 ], "operationSignature": [ - 15 + 7 ], "__typename": [ 1 @@ -9182,7 +9200,7 @@ export default { 3 ], "position": [ - 11 + 12 ], "__typename": [ 1 @@ -9204,7 +9222,7 @@ export default { 3 ], "position": [ - 11 + 12 ], "name": [ 1 @@ -9237,7 +9255,7 @@ export default { 59 ], "positionInViewFilterGroup": [ - 11 + 12 ], "viewId": [ 3 @@ -9257,7 +9275,7 @@ export default { 59 ], "positionInViewFilterGroup": [ - 11 + 12 ], "viewId": [ 3 @@ -9277,13 +9295,13 @@ export default { 61 ], "value": [ - 15 + 7 ], "viewFilterGroupId": [ 3 ], "positionInViewFilterGroup": [ - 11 + 12 ], "subFieldName": [ 1 @@ -9317,13 +9335,13 @@ export default { 61 ], "value": [ - 15 + 7 ], "viewFilterGroupId": [ 3 ], "positionInViewFilterGroup": [ - 11 + 12 ], "subFieldName": [ 1 @@ -9371,7 +9389,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isCompact": [ 6 @@ -9424,7 +9442,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isCompact": [ 6 @@ -9494,10 +9512,10 @@ export default { 6 ], "position": [ - 11 + 12 ], "size": [ - 11 + 12 ], "__typename": [ 1 @@ -9514,13 +9532,13 @@ export default { 61 ], "value": [ - 15 + 7 ], "viewFilterGroupId": [ 3 ], "positionInViewFilterGroup": [ - 11 + 12 ], "subFieldName": [ 1 @@ -9543,7 +9561,7 @@ export default { 59 ], "positionInViewFilterGroup": [ - 11 + 12 ], "__typename": [ 1 @@ -9637,10 +9655,10 @@ export default { 6 ], "size": [ - 11 + 12 ], "position": [ - 11 + 12 ], "aggregateOperation": [ 57 @@ -9666,10 +9684,10 @@ export default { 6 ], "size": [ - 11 + 12 ], "position": [ - 11 + 12 ], "aggregateOperation": [ 57 @@ -9713,7 +9731,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isVisible": [ 6 @@ -9736,7 +9754,7 @@ export default { 3 ], "position": [ - 11 + 12 ], "isVisible": [ 6 @@ -9783,7 +9801,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isVisible": [ 6 @@ -9806,7 +9824,7 @@ export default { 6 ], "position": [ - 11 + 12 ], "__typename": [ 1 @@ -9889,7 +9907,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "pageLayoutId": [ 3 @@ -9906,7 +9924,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "icon": [ 1 @@ -9971,7 +9989,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "icon": [ 1 @@ -10006,13 +10024,13 @@ export default { 403 ], "position": [ - 15 + 7 ], "configuration": [ - 15 + 7 ], "conditionalDisplay": [ - 15 + 7 ], "conditionalAvailabilityExpression": [ 1 @@ -10023,16 +10041,16 @@ export default { }, "GridPositionInput": { "row": [ - 11 + 12 ], "column": [ - 11 + 12 ], "rowSpan": [ - 11 + 12 ], "columnSpan": [ - 11 + 12 ], "__typename": [ 1 @@ -10055,10 +10073,10 @@ export default { 403 ], "position": [ - 15 + 7 ], "configuration": [ - 15 + 7 ], "__typename": [ 1 @@ -10081,13 +10099,13 @@ export default { 403 ], "position": [ - 15 + 7 ], "configuration": [ - 15 + 7 ], "conditionalDisplay": [ - 15 + 7 ], "conditionalAvailabilityExpression": [ 1 @@ -10119,10 +10137,10 @@ export default { 3 ], "responseFormat": [ - 15 + 7 ], "modelConfiguration": [ - 15 + 7 ], "evaluationInputs": [ 1 @@ -10157,10 +10175,10 @@ export default { 3 ], "responseFormat": [ - 15 + 7 ], "modelConfiguration": [ - 15 + 7 ], "evaluationInputs": [ 1 @@ -10212,7 +10230,7 @@ export default { 1 ], "primaryKeyFieldMetadataSettings": [ - 15 + 7 ], "isLabelSyncedWithName": [ 6 @@ -10339,28 +10357,28 @@ export default { 1 ], "timeoutSeconds": [ - 11 + 12 ], "source": [ - 15 + 7 ], "cronTriggerSettings": [ - 15 + 7 ], "databaseEventTriggerSettings": [ - 15 + 7 ], "httpRouteTriggerSettings": [ - 15 + 7 ], "serverRouteTriggerSettings": [ - 15 + 7 ], "toolTriggerSettings": [ - 15 + 7 ], "workflowActionTriggerSettings": [ - 15 + 7 ], "__typename": [ 1 @@ -10371,7 +10389,7 @@ export default { 3 ], "payload": [ - 15 + 7 ], "__typename": [ 1 @@ -10396,7 +10414,7 @@ export default { 1 ], "timeoutSeconds": [ - 11 + 12 ], "sourceHandlerCode": [ 1 @@ -10408,19 +10426,19 @@ export default { 1 ], "cronTriggerSettings": [ - 15 + 7 ], "databaseEventTriggerSettings": [ - 15 + 7 ], "httpRouteTriggerSettings": [ - 15 + 7 ], "toolTriggerSettings": [ - 15 + 7 ], "workflowActionTriggerSettings": [ - 15 + 7 ], "__typename": [ 1 @@ -10446,7 +10464,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isPinned": [ 6 @@ -10464,7 +10482,7 @@ export default { 3 ], "payload": [ - 15 + 7 ], "pageLayoutId": [ 3 @@ -10487,7 +10505,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "isPinned": [ 6 @@ -10617,10 +10635,10 @@ export default { 6 ], "trashRetentionDays": [ - 11 + 12 ], "eventLogRetentionDays": [ - 11 + 12 ], "fastModel": [ 1 @@ -10690,13 +10708,13 @@ export default { 6 ], "defaultValue": [ - 15 + 7 ], "options": [ - 15 + 7 ], "settings": [ - 15 + 7 ], "objectMetadataId": [ 3 @@ -10708,10 +10726,10 @@ export default { 6 ], "relationCreationPayload": [ - 15 + 7 ], "morphRelationsCreationPayload": [ - 15 + 7 ], "__typename": [ 1 @@ -10763,13 +10781,13 @@ export default { 6 ], "defaultValue": [ - 15 + 7 ], "options": [ - 15 + 7 ], "settings": [ - 15 + 7 ], "objectMetadataId": [ 3 @@ -10778,7 +10796,7 @@ export default { 6 ], "morphRelationsUpdatePayload": [ - 15 + 7 ], "__typename": [ 1 @@ -10803,7 +10821,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "viewId": [ 3 @@ -10834,7 +10852,7 @@ export default { 1 ], "position": [ - 11 + 12 ], "__typename": [ 1 @@ -11070,10 +11088,10 @@ export default { 3 ], "operand": [ - 14 + 15 ], "value": [ - 15 + 7 ], "subFieldName": [ 1 @@ -11088,7 +11106,7 @@ export default { 3 ], "positionInRowLevelPermissionPredicateGroup": [ - 11 + 12 ], "__typename": [ 1 @@ -11105,10 +11123,10 @@ export default { 3 ], "logicalOperator": [ - 12 + 13 ], "positionInRowLevelPermissionPredicateGroup": [ - 11 + 12 ], "__typename": [ 1 @@ -11561,7 +11579,7 @@ export default { 3 ], "update": [ - 15 + 7 ], "__typename": [ 1 @@ -11727,7 +11745,7 @@ export default { 1 ], "port": [ - 11 + 12 ], "username": [ 1 diff --git a/packages/twenty-docs/developers/extend/apps/config/application.mdx b/packages/twenty-docs/developers/extend/apps/config/application.mdx index 5a29870fbc..2de6729d2e 100644 --- a/packages/twenty-docs/developers/extend/apps/config/application.mdx +++ b/packages/twenty-docs/developers/extend/apps/config/application.mdx @@ -35,6 +35,60 @@ Notes: - The default role is detected automatically from the role file marked with [`defineApplicationRole()`](/developers/extend/apps/config/roles) — you do not need to reference it from `defineApplication()`. - Pre-install and post-install functions are detected automatically during the manifest build — you do not need to reference them in `defineApplication()`. - Passing `defaultRoleUniversalIdentifier` explicitly is still supported for backward compatibility, but is deprecated in favor of `defineApplicationRole()`. +- `serverVariables` are instance-scoped configuration and secrets (e.g. API keys). Unlike `applicationVariables`, they declare no value in the manifest — the workspace operator fills them in from the app's settings, and they are injected into logic functions only once set. + +## Variable types + +Both `applicationVariables` and `serverVariables` accept an optional `type` (and, for `SELECT` / `MULTI_SELECT`, an `options` list). Supported types: `TEXT` (default), `BOOLEAN`, `NUMBER`, `NUMERIC`, `DATE`, `DATE_TIME`, `SELECT`, `MULTI_SELECT`, `ARRAY`, `RAW_JSON`, `RICH_TEXT`. + +```ts src/application-config.ts +import { defineApplication, FieldType } from 'twenty-sdk/define'; + +export default defineApplication({ + // ...identity, role... + applicationVariables: { + MAX_POSTCARDS: { + universalIdentifier: '5f4497e4-9030-4085-85eb-2c48b8d53713', + description: 'Maximum postcards per batch', + type: FieldType.NUMBER, + value: 10, + }, + DEFAULT_REGION: { + universalIdentifier: '76c5c321-b6b6-46eb-b4fc-f9f04bb04227', + description: 'Default shipping region', + type: FieldType.SELECT, + options: [ + { label: 'Europe', value: 'eu' }, + { label: 'United States', value: 'us' }, + ], + value: 'eu', + }, + }, +}); +``` + +The `type` only affects **presentation and validation** — it selects the matching input in the workspace settings UI (a toggle, number field, dropdown, date picker, JSON editor, …) and lets the build validate your config (for example, `SELECT` / `MULTI_SELECT` must declare non-empty `options`). It does **not** change how the value reaches your code. + +Values are **always injected as strings** — this is inherent to environment variables (`process.env.*` is string-only). When your logic function runs, the executor serializes each value by its declared `type` while building `process.env`, so the string format is consistent no matter how the value was set (manifest default, settings UI, or a previous version): + +| Type | `process.env` string | +|------|----------------------| +| `TEXT`, `SELECT`, `DATE`, `DATE_TIME` | the raw value (`"eu"`, `"2026-01-01"`) | +| `BOOLEAN` | `"true"` / `"false"` | +| `NUMBER`, `NUMERIC` | decimal string (`"10"`, `"2.5"`) | +| `MULTI_SELECT`, `ARRAY` | JSON array (`'["email","postcard"]'`) | +| `RAW_JSON`, `RICH_TEXT` | JSON object (`'{"retries":3}'`) | + +Parse the string back into the type you expect: + +```ts +const maxCards = Number(process.env.MAX_POSTCARDS); // "10" -> 10 +const enabled = process.env.ENABLE_TRACKING === 'true'; // "true" -> true +const channels = JSON.parse(process.env.ENABLED_CHANNELS ?? '[]'); // '["email"]' -> ["email"] +const config = JSON.parse(process.env.PROVIDER_CONFIG ?? '{}'); // '{"retries":3}' -> { retries: 3 } +``` + +The same applies to front components reading values via `getApplicationVariable('VARIABLE_NAME')` — the returned value is a string; parse it as needed. ## Default function role diff --git a/packages/twenty-docs/developers/extend/apps/layout/front-components.mdx b/packages/twenty-docs/developers/extend/apps/layout/front-components.mdx index a267f835c1..8e86a30582 100644 --- a/packages/twenty-docs/developers/extend/apps/layout/front-components.mdx +++ b/packages/twenty-docs/developers/extend/apps/layout/front-components.mdx @@ -377,6 +377,8 @@ export default defineFrontComponent({ Secret variables (`isSecret: true`) are **not** exposed to front components. They are only available in [logic functions](/developers/extend/apps/logic/logic-functions), which run server-side. This prevents sensitive values like API keys from being sent to the browser. +`getApplicationVariable` always returns a **string** (or `undefined`), regardless of the variable's declared `type`. The string is serialized consistently by type (booleans as `"true"` / `"false"`, numbers as decimal strings, arrays / objects as JSON), the same format used for logic-function `process.env` — parse it yourself (`Number(...)`, `JSON.parse(...)`, `=== 'true'`). See [Variable types](/developers/extend/apps/config/application#variable-types). + The following system variables are always available via `process.env`: | Variable | Description | diff --git a/packages/twenty-front/src/generated-admin/graphql.ts b/packages/twenty-front/src/generated-admin/graphql.ts index bb1a1bdfa5..b2dea28a89 100644 --- a/packages/twenty-front/src/generated-admin/graphql.ts +++ b/packages/twenty-front/src/generated-admin/graphql.ts @@ -232,6 +232,8 @@ export type ApplicationRegistrationVariableDto = { isRequired: Scalars['Boolean']['output']; isSecret: Scalars['Boolean']['output']; key: Scalars['String']['output']; + options?: Maybe; + type: Scalars['String']['output']; updatedAt: Scalars['DateTime']['output']; value?: Maybe; }; @@ -1092,7 +1094,7 @@ export type FindAdminApplicationRegistrationVariablesQueryVariables = Exact<{ }>; -export type FindAdminApplicationRegistrationVariablesQuery = { __typename?: 'Query', findAdminApplicationRegistrationVariables: Array<{ __typename?: 'ApplicationRegistrationVariableDTO', id: string, key: string, value?: string | null, description: string, isSecret: boolean, isRequired: boolean, isFilled: boolean, createdAt: string, updatedAt: string }> }; +export type FindAdminApplicationRegistrationVariablesQuery = { __typename?: 'Query', findAdminApplicationRegistrationVariables: Array<{ __typename?: 'ApplicationRegistrationVariableDTO', id: string, key: string, value?: string | null, description: string, isSecret: boolean, isRequired: boolean, isFilled: boolean, type: string, options?: any | null, createdAt: string, updatedAt: string }> }; export type FindAllApplicationRegistrationsQueryVariables = Exact<{ [key: string]: never; }>; @@ -1339,7 +1341,7 @@ export const UpdateAdminApplicationRegistrationDocument = {"kind":"Document","de export const UpdateAdminApplicationRegistrationVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateAdminApplicationRegistrationVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateApplicationRegistrationVariableInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateAdminApplicationRegistrationVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; export const FindAdminApplicationRegistrationInstalledWorkspacesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAdminApplicationRegistrationInstalledWorkspaces"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FindApplicationRegistrationInstalledWorkspacesInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAdminApplicationRegistrationInstalledWorkspaces"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"hasMore"}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"displayName"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"version"}}]}}]}}]}}]} as unknown as DocumentNode; export const FindAdminApplicationRegistrationStatsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAdminApplicationRegistrationStats"},"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":"findAdminApplicationRegistrationStats"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeInstalls"}},{"kind":"Field","name":{"kind":"Name","value":"mostInstalledVersion"}},{"kind":"Field","name":{"kind":"Name","value":"versionDistribution"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]}}]} as unknown as DocumentNode; -export const FindAdminApplicationRegistrationVariablesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAdminApplicationRegistrationVariables"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAdminApplicationRegistrationVariables"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"applicationRegistrationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; +export const FindAdminApplicationRegistrationVariablesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAdminApplicationRegistrationVariables"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAdminApplicationRegistrationVariables"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"applicationRegistrationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; export const FindAllApplicationRegistrationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"isConfigured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode; export const CreateDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"value"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}},{"kind":"Argument","name":{"kind":"Name","value":"value"},"value":{"kind":"Variable","name":{"kind":"Name","value":"value"}}}]}]}}]} as unknown as DocumentNode; export const DeleteDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}]}]}}]} as unknown as DocumentNode; diff --git a/packages/twenty-front/src/generated-metadata/graphql.ts b/packages/twenty-front/src/generated-metadata/graphql.ts index b7988cd06d..2328318c28 100644 --- a/packages/twenty-front/src/generated-metadata/graphql.ts +++ b/packages/twenty-front/src/generated-metadata/graphql.ts @@ -384,6 +384,8 @@ export type ApplicationRegistrationVariable = { isRequired: Scalars['Boolean']['output']; isSecret: Scalars['Boolean']['output']; key: Scalars['String']['output']; + options?: Maybe; + type: Scalars['String']['output']; updatedAt: Scalars['DateTime']['output']; }; @@ -396,6 +398,8 @@ export type ApplicationRegistrationVariableDto = { isRequired: Scalars['Boolean']['output']; isSecret: Scalars['Boolean']['output']; key: Scalars['String']['output']; + options?: Maybe; + type: Scalars['String']['output']; updatedAt: Scalars['DateTime']['output']; value?: Maybe; }; @@ -412,6 +416,8 @@ export type ApplicationVariable = { id: Scalars['UUID']['output']; isSecret: Scalars['Boolean']['output']; key: Scalars['String']['output']; + options?: Maybe; + type: Scalars['String']['output']; value: Scalars['String']['output']; }; @@ -6638,7 +6644,7 @@ export type TrackAnalyticsMutationVariables = Exact<{ export type TrackAnalyticsMutation = { __typename?: 'Mutation', trackAnalytics: { __typename?: 'Analytics', success: boolean } }; -export type ApplicationFieldsFragment = { __typename?: 'Application', id: string, name: string, description?: string | null, logo?: string | null, version?: string | null, universalIdentifier: string, applicationRegistrationId?: string | null, canBeUninstalled: boolean, defaultRoleId?: string | null, settingsCustomTabFrontComponentId?: string | null, availablePackages: any, applicationRegistration?: { __typename?: 'ApplicationRegistrationSummary', id: string, latestAvailableVersion?: string | null, sourceType: ApplicationRegistrationSourceType, logoUrl?: string | null } | null, applicationVariables: Array<{ __typename?: 'ApplicationVariable', id: string, key: string, value: string, description: string, isSecret: boolean }>, agents: Array<{ __typename?: 'Agent', id: string, name: string, label: string, description?: string | null, icon?: string | null, prompt: string, modelId: string, responseFormat?: any | null, roleId?: string | null, isCustom: boolean, modelConfiguration?: any | null, evaluationInputs: Array, applicationId?: string | null, createdAt: string, updatedAt: string }>, frontComponents: Array<{ __typename?: 'FrontComponent', id: string, name: string, description?: string | null, applicationId: string, componentName: string, builtComponentChecksum: string, universalIdentifier?: string | null, isHeadless: boolean, usesSdkClient: boolean, createdAt: string, updatedAt: string }>, commandMenuItems: Array<{ __typename?: 'CommandMenuItem', id: string, label: string, shortLabel?: string | null, icon?: string | null, isPinned: boolean, availabilityType: CommandMenuItemAvailabilityType, conditionalAvailabilityExpression?: string | null, frontComponentId?: string | null, universalIdentifier?: string | null, applicationId?: string | null, createdAt: string, updatedAt: string }>, objects: Array<{ __typename?: 'Object', id: string, universalIdentifier: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, color?: string | null, description?: string | null, icon?: string | null, isRemote: boolean, isActive: boolean, isSystem: boolean, isUIEditable: boolean, isUICreatable: boolean, createdAt: string, updatedAt: string, labelIdentifierFieldMetadataId?: string | null, imageIdentifierFieldMetadataId?: string | null, applicationId: string, shortcut?: string | null, isLabelSyncedWithName: boolean, isSearchable: boolean, duplicateCriteria?: Array> | null, searchFieldMetadataList: Array<{ __typename?: 'SearchField', id: string, fieldMetadataId: string, tsVectorFieldMetadataId: string, position: number, createdAt: string, updatedAt: string }>, indexMetadataList: Array<{ __typename?: 'Index', id: string, createdAt: string, updatedAt: string, name: string, indexWhereClause?: string | null, indexType: IndexType, isUnique: boolean, isCustom?: boolean | null, indexFieldMetadataList: Array<{ __typename?: 'IndexField', id: string, fieldMetadataId: string, subFieldName?: string | null, createdAt: string, updatedAt: string, order: number }> }>, fieldsList: Array<{ __typename?: 'Field', id: string, universalIdentifier: string, type: FieldMetadataType, name: string, label: string, description?: string | null, icon?: string | null, isActive?: boolean | null, isSystem?: boolean | null, isUIEditable?: boolean | null, isNullable?: boolean | null, isUnique?: boolean | null, createdAt: string, updatedAt: string, defaultValue?: any | null, options?: any | null, settings?: any | null, isLabelSyncedWithName?: boolean | null, morphId?: string | null, applicationId: string, relation?: { __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } } | null, morphRelations?: Array<{ __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } }> | null }> }>, logicFunctions: Array<{ __typename?: 'LogicFunction', id: string, name: string, description?: string | null, runtime: string, timeoutSeconds: number, executionMode: LogicFunctionExecutionMode, sourceHandlerPath: string, handlerName: string, cronTriggerSettings?: any | null, databaseEventTriggerSettings?: any | null, httpRouteTriggerSettings?: any | null, toolTriggerSettings?: any | null, workflowActionTriggerSettings?: any | null, applicationId?: string | null, universalIdentifier?: string | null, createdAt: string, updatedAt: string }> }; +export type ApplicationFieldsFragment = { __typename?: 'Application', id: string, name: string, description?: string | null, logo?: string | null, version?: string | null, universalIdentifier: string, applicationRegistrationId?: string | null, canBeUninstalled: boolean, defaultRoleId?: string | null, settingsCustomTabFrontComponentId?: string | null, availablePackages: any, applicationRegistration?: { __typename?: 'ApplicationRegistrationSummary', id: string, latestAvailableVersion?: string | null, sourceType: ApplicationRegistrationSourceType, logoUrl?: string | null } | null, applicationVariables: Array<{ __typename?: 'ApplicationVariable', id: string, key: string, value: string, description: string, isSecret: boolean, type: string, options?: any | null }>, agents: Array<{ __typename?: 'Agent', id: string, name: string, label: string, description?: string | null, icon?: string | null, prompt: string, modelId: string, responseFormat?: any | null, roleId?: string | null, isCustom: boolean, modelConfiguration?: any | null, evaluationInputs: Array, applicationId?: string | null, createdAt: string, updatedAt: string }>, frontComponents: Array<{ __typename?: 'FrontComponent', id: string, name: string, description?: string | null, applicationId: string, componentName: string, builtComponentChecksum: string, universalIdentifier?: string | null, isHeadless: boolean, usesSdkClient: boolean, createdAt: string, updatedAt: string }>, commandMenuItems: Array<{ __typename?: 'CommandMenuItem', id: string, label: string, shortLabel?: string | null, icon?: string | null, isPinned: boolean, availabilityType: CommandMenuItemAvailabilityType, conditionalAvailabilityExpression?: string | null, frontComponentId?: string | null, universalIdentifier?: string | null, applicationId?: string | null, createdAt: string, updatedAt: string }>, objects: Array<{ __typename?: 'Object', id: string, universalIdentifier: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, color?: string | null, description?: string | null, icon?: string | null, isRemote: boolean, isActive: boolean, isSystem: boolean, isUIEditable: boolean, isUICreatable: boolean, createdAt: string, updatedAt: string, labelIdentifierFieldMetadataId?: string | null, imageIdentifierFieldMetadataId?: string | null, applicationId: string, shortcut?: string | null, isLabelSyncedWithName: boolean, isSearchable: boolean, duplicateCriteria?: Array> | null, searchFieldMetadataList: Array<{ __typename?: 'SearchField', id: string, fieldMetadataId: string, tsVectorFieldMetadataId: string, position: number, createdAt: string, updatedAt: string }>, indexMetadataList: Array<{ __typename?: 'Index', id: string, createdAt: string, updatedAt: string, name: string, indexWhereClause?: string | null, indexType: IndexType, isUnique: boolean, isCustom?: boolean | null, indexFieldMetadataList: Array<{ __typename?: 'IndexField', id: string, fieldMetadataId: string, subFieldName?: string | null, createdAt: string, updatedAt: string, order: number }> }>, fieldsList: Array<{ __typename?: 'Field', id: string, universalIdentifier: string, type: FieldMetadataType, name: string, label: string, description?: string | null, icon?: string | null, isActive?: boolean | null, isSystem?: boolean | null, isUIEditable?: boolean | null, isNullable?: boolean | null, isUnique?: boolean | null, createdAt: string, updatedAt: string, defaultValue?: any | null, options?: any | null, settings?: any | null, isLabelSyncedWithName?: boolean | null, morphId?: string | null, applicationId: string, relation?: { __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } } | null, morphRelations?: Array<{ __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } }> | null }> }>, logicFunctions: Array<{ __typename?: 'LogicFunction', id: string, name: string, description?: string | null, runtime: string, timeoutSeconds: number, executionMode: LogicFunctionExecutionMode, sourceHandlerPath: string, handlerName: string, cronTriggerSettings?: any | null, databaseEventTriggerSettings?: any | null, httpRouteTriggerSettings?: any | null, toolTriggerSettings?: any | null, workflowActionTriggerSettings?: any | null, applicationId?: string | null, universalIdentifier?: string | null, createdAt: string, updatedAt: string }> }; export type FindManyApplicationsQueryVariables = Exact<{ [key: string]: never; }>; @@ -6650,7 +6656,7 @@ export type FindOneApplicationQueryVariables = Exact<{ }>; -export type FindOneApplicationQuery = { __typename?: 'Query', findOneApplication: { __typename?: 'Application', id: string, name: string, description?: string | null, logo?: string | null, version?: string | null, universalIdentifier: string, applicationRegistrationId?: string | null, canBeUninstalled: boolean, defaultRoleId?: string | null, settingsCustomTabFrontComponentId?: string | null, availablePackages: any, applicationRegistration?: { __typename?: 'ApplicationRegistrationSummary', id: string, latestAvailableVersion?: string | null, sourceType: ApplicationRegistrationSourceType, logoUrl?: string | null } | null, applicationVariables: Array<{ __typename?: 'ApplicationVariable', id: string, key: string, value: string, description: string, isSecret: boolean }>, agents: Array<{ __typename?: 'Agent', id: string, name: string, label: string, description?: string | null, icon?: string | null, prompt: string, modelId: string, responseFormat?: any | null, roleId?: string | null, isCustom: boolean, modelConfiguration?: any | null, evaluationInputs: Array, applicationId?: string | null, createdAt: string, updatedAt: string }>, frontComponents: Array<{ __typename?: 'FrontComponent', id: string, name: string, description?: string | null, applicationId: string, componentName: string, builtComponentChecksum: string, universalIdentifier?: string | null, isHeadless: boolean, usesSdkClient: boolean, createdAt: string, updatedAt: string }>, commandMenuItems: Array<{ __typename?: 'CommandMenuItem', id: string, label: string, shortLabel?: string | null, icon?: string | null, isPinned: boolean, availabilityType: CommandMenuItemAvailabilityType, conditionalAvailabilityExpression?: string | null, frontComponentId?: string | null, universalIdentifier?: string | null, applicationId?: string | null, createdAt: string, updatedAt: string }>, objects: Array<{ __typename?: 'Object', id: string, universalIdentifier: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, color?: string | null, description?: string | null, icon?: string | null, isRemote: boolean, isActive: boolean, isSystem: boolean, isUIEditable: boolean, isUICreatable: boolean, createdAt: string, updatedAt: string, labelIdentifierFieldMetadataId?: string | null, imageIdentifierFieldMetadataId?: string | null, applicationId: string, shortcut?: string | null, isLabelSyncedWithName: boolean, isSearchable: boolean, duplicateCriteria?: Array> | null, searchFieldMetadataList: Array<{ __typename?: 'SearchField', id: string, fieldMetadataId: string, tsVectorFieldMetadataId: string, position: number, createdAt: string, updatedAt: string }>, indexMetadataList: Array<{ __typename?: 'Index', id: string, createdAt: string, updatedAt: string, name: string, indexWhereClause?: string | null, indexType: IndexType, isUnique: boolean, isCustom?: boolean | null, indexFieldMetadataList: Array<{ __typename?: 'IndexField', id: string, fieldMetadataId: string, subFieldName?: string | null, createdAt: string, updatedAt: string, order: number }> }>, fieldsList: Array<{ __typename?: 'Field', id: string, universalIdentifier: string, type: FieldMetadataType, name: string, label: string, description?: string | null, icon?: string | null, isActive?: boolean | null, isSystem?: boolean | null, isUIEditable?: boolean | null, isNullable?: boolean | null, isUnique?: boolean | null, createdAt: string, updatedAt: string, defaultValue?: any | null, options?: any | null, settings?: any | null, isLabelSyncedWithName?: boolean | null, morphId?: string | null, applicationId: string, relation?: { __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } } | null, morphRelations?: Array<{ __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } }> | null }> }>, logicFunctions: Array<{ __typename?: 'LogicFunction', id: string, name: string, description?: string | null, runtime: string, timeoutSeconds: number, executionMode: LogicFunctionExecutionMode, sourceHandlerPath: string, handlerName: string, cronTriggerSettings?: any | null, databaseEventTriggerSettings?: any | null, httpRouteTriggerSettings?: any | null, toolTriggerSettings?: any | null, workflowActionTriggerSettings?: any | null, applicationId?: string | null, universalIdentifier?: string | null, createdAt: string, updatedAt: string }> } }; +export type FindOneApplicationQuery = { __typename?: 'Query', findOneApplication: { __typename?: 'Application', id: string, name: string, description?: string | null, logo?: string | null, version?: string | null, universalIdentifier: string, applicationRegistrationId?: string | null, canBeUninstalled: boolean, defaultRoleId?: string | null, settingsCustomTabFrontComponentId?: string | null, availablePackages: any, applicationRegistration?: { __typename?: 'ApplicationRegistrationSummary', id: string, latestAvailableVersion?: string | null, sourceType: ApplicationRegistrationSourceType, logoUrl?: string | null } | null, applicationVariables: Array<{ __typename?: 'ApplicationVariable', id: string, key: string, value: string, description: string, isSecret: boolean, type: string, options?: any | null }>, agents: Array<{ __typename?: 'Agent', id: string, name: string, label: string, description?: string | null, icon?: string | null, prompt: string, modelId: string, responseFormat?: any | null, roleId?: string | null, isCustom: boolean, modelConfiguration?: any | null, evaluationInputs: Array, applicationId?: string | null, createdAt: string, updatedAt: string }>, frontComponents: Array<{ __typename?: 'FrontComponent', id: string, name: string, description?: string | null, applicationId: string, componentName: string, builtComponentChecksum: string, universalIdentifier?: string | null, isHeadless: boolean, usesSdkClient: boolean, createdAt: string, updatedAt: string }>, commandMenuItems: Array<{ __typename?: 'CommandMenuItem', id: string, label: string, shortLabel?: string | null, icon?: string | null, isPinned: boolean, availabilityType: CommandMenuItemAvailabilityType, conditionalAvailabilityExpression?: string | null, frontComponentId?: string | null, universalIdentifier?: string | null, applicationId?: string | null, createdAt: string, updatedAt: string }>, objects: Array<{ __typename?: 'Object', id: string, universalIdentifier: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, color?: string | null, description?: string | null, icon?: string | null, isRemote: boolean, isActive: boolean, isSystem: boolean, isUIEditable: boolean, isUICreatable: boolean, createdAt: string, updatedAt: string, labelIdentifierFieldMetadataId?: string | null, imageIdentifierFieldMetadataId?: string | null, applicationId: string, shortcut?: string | null, isLabelSyncedWithName: boolean, isSearchable: boolean, duplicateCriteria?: Array> | null, searchFieldMetadataList: Array<{ __typename?: 'SearchField', id: string, fieldMetadataId: string, tsVectorFieldMetadataId: string, position: number, createdAt: string, updatedAt: string }>, indexMetadataList: Array<{ __typename?: 'Index', id: string, createdAt: string, updatedAt: string, name: string, indexWhereClause?: string | null, indexType: IndexType, isUnique: boolean, isCustom?: boolean | null, indexFieldMetadataList: Array<{ __typename?: 'IndexField', id: string, fieldMetadataId: string, subFieldName?: string | null, createdAt: string, updatedAt: string, order: number }> }>, fieldsList: Array<{ __typename?: 'Field', id: string, universalIdentifier: string, type: FieldMetadataType, name: string, label: string, description?: string | null, icon?: string | null, isActive?: boolean | null, isSystem?: boolean | null, isUIEditable?: boolean | null, isNullable?: boolean | null, isUnique?: boolean | null, createdAt: string, updatedAt: string, defaultValue?: any | null, options?: any | null, settings?: any | null, isLabelSyncedWithName?: boolean | null, morphId?: string | null, applicationId: string, relation?: { __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } } | null, morphRelations?: Array<{ __typename?: 'Relation', type: RelationType, sourceObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, targetObjectMetadata: { __typename?: 'Object', id: string, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'Field', id: string, name: string }, targetFieldMetadata: { __typename?: 'Field', id: string, name: string } }> | null }> }>, logicFunctions: Array<{ __typename?: 'LogicFunction', id: string, name: string, description?: string | null, runtime: string, timeoutSeconds: number, executionMode: LogicFunctionExecutionMode, sourceHandlerPath: string, handlerName: string, cronTriggerSettings?: any | null, databaseEventTriggerSettings?: any | null, httpRouteTriggerSettings?: any | null, toolTriggerSettings?: any | null, workflowActionTriggerSettings?: any | null, applicationId?: string | null, universalIdentifier?: string | null, createdAt: string, updatedAt: string }> } }; export type FindOneApplicationByUniversalIdentifierQueryVariables = Exact<{ universalIdentifier: Scalars['UUID']['input']; @@ -7730,7 +7736,7 @@ export type FindApplicationRegistrationVariablesQueryVariables = Exact<{ }>; -export type FindApplicationRegistrationVariablesQuery = { __typename?: 'Query', findApplicationRegistrationVariables: Array<{ __typename?: 'ApplicationRegistrationVariableDTO', id: string, key: string, value?: string | null, description: string, isSecret: boolean, isRequired: boolean, isFilled: boolean, createdAt: string, updatedAt: string }> }; +export type FindApplicationRegistrationVariablesQuery = { __typename?: 'Query', findApplicationRegistrationVariables: Array<{ __typename?: 'ApplicationRegistrationVariableDTO', id: string, key: string, value?: string | null, description: string, isSecret: boolean, isRequired: boolean, isFilled: boolean, type: string, options?: any | null, createdAt: string, updatedAt: string }> }; export type ApplicationRegistrationListItemFragment = { __typename?: 'ApplicationRegistration', id: string, universalIdentifier: string, name: string, sourceType: ApplicationRegistrationSourceType }; @@ -8707,7 +8713,7 @@ export const SkillFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind": export const AgentFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AgentFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Agent"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"prompt"}},{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"responseFormat"}},{"kind":"Field","name":{"kind":"Name","value":"roleId"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"modelConfiguration"}},{"kind":"Field","name":{"kind":"Name","value":"evaluationInputs"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode; export const ObjectMetadataFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ObjectMetadataFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Object"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isUICreatable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"shortcut"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"isSearchable"}},{"kind":"Field","name":{"kind":"Name","value":"duplicateCriteria"}},{"kind":"Field","name":{"kind":"Name","value":"searchFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"tsVectorFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"indexMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"indexWhereClause"}},{"kind":"Field","name":{"kind":"Name","value":"indexType"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"indexFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"subFieldName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"order"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"fieldsList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"settings"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"morphId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"relation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"morphRelations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const LogicFunctionFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LogicFunctionFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LogicFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"runtime"}},{"kind":"Field","name":{"kind":"Name","value":"timeoutSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"executionMode"}},{"kind":"Field","name":{"kind":"Name","value":"sourceHandlerPath"}},{"kind":"Field","name":{"kind":"Name","value":"handlerName"}},{"kind":"Field","name":{"kind":"Name","value":"cronTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"databaseEventTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"httpRouteTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"toolTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"workflowActionTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode; -export const ApplicationFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Application"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistrationId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"canBeUninstalled"}},{"kind":"Field","name":{"kind":"Name","value":"defaultRoleId"}},{"kind":"Field","name":{"kind":"Name","value":"settingsCustomTabFrontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"availablePackages"}},{"kind":"Field","name":{"kind":"Name","value":"applicationVariables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}}]}},{"kind":"Field","name":{"kind":"Name","value":"agents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AgentFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"frontComponents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"componentName"}},{"kind":"Field","name":{"kind":"Name","value":"builtComponentChecksum"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"isHeadless"}},{"kind":"Field","name":{"kind":"Name","value":"usesSdkClient"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"commandMenuItems"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortLabel"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isPinned"}},{"kind":"Field","name":{"kind":"Name","value":"availabilityType"}},{"kind":"Field","name":{"kind":"Name","value":"conditionalAvailabilityExpression"}},{"kind":"Field","name":{"kind":"Name","value":"frontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"objects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ObjectMetadataFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"logicFunctions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LogicFunctionFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AgentFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Agent"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"prompt"}},{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"responseFormat"}},{"kind":"Field","name":{"kind":"Name","value":"roleId"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"modelConfiguration"}},{"kind":"Field","name":{"kind":"Name","value":"evaluationInputs"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ObjectMetadataFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Object"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isUICreatable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"shortcut"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"isSearchable"}},{"kind":"Field","name":{"kind":"Name","value":"duplicateCriteria"}},{"kind":"Field","name":{"kind":"Name","value":"searchFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"tsVectorFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"indexMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"indexWhereClause"}},{"kind":"Field","name":{"kind":"Name","value":"indexType"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"indexFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"subFieldName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"order"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"fieldsList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"settings"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"morphId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"relation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"morphRelations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LogicFunctionFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LogicFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"runtime"}},{"kind":"Field","name":{"kind":"Name","value":"timeoutSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"executionMode"}},{"kind":"Field","name":{"kind":"Name","value":"sourceHandlerPath"}},{"kind":"Field","name":{"kind":"Name","value":"handlerName"}},{"kind":"Field","name":{"kind":"Name","value":"cronTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"databaseEventTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"httpRouteTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"toolTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"workflowActionTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode; +export const ApplicationFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Application"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistrationId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"canBeUninstalled"}},{"kind":"Field","name":{"kind":"Name","value":"defaultRoleId"}},{"kind":"Field","name":{"kind":"Name","value":"settingsCustomTabFrontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"availablePackages"}},{"kind":"Field","name":{"kind":"Name","value":"applicationVariables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"agents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AgentFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"frontComponents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"componentName"}},{"kind":"Field","name":{"kind":"Name","value":"builtComponentChecksum"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"isHeadless"}},{"kind":"Field","name":{"kind":"Name","value":"usesSdkClient"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"commandMenuItems"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortLabel"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isPinned"}},{"kind":"Field","name":{"kind":"Name","value":"availabilityType"}},{"kind":"Field","name":{"kind":"Name","value":"conditionalAvailabilityExpression"}},{"kind":"Field","name":{"kind":"Name","value":"frontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"objects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ObjectMetadataFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"logicFunctions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LogicFunctionFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AgentFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Agent"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"prompt"}},{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"responseFormat"}},{"kind":"Field","name":{"kind":"Name","value":"roleId"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"modelConfiguration"}},{"kind":"Field","name":{"kind":"Name","value":"evaluationInputs"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ObjectMetadataFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Object"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isUICreatable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"shortcut"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"isSearchable"}},{"kind":"Field","name":{"kind":"Name","value":"duplicateCriteria"}},{"kind":"Field","name":{"kind":"Name","value":"searchFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"tsVectorFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"indexMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"indexWhereClause"}},{"kind":"Field","name":{"kind":"Name","value":"indexType"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"indexFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"subFieldName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"order"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"fieldsList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"settings"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"morphId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"relation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"morphRelations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LogicFunctionFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LogicFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"runtime"}},{"kind":"Field","name":{"kind":"Name","value":"timeoutSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"executionMode"}},{"kind":"Field","name":{"kind":"Name","value":"sourceHandlerPath"}},{"kind":"Field","name":{"kind":"Name","value":"handlerName"}},{"kind":"Field","name":{"kind":"Name","value":"cronTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"databaseEventTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"httpRouteTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"toolTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"workflowActionTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode; export const AuthTokenFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AuthTokenFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AuthToken"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"token"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}}]}}]} as unknown as DocumentNode; export const AuthTokenPairFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AuthTokenPairFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AuthTokenPair"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"accessOrWorkspaceAgnosticToken"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AuthTokenFragment"}}]}},{"kind":"Field","name":{"kind":"Name","value":"refreshToken"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AuthTokenFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AuthTokenFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AuthToken"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"token"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}}]}}]} as unknown as DocumentNode; export const AvailableSsoIdentityProvidersFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AvailableSSOIdentityProvidersFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"FindAvailableSSOIDP"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"issuer"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"workspace"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"displayName"}}]}}]}}]} as unknown as DocumentNode; @@ -8790,7 +8796,7 @@ export const GetToolInputSchemaDocument = {"kind":"Document","definitions":[{"ki export const OnAgentChatEventDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"OnAgentChatEvent"},"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":"onAgentChatEvent"},"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":"threadId"}},{"kind":"Field","name":{"kind":"Name","value":"event"}}]}}]}}]} as unknown as DocumentNode; export const TrackAnalyticsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"TrackAnalytics"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"type"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AnalyticsType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"event"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"properties"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"trackAnalytics"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"type"},"value":{"kind":"Variable","name":{"kind":"Name","value":"type"}}},{"kind":"Argument","name":{"kind":"Name","value":"event"},"value":{"kind":"Variable","name":{"kind":"Name","value":"event"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"properties"},"value":{"kind":"Variable","name":{"kind":"Name","value":"properties"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"success"}}]}}]}}]} as unknown as DocumentNode; export const FindManyApplicationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindManyApplications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findManyApplications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistrationId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}}]}}]}}]}}]} as unknown as DocumentNode; -export const FindOneApplicationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplication"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplication"},"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":"ApplicationFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AgentFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Agent"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"prompt"}},{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"responseFormat"}},{"kind":"Field","name":{"kind":"Name","value":"roleId"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"modelConfiguration"}},{"kind":"Field","name":{"kind":"Name","value":"evaluationInputs"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ObjectMetadataFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Object"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isUICreatable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"shortcut"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"isSearchable"}},{"kind":"Field","name":{"kind":"Name","value":"duplicateCriteria"}},{"kind":"Field","name":{"kind":"Name","value":"searchFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"tsVectorFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"indexMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"indexWhereClause"}},{"kind":"Field","name":{"kind":"Name","value":"indexType"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"indexFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"subFieldName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"order"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"fieldsList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"settings"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"morphId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"relation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"morphRelations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LogicFunctionFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LogicFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"runtime"}},{"kind":"Field","name":{"kind":"Name","value":"timeoutSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"executionMode"}},{"kind":"Field","name":{"kind":"Name","value":"sourceHandlerPath"}},{"kind":"Field","name":{"kind":"Name","value":"handlerName"}},{"kind":"Field","name":{"kind":"Name","value":"cronTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"databaseEventTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"httpRouteTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"toolTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"workflowActionTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Application"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistrationId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"canBeUninstalled"}},{"kind":"Field","name":{"kind":"Name","value":"defaultRoleId"}},{"kind":"Field","name":{"kind":"Name","value":"settingsCustomTabFrontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"availablePackages"}},{"kind":"Field","name":{"kind":"Name","value":"applicationVariables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}}]}},{"kind":"Field","name":{"kind":"Name","value":"agents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AgentFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"frontComponents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"componentName"}},{"kind":"Field","name":{"kind":"Name","value":"builtComponentChecksum"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"isHeadless"}},{"kind":"Field","name":{"kind":"Name","value":"usesSdkClient"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"commandMenuItems"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortLabel"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isPinned"}},{"kind":"Field","name":{"kind":"Name","value":"availabilityType"}},{"kind":"Field","name":{"kind":"Name","value":"conditionalAvailabilityExpression"}},{"kind":"Field","name":{"kind":"Name","value":"frontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"objects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ObjectMetadataFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"logicFunctions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LogicFunctionFields"}}]}}]}}]} as unknown as DocumentNode; +export const FindOneApplicationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplication"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplication"},"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":"ApplicationFields"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AgentFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Agent"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"prompt"}},{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"responseFormat"}},{"kind":"Field","name":{"kind":"Name","value":"roleId"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"modelConfiguration"}},{"kind":"Field","name":{"kind":"Name","value":"evaluationInputs"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ObjectMetadataFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Object"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isUICreatable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"shortcut"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"isSearchable"}},{"kind":"Field","name":{"kind":"Name","value":"duplicateCriteria"}},{"kind":"Field","name":{"kind":"Name","value":"searchFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"tsVectorFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"indexMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"indexWhereClause"}},{"kind":"Field","name":{"kind":"Name","value":"indexType"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"indexFieldMetadataList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"subFieldName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"order"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"fieldsList"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isUIEditable"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"isUnique"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"settings"}},{"kind":"Field","name":{"kind":"Name","value":"isLabelSyncedWithName"}},{"kind":"Field","name":{"kind":"Name","value":"morphId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"relation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"morphRelations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LogicFunctionFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LogicFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"runtime"}},{"kind":"Field","name":{"kind":"Name","value":"timeoutSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"executionMode"}},{"kind":"Field","name":{"kind":"Name","value":"sourceHandlerPath"}},{"kind":"Field","name":{"kind":"Name","value":"handlerName"}},{"kind":"Field","name":{"kind":"Name","value":"cronTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"databaseEventTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"httpRouteTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"toolTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"workflowActionTriggerSettings"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Application"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistrationId"}},{"kind":"Field","name":{"kind":"Name","value":"applicationRegistration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"canBeUninstalled"}},{"kind":"Field","name":{"kind":"Name","value":"defaultRoleId"}},{"kind":"Field","name":{"kind":"Name","value":"settingsCustomTabFrontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"availablePackages"}},{"kind":"Field","name":{"kind":"Name","value":"applicationVariables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"agents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AgentFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"frontComponents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"componentName"}},{"kind":"Field","name":{"kind":"Name","value":"builtComponentChecksum"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"isHeadless"}},{"kind":"Field","name":{"kind":"Name","value":"usesSdkClient"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"commandMenuItems"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortLabel"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isPinned"}},{"kind":"Field","name":{"kind":"Name","value":"availabilityType"}},{"kind":"Field","name":{"kind":"Name","value":"conditionalAvailabilityExpression"}},{"kind":"Field","name":{"kind":"Name","value":"frontComponentId"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"applicationId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"objects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ObjectMetadataFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"logicFunctions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LogicFunctionFields"}}]}}]}}]} as unknown as DocumentNode; export const FindOneApplicationByUniversalIdentifierDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplicationByUniversalIdentifier"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplication"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"universalIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}}}],"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":"version"}}]}}]}}]} as unknown as DocumentNode; export const FindOneApplicationNameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplicationName"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplication"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode; export const FindOneApplicationSummaryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplicationSummary"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplication"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"universalIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; @@ -8898,7 +8904,7 @@ export const UpdateApplicationRegistrationDocument = {"kind":"Document","definit export const UpdateApplicationRegistrationVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateApplicationRegistrationVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateApplicationRegistrationVariableInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateApplicationRegistrationVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; export const ApplicationRegistrationTarballUrlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ApplicationRegistrationTarballUrl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"applicationRegistrationTarballUrl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}]}}]} as unknown as DocumentNode; export const FindApplicationRegistrationStatsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindApplicationRegistrationStats"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findApplicationRegistrationStats"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeInstalls"}},{"kind":"Field","name":{"kind":"Name","value":"mostInstalledVersion"}},{"kind":"Field","name":{"kind":"Name","value":"versionDistribution"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]}}]} as unknown as DocumentNode; -export const FindApplicationRegistrationVariablesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindApplicationRegistrationVariables"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findApplicationRegistrationVariables"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"applicationRegistrationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; +export const FindApplicationRegistrationVariablesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindApplicationRegistrationVariables"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findApplicationRegistrationVariables"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"applicationRegistrationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; export const FindManyApplicationRegistrationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindManyApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findManyApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationListItem"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationListItem"},"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":"sourceType"}}]}}]} as unknown as DocumentNode; export const FindOneApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"isConfigured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode; export const UninstallApplicationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UninstallApplication"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uninstallApplication"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"universalIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"universalIdentifier"}}}]}]}}]} as unknown as DocumentNode; diff --git a/packages/twenty-front/src/modules/app/components/SettingsRoutes.tsx b/packages/twenty-front/src/modules/app/components/SettingsRoutes.tsx index 2827e4ab86..7b86286a23 100644 --- a/packages/twenty-front/src/modules/app/components/SettingsRoutes.tsx +++ b/packages/twenty-front/src/modules/app/components/SettingsRoutes.tsx @@ -264,14 +264,6 @@ const SettingsAdminApplicationRegistrationDetail = lazy(() => ), ); -const SettingsAdminApplicationRegistrationConfigVariableDetail = lazy(() => - import('~/pages/settings/admin-panel/SettingsAdminApplicationRegistrationConfigVariableDetail').then( - (module) => ({ - default: module.SettingsAdminApplicationRegistrationConfigVariableDetail, - }), - ), -); - const SettingsAvailableApplicationDetails = lazy(() => import('~/pages/settings/applications/SettingsAvailableApplicationDetails').then( (module) => ({ @@ -288,14 +280,6 @@ const SettingsApplicationRegistrationDetails = lazy(() => ), ); -const SettingsApplicationRegistrationConfigVariableDetail = lazy(() => - import('~/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail').then( - (module) => ({ - default: module.SettingsApplicationRegistrationConfigVariableDetail, - }), - ), -); - const SettingsAgentForm = lazy(() => import('~/pages/settings/ai/SettingsAgentForm').then((module) => ({ default: module.SettingsAgentForm, @@ -925,10 +909,6 @@ export const SettingsRoutes = ({ isAdminPageEnabled }: SettingsRoutesProps) => ( path={SettingsPath.ApplicationPageLayoutDetail} element={} /> - } - /> ( path={SettingsPath.AdminPanelApplicationRegistrationDetail} element={} /> - - } - /> } diff --git a/packages/twenty-front/src/modules/applications/graphql/fragments/applicationFragment.ts b/packages/twenty-front/src/modules/applications/graphql/fragments/applicationFragment.ts index 65ae784fd9..0e49bc06a4 100644 --- a/packages/twenty-front/src/modules/applications/graphql/fragments/applicationFragment.ts +++ b/packages/twenty-front/src/modules/applications/graphql/fragments/applicationFragment.ts @@ -31,6 +31,8 @@ export const APPLICATION_FRAGMENT = gql` value description isSecret + type + options } agents { ...AgentFields diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/form-types/hooks/useTextVariableEditor.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/form-types/hooks/useTextVariableEditor.ts index f956821dc9..9ca1599af3 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/form-types/hooks/useTextVariableEditor.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/form-types/hooks/useTextVariableEditor.ts @@ -9,6 +9,7 @@ import { UndoRedo } from '@tiptap/extensions/undo-redo'; import { Slice } from '@tiptap/pm/model'; import { type Editor, useEditor } from '@tiptap/react'; +import { useEffect } from 'react'; import { isDefined, parseJson } from 'twenty-shared/utils'; import { type JsonValue } from 'type-fest'; @@ -131,5 +132,9 @@ export const useTextVariableEditor = ({ injectCSS: false, }); + useEffect(() => { + editor?.setEditable(!readonly, false); + }, [editor, readonly]); + return editor; }; diff --git a/packages/twenty-front/src/modules/settings/admin-panel/apps/graphql/queries/findAdminApplicationRegistrationVariables.ts b/packages/twenty-front/src/modules/settings/admin-panel/apps/graphql/queries/findAdminApplicationRegistrationVariables.ts index 946c952a00..012ac0db34 100644 --- a/packages/twenty-front/src/modules/settings/admin-panel/apps/graphql/queries/findAdminApplicationRegistrationVariables.ts +++ b/packages/twenty-front/src/modules/settings/admin-panel/apps/graphql/queries/findAdminApplicationRegistrationVariables.ts @@ -14,6 +14,8 @@ export const FIND_ADMIN_APPLICATION_REGISTRATION_VARIABLES = gql` isSecret isRequired isFilled + type + options createdAt updatedAt } diff --git a/packages/twenty-front/src/modules/settings/application-registrations/components/ApplicationRegistrationConfigVariableEditForm.tsx b/packages/twenty-front/src/modules/settings/application-registrations/components/ApplicationRegistrationConfigVariableEditForm.tsx deleted file mode 100644 index f2fb7804f6..0000000000 --- a/packages/twenty-front/src/modules/settings/application-registrations/components/ApplicationRegistrationConfigVariableEditForm.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { useState } from 'react'; -import { useLingui } from '@lingui/react/macro'; -import { isNonEmptyString } from '@sniptt/guards'; -import { ConfigVariableEdit } from '@/settings/config-variables/components/ConfigVariableEdit'; -import { TextInput } from '@/ui/input/components/TextInput'; - -type VariableData = { - id: string; - key: string; - value?: string | null; - description: string; - isFilled: boolean; -}; - -export const ApplicationRegistrationConfigVariableEditForm = ({ - variable, - onUpdateVariable, -}: { - variable: VariableData; - onUpdateVariable: ( - id: string, - update: { value: string; resetValue?: boolean }, - ) => Promise; -}) => { - const { t } = useLingui(); - - const [value, setValue] = useState(''); - const [isEditing, setIsEditing] = useState(false); - - const canOpenCancelModal = variable.isFilled && !isNonEmptyString(value); - - const onCancel = () => { - setValue(''); - }; - - const onSave = async () => { - if (!isNonEmptyString(value)) { - return; - } - - try { - await onUpdateVariable(variable.id, { value }); - } finally { - setValue(''); - } - }; - - const onConfirmReset = async () => { - try { - await onUpdateVariable(variable.id, { value: '', resetValue: true }); - } finally { - setValue(''); - } - }; - - return ( - - } - isEditing={isEditing} - setIsEditing={setIsEditing} - isSaveDisabled={!isNonEmptyString(value)} - onSave={onSave} - onCancel={onCancel} - canOpenCancelModal={canOpenCancelModal} - onConfirmReset={onConfirmReset} - /> - ); -}; diff --git a/packages/twenty-front/src/modules/settings/application-registrations/graphql/queries/findApplicationRegistrationVariables.ts b/packages/twenty-front/src/modules/settings/application-registrations/graphql/queries/findApplicationRegistrationVariables.ts index b2a82e6ac0..215053acd7 100644 --- a/packages/twenty-front/src/modules/settings/application-registrations/graphql/queries/findApplicationRegistrationVariables.ts +++ b/packages/twenty-front/src/modules/settings/application-registrations/graphql/queries/findApplicationRegistrationVariables.ts @@ -14,6 +14,8 @@ export const FIND_APPLICATION_REGISTRATION_VARIABLES = gql` isSecret isRequired isFilled + type + options createdAt updatedAt } diff --git a/packages/twenty-front/src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationConfigVariableDetail.tsx b/packages/twenty-front/src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationConfigVariableDetail.tsx deleted file mode 100644 index 3a33e24f5e..0000000000 --- a/packages/twenty-front/src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationConfigVariableDetail.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import { useLingui } from '@lingui/react/macro'; -import { useParams } from 'react-router-dom'; -import { useMutation, useQuery } from '@apollo/client/react'; -import { - FindAdminApplicationRegistrationVariablesDocument, - FindOneAdminApplicationRegistrationDocument, - UpdateAdminApplicationRegistrationVariableDocument, -} from '~/generated-admin/graphql'; -import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient'; -import { APPLICATION_REGISTRATION_ADMIN_PATH } from '@/settings/admin-panel/apps/constants/ApplicationRegistrationAdminPath'; -import { SettingsPageLayout } from '@/settings/components/layout/SettingsPageLayout'; -import { getSettingsPath } from 'twenty-shared/utils'; -import { SettingsPath } from 'twenty-shared/types'; -import { SettingsSkeletonLoader } from '@/settings/components/SettingsSkeletonLoader'; -import { NotFound } from '~/pages/not-found/NotFound'; -import { ApplicationRegistrationConfigVariableEditForm } from '@/settings/application-registrations/components/ApplicationRegistrationConfigVariableEditForm'; - -export const SettingsAdminApplicationRegistrationConfigVariableDetail = () => { - const { t } = useLingui(); - const apolloAdminClient = useApolloAdminClient(); - - const { variableKey, applicationRegistrationId = '' } = useParams<{ - applicationRegistrationId: string; - variableKey: string; - }>(); - - const { data: applicationRegistrationData, loading: registrationLoading } = - useQuery(FindOneAdminApplicationRegistrationDocument, { - client: apolloAdminClient, - variables: { id: applicationRegistrationId }, - skip: !applicationRegistrationId, - }); - - const registration = - applicationRegistrationData?.findOneAdminApplicationRegistration; - - const { data: variablesData, loading: variablesLoading } = useQuery( - FindAdminApplicationRegistrationVariablesDocument, - { - client: apolloAdminClient, - variables: { applicationRegistrationId }, - skip: !applicationRegistrationId, - }, - ); - - const variable = ( - variablesData?.findAdminApplicationRegistrationVariables ?? [] - ).find((variable) => variable.key === variableKey); - - const [updateVariable] = useMutation( - UpdateAdminApplicationRegistrationVariableDocument, - { - client: apolloAdminClient, - refetchQueries: [FindAdminApplicationRegistrationVariablesDocument], - }, - ); - - if (registrationLoading || variablesLoading) { - return ; - } - - if (!variable || !registration) { - return ; - } - - const onUpdateVariable = async ( - id: string, - update: { value: string; resetValue?: boolean }, - ) => { - await updateVariable({ - variables: { input: { id, update } }, - }); - }; - - return ( - - - - ); -}; diff --git a/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx b/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx deleted file mode 100644 index 088c62fbd6..0000000000 --- a/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { useLingui } from '@lingui/react/macro'; -import { useParams } from 'react-router-dom'; -import { - FindApplicationRegistrationVariablesDocument, - FindOneApplicationRegistrationDocument, - UpdateApplicationRegistrationVariableDocument, -} from '~/generated-metadata/graphql'; -import { useMutation, useQuery } from '@apollo/client/react'; -import { SettingsPageLayout } from '@/settings/components/layout/SettingsPageLayout'; -import { getSettingsPath } from 'twenty-shared/utils'; -import { SettingsPath } from 'twenty-shared/types'; -import { SettingsSkeletonLoader } from '@/settings/components/SettingsSkeletonLoader'; -import { NotFound } from '~/pages/not-found/NotFound'; -import { ApplicationRegistrationConfigVariableEditForm } from '@/settings/application-registrations/components/ApplicationRegistrationConfigVariableEditForm'; - -export const SettingsApplicationRegistrationConfigVariableDetail = () => { - const { t } = useLingui(); - - const { variableKey, applicationRegistrationId = '' } = useParams<{ - applicationRegistrationId: string; - variableKey: string; - }>(); - - const { data: applicationRegistrationData, loading: registrationLoading } = - useQuery(FindOneApplicationRegistrationDocument, { - variables: { id: applicationRegistrationId }, - skip: !applicationRegistrationId, - }); - - const registration = - applicationRegistrationData?.findOneApplicationRegistration; - - const { data: variablesData, loading: variablesLoading } = useQuery( - FindApplicationRegistrationVariablesDocument, - { - variables: { applicationRegistrationId }, - skip: !applicationRegistrationId, - }, - ); - - const variable = ( - variablesData?.findApplicationRegistrationVariables ?? [] - ).find((variable) => variable.key === variableKey); - - const [updateVariable] = useMutation( - UpdateApplicationRegistrationVariableDocument, - { - refetchQueries: [FindApplicationRegistrationVariablesDocument], - }, - ); - - if (registrationLoading || variablesLoading) { - return ; - } - - if (!variable || !registration) { - return ; - } - - const onUpdateVariable = async ( - id: string, - update: { value: string; resetValue?: boolean }, - ) => { - await updateVariable({ - variables: { input: { id, update } }, - }); - }; - - return ( - - - - ); -}; diff --git a/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationVariableInput.tsx b/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationVariableInput.tsx new file mode 100644 index 0000000000..7987c330e8 --- /dev/null +++ b/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationVariableInput.tsx @@ -0,0 +1,190 @@ +import { FormArrayFieldInput } from '@/object-record/record-field/ui/form-types/components/FormArrayFieldInput'; +import { FormBooleanFieldInput } from '@/object-record/record-field/ui/form-types/components/FormBooleanFieldInput'; +import { FormDateFieldInput } from '@/object-record/record-field/ui/form-types/components/FormDateFieldInput'; +import { FormDateTimeFieldInput } from '@/object-record/record-field/ui/form-types/components/FormDateTimeFieldInput'; +import { FormMultiSelectFieldInput } from '@/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput'; +import { FormNumberFieldInput } from '@/object-record/record-field/ui/form-types/components/FormNumberFieldInput'; +import { FormRawJsonFieldInput } from '@/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput'; +import { FormRichTextFieldInput } from '@/object-record/record-field/ui/form-types/components/FormRichTextFieldInput'; +import { FormSelectFieldInput } from '@/object-record/record-field/ui/form-types/components/FormSelectFieldInput'; +import { type FieldRichTextValue } from '@/object-record/record-field/ui/types/FieldMetadata'; +import { TextInput } from '@/ui/input/components/TextInput'; +import { t } from '@lingui/core/macro'; +import { + type ApplicationVariableOption, + deserializeApplicationVariableValue, +} from 'twenty-shared/application'; +import { FieldMetadataType } from 'twenty-shared/types'; +import { isDefined } from 'twenty-shared/utils'; +import { type SelectOption } from 'twenty-ui/input'; + +type SettingsApplicationVariableInputProps = { + type?: string | null; + value: string; + options?: ApplicationVariableOption[] | null; + onChange: (serializedValue: string) => void; + placeholder?: string; + disabled?: boolean; +}; + +const toSelectOptions = ( + options: ApplicationVariableOption[] | null | undefined, +): SelectOption[] => + (options ?? []).map((option) => ({ + label: option.label, + value: option.value, + })); + +const parseStringArray = (value: string): string[] => { + const parsed = deserializeApplicationVariableValue( + value, + FieldMetadataType.MULTI_SELECT, + ); + + return Array.isArray(parsed) ? (parsed as string[]) : []; +}; + +const parseRichTextValue = (value: string): FieldRichTextValue => { + try { + const parsed = JSON.parse(value) as Partial; + + if (isDefined(parsed) && typeof parsed === 'object') { + const blocknote = + typeof parsed.blocknote === 'string' ? parsed.blocknote : null; + const markdown = + typeof parsed.markdown === 'string' ? parsed.markdown : null; + + return { blocknote, markdown }; + } + } catch { + return { blocknote: null, markdown: value === '' ? null : value }; + } + + return { blocknote: null, markdown: value === '' ? null : value }; +}; + +export const SettingsApplicationVariableInput = ({ + type, + value, + options, + onChange, + placeholder, + disabled, +}: SettingsApplicationVariableInputProps) => { + const fieldType = (type as FieldMetadataType) ?? FieldMetadataType.TEXT; + + switch (fieldType) { + case FieldMetadataType.BOOLEAN: + return ( + + onChange( + newValue === true ? 'true' : newValue === false ? 'false' : '', + ) + } + readonly={disabled} + /> + ); + + case FieldMetadataType.NUMBER: + case FieldMetadataType.NUMERIC: + return ( + + onChange(isDefined(newValue) ? String(newValue) : '') + } + placeholder={placeholder} + readonly={disabled} + /> + ); + + case FieldMetadataType.DATE: + return ( + onChange(newValue ?? '')} + placeholder={placeholder} + readonly={disabled} + /> + ); + + case FieldMetadataType.DATE_TIME: + return ( + onChange(newValue ?? '')} + placeholder={placeholder} + readonly={disabled} + /> + ); + + case FieldMetadataType.SELECT: + return ( + onChange(newValue ?? '')} + readonly={disabled} + isNullable + /> + ); + + case FieldMetadataType.MULTI_SELECT: + return ( + + onChange(Array.isArray(newValue) ? JSON.stringify(newValue) : '') + } + placeholder={placeholder} + readonly={disabled} + /> + ); + + case FieldMetadataType.ARRAY: + return ( + + onChange(Array.isArray(newValue) ? JSON.stringify(newValue) : '') + } + placeholder={placeholder} + readonly={disabled} + /> + ); + + case FieldMetadataType.RAW_JSON: + return ( + onChange(newValue ?? '')} + placeholder={placeholder} + readonly={disabled} + /> + ); + + case FieldMetadataType.RICH_TEXT: + return ( + onChange(JSON.stringify(newValue))} + placeholder={placeholder} + readonly={disabled} + /> + ); + + default: + return ( + + ); + } +}; diff --git a/packages/twenty-front/src/pages/settings/applications/hooks/__tests__/useUpdateOneApplicationVariable.test.tsx b/packages/twenty-front/src/pages/settings/applications/hooks/__tests__/useUpdateOneApplicationVariable.test.tsx index ad1e321bf1..4797c1f25c 100644 --- a/packages/twenty-front/src/pages/settings/applications/hooks/__tests__/useUpdateOneApplicationVariable.test.tsx +++ b/packages/twenty-front/src/pages/settings/applications/hooks/__tests__/useUpdateOneApplicationVariable.test.tsx @@ -48,6 +48,7 @@ const buildApplication = (variableValue: string): Application => ({ value: variableValue, description: '', isSecret: false, + type: 'TEXT', }, ], agents: [], diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx index 174425e2eb..901d20910e 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx @@ -1,8 +1,8 @@ -import { TextInput } from '@/ui/input/components/TextInput'; import { styled } from '@linaria/react'; import { t } from '@lingui/core/macro'; import { isNonEmptyString } from '@sniptt/guards'; import { useContext, useState } from 'react'; +import { type ApplicationVariableOption } from 'twenty-shared/application'; import { IconInfoCircle } from 'twenty-ui/icon'; import { AppTooltip, TooltipDelay } from 'twenty-ui/surfaces'; import { H2Title } from 'twenty-ui/typography'; @@ -10,6 +10,7 @@ import { Section } from 'twenty-ui/layout'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; import { useDebouncedCallback } from 'use-debounce'; import { type ApplicationVariable } from '~/generated-metadata/graphql'; +import { SettingsApplicationVariableInput } from '~/pages/settings/applications/components/SettingsApplicationVariableInput'; const StyledContainer = styled.div` display: flex; @@ -80,8 +81,15 @@ export const SettingsApplicationDetailEnvironmentVariablesTable = ({ )} - { setEditedEnvVariables((prevState) => prevState.map((val) => { @@ -94,7 +102,6 @@ export const SettingsApplicationDetailEnvironmentVariablesTable = ({ onUpdateDebounced({ ...editedEnvVariable, value: newValue }); }} placeholder={t`Value`} - fullWidth /> ); diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx index 0e79e56a66..32402f7611 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx @@ -1,16 +1,90 @@ import type { ApplicationRegistrationData } from '~/pages/settings/applications/tabs/types/ApplicationRegistrationData'; -import { useQuery } from '@apollo/client/react'; -import { FindApplicationRegistrationVariablesDocument } from '~/generated-metadata/graphql'; -import { FindAdminApplicationRegistrationVariablesDocument } from '~/generated-admin/graphql'; +import { useMutation, useQuery } from '@apollo/client/react'; +import { + FindApplicationRegistrationVariablesDocument, + UpdateApplicationRegistrationVariableDocument, +} from '~/generated-metadata/graphql'; +import { + FindAdminApplicationRegistrationVariablesDocument, + UpdateAdminApplicationRegistrationVariableDocument, +} from '~/generated-admin/graphql'; +import { styled } from '@linaria/react'; import { Section } from 'twenty-ui/layout'; -import { Status } from 'twenty-ui/data-display'; import { H2Title } from 'twenty-ui/typography'; +import { IconInfoCircle } from 'twenty-ui/icon'; +import { AppTooltip, TooltipDelay } from 'twenty-ui/surfaces'; +import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; import { useLingui } from '@lingui/react/macro'; -import { getSettingsPath } from 'twenty-shared/utils'; -import { SettingsPath } from 'twenty-shared/types'; -import { ConfigVariableTable } from '@/settings/config-variables/components/ConfigVariableTable'; +import { isNonEmptyString } from '@sniptt/guards'; +import { useContext, useState } from 'react'; +import { type ApplicationVariableOption } from 'twenty-shared/application'; +import { useDebouncedCallback } from 'use-debounce'; +import { SettingsApplicationVariableInput } from '~/pages/settings/applications/components/SettingsApplicationVariableInput'; import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient'; +type ConfigVariable = { + id: string; + key: string; + value?: string | null; + type?: string | null; + options?: ApplicationVariableOption[] | null; + isSecret?: boolean | null; + isFilled?: boolean | null; +}; + +const ConfigVariableInput = ({ + variable, + onUpdate, +}: { + variable: ConfigVariable; + onUpdate: (id: string, value: string) => void; +}) => { + const { t } = useLingui(); + + const isSecretFilled = + variable.isSecret === true && variable.isFilled === true; + + const [value, setValue] = useState( + isSecretFilled ? '' : (variable.value ?? ''), + ); + + const onUpdateDebounced = useDebouncedCallback((newValue: string) => { + onUpdate(variable.id, newValue); + }, 250); + + return ( + { + setValue(newValue); + onUpdateDebounced(newValue); + }} + placeholder={isSecretFilled ? (variable.value ?? undefined) : t`Value`} + /> + ); +}; + +const StyledContainer = styled.div` + display: flex; + flex-direction: column; + gap: ${themeCssVariables.spacing[4]}; +`; + +const StyledLabelRow = styled.div` + align-items: center; + display: flex; + gap: ${themeCssVariables.spacing[1]}; + margin-bottom: ${themeCssVariables.spacing[1]}; +`; + +const StyledLabel = styled.span` + color: ${themeCssVariables.font.color.light}; + font-size: 11px; + font-weight: ${themeCssVariables.font.weight.semiBold}; +`; + export const SettingsApplicationRegistrationConfigTab = ({ registration, fromAdmin, @@ -19,6 +93,7 @@ export const SettingsApplicationRegistrationConfigTab = ({ fromAdmin?: boolean; }) => { const { t } = useLingui(); + const { theme } = useContext(ThemeContext); const apolloAdminClient = useApolloAdminClient(); const applicationRegistrationId = registration.id; @@ -40,24 +115,36 @@ export const SettingsApplicationRegistrationConfigTab = ({ }, ); + const [updateWorkspaceVariable] = useMutation( + UpdateApplicationRegistrationVariableDocument, + { + refetchQueries: [FindApplicationRegistrationVariablesDocument], + }, + ); + + const [updateAdminVariable] = useMutation( + UpdateAdminApplicationRegistrationVariableDocument, + { + client: apolloAdminClient, + refetchQueries: [FindAdminApplicationRegistrationVariablesDocument], + }, + ); + const variables = fromAdmin ? (adminVariablesData?.findAdminApplicationRegistrationVariables ?? []) : (workspaceVariablesData?.findApplicationRegistrationVariables ?? []); - const configVariables = variables.map((variable) => ({ - name: variable.key, - description: variable.description, - value: variable.value ?? , - to: getSettingsPath( - fromAdmin - ? SettingsPath.AdminPanelApplicationRegistrationConfigVariableDetails - : SettingsPath.ApplicationRegistrationConfigVariableDetails, - { - applicationRegistrationId, - variableKey: variable.key, - }, - ), - })); + const handleUpdate = (id: string, value: string) => { + if (fromAdmin === true) { + updateAdminVariable({ + variables: { input: { id, update: { value } } }, + }); + } else { + updateWorkspaceVariable({ + variables: { input: { id, update: { value } } }, + }); + } + }; return ( variables.length > 0 && ( @@ -66,7 +153,41 @@ export const SettingsApplicationRegistrationConfigTab = ({ title={t`Server Variables`} description={t`Server variables are applied to all workspace installations.`} /> - + + {variables.map((variable) => { + const tooltipId = `config-var-desc-${variable.key}`; + return ( +
+ + {variable.key} + {isNonEmptyString(variable.description) && ( + <> + + + + )} + + +
+ ); + })} +
) ); diff --git a/packages/twenty-sdk/src/cli/__tests__/apps/rich-app/__integration__/app-dev/expected-manifest.ts b/packages/twenty-sdk/src/cli/__tests__/apps/rich-app/__integration__/app-dev/expected-manifest.ts index 9a4f8f0a35..526b0008ed 100644 --- a/packages/twenty-sdk/src/cli/__tests__/apps/rich-app/__integration__/app-dev/expected-manifest.ts +++ b/packages/twenty-sdk/src/cli/__tests__/apps/rich-app/__integration__/app-dev/expected-manifest.ts @@ -55,6 +55,82 @@ export const EXPECTED_MANIFEST: Manifest = { universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de', value: 'Alex Karp', }, + GREETING_TEXT: { + universalIdentifier: 'ad19edc5-4cc5-4003-a996-aef53a5c8de0', + description: 'Free text shown on the postcard', + type: FieldMetadataType.TEXT, + value: 'Hello from Rich App', + }, + ENABLE_TRACKING: { + universalIdentifier: 'b9c58bb2-58c3-4c6c-9877-498ea6c03fde', + description: 'Toggle delivery tracking', + type: FieldMetadataType.BOOLEAN, + value: true, + }, + MAX_POSTCARDS: { + universalIdentifier: '5f4497e4-9030-4085-85eb-2c48b8d53713', + description: 'Maximum postcards per batch', + type: FieldMetadataType.NUMBER, + value: 10, + }, + DISCOUNT_RATE: { + universalIdentifier: 'd32f810f-06bb-4d29-b0ee-1dc4228f7cb8', + description: 'Bulk discount rate applied at checkout', + type: FieldMetadataType.NUMERIC, + value: 2.5, + }, + CAMPAIGN_START_DATE: { + universalIdentifier: '5aa4fcec-e8a3-4bc1-9c7f-762e1f9dfb40', + description: 'Date the campaign starts', + type: FieldMetadataType.DATE, + value: '2026-01-01', + }, + CAMPAIGN_START_AT: { + universalIdentifier: '273d0cfd-d6ab-4148-8816-c4a5d4b1d600', + description: 'Exact moment the campaign starts', + type: FieldMetadataType.DATE_TIME, + value: '2026-01-01T09:00:00.000Z', + }, + DEFAULT_REGION: { + universalIdentifier: '76c5c321-b6b6-46eb-b4fc-f9f04bb04227', + description: 'Default shipping region', + type: FieldMetadataType.SELECT, + options: [ + { label: 'Europe', value: 'eu' }, + { label: 'United States', value: 'us' }, + { label: 'Asia-Pacific', value: 'apac' }, + ], + value: 'eu', + }, + ENABLED_CHANNELS: { + universalIdentifier: '706a2b08-8284-4715-8bc0-922a99cb26af', + description: 'Channels the app is allowed to use', + type: FieldMetadataType.MULTI_SELECT, + options: [ + { label: 'Email', value: 'email' }, + { label: 'SMS', value: 'sms' }, + { label: 'Postcard', value: 'postcard' }, + ], + value: ['email', 'postcard'], + }, + ALLOWED_TAGS: { + universalIdentifier: 'c1c8a4c9-9130-4ab8-8dce-18d2b50879ed', + description: 'Free-form tags applied to recipients', + type: FieldMetadataType.ARRAY, + value: ['vip', 'returning'], + }, + PROVIDER_CONFIG: { + universalIdentifier: '183d5285-c70c-4f29-96e0-c68659fbe5ae', + description: 'Raw JSON configuration for the printing provider', + type: FieldMetadataType.RAW_JSON, + value: { retries: 3, timeoutMs: 5000 }, + }, + WELCOME_MESSAGE: { + universalIdentifier: '25a66ff5-8458-498e-9e7e-33ea458a6f3c', + description: 'Rich text welcome message', + type: FieldMetadataType.RICH_TEXT, + value: { blocknote: null, markdown: 'Welcome to **Rich App**!' }, + }, }, serverVariables: { POSTCARD_API_KEY: { @@ -67,6 +143,76 @@ export const EXPECTED_MANIFEST: Manifest = { isSecret: false, isRequired: false, }, + POSTCARD_DELIVERY_SPEED: { + description: 'Delivery speed requested from the provider', + type: FieldMetadataType.SELECT, + options: [ + { label: 'Standard', value: 'standard' }, + { label: 'Express', value: 'express' }, + ], + isSecret: false, + isRequired: true, + }, + POSTCARD_DAILY_LIMIT: { + description: 'Maximum postcards the provider will accept per day', + type: FieldMetadataType.NUMBER, + isSecret: false, + isRequired: false, + }, + POSTCARD_UNIT_PRICE: { + description: 'Price charged by the provider per postcard', + type: FieldMetadataType.NUMERIC, + isSecret: false, + isRequired: false, + }, + POSTCARD_SANDBOX_MODE: { + description: + 'Send postcards through the provider sandbox instead of production', + type: FieldMetadataType.BOOLEAN, + isSecret: false, + isRequired: false, + }, + POSTCARD_CONTRACT_START_DATE: { + description: 'Date the provider contract starts', + type: FieldMetadataType.DATE, + isSecret: false, + isRequired: false, + }, + POSTCARD_CONTRACT_RENEWAL_AT: { + description: 'Exact moment the provider contract renews', + type: FieldMetadataType.DATE_TIME, + isSecret: false, + isRequired: false, + }, + POSTCARD_ENABLED_REGIONS: { + description: 'Regions the provider is allowed to ship to', + type: FieldMetadataType.MULTI_SELECT, + options: [ + { label: 'Europe', value: 'eu' }, + { label: 'United States', value: 'us' }, + { label: 'Asia-Pacific', value: 'apac' }, + ], + isSecret: false, + isRequired: false, + }, + POSTCARD_WEBHOOK_EVENTS: { + description: 'Provider webhook events the app subscribes to', + type: FieldMetadataType.ARRAY, + isSecret: false, + isRequired: false, + }, + POSTCARD_PROVIDER_CONFIG: { + description: 'Raw JSON configuration for the printing provider', + type: FieldMetadataType.RAW_JSON, + isSecret: false, + isRequired: false, + }, + POSTCARD_INVOICE_NOTE: { + description: 'Rich text note appended to provider invoices', + type: FieldMetadataType.RICH_TEXT, + isSecret: false, + isRequired: false, + }, }, description: 'A simple rich app', displayName: 'Rich App', diff --git a/packages/twenty-sdk/src/sdk/define/application/define-application.ts b/packages/twenty-sdk/src/sdk/define/application/define-application.ts index e41b8b7660..eabd33f78d 100644 --- a/packages/twenty-sdk/src/sdk/define/application/define-application.ts +++ b/packages/twenty-sdk/src/sdk/define/application/define-application.ts @@ -1,3 +1,6 @@ +import { FieldMetadataType } from 'twenty-shared/types'; +import { isNonEmptyArray } from 'twenty-shared/utils'; + import { type ApplicationConfig } from '@/sdk/define/application/application-config'; import { type DefineEntity } from '@/sdk/define/common/types/define-entity.type'; import { createValidationResult } from '@/sdk/define/common/utils/create-validation-result'; @@ -14,6 +17,20 @@ export const defineApplication: DefineEntity = (config) => { errors.push('Application must have a non empty display name'); } + for (const [variableName, variable] of Object.entries( + config.applicationVariables ?? {}, + )) { + const requiresOptions = + variable.type === FieldMetadataType.SELECT || + variable.type === FieldMetadataType.MULTI_SELECT; + + if (requiresOptions && !isNonEmptyArray(variable.options)) { + errors.push( + `Application variable "${variableName}" of type ${variable.type} must define non-empty options`, + ); + } + } + if (config.defaultRoleUniversalIdentifier) { warnings.push( '`defaultRoleUniversalIdentifier` on defineApplication() is deprecated. Use defineApplicationRole() in your role file instead.', diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/2-19/2-19-instance-command-fast-1783065514000-add-type-and-options-to-application-variables.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/2-19/2-19-instance-command-fast-1783065514000-add-type-and-options-to-application-variables.ts new file mode 100644 index 0000000000..935b7792bd --- /dev/null +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/2-19/2-19-instance-command-fast-1783065514000-add-type-and-options-to-application-variables.ts @@ -0,0 +1,39 @@ +import { QueryRunner } from 'typeorm'; + +import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator'; +import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface'; + +@RegisteredInstanceCommand('2.19.0', 1783065514000) +export class AddTypeAndOptionsToApplicationVariablesFastInstanceCommand + implements FastInstanceCommand +{ + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "core"."applicationVariable" ADD COLUMN IF NOT EXISTS "type" text NOT NULL DEFAULT 'TEXT'`, + ); + await queryRunner.query( + `ALTER TABLE "core"."applicationVariable" ADD COLUMN IF NOT EXISTS "options" jsonb`, + ); + await queryRunner.query( + `ALTER TABLE "core"."applicationRegistrationVariable" ADD COLUMN IF NOT EXISTS "type" text NOT NULL DEFAULT 'TEXT'`, + ); + await queryRunner.query( + `ALTER TABLE "core"."applicationRegistrationVariable" ADD COLUMN IF NOT EXISTS "options" jsonb`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "core"."applicationRegistrationVariable" DROP COLUMN IF EXISTS "options"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."applicationRegistrationVariable" DROP COLUMN IF EXISTS "type"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."applicationVariable" DROP COLUMN IF EXISTS "options"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."applicationVariable" DROP COLUMN IF EXISTS "type"`, + ); + } +} diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/2-19/add-type-and-options-to-application-variables-upgrade-command-name.constant.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/2-19/add-type-and-options-to-application-variables-upgrade-command-name.constant.ts new file mode 100644 index 0000000000..439e8e98f7 --- /dev/null +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/2-19/add-type-and-options-to-application-variables-upgrade-command-name.constant.ts @@ -0,0 +1,2 @@ +export const ADD_TYPE_AND_OPTIONS_TO_APPLICATION_VARIABLES_UPGRADE_COMMAND_NAME = + '2.19.0_AddTypeAndOptionsToApplicationVariablesFastInstanceCommand_1783065514000'; diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts index 978a6e53d8..ee2be9706c 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/instance-commands.constant.ts @@ -44,6 +44,7 @@ import { BackfillTsVectorFieldMetadataIdOnSearchFieldMetadataSlowInstanceCommand import { AddMetadataOverridesColumnFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-19/2-19-instance-command-fast-1782986475000-add-metadata-overrides-column'; import { AddLastStreamErrorToAgentChatThreadFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-19/2-19-instance-command-fast-1782996657000-add-last-stream-error-to-agent-chat-thread'; import { BackfillMetadataOverridesSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-19/2-19-instance-command-slow-1782986476000-backfill-metadata-overrides'; +import { AddTypeAndOptionsToApplicationVariablesFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-19/2-19-instance-command-fast-1783065514000-add-type-and-options-to-application-variables'; import { AddCacheTokensToAgentChatThreadFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-2/2-2-instance-command-fast-1777455269302-add-cache-tokens-to-agent-chat-thread'; import { AddLogoToApplicationFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-2/2-2-instance-command-fast-1777539664664-add-logo-to-application'; import { AddSubFieldNameToViewSortEarlyFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-3/2-3-instance-command-fast-1747234200000-add-sub-field-name-to-view-sort'; @@ -182,4 +183,5 @@ export const INSTANCE_COMMANDS = [ BackfillMetadataOverridesSlowInstanceCommand, AddLastStreamErrorToAgentChatThreadFastInstanceCommand, DropMetadataStandardOverridesColumnFastInstanceCommand, + AddTypeAndOptionsToApplicationVariablesFastInstanceCommand, ]; diff --git a/packages/twenty-server/src/engine/core-modules/application/application-manifest/converters/from-application-variable-manifest-to-universal-flat-application-variable.util.ts b/packages/twenty-server/src/engine/core-modules/application/application-manifest/converters/from-application-variable-manifest-to-universal-flat-application-variable.util.ts index b253667c26..1fd531d691 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-manifest/converters/from-application-variable-manifest-to-universal-flat-application-variable.util.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-manifest/converters/from-application-variable-manifest-to-universal-flat-application-variable.util.ts @@ -1,3 +1,9 @@ +import { FieldMetadataType } from 'twenty-shared/types'; +import { + type ApplicationVariableOption, + type ApplicationVariableType, +} from 'twenty-shared/application'; + import { type EncryptedString } from 'src/engine/core-modules/secret-encryption/branded-strings/encrypted-string.type'; import { type UniversalFlatApplicationVariable } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-application-variable.type'; @@ -8,6 +14,8 @@ export const fromApplicationVariableManifestToUniversalFlatApplicationVariable = description, encryptedValue, isSecret, + type, + options, applicationUniversalIdentifier, now, }: { @@ -16,6 +24,8 @@ export const fromApplicationVariableManifestToUniversalFlatApplicationVariable = description?: string; encryptedValue: EncryptedString | ''; isSecret?: boolean; + type?: ApplicationVariableType; + options?: ApplicationVariableOption[]; applicationUniversalIdentifier: string; now: string; }): UniversalFlatApplicationVariable => { @@ -26,6 +36,8 @@ export const fromApplicationVariableManifestToUniversalFlatApplicationVariable = value: encryptedValue, description: description ?? '', isSecret: isSecret ?? false, + type: type ?? FieldMetadataType.TEXT, + options: options ?? null, createdAt: now, updatedAt: now, }; diff --git a/packages/twenty-server/src/engine/core-modules/application/application-manifest/services/compute-application-manifest-all-universal-flat-entity-maps.service.ts b/packages/twenty-server/src/engine/core-modules/application/application-manifest/services/compute-application-manifest-all-universal-flat-entity-maps.service.ts index abdb91758f..ac5f52c969 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-manifest/services/compute-application-manifest-all-universal-flat-entity-maps.service.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-manifest/services/compute-application-manifest-all-universal-flat-entity-maps.service.ts @@ -1,7 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { type Manifest } from 'twenty-shared/application'; +import { + type Manifest, + serializeApplicationVariableValue, +} from 'twenty-shared/application'; import { MAX_CUSTOM_INDEXES_PER_OBJECT } from 'twenty-shared/constants'; +import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { fromApplicationVariableManifestToUniversalFlatApplicationVariable } from 'src/engine/core-modules/application/application-manifest/converters/from-application-variable-manifest-to-universal-flat-application-variable.util'; @@ -604,13 +608,18 @@ export class ComputeApplicationManifestAllUniversalFlatEntityMapsService { for (const [key, applicationVariableManifest] of Object.entries( manifest.application.applicationVariables ?? {}, )) { + const type = applicationVariableManifest.type ?? FieldMetadataType.TEXT; + const plaintextValue = 'value' in applicationVariableManifest - ? applicationVariableManifest.value - : undefined; + ? serializeApplicationVariableValue( + applicationVariableManifest.value, + type, + ) + : ''; const isSecret = applicationVariableManifest.isSecret; - const rawValue = isSecret ? '' : (plaintextValue ?? ''); + const rawValue = isSecret ? '' : plaintextValue; addUniversalFlatEntityToUniversalFlatEntityMapsThroughMutationOrThrow({ universalFlatEntity: @@ -624,6 +633,8 @@ export class ComputeApplicationManifestAllUniversalFlatEntityMapsService { ), description: applicationVariableManifest.description, isSecret, + type, + options: applicationVariableManifest.options, applicationUniversalIdentifier, now, }), diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity.ts index e51c662173..d7b0ea1a9b 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity.ts @@ -15,6 +15,13 @@ import { UpdateDateColumn, } from 'typeorm'; +import { GraphQLJSON } from 'graphql-type-json'; +import { FieldMetadataType } from 'twenty-shared/types'; +import { + type ApplicationVariableOption, + type ApplicationVariableType, +} from 'twenty-shared/application'; + import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity'; import { type EncryptedString } from 'src/engine/core-modules/secret-encryption/branded-strings/encrypted-string.type'; @@ -57,6 +64,14 @@ export class ApplicationRegistrationVariableEntity { @Column({ nullable: false, type: 'boolean', default: false }) isRequired: boolean; + @Field(() => String) + @Column({ nullable: false, type: 'text', default: FieldMetadataType.TEXT }) + type: ApplicationVariableType; + + @Field(() => GraphQLJSON, { nullable: true }) + @Column({ nullable: true, type: 'jsonb', default: null }) + options: ApplicationVariableOption[] | null; + @Field() get isFilled(): boolean { return this.encryptedValue !== ''; diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts index 9f662b5880..c2cc87afc7 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts @@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { type ServerVariables } from 'twenty-shared/application'; +import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { In, Not, type Repository } from 'typeorm'; @@ -136,6 +137,8 @@ export class ApplicationRegistrationVariableService { description: schema.description ?? '', isSecret: schema.isSecret ?? true, isRequired: schema.isRequired ?? false, + type: schema.type ?? FieldMetadataType.TEXT, + options: schema.options ?? null, }); } else { await this.variableRepository.save( @@ -146,6 +149,8 @@ export class ApplicationRegistrationVariableService { description: schema.description ?? '', isSecret: schema.isSecret ?? true, isRequired: schema.isRequired ?? false, + type: schema.type ?? FieldMetadataType.TEXT, + options: schema.options ?? null, }), ); } diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/dtos/application-registration-variable.dto.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/dtos/application-registration-variable.dto.ts index 24863d8ec5..24e2f4352d 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/dtos/application-registration-variable.dto.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/dtos/application-registration-variable.dto.ts @@ -1,7 +1,9 @@ import { Field, ObjectType } from '@nestjs/graphql'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { IsBoolean, IsString } from 'class-validator'; +import { IsBoolean, IsOptional, IsString } from 'class-validator'; import { IDField } from '@ptc-org/nestjs-query-graphql'; +import { GraphQLJSON } from 'graphql-type-json'; +import { type ApplicationVariableOption } from 'twenty-shared/application'; @ObjectType() export class ApplicationRegistrationVariableDTO { @@ -32,6 +34,14 @@ export class ApplicationRegistrationVariableDTO { @Field() isFilled: boolean; + @IsString() + @Field() + type: string; + + @IsOptional() + @Field(() => GraphQLJSON, { nullable: true }) + options?: ApplicationVariableOption[] | null; + @Field(() => Date) createdAt: Date; diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration/application-tarball.service.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration/application-tarball.service.ts index 718ba0c583..be0b9bc126 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-registration/application-tarball.service.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-registration/application-tarball.service.ts @@ -9,6 +9,7 @@ import semver from 'semver'; import { FileFolder } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { Repository } from 'typeorm'; +import { type QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity'; import { v4 } from 'uuid'; import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity'; @@ -210,7 +211,7 @@ export class ApplicationTarballService { isListed: false, isFeatured: false, ownerWorkspaceId: params.ownerWorkspaceId, - }); + } as QueryDeepPartialEntity); if (manifest.application?.serverVariables) { await this.applicationRegistrationVariableService.syncVariableSchemas( diff --git a/packages/twenty-server/src/engine/core-modules/application/application-variable/application-variable.entity.ts b/packages/twenty-server/src/engine/core-modules/application/application-variable/application-variable.entity.ts index ac19168543..9613a0d5cd 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-variable/application-variable.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-variable/application-variable.entity.ts @@ -10,8 +10,16 @@ import { UpdateDateColumn, } from 'typeorm'; +import { FieldMetadataType } from 'twenty-shared/types'; +import { + type ApplicationVariableOption, + type ApplicationVariableType, +} from 'twenty-shared/application'; + +import { ADD_TYPE_AND_OPTIONS_TO_APPLICATION_VARIABLES_UPGRADE_COMMAND_NAME } from 'src/database/commands/upgrade-version-command/2-19/add-type-and-options-to-application-variables-upgrade-command-name.constant'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; import { type EncryptedString } from 'src/engine/core-modules/secret-encryption/branded-strings/encrypted-string.type'; +import { WasIntroducedInUpgrade } from 'src/engine/core-modules/upgrade/decorators/was-introduced-in-upgrade.decorator'; import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ @@ -42,6 +50,20 @@ export class ApplicationVariableEntity extends SyncableEntity { @Column({ nullable: false, type: 'boolean', default: false }) isSecret: boolean; + @WasIntroducedInUpgrade({ + upgradeCommandName: + ADD_TYPE_AND_OPTIONS_TO_APPLICATION_VARIABLES_UPGRADE_COMMAND_NAME, + }) + @Column({ nullable: false, type: 'text', default: FieldMetadataType.TEXT }) + type: ApplicationVariableType; + + @WasIntroducedInUpgrade({ + upgradeCommandName: + ADD_TYPE_AND_OPTIONS_TO_APPLICATION_VARIABLES_UPGRADE_COMMAND_NAME, + }) + @Column({ nullable: true, type: 'jsonb', default: null }) + options: ApplicationVariableOption[] | null; + @CreateDateColumn({ type: 'timestamptz' }) createdAt: Date; diff --git a/packages/twenty-server/src/engine/core-modules/application/application-variable/dtos/application-variable.dto.ts b/packages/twenty-server/src/engine/core-modules/application/application-variable/dtos/application-variable.dto.ts index 82e2ba30f8..51f3092c87 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-variable/dtos/application-variable.dto.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-variable/dtos/application-variable.dto.ts @@ -1,7 +1,9 @@ import { Field, ObjectType } from '@nestjs/graphql'; -import { IsBoolean, IsString } from 'class-validator'; +import { IsBoolean, IsOptional, IsString } from 'class-validator'; +import { GraphQLJSON } from 'graphql-type-json'; import { IDField } from '@ptc-org/nestjs-query-graphql'; +import { type ApplicationVariableOption } from 'twenty-shared/application'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; @@ -25,4 +27,12 @@ export class ApplicationVariableEntityDTO { @IsBoolean() @Field() isSecret: boolean; + + @IsString() + @Field() + type: string; + + @IsOptional() + @Field(() => GraphQLJSON, { nullable: true }) + options?: ApplicationVariableOption[] | null; } diff --git a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/utils/__tests__/build-env-var.spec.ts b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/utils/__tests__/build-env-var.spec.ts index bd10fe56b8..f01e9e1c90 100644 --- a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/utils/__tests__/build-env-var.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-executor/utils/__tests__/build-env-var.spec.ts @@ -1,3 +1,5 @@ +import { FieldMetadataType } from 'twenty-shared/types'; + import { type EncryptedString } from 'src/engine/core-modules/secret-encryption/branded-strings/encrypted-string.type'; import { buildEnvVar } from 'src/engine/core-modules/logic-function/logic-function-executor/utils/build-env-var'; import { type SecretEncryptionService } from 'src/engine/core-modules/secret-encryption/secret-encryption.service'; @@ -37,6 +39,8 @@ describe('buildEnvVar', () => { `enc:v2:deadbeef:https://example.com|${workspaceA}` as EncryptedString, description: 'Public URL', isSecret: false, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceA, universalIdentifier: '00000000-0000-0000-0000-000000000000', @@ -50,6 +54,8 @@ describe('buildEnvVar', () => { value: `enc:v2:deadbeef:secret-123|${workspaceA}` as EncryptedString, description: 'API secret', isSecret: true, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceA, universalIdentifier: '00000000-0000-0000-0000-000000000000', @@ -63,6 +69,8 @@ describe('buildEnvVar', () => { value: `enc:v2:deadbeef:true|${workspaceA}` as EncryptedString, description: 'Debug flag', isSecret: false, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceA, universalIdentifier: '00000000-0000-0000-0000-000000000000', @@ -92,6 +100,8 @@ describe('buildEnvVar', () => { value: `enc:v2:deadbeef:value-a|${workspaceA}` as EncryptedString, description: '', isSecret: true, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceA, universalIdentifier: '00000000-0000-0000-0000-000000000000', @@ -105,6 +115,8 @@ describe('buildEnvVar', () => { value: `enc:v2:deadbeef:value-b|${workspaceB}` as EncryptedString, description: '', isSecret: true, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceB, universalIdentifier: '00000000-0000-0000-0000-000000000000', @@ -136,6 +148,8 @@ describe('buildEnvVar', () => { value: null as unknown as EncryptedString | '', description: '', isSecret: false, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceA, universalIdentifier: '00000000-0000-0000-0000-000000000000', @@ -149,6 +163,8 @@ describe('buildEnvVar', () => { value: undefined as unknown as EncryptedString | '', description: '', isSecret: false, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceA, universalIdentifier: '00000000-0000-0000-0000-000000000000', @@ -174,6 +190,8 @@ describe('buildEnvVar', () => { value: 123 as unknown as EncryptedString | '', description: '', isSecret: false, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: workspaceA, universalIdentifier: '00000000-0000-0000-0000-000000000000', diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap index f71072b464..1324163dcc 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap @@ -25,8 +25,12 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma "key", "description", "isSecret", + "type", + "options", + ], + "propertiesToStringify": [ + "options", ], - "propertiesToStringify": [], }, "commandMenuItem": { "propertiesToCompare": [ diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts index abc0a02ee5..723da97e14 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts @@ -1761,6 +1761,16 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = { toStringify: false, universalProperty: undefined, }, + type: { + toCompare: true, + toStringify: false, + universalProperty: undefined, + }, + options: { + toCompare: true, + toStringify: true, + universalProperty: undefined, + }, createdAt: { toCompare: false, toStringify: false, diff --git a/packages/twenty-server/src/engine/metadata-modules/front-component/utils/__tests__/strip-secret-from-application-variables.spec.ts b/packages/twenty-server/src/engine/metadata-modules/front-component/utils/__tests__/strip-secret-from-application-variables.spec.ts index c73de7c6e2..927e1711a9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/front-component/utils/__tests__/strip-secret-from-application-variables.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/front-component/utils/__tests__/strip-secret-from-application-variables.spec.ts @@ -1,3 +1,5 @@ +import { FieldMetadataType } from 'twenty-shared/types'; + import { type EncryptedString } from 'src/engine/core-modules/secret-encryption/branded-strings/encrypted-string.type'; import { type FlatApplicationVariable } from 'src/engine/metadata-modules/flat-application-variable/types/flat-application-variable.type'; import { stripSecretFromApplicationVariables } from 'src/engine/metadata-modules/front-component/utils/strip-secret-from-application-variables'; @@ -10,6 +12,8 @@ const makeFlatVariable = ( value: 'value' as EncryptedString, description: '', isSecret: false, + type: FieldMetadataType.TEXT, + options: null, applicationId: 'app-1', workspaceId: '00000000-0000-0000-0000-000000000000', universalIdentifier: '00000000-0000-0000-0000-000000000000', diff --git a/packages/twenty-shared/src/application/applicationVariablesType.ts b/packages/twenty-shared/src/application/applicationVariablesType.ts index 76a35fd706..2803fa49e6 100644 --- a/packages/twenty-shared/src/application/applicationVariablesType.ts +++ b/packages/twenty-shared/src/application/applicationVariablesType.ts @@ -1,16 +1,54 @@ import { type SyncableEntityOptions } from '@/application/syncableEntityOptionsType'; +import { FieldMetadataType } from '@/types/FieldMetadataType'; -type SecretApplicationVariable = SyncableEntityOptions & { - description?: string; - isSecret: true; +export const APPLICATION_VARIABLE_FIELD_METADATA_TYPES = [ + FieldMetadataType.TEXT, + FieldMetadataType.ARRAY, + FieldMetadataType.BOOLEAN, + FieldMetadataType.DATE, + FieldMetadataType.DATE_TIME, + FieldMetadataType.NUMBER, + FieldMetadataType.NUMERIC, + FieldMetadataType.RAW_JSON, + FieldMetadataType.RICH_TEXT, + FieldMetadataType.SELECT, + FieldMetadataType.MULTI_SELECT, +] as const; + +export type ApplicationVariableType = + (typeof APPLICATION_VARIABLE_FIELD_METADATA_TYPES)[number]; + +export type ApplicationVariableOption = { + label: string; + value: string; }; -type NonSecretApplicationVariable = SyncableEntityOptions & { - value?: string; - description?: string; - isSecret?: false; +export type ApplicationVariableValue = + | string + | number + | boolean + | string[] + | Record + | null; + +type TypedApplicationVariable = { + type?: ApplicationVariableType; + options?: ApplicationVariableOption[]; }; +type SecretApplicationVariable = SyncableEntityOptions & + TypedApplicationVariable & { + description?: string; + isSecret: true; + }; + +type NonSecretApplicationVariable = SyncableEntityOptions & + TypedApplicationVariable & { + value?: ApplicationVariableValue; + description?: string; + isSecret?: false; + }; + export type ApplicationVariable = | SecretApplicationVariable | NonSecretApplicationVariable; diff --git a/packages/twenty-shared/src/application/index.ts b/packages/twenty-shared/src/application/index.ts index 56398b7380..e0d0bb6b31 100644 --- a/packages/twenty-shared/src/application/index.ts +++ b/packages/twenty-shared/src/application/index.ts @@ -11,9 +11,13 @@ export type { AgentManifest } from './agentManifestType'; export type { AppConnection } from './appConnectionType'; export type { ApplicationManifest } from './applicationType'; export type { + ApplicationVariableType, + ApplicationVariableOption, + ApplicationVariableValue, ApplicationVariable, ApplicationVariables, } from './applicationVariablesType'; +export { APPLICATION_VARIABLE_FIELD_METADATA_TYPES } from './applicationVariablesType'; export type { AssetManifest } from './assetManifestType'; export type { ConnectionProviderManifest } from './connectionProviderManifestType'; export type { ConnectionProviderType } from './connectionProviderType'; @@ -122,6 +126,10 @@ export type { SkillManifest } from './skillManifestType'; export type { StoredOAuthConnectionProviderConfig } from './storedOAuthConnectionProviderConfigType'; export type { SyncableEntityOptions } from './syncableEntityOptionsType'; export type { ToolTriggerSettings } from './toolTriggerSettingsType'; +export { + serializeApplicationVariableValue, + deserializeApplicationVariableValue, +} from './utils/applicationVariableValueSerialization'; export type { ViewManifestFilterValue, ViewFieldManifest, diff --git a/packages/twenty-shared/src/application/server-variables.type.ts b/packages/twenty-shared/src/application/server-variables.type.ts index 8d0e37f655..479bb9f832 100644 --- a/packages/twenty-shared/src/application/server-variables.type.ts +++ b/packages/twenty-shared/src/application/server-variables.type.ts @@ -1,7 +1,14 @@ +import { + type ApplicationVariableOption, + type ApplicationVariableType, +} from '@/application/applicationVariablesType'; + type ServerVariableSchema = { description?: string; isSecret?: boolean; isRequired?: boolean; + type?: ApplicationVariableType; + options?: ApplicationVariableOption[]; }; export type ServerVariables = Record; diff --git a/packages/twenty-shared/src/application/utils/applicationVariableValueSerialization.ts b/packages/twenty-shared/src/application/utils/applicationVariableValueSerialization.ts new file mode 100644 index 0000000000..3eb31b0208 --- /dev/null +++ b/packages/twenty-shared/src/application/utils/applicationVariableValueSerialization.ts @@ -0,0 +1,86 @@ +import { + type ApplicationVariableType, + type ApplicationVariableValue, +} from '@/application/applicationVariablesType'; +import { FieldMetadataType } from '@/types/FieldMetadataType'; + +export const serializeApplicationVariableValue = ( + value: ApplicationVariableValue | undefined, + type: ApplicationVariableType = FieldMetadataType.TEXT, +): string => { + if (value === null || value === undefined) { + return ''; + } + + switch (type) { + case FieldMetadataType.BOOLEAN: + return String(value) === 'true' ? 'true' : 'false'; + case FieldMetadataType.NUMBER: + case FieldMetadataType.NUMERIC: + return String(value); + case FieldMetadataType.ARRAY: + case FieldMetadataType.MULTI_SELECT: + if (Array.isArray(value)) { + return JSON.stringify(value); + } + if (typeof value === 'string') { + try { + const parsed = JSON.parse(value) as unknown; + + if (Array.isArray(parsed)) { + return value; + } + } catch {} + + return JSON.stringify([value]); + } + + return JSON.stringify(value); + case FieldMetadataType.RAW_JSON: + case FieldMetadataType.RICH_TEXT: + return typeof value === 'string' ? value : JSON.stringify(value); + default: + return typeof value === 'string' ? value : String(value); + } +}; + +export const deserializeApplicationVariableValue = ( + value: string, + type: ApplicationVariableType = FieldMetadataType.TEXT, +): ApplicationVariableValue => { + if (value === '') { + return type === FieldMetadataType.ARRAY || + type === FieldMetadataType.MULTI_SELECT + ? [] + : ''; + } + + switch (type) { + case FieldMetadataType.BOOLEAN: + return value === 'true'; + case FieldMetadataType.NUMBER: + case FieldMetadataType.NUMERIC: { + const parsed = Number(value); + + return Number.isNaN(parsed) ? value : parsed; + } + case FieldMetadataType.ARRAY: + case FieldMetadataType.MULTI_SELECT: + try { + const parsed = JSON.parse(value) as unknown; + + return Array.isArray(parsed) ? (parsed as string[]) : []; + } catch { + return []; + } + case FieldMetadataType.RAW_JSON: + case FieldMetadataType.RICH_TEXT: + try { + return JSON.parse(value) as Record; + } catch { + return value; + } + default: + return value; + } +}; diff --git a/packages/twenty-shared/src/types/SettingsPath.ts b/packages/twenty-shared/src/types/SettingsPath.ts index 89641ac173..f88e4e4ab4 100644 --- a/packages/twenty-shared/src/types/SettingsPath.ts +++ b/packages/twenty-shared/src/types/SettingsPath.ts @@ -55,7 +55,6 @@ export enum SettingsPath { ApplicationPageLayoutDetail = 'applications/:applicationId/pageLayouts/:pageLayoutUniversalIdentifier', AvailableApplicationDetail = 'applications/available/:availableApplicationId', ApplicationRegistrationDetail = 'applications/registrations/:applicationRegistrationId', - ApplicationRegistrationConfigVariableDetails = 'applications/registrations/:applicationRegistrationId/config-variables/:variableKey', LogicFunctions = 'functions', NewLogicFunction = 'functions/new', LogicFunctionDetail = 'functions/:logicFunctionId', @@ -86,7 +85,6 @@ export enum SettingsPath { AdminPanelUserDetail = 'admin-panel/users/:userId', AdminPanelWorkspaceDetail = 'admin-panel/workspaces/:workspaceId', AdminPanelApplicationRegistrationDetail = 'admin-panel/applications/registrations/:applicationRegistrationId', - AdminPanelApplicationRegistrationConfigVariableDetails = 'admin-panel/applications/registrations/:applicationRegistrationId/config-variables/:variableKey', AdminPanelWorkspaceChatThread = 'admin-panel/workspaces/:workspaceId/threads/:threadId', Roles = 'members/roles',