{
  "version": 3,
  "sources": ["../../../../node_modules/.pnpm/@sniptt+guards@0.2.0/node_modules/@sniptt/guards/lib/guards/primitives.ts", "../../../../node_modules/.pnpm/@sniptt+guards@0.2.0/node_modules/@sniptt/guards/lib/guards/structural.ts", "../../../../node_modules/.pnpm/@sniptt+guards@0.2.0/node_modules/@sniptt/guards/lib/guards/convenience.ts", "../../../../node_modules/.pnpm/@sniptt+guards@0.2.0/node_modules/@sniptt/guards/lib/index.ts", "twenty-sdk-define-stub:__twenty-sdk-define-stub__", "../../../../src/constants/universal-identifiers.ts", "../../../../src/logic-functions/handlers/create-sajn-document-handler.ts", "../../../../src/logic-functions/utils/map-sajn-status.ts", "../../../../src/logic-functions/utils/sajn-api.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-shared/dist/is-record-object-schema-CwzshFdt.mjs", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-shared/dist/logic-function.mjs", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/connections/errors/app-connection-auth-failed.error.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-shared/dist/FieldMetadataType-PppCGM82.mjs", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-shared/dist/get-system-view-universal-identifier.util-CJoglbKX.mjs", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-shared/dist/application.mjs", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/utils/post-graphql-request.util.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/connections/get-connection.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/connections/list-connections.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/connections/find-connection-for-request.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/agents/run-agent.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/jobs/enqueue-job.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/key-value/kv.ts", "../../../../node_modules/.pnpm/twenty-sdk@2.30.0_@types+node@24.13.3_@types+react@19.2.18/node_modules/twenty-sdk/src/sdk/logic-function/response.ts", "../../../../src/logic-functions/utils/json-response.ts", "../../../../src/logic-functions/utils/sajn-connection.ts", "../../../../src/logic-functions/create-document-route.ts"],
  "sourcesContent": [null, null, null, null, "\n// Auto-generated stub for twenty-sdk/define injected by the SDK CLI build.\n// Real implementations would pull in zod, twenty-shared and ~1MB of code; at\n// runtime only `default.config.handler` is consumed, so tiny no-ops suffice.\nconst __defineFactoryStub = (config) => ({\n  success: true,\n  config,\n  errors: [],\n});\n\nconst __anyHandler = {\n  get(_target, prop) {\n    if (prop === '__esModule') return true;\n    if (prop === Symbol.toPrimitive) return () => '';\n    if (typeof prop === 'symbol') return undefined;\n    return new Proxy(() => undefined, __anyHandler);\n  },\n  apply() {\n    return new Proxy(() => undefined, __anyHandler);\n  },\n};\nconst __anyStub = new Proxy(() => undefined, __anyHandler);\n\nexport const createValidationResult = __defineFactoryStub;\nexport const defineAgent = __defineFactoryStub;\nexport const defineApplication = __defineFactoryStub;\nexport const defineApplicationRole = __defineFactoryStub;\nexport const defineCommandMenuItem = __defineFactoryStub;\nexport const defineConnectionProvider = __defineFactoryStub;\nexport const defineField = __defineFactoryStub;\nexport const defineFrontComponent = __defineFactoryStub;\nexport const defineIndex = __defineFactoryStub;\nexport const defineLogicFunction = __defineFactoryStub;\nexport const defineNavigationMenuItem = __defineFactoryStub;\nexport const defineObject = __defineFactoryStub;\nexport const definePageLayout = __defineFactoryStub;\nexport const definePageLayoutTab = __defineFactoryStub;\nexport const definePermissionFlag = __defineFactoryStub;\nexport const definePostInstallLogicFunction = __defineFactoryStub;\nexport const definePreInstallLogicFunction = __defineFactoryStub;\nexport const defineRole = __defineFactoryStub;\nexport const defineSettingsFrontComponent = __defineFactoryStub;\nexport const defineSkill = __defineFactoryStub;\nexport const defineUninstallLogicFunction = __defineFactoryStub;\nexport const defineView = __defineFactoryStub;\nexport const defineViewField = __defineFactoryStub;\nexport const AggregateOperations = __anyStub;\nexport const DateDisplayFormat = __anyStub;\nexport const FieldMetadataSettingsOnClickAction = __anyStub;\nexport const FieldType = __anyStub;\nexport const HTTPMethod = __anyStub;\nexport const NavigationMenuItemType = __anyStub;\nexport const NumberDataType = __anyStub;\nexport const ObjectOpenRecordIn = __anyStub;\nexport const ObjectRecordGroupByDateGranularity = __anyStub;\nexport const OnDeleteAction = __anyStub;\nexport const PageLayoutTabLayoutMode = __anyStub;\nexport const PageLayoutType = __anyStub;\nexport const RelationType = __anyStub;\nexport const RowLevelPermissionPredicateGroupLogicalOperator = __anyStub;\nexport const RowLevelPermissionPredicateOperand = __anyStub;\nexport const STANDARD_OBJECT = __anyStub;\nexport const STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS = __anyStub;\nexport const STANDARD_PAGE_LAYOUT = __anyStub;\nexport const STANDARD_PAGE_LAYOUT_UNIVERSAL_IDENTIFIERS = __anyStub;\nexport const SystemPermissionFlag = __anyStub;\nexport const ViewCalendarLayout = __anyStub;\nexport const ViewFilterGroupLogicalOperator = __anyStub;\nexport const ViewFilterOperand = __anyStub;\nexport const ViewKey = __anyStub;\nexport const ViewOpenRecordIn = __anyStub;\nexport const ViewSortDirection = __anyStub;\nexport const ViewType = __anyStub;\nexport const ViewVisibility = __anyStub;\nexport const canAccessFullAdminPanel = __anyStub;\nexport const canImpersonate = __anyStub;\nexport const every = __anyStub;\nexport const everyDefined = __anyStub;\nexport const everyEquals = __anyStub;\nexport const favoriteRecordIds = __anyStub;\nexport const featureFlags = __anyStub;\nexport const getFieldUniversalIdentifier = __anyStub;\nexport const getSystemRelationFieldUniversalIdentifier = __anyStub;\nexport const getSystemViewFieldUniversalIdentifier = __anyStub;\nexport const getSystemViewUniversalIdentifier = __anyStub;\nexport const hasAnySoftDeleteFilterOnView = __anyStub;\nexport const includes = __anyStub;\nexport const includesEvery = __anyStub;\nexport const isDashboardPageLayoutInEditMode = __anyStub;\nexport const isDefined = __anyStub;\nexport const isInSidePanel = __anyStub;\nexport const isLayoutCustomizationModeEnabled = __anyStub;\nexport const isNonEmptyString = __anyStub;\nexport const isSelectAll = __anyStub;\nexport const none = __anyStub;\nexport const noneDefined = __anyStub;\nexport const noneEquals = __anyStub;\nexport const numberOfSelectedRecords = __anyStub;\nexport const objectMetadataItem = __anyStub;\nexport const objectMetadataLabel = __anyStub;\nexport const objectPermissions = __anyStub;\nexport const pageType = __anyStub;\nexport const selectedRecords = __anyStub;\nexport const some = __anyStub;\nexport const someDefined = __anyStub;\nexport const someEquals = __anyStub;\nexport const someNonEmptyString = __anyStub;\nexport const targetObjectReadPermissions = __anyStub;\nexport const targetObjectWritePermissions = __anyStub;\nexport const validateFields = __anyStub;\n", "export const APP_DISPLAY_NAME = \"sajn\";\nexport const APP_DESCRIPTION =\n    \"Create sajn documents from Twenty opportunities and keep signing status visible in your CRM.\";\n\nexport const APPLICATION_UNIVERSAL_IDENTIFIER =\n    \"dcbd3557-85e1-4707-a634-38bc7b93691e\";\nexport const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =\n    \"3eeb054b-0fce-42de-bf2a-621c25dfffab\";\n\nexport const SAJN_CONNECTION_PROVIDER_NAME = \"sajn\";\nexport const SAJN_CONNECTION_PROVIDER_UNIVERSAL_IDENTIFIER =\n    \"21f01ea2-4169-4146-9074-8bb17bd6653a\";\nexport const SAJN_ON_CONNECT_UNIVERSAL_IDENTIFIER =\n    \"338a86df-d122-45fe-aa40-ad6a447da33d\";\nexport const SAJN_ON_DISCONNECT_UNIVERSAL_IDENTIFIER =\n    \"f090c423-29b5-44f3-8f54-5401b85b0b46\";\n\nexport const SAJN_DOCUMENT_OBJECT_UNIVERSAL_IDENTIFIER =\n    \"9183a06f-f26e-4668-a7d5-b2c7b610c2c7\";\nexport const SAJN_DOCUMENT_NAME_FIELD_UNIVERSAL_IDENTIFIER =\n    \"21bb0641-85a6-4481-8b48-d386c52e430c\";\nexport const SAJN_DOCUMENT_REMOTE_ID_FIELD_UNIVERSAL_IDENTIFIER =\n    \"825ccb9a-3633-4788-a58e-9902ed903d3e\";\nexport const SAJN_DOCUMENT_STATUS_FIELD_UNIVERSAL_IDENTIFIER =\n    \"735aadd1-0461-47dd-ace2-5e8df2612d40\";\nexport const SAJN_DOCUMENT_RECIPIENT_EMAIL_FIELD_UNIVERSAL_IDENTIFIER =\n    \"b00b934e-3ad9-482b-98c4-e04784b67ed6\";\nexport const SAJN_DOCUMENT_URL_FIELD_UNIVERSAL_IDENTIFIER =\n    \"ca34d779-1f3a-457a-bd1d-2a821fc1ba51\";\nexport const SAJN_DOCUMENT_OPPORTUNITY_FIELD_UNIVERSAL_IDENTIFIER =\n    \"7020eaeb-e994-4fcf-8d23-ae697eeac2b3\";\nexport const OPPORTUNITY_SAJN_DOCUMENTS_FIELD_UNIVERSAL_IDENTIFIER =\n    \"195a970e-2dd4-4d7c-aa97-d71a30131b5e\";\n\nexport const SAJN_DOCUMENT_STATUS_DRAFT_OPTION_UNIVERSAL_IDENTIFIER =\n    \"f0bfc693-e3ac-4816-b9a1-0e6f324dfdea\";\nexport const SAJN_DOCUMENT_STATUS_PENDING_OPTION_UNIVERSAL_IDENTIFIER =\n    \"19fa1fd9-04e7-44e8-b692-a3dfea2abf5e\";\nexport const SAJN_DOCUMENT_STATUS_COMPLETED_OPTION_UNIVERSAL_IDENTIFIER =\n    \"42d5d3ec-ba7e-465a-8389-aa69b17a05f8\";\nexport const SAJN_DOCUMENT_STATUS_ACTION_REQUIRED_OPTION_UNIVERSAL_IDENTIFIER =\n    \"39c29a2b-daf5-48b4-bcaa-e19ff06e1f09\";\nexport const SAJN_DOCUMENT_STATUS_CLOSED_OPTION_UNIVERSAL_IDENTIFIER =\n    \"98f3c604-2cd0-4ca7-970e-e03e80eae9ab\";\n\nexport const CREATE_DOCUMENT_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER =\n    \"0b235b4b-1314-4c5d-bee9-5b2c26b89678\";\nexport const CREATE_DOCUMENT_COMMAND_UNIVERSAL_IDENTIFIER =\n    \"3bb047b7-bcb9-4bbe-a89d-caa43785e0f2\";\nexport const CREATE_DOCUMENT_ROUTE_UNIVERSAL_IDENTIFIER =\n    \"14542f60-d122-41f9-acbc-9f9f8c601e4a\";\nexport const LIST_TEMPLATES_ROUTE_UNIVERSAL_IDENTIFIER =\n    \"2af6d521-d51e-4b5d-b784-df71f1d2e4e5\";\nexport const WEBHOOK_ROUTE_UNIVERSAL_IDENTIFIER =\n    \"40a24893-12e3-4d0a-82e1-af0c56032b26\";\nexport const SYNC_DOCUMENT_ROUTE_UNIVERSAL_IDENTIFIER =\n    \"b6ef4071-91af-48d4-8b3d-bb96d0e88f78\";\nexport const SETUP_WEBHOOK_ROUTE_UNIVERSAL_IDENTIFIER =\n    \"f980188b-de4c-4a67-b688-0925765f8483\";\n\nexport const DOCUMENT_DETAILS_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER =\n    \"315cf9d6-9c5f-4d52-8053-11485988f1a3\";\nexport const SETTINGS_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER =\n    \"9acda8f5-1063-465d-bbcb-f2aca2592fab\";\nexport const DOCUMENT_PAGE_LAYOUT_UNIVERSAL_IDENTIFIER =\n    \"bc1034c3-3b30-4655-ae57-b533d2bcfa52\";\nexport const DOCUMENT_FIELDS_TAB_UNIVERSAL_IDENTIFIER =\n    \"acbffeef-f4cb-4374-8d35-b7ac2780bc95\";\nexport const DOCUMENT_FIELDS_WIDGET_UNIVERSAL_IDENTIFIER =\n    \"a168b6c0-fd62-4949-b508-c9af05a946ab\";\nexport const DOCUMENT_DETAILS_TAB_UNIVERSAL_IDENTIFIER =\n    \"25100475-396b-4bee-b353-0647ff361868\";\nexport const DOCUMENT_DETAILS_WIDGET_UNIVERSAL_IDENTIFIER =\n    \"fc95bfcc-c857-4e4f-b063-d793643c2540\";\n\nexport const DOCUMENTS_VIEW_UNIVERSAL_IDENTIFIER =\n    \"7f3b4a1e-1004-4e95-9ace-e065773d5d5a\";\nexport const DOCUMENTS_VIEW_NAME_FIELD_UNIVERSAL_IDENTIFIER =\n    \"cab61baa-0092-4fc9-9e30-ca3e8c06a240\";\nexport const DOCUMENTS_VIEW_STATUS_FIELD_UNIVERSAL_IDENTIFIER =\n    \"5e5bb902-856e-48aa-ae6d-a22d5163beb4\";\nexport const DOCUMENTS_VIEW_RECIPIENT_FIELD_UNIVERSAL_IDENTIFIER =\n    \"57e1e044-b272-463d-9959-e6e7494ee69c\";\nexport const DOCUMENTS_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER =\n    \"7ea0d13e-9da7-41a1-b508-cf85cbb65bd4\";\n\nexport const SAJN_DOCUMENT_STATUS = {\n    ACTION_REQUIRED: \"ACTION_REQUIRED\",\n    CLOSED: \"CLOSED\",\n    COMPLETED: \"COMPLETED\",\n    DRAFT: \"DRAFT\",\n    PENDING: \"PENDING\",\n} as const;\n", "import { CoreApiClient } from \"twenty-client-sdk/core\";\n\nimport { SAJN_DOCUMENT_STATUS } from \"src/constants/universal-identifiers\";\nimport {\n    mapSajnStatus,\n    type TwentySajnStatus,\n} from \"src/logic-functions/utils/map-sajn-status\";\nimport {\n    createSajnApi,\n    SAJN_WEB_BASE_URL,\n} from \"src/logic-functions/utils/sajn-api\";\n\nexport type CreateSajnDocumentInput = {\n    opportunityId: string;\n    templateId: string;\n    requestId: string;\n    documentName?: string;\n    recipientName?: string;\n    recipientEmail?: string;\n    sendNow?: boolean;\n};\n\nexport type CreateSajnDocumentResult = {\n    success: boolean;\n    message: string;\n    status?: number;\n    recordId?: string;\n    sajnDocumentId?: string;\n    sajnUrl?: string;\n    sent?: boolean;\n};\n\nconst getFullName = (\n    name: { firstName?: string | null; lastName?: string | null } | null,\n): string =>\n    [name?.firstName, name?.lastName]\n        .filter((part): part is string => Boolean(part?.trim()))\n        .join(\" \");\n\nconst getOpportunityValue = (\n    amount: { amountMicros?: number | null; currencyCode?: string | null } | null,\n): string | undefined => {\n    if (typeof amount?.amountMicros !== \"number\") {\n        return undefined;\n    }\n\n    const value = amount.amountMicros / 1_000_000;\n\n    return amount.currencyCode ? `${value} ${amount.currencyCode}` : String(value);\n};\n\nexport const createSajnDocumentHandler = async (\n    input: CreateSajnDocumentInput,\n    accessToken: string,\n): Promise<CreateSajnDocumentResult> => {\n    if (!input.opportunityId || !input.templateId || !input.requestId) {\n        return {\n            success: false,\n            status: 400,\n            message: \"opportunityId, templateId, and requestId are required.\",\n        };\n    }\n\n    const client = new CoreApiClient();\n    const { opportunities } = await client.query({\n        opportunities: {\n            __args: {\n                filter: { id: { eq: input.opportunityId } },\n                first: 1,\n            },\n            edges: {\n                node: {\n                    id: true,\n                    name: true,\n                    amount: {\n                        amountMicros: true,\n                        currencyCode: true,\n                    },\n                    pointOfContact: {\n                        name: {\n                            firstName: true,\n                            lastName: true,\n                        },\n                        emails: {\n                            primaryEmail: true,\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n    const opportunity = opportunities?.edges?.[0]?.node;\n\n    if (!opportunity?.id) {\n        return {\n            success: false,\n            status: 404,\n            message: \"The selected opportunity could not be found.\",\n        };\n    }\n\n    const recipientName =\n        input.recipientName?.trim() ||\n        getFullName(opportunity.pointOfContact?.name ?? null);\n    const recipientEmail =\n        input.recipientEmail?.trim() ||\n        opportunity.pointOfContact?.emails?.primaryEmail?.trim() ||\n        \"\";\n\n    if (!recipientName || !recipientEmail) {\n        return {\n            success: false,\n            status: 400,\n            message:\n                \"Add a point of contact with a name and email, or enter the recipient manually.\",\n        };\n    }\n\n    const documentName =\n        input.documentName?.trim() || opportunity.name || \"sajn document\";\n    const value = getOpportunityValue(opportunity.amount ?? null);\n    const sajnApi = createSajnApi(accessToken);\n    const created = await sajnApi.createDocument({\n        name: documentName,\n        templateId: input.templateId,\n        externalId: `twenty:opportunity:${opportunity.id}:${input.requestId}`,\n        parties: [\n            {\n                name: recipientName,\n                email: recipientEmail,\n                role: \"SIGNER\",\n                deliveryMethod: \"EMAIL\",\n            },\n        ],\n        ...(value ? { documentMeta: { value } } : {}),\n    });\n\n    let status: TwentySajnStatus = SAJN_DOCUMENT_STATUS.DRAFT;\n    let sent = false;\n    let sendWarning: string | undefined;\n\n    if (input.sendNow) {\n        try {\n            const sentDocument = await sajnApi.sendDocument(created.documentId);\n            status = mapSajnStatus(sentDocument.status);\n            sent = true;\n        } catch (error) {\n            sendWarning =\n                error instanceof Error\n                    ? error.message\n                    : \"sajn could not send the document.\";\n        }\n    }\n\n    const sajnUrl = `${SAJN_WEB_BASE_URL}/documents/${created.documentId}`;\n    const { createSajnDocument } = await client.mutation({\n        createSajnDocument: {\n            __args: {\n                data: {\n                    name: documentName,\n                    sajnDocumentId: created.documentId,\n                    status,\n                    recipientEmail,\n                    sajnUrl,\n                    opportunityId: opportunity.id,\n                },\n            },\n            id: true,\n        },\n    });\n\n    if (!createSajnDocument?.id) {\n        return {\n            success: false,\n            status: 500,\n            message:\n                \"The document was created in sajn, but its Twenty record could not be saved.\",\n            sajnDocumentId: created.documentId,\n            sajnUrl,\n            sent,\n        };\n    }\n\n    return {\n        success: true,\n        message: sendWarning\n            ? `Draft created, but it was not sent: ${sendWarning}`\n            : sent\n              ? \"Document created and sent for signing.\"\n              : \"Draft created in sajn.\",\n        recordId: createSajnDocument.id,\n        sajnDocumentId: created.documentId,\n        sajnUrl,\n        sent,\n    };\n};\n", "import { SAJN_DOCUMENT_STATUS } from \"src/constants/universal-identifiers\";\n\nexport type TwentySajnStatus =\n    (typeof SAJN_DOCUMENT_STATUS)[keyof typeof SAJN_DOCUMENT_STATUS];\n\nexport const mapSajnStatus = (status: string): TwentySajnStatus => {\n    switch (status.toUpperCase()) {\n        case \"DRAFT\":\n            return SAJN_DOCUMENT_STATUS.DRAFT;\n        case \"SENDING\":\n        case \"PENDING\":\n            return SAJN_DOCUMENT_STATUS.PENDING;\n        case \"COMPLETED\":\n            return SAJN_DOCUMENT_STATUS.COMPLETED;\n        case \"PENDING_APPROVAL\":\n        case \"REJECTED\":\n            return SAJN_DOCUMENT_STATUS.ACTION_REQUIRED;\n        case \"CANCELLED\":\n        case \"EXPIRED\":\n        case \"IMPORTED\":\n        default:\n            return SAJN_DOCUMENT_STATUS.CLOSED;\n    }\n};\n", "import type {\n    CreateSajnDocumentInput,\n    CreateSajnDocumentResponse,\n    SajnDocument,\n    SajnTemplate,\n    SajnWebhook,\n    UpsertSajnWebhookInput,\n} from \"src/logic-functions/types/sajn-api.type\";\n\nconst SAJN_API_BASE_URL = \"https://app.sajn.se/api/v1\";\nexport const SAJN_WEB_BASE_URL = \"https://app.sajn.se\";\n\ntype Fetch = typeof fetch;\n\ntype SajnErrorBody = {\n    error?: string;\n    message?: string;\n};\n\nexport class SajnApiError extends Error {\n    readonly status: number;\n\n    constructor(message: string, status: number) {\n        super(message);\n        this.name = \"SajnApiError\";\n        this.status = status;\n    }\n}\n\nconst requireAccessToken = (accessToken: string): string => {\n    const token = accessToken.trim();\n\n    if (!token) {\n        throw new SajnApiError(\n            \"sajn is not connected. Open the app settings and add a connection.\",\n            503,\n        );\n    }\n\n    return token;\n};\n\nconst readErrorMessage = async (response: Response): Promise<string> => {\n    const body = (await response.json().catch(() => null)) as SajnErrorBody | null;\n\n    return body?.message ?? body?.error ?? `sajn returned HTTP ${response.status}.`;\n};\n\nexport const createSajnApi = (\n    accessToken: string,\n    fetchImplementation: Fetch = fetch,\n) => {\n    const token = requireAccessToken(accessToken);\n\n    const request = async <ResponseBody>(\n        path: string,\n        init?: RequestInit,\n    ): Promise<ResponseBody> => {\n        const response = await fetchImplementation(`${SAJN_API_BASE_URL}${path}`, {\n            ...init,\n            headers: {\n                Accept: \"application/json\",\n                Authorization: `Bearer ${token}`,\n                \"Content-Type\": \"application/json\",\n                ...init?.headers,\n            },\n        });\n\n        if (!response.ok) {\n            throw new SajnApiError(\n                await readErrorMessage(response),\n                response.status,\n            );\n        }\n\n        return (await response.json()) as ResponseBody;\n    };\n\n    return {\n        async listTemplates(): Promise<SajnTemplate[]> {\n            const result = await request<{ templates: SajnTemplate[] }>(\n                \"/templates?page=1&perPage=100\",\n            );\n\n            return result.templates;\n        },\n\n        async createDocument(\n            input: CreateSajnDocumentInput,\n        ): Promise<CreateSajnDocumentResponse> {\n            return request<CreateSajnDocumentResponse>(\"/documents\", {\n                method: \"POST\",\n                body: JSON.stringify(input),\n            });\n        },\n\n        async sendDocument(documentId: string): Promise<SajnDocument> {\n            return request<SajnDocument>(`/documents/${documentId}/send`, {\n                method: \"POST\",\n                body: \"{}\",\n            });\n        },\n\n        async getDocument(documentId: string): Promise<SajnDocument> {\n            return request<SajnDocument>(`/documents/${documentId}`);\n        },\n\n        async listWebhooks(): Promise<SajnWebhook[]> {\n            const result = await request<{ webhooks: SajnWebhook[] }>(\n                \"/webhooks?page=1&perPage=100\",\n            );\n\n            return result.webhooks;\n        },\n\n        async createWebhook(input: UpsertSajnWebhookInput): Promise<SajnWebhook> {\n            return request<SajnWebhook>(\"/webhooks\", {\n                method: \"POST\",\n                body: JSON.stringify(input),\n            });\n        },\n\n        async updateWebhook(\n            webhookId: string,\n            input: UpsertSajnWebhookInput,\n        ): Promise<SajnWebhook> {\n            return request<SajnWebhook>(`/webhooks/${webhookId}`, {\n                method: \"PATCH\",\n                body: JSON.stringify(input),\n            });\n        },\n    };\n};\n", "import { isNonEmptyString as e } from \"@sniptt/guards\";\n//#region src/logic-function/is-record-object-schema.ts\nvar t = (t) => (t?.type === \"record\" || t?.type === \"object\") && e(t.objectUniversalIdentifier);\n//#endregion\nexport { t };\n", "import { t as e } from \"./isDefined-Dtu5EYqP.mjs\";\nimport { t } from \"./is-record-object-schema-CwzshFdt.mjs\";\nimport { isNonEmptyString as n, isObject as r } from \"@sniptt/guards\";\n//#region src/logic-function/build-tool-input-json-schema.ts\nvar i = (e, t) => {\n\tlet r = n(e) ? t?.(e) : void 0;\n\treturn `Id of the ${n(r) ? r : \"linked\"} record`;\n}, a = (n, o) => {\n\tif (t(n)) return {\n\t\ttype: \"string\",\n\t\tdescription: i(n.objectUniversalIdentifier, o)\n\t};\n\tif (n.type === \"records\") return {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: i(n.objectUniversalIdentifier, o)\n\t\t}\n\t};\n\tlet { objectUniversalIdentifier: s, multiline: c, label: l, items: u, properties: d, additionalProperties: f, ...p } = n, m = { ...p };\n\treturn e(u) && (m.items = a(u, o)), e(d) && (m.properties = Object.fromEntries(Object.entries(d).map(([e, t]) => [e, a(t, o)]))), e(f) && (m.additionalProperties = r(f) ? a(f, o) : f), m;\n}, o = {\n\ttype: \"object\",\n\tproperties: {}\n}, s = (e) => {\n\tlet t = { type: \"unknown\" };\n\tswitch (e.type) {\n\t\tcase \"string\":\n\t\t\tt.type = \"string\";\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\tcase \"integer\":\n\t\t\tt.type = \"number\";\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tt.type = \"boolean\";\n\t\t\tbreak;\n\t\tcase \"array\":\n\t\t\tt.type = \"array\", e.items && (t.items = s(e.items));\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tt.type = \"object\", e.properties && (t.properties = Object.fromEntries(Object.entries(e.properties).map(([e, t]) => [e, s(t)])));\n\t\t\tbreak;\n\t\tcase \"record\":\n\t\t\tt.type = \"record\";\n\t\t\tbreak;\n\t\tcase \"records\":\n\t\t\tt.type = \"records\";\n\t\t\tbreak;\n\t\tdefault: t.type = \"unknown\";\n\t}\n\treturn Array.isArray(e.enum) && (t.enum = e.enum.filter((e) => typeof e == \"string\")), e.multiline === !0 && (t.multiline = !0), n(e.label) && (t.label = e.label), n(e.objectUniversalIdentifier) && (t.objectUniversalIdentifier = e.objectUniversalIdentifier), t;\n}, c = (e) => [s(e)], l = { inputSchema: c({\n\ttype: \"object\",\n\tproperties: {\n\t\ta: { type: \"string\" },\n\t\tb: { type: \"number\" }\n\t}\n}) }, u = async (t) => {\n\tlet { getFunctionInputSchema: n } = await import(\"./get-function-input-schema-GNk3NRLJ.mjs\"), r = n(t)[0];\n\treturn r?.type === \"object\" && e(r.properties) ? {\n\t\ttype: \"object\",\n\t\tproperties: r.properties\n\t} : o;\n}, d = (t) => !e(t) || t === null ? \"unknown\" : typeof t == \"string\" ? \"string\" : typeof t == \"number\" ? \"number\" : typeof t == \"boolean\" ? \"boolean\" : Array.isArray(t) ? \"array\" : \"unknown\", f = (e) => e ? Object.entries(e).reduce((e, [t, n]) => (r(n) && !Array.isArray(n) ? e[t] = {\n\tisLeaf: !1,\n\ttype: \"object\",\n\tlabel: t,\n\tvalue: f(n)\n} : e[t] = {\n\tisLeaf: !0,\n\tvalue: n,\n\ttype: d(n),\n\tlabel: t\n}, e), {}) : {}, p = (e, t) => e ? `${e}.${t}` : t, m = (t, n, r = \"\") => {\n\tlet i = [];\n\tfor (let [a, o] of Object.entries(n)) {\n\t\tlet n = p(r, a), s = t[a];\n\t\tif (!e(s)) {\n\t\t\ti.push(`Missing key \"${n}\" in declared output schema.`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (o.isLeaf !== s.isLeaf) {\n\t\t\ti.push(`Type mismatch at \"${n}\": expected ${o.isLeaf ? o.type : \"object\"} but declared ${s.isLeaf ? s.type : \"object\"}.`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!o.isLeaf && !s.isLeaf) {\n\t\t\ti.push(...m(s.value, o.value, n));\n\t\t\tcontinue;\n\t\t}\n\t\to.isLeaf && s.isLeaf && o.type !== \"unknown\" && s.type !== \"unknown\" && o.type !== s.type && i.push(`Type mismatch at \"${n}\": expected ${o.type} but declared ${s.type}.`);\n\t}\n\treturn i;\n}, h = [\n\t\"string\",\n\t\"number\",\n\t\"boolean\",\n\t\"array\",\n\t\"unknown\"\n], g = (e) => h.includes(e), _ = (e, t) => {\n\tlet n = t.label ?? e;\n\treturn t.type === \"record\" ? {\n\t\tisLeaf: !0,\n\t\ttype: \"string\",\n\t\tlabel: n,\n\t\tvalue: null\n\t} : t.type === \"records\" ? {\n\t\tisLeaf: !0,\n\t\ttype: \"array\",\n\t\tlabel: n,\n\t\tvalue: null\n\t} : t.type === \"object\" ? {\n\t\tisLeaf: !1,\n\t\ttype: \"object\",\n\t\tlabel: n,\n\t\tvalue: r(t.properties) ? v(t.properties) : {}\n\t} : {\n\t\tisLeaf: !0,\n\t\ttype: g(t.type) ? t.type : \"unknown\",\n\t\tlabel: n,\n\t\tvalue: null\n\t};\n}, v = (e) => Object.entries(e).reduce((e, [t, n]) => (e[t] = _(t, n), e), {}), y = (e) => {\n\tlet t = e[0];\n\treturn t?.type !== \"object\" || !r(t.properties) ? {} : v(t.properties);\n}, b = (e) => e?.type === \"records\" && n(e.objectUniversalIdentifier) || e?.type === \"array\" && t(e?.items);\n//#endregion\nexport { o as DEFAULT_TOOL_INPUT_SCHEMA, l as SEED_WORKFLOW_ACTION_TRIGGER_SETTINGS, a as buildToolInputJsonSchema, u as getInputSchemaFromSourceCode, f as getOutputSchemaFromValue, m as getOutputSchemaMismatchIssues, y as inputSchemaToOutputSchema, b as isRecordArraySchema, t as isRecordObjectSchema, c as jsonSchemaToInputSchema };\n", "// Thrown when the platform asks the SDK to operate on a connection whose\n// OAuth refresh failed permanently (`authFailedAt` is set). The end user\n// must reconnect from the app's settings tab — the app cannot recover on\n// its own.\n//\n// `listConnections` filters these out by default (the user can't act on\n// them anyway). `getConnection` throws this when the looked-up connection\n// is in this state, so a stored connection id can be safely retried until\n// it works again.\nexport class AppConnectionAuthFailedError extends Error {\n  readonly connectionId: string;\n\n  constructor(connectionId: string) {\n    super(\n      `App connection ${connectionId} requires the user to reconnect ` +\n        `(authFailedAt is set). Surface a \"Reconnect\" prompt in your UI.`,\n    );\n    this.name = 'AppConnectionAuthFailedError';\n    this.connectionId = connectionId;\n  }\n}\n", "//#region src/types/FieldMetadataType.ts\nvar e = /* @__PURE__ */ function(e) {\n\treturn e.ACTOR = \"ACTOR\", e.ADDRESS = \"ADDRESS\", e.ARRAY = \"ARRAY\", e.BOOLEAN = \"BOOLEAN\", e.CURRENCY = \"CURRENCY\", e.DATE = \"DATE\", e.DATE_TIME = \"DATE_TIME\", e.EMAILS = \"EMAILS\", e.FILES = \"FILES\", e.FULL_NAME = \"FULL_NAME\", e.LINKS = \"LINKS\", e.MORPH_RELATION = \"MORPH_RELATION\", e.MULTI_SELECT = \"MULTI_SELECT\", e.NUMBER = \"NUMBER\", e.NUMERIC = \"NUMERIC\", e.PHONES = \"PHONES\", e.POSITION = \"POSITION\", e.RATING = \"RATING\", e.RAW_JSON = \"RAW_JSON\", e.RELATION = \"RELATION\", e.RICH_TEXT = \"RICH_TEXT\", e.SELECT = \"SELECT\", e.TEXT = \"TEXT\", e.TS_VECTOR = \"TS_VECTOR\", e.UUID = \"UUID\", e;\n}({});\n//#endregion\nexport { e as t };\n", "import { v5 as e } from \"uuid\";\n//#region src/application/constants/TwentyStandardApplicationUniversalIdentifier.ts\nvar t = \"20202020-64aa-4b6f-b003-9c74b97cee20\", n = ({ entityNamespace: t, value: n, applicationUniversalIdentifier: r }) => e(`${t}:${n}`, r), r = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t, name: r }) => n({\n\tentityNamespace: \"fieldMetadata\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), i = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t, relationTargetObjectUniversalIdentifier: r }) => n({\n\tentityNamespace: \"fieldMetadata\",\n\tvalue: `${t}:systemRelation:${r}`,\n\tapplicationUniversalIdentifier: e\n}), a = ({ fieldMetadataApplicationUniversalIdentifier: e, viewUniversalIdentifier: t, fieldMetadataUniversalIdentifier: r }) => n({\n\tentityNamespace: \"viewField\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), o = ({ objectMetadataApplicationUniversalIdentifier: e, objectUniversalIdentifier: t, viewKey: r }) => n({\n\tentityNamespace: \"view\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n});\n//#endregion\nexport { n as a, r as i, a as n, t as o, i as r, o as t };\n", "import { t as e } from \"./FieldMetadataType-PppCGM82.mjs\";\nimport { a as t, i as n, n as r, o as i, r as a, t as o } from \"./get-system-view-universal-identifier.util-CJoglbKX.mjs\";\n//#region src/application/applicationCategoryType.ts\nvar s = [\n\t\"Communication\",\n\t\"Productivity\",\n\t\"Product management\",\n\t\"Sales\",\n\t\"Marketing\",\n\t\"Enrichment\",\n\t\"Data\",\n\t\"Search\",\n\t\"Other\"\n], c = (e) => s.includes(e), l = [\n\te.TEXT,\n\te.ARRAY,\n\te.BOOLEAN,\n\te.DATE,\n\te.DATE_TIME,\n\te.NUMBER,\n\te.NUMERIC,\n\te.RAW_JSON,\n\te.RICH_TEXT,\n\te.SELECT,\n\te.MULTI_SELECT\n], u = \"public\", d = \"TWENTY_API_KEY\", f = \"TWENTY_API_URL\", p = \"TWENTY_APP_ACCESS_TOKEN\", m = \"TWENTY_FUNCTIONS_URL\", h = \"generated\", g = { js: \"import { createRequire as __createRequire } from 'module';\\nconst require = __createRequire(import.meta.url);\" }, _ = \".twenty/output\", v = \"Standard\", y = ({ applicationUniversalIdentifier: e, name: n }) => t({\n\tentityNamespace: \"agent\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), b = ({ applicationUniversalIdentifier: e, key: n }) => t({\n\tentityNamespace: \"applicationVariable\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), x = \"navigation\", S = ({ applicationUniversalIdentifier: e, engineComponentKey: n }) => t({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `GLOBAL:${n}`,\n\tapplicationUniversalIdentifier: e\n}), C = ({ applicationUniversalIdentifier: e, engineComponentKey: n }) => t({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `GLOBAL_OBJECT_CONTEXT:${n}`,\n\tapplicationUniversalIdentifier: e\n}), w = ({ applicationUniversalIdentifier: e, engineComponentKey: n, objectUniversalIdentifier: r }) => t({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `RECORD_SELECTION:${n}:${r ?? \"\"}`,\n\tapplicationUniversalIdentifier: e\n}), T = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: n }) => t({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `${n}:${x}`,\n\tapplicationUniversalIdentifier: e\n}), E = ({ applicationUniversalIdentifier: e, name: n }) => t({\n\tentityNamespace: \"connectionProvider\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), D = ({ applicationUniversalIdentifier: e, roleUniversalIdentifier: n, fieldUniversalIdentifier: r }) => t({\n\tentityNamespace: \"fieldPermission\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), O = ({ applicationUniversalIdentifier: e, pageLayoutWidgetUniversalIdentifier: n }) => t({\n\tentityNamespace: \"view\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), k = ({ applicationUniversalIdentifier: e, componentName: n }) => t({\n\tentityNamespace: \"frontComponent\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), A = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: n, name: r }) => t({\n\tentityNamespace: \"index\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), j = ({ applicationUniversalIdentifier: e, name: n }) => t({\n\tentityNamespace: \"logicFunction\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), ee = ({ applicationUniversalIdentifier: e, name: n }) => t({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `FOLDER:${n}`,\n\tapplicationUniversalIdentifier: e\n}), M = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: n }) => t({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `OBJECT:${n}`,\n\tapplicationUniversalIdentifier: e\n}), N = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: n }) => t({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `VIEW:${n}`,\n\tapplicationUniversalIdentifier: e\n}), P = ({ applicationUniversalIdentifier: e, link: n }) => t({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `LINK:${n}`,\n\tapplicationUniversalIdentifier: e\n}), F = ({ applicationUniversalIdentifier: e, roleUniversalIdentifier: n, objectUniversalIdentifier: r }) => t({\n\tentityNamespace: \"objectPermission\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), I = ({ applicationUniversalIdentifier: e, nameSingular: n }) => t({\n\tentityNamespace: \"objectMetadata\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), L = ({ applicationUniversalIdentifier: e, pageLayoutUniversalIdentifier: n, title: r }) => t({\n\tentityNamespace: \"pageLayoutTab\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), R = \"RECORD_PAGE\", z = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: n, name: r }) => t({\n\tentityNamespace: \"pageLayout\",\n\tvalue: n ? `${n}:${r}` : r,\n\tapplicationUniversalIdentifier: e\n}), B = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: n }) => t({\n\tentityNamespace: \"pageLayout\",\n\tvalue: `${n}:${R}`,\n\tapplicationUniversalIdentifier: e\n}), V = ({ applicationUniversalIdentifier: e, pageLayoutTabUniversalIdentifier: n, title: r }) => t({\n\tentityNamespace: \"pageLayoutWidget\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), H = ({ applicationUniversalIdentifier: e, key: n }) => t({\n\tentityNamespace: \"permissionFlag\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), U = ({ applicationUniversalIdentifier: e, roleUniversalIdentifier: n, permissionFlagUniversalIdentifier: r }) => t({\n\tentityNamespace: \"rolePermissionFlag\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), W = ({ applicationUniversalIdentifier: e, agentUniversalIdentifier: n }) => t({\n\tentityNamespace: \"roleTarget\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), G = ({ applicationUniversalIdentifier: e, label: n }) => t({\n\tentityNamespace: \"role\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), K = ({ applicationUniversalIdentifier: e, fieldMetadataUniversalIdentifier: n }) => t({\n\tentityNamespace: \"searchFieldMetadata\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), q = ({ applicationUniversalIdentifier: e, fieldUniversalIdentifier: n, value: r }) => t({\n\tentityNamespace: \"selectOption\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), J = ({ applicationUniversalIdentifier: e, name: n }) => t({\n\tentityNamespace: \"skill\",\n\tvalue: n,\n\tapplicationUniversalIdentifier: e\n}), Y = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: n, name: r }) => t({\n\tentityNamespace: \"viewFieldGroup\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), X = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: n, fieldMetadataUniversalIdentifier: r }) => t({\n\tentityNamespace: \"viewField\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), Z = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: n, fieldMetadataUniversalIdentifier: r, operand: i, subFieldName: a }) => t({\n\tentityNamespace: \"viewFilter\",\n\tvalue: `${n}:${r}:${i}:${a ?? \"\"}`,\n\tapplicationUniversalIdentifier: e\n}), Q = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: n, fieldValue: r }) => t({\n\tentityNamespace: \"viewGroup\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), $ = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: n, fieldMetadataUniversalIdentifier: r }) => t({\n\tentityNamespace: \"viewSort\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), te = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: n, name: r }) => t({\n\tentityNamespace: \"view\",\n\tvalue: `${n}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), ne = /* @__PURE__ */ function(e) {\n\treturn e.Object = \"object\", e.Field = \"field\", e.LogicFunction = \"logicFunction\", e.FrontComponent = \"frontComponent\", e.Role = \"role\", e.Skill = \"skill\", e.Agent = \"agent\", e.ConnectionProvider = \"connectionProvider\", e.View = \"view\", e.ViewField = \"viewField\", e.NavigationMenuItem = \"navigationMenuItem\", e.PageLayout = \"pageLayout\", e.PageLayoutTab = \"pageLayoutTab\", e.CommandMenuItem = \"commandMenuItem\", e;\n}({}), re = (t, n = e.TEXT) => {\n\tif (t == null) return \"\";\n\tswitch (n) {\n\t\tcase e.BOOLEAN: return String(t) === \"true\" ? \"true\" : \"false\";\n\t\tcase e.NUMBER:\n\t\tcase e.NUMERIC: return String(t);\n\t\tcase e.ARRAY:\n\t\tcase e.MULTI_SELECT:\n\t\t\tif (Array.isArray(t)) return JSON.stringify(t);\n\t\t\tif (typeof t == \"string\") {\n\t\t\t\ttry {\n\t\t\t\t\tlet e = JSON.parse(t);\n\t\t\t\t\tif (Array.isArray(e)) return t;\n\t\t\t\t} catch {}\n\t\t\t\treturn JSON.stringify([t]);\n\t\t\t}\n\t\t\treturn JSON.stringify(t);\n\t\tcase e.RAW_JSON:\n\t\tcase e.RICH_TEXT: return typeof t == \"string\" ? t : JSON.stringify(t);\n\t\tdefault: return typeof t == \"string\" ? t : String(t);\n\t}\n}, ie = (t, n = e.TEXT) => {\n\tif (t === \"\") return n === e.ARRAY || n === e.MULTI_SELECT ? [] : \"\";\n\tswitch (n) {\n\t\tcase e.BOOLEAN: return t === \"true\";\n\t\tcase e.NUMBER:\n\t\tcase e.NUMERIC: {\n\t\t\tlet e = Number(t);\n\t\t\treturn Number.isNaN(e) ? t : e;\n\t\t}\n\t\tcase e.ARRAY:\n\t\tcase e.MULTI_SELECT: try {\n\t\t\tlet e = JSON.parse(t);\n\t\t\treturn Array.isArray(e) ? e : [];\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t\tcase e.RAW_JSON:\n\t\tcase e.RICH_TEXT: try {\n\t\t\treturn JSON.parse(t);\n\t\t} catch {\n\t\t\treturn t;\n\t\t}\n\t\tdefault: return t;\n\t}\n};\n//#endregion\nexport { s as APPLICATION_CATEGORIES, l as APPLICATION_VARIABLE_FIELD_METADATA_TYPES, u as ASSETS_DIR, d as DEFAULT_API_KEY_NAME, f as DEFAULT_API_URL_NAME, p as DEFAULT_APP_ACCESS_TOKEN_NAME, m as DEFAULT_FUNCTIONS_URL_NAME, h as GENERATED_DIR, g as NODE_ESM_CJS_BANNER, _ as OUTPUT_DIR, ne as SyncableEntity, v as TWENTY_STANDARD_APPLICATION_NAME, i as TWENTY_STANDARD_APPLICATION_UNIVERSAL_IDENTIFIER, t as computeDeterministicUuid, ie as deserializeApplicationVariableValue, y as getAgentUniversalIdentifier, b as getApplicationVariableUniversalIdentifier, E as getConnectionProviderUniversalIdentifier, D as getFieldPermissionUniversalIdentifier, n as getFieldUniversalIdentifier, O as getFieldsWidgetViewUniversalIdentifier, ee as getFolderNavigationMenuItemUniversalIdentifier, k as getFrontComponentUniversalIdentifier, S as getGlobalCommandMenuItemUniversalIdentifier, C as getGlobalObjectContextCommandMenuItemUniversalIdentifier, A as getIndexUniversalIdentifier, P as getLinkNavigationMenuItemUniversalIdentifier, j as getLogicFunctionUniversalIdentifier, T as getNavigationCommandUniversalIdentifier, M as getObjectNavigationMenuItemUniversalIdentifier, F as getObjectPermissionUniversalIdentifier, I as getObjectUniversalIdentifier, L as getPageLayoutTabUniversalIdentifier, z as getPageLayoutUniversalIdentifier, V as getPageLayoutWidgetUniversalIdentifier, H as getPermissionFlagUniversalIdentifier, B as getRecordPageLayoutUniversalIdentifier, w as getRecordSelectionCommandMenuItemUniversalIdentifier, U as getRolePermissionFlagUniversalIdentifier, W as getRoleTargetUniversalIdentifier, G as getRoleUniversalIdentifier, K as getSearchFieldUniversalIdentifier, q as getSelectOptionUniversalIdentifier, J as getSkillUniversalIdentifier, a as getSystemRelationFieldUniversalIdentifier, r as getSystemViewFieldUniversalIdentifier, o as getSystemViewUniversalIdentifier, Y as getViewFieldGroupUniversalIdentifier, X as getViewFieldUniversalIdentifier, Z as getViewFilterUniversalIdentifier, Q as getViewGroupUniversalIdentifier, N as getViewNavigationMenuItemUniversalIdentifier, $ as getViewSortUniversalIdentifier, te as getViewUniversalIdentifier, c as isKnownApplicationCategory, re as serializeApplicationVariableValue };\n", "import {\n  DEFAULT_API_URL_NAME,\n  DEFAULT_APP_ACCESS_TOKEN_NAME,\n} from 'twenty-shared/application';\n\nexport const postGraphqlRequest = async <TVariables, TData>({\n  query,\n  variables,\n  caller,\n}: {\n  query: string;\n  variables: TVariables;\n  caller: string;\n}): Promise<TData> => {\n  const apiUrl = process.env[DEFAULT_API_URL_NAME];\n  const accessToken = process.env[DEFAULT_APP_ACCESS_TOKEN_NAME];\n\n  if (!apiUrl || !accessToken) {\n    throw new Error(\n      `${caller}() requires the app runtime env vars ` +\n        `${DEFAULT_API_URL_NAME} and ${DEFAULT_APP_ACCESS_TOKEN_NAME}.`,\n    );\n  }\n\n  const response = await fetch(`${apiUrl}/metadata`, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${accessToken}`,\n    },\n    body: JSON.stringify({ query, variables }),\n  });\n\n  if (!response.ok) {\n    throw new Error(\n      `${caller}() failed: HTTP ${response.status} ${response.statusText}`,\n    );\n  }\n\n  const body = (await response.json()) as {\n    data?: TData;\n    errors?: { message: string }[];\n  };\n\n  if (body.errors && body.errors.length > 0) {\n    throw new Error(\n      `${caller}() failed: ${body.errors.map((error) => error.message).join(', ')}`,\n    );\n  }\n\n  if (!body.data) {\n    throw new Error(`${caller}() failed: response contained no data.`);\n  }\n\n  return body.data;\n};\n", "import { AppConnectionAuthFailedError } from '@/sdk/logic-function/connections/errors/app-connection-auth-failed.error';\nimport { type AppConnection } from '@/sdk/logic-function/connections/types/app-connection.type';\nimport { postGraphqlRequest } from '@/sdk/logic-function/utils/post-graphql-request.util';\n\nconst GET_APP_CONNECTION_QUERY = `\n  query GetAppConnection($id: ID!) {\n    appConnection(id: $id) {\n      id\n      providerName\n      name\n      handle\n      visibility\n      userWorkspaceId\n      accessToken\n      scopes\n      authFailedAt\n    }\n  }\n`;\n\nexport const getConnection = async (id: string): Promise<AppConnection> => {\n  const { appConnection } = await postGraphqlRequest<\n    { id: string },\n    { appConnection: AppConnection }\n  >({\n    query: GET_APP_CONNECTION_QUERY,\n    variables: { id },\n    caller: 'getConnection',\n  });\n\n  if (appConnection.authFailedAt !== null) {\n    throw new AppConnectionAuthFailedError(appConnection.id);\n  }\n\n  return appConnection;\n};\n", "import { type AppConnection } from '@/sdk/logic-function/connections/types/app-connection.type';\nimport { postGraphqlRequest } from '@/sdk/logic-function/utils/post-graphql-request.util';\n\nconst LIST_APP_CONNECTIONS_QUERY = `\n  query ListAppConnections($filter: ListAppConnectionsInput) {\n    appConnections(filter: $filter) {\n      id\n      providerName\n      name\n      handle\n      visibility\n      userWorkspaceId\n      accessToken\n      scopes\n      authFailedAt\n    }\n  }\n`;\n\nexport type ListConnectionsFilter = {\n  providerName?: string;\n  userWorkspaceId?: string;\n  visibility?: 'user' | 'workspace';\n};\n\nexport const listConnections = async (\n  filter: ListConnectionsFilter = {},\n): Promise<AppConnection[]> => {\n  const { appConnections } = await postGraphqlRequest<\n    { filter: ListConnectionsFilter },\n    { appConnections: AppConnection[] }\n  >({\n    query: LIST_APP_CONNECTIONS_QUERY,\n    variables: { filter },\n    caller: 'listConnections',\n  });\n\n  return appConnections;\n};\n", "import { type AppConnection } from '@/sdk/logic-function/connections/types/app-connection.type';\n\nexport const findConnectionForRequest = (\n  connections: AppConnection[],\n  event: { userWorkspaceId: string | null },\n): AppConnection | null => {\n  if (event.userWorkspaceId !== null) {\n    const personal = connections.find(\n      (connection) =>\n        connection.visibility === 'user' &&\n        connection.userWorkspaceId === event.userWorkspaceId,\n    );\n\n    if (personal) {\n      return personal;\n    }\n  }\n\n  const workspaceShared = connections.find(\n    (connection) => connection.visibility === 'workspace',\n  );\n\n  return workspaceShared ?? null;\n};\n", "import {\n  type RunAgentInput,\n  type RunAgentResult,\n} from 'twenty-shared/application';\n\nimport { postGraphqlRequest } from '@/sdk/logic-function/utils/post-graphql-request.util';\n\nconst RUN_AGENT_MUTATION = `\n  mutation RunAgent($input: RunAgentInput!) {\n    runAgent(input: $input) {\n      result\n      error\n      success\n    }\n  }\n`;\n\nexport const runAgent = async (\n  input: RunAgentInput,\n): Promise<RunAgentResult> => {\n  const { runAgent: result } = await postGraphqlRequest<\n    { input: RunAgentInput },\n    { runAgent: RunAgentResult }\n  >({\n    query: RUN_AGENT_MUTATION,\n    variables: { input },\n    caller: 'runAgent',\n  });\n\n  return result;\n};\n", "import { MetadataApiClient } from 'twenty-client-sdk/metadata';\nimport {\n  type EnqueueJobInput,\n  type EnqueueJobResult,\n} from 'twenty-shared/application';\n\nexport const enqueueJob = async (\n  input: EnqueueJobInput,\n): Promise<EnqueueJobResult> => {\n  const client = new MetadataApiClient();\n\n  const { enqueueJob: result } = await client.mutation({\n    enqueueJob: {\n      __args: { input },\n      enqueued: true,\n      logicFunctionUniversalIdentifier: true,\n    },\n  });\n\n  return result;\n};\n", "import {\n  type AppKeyValue,\n  type AppKeyValueScope,\n} from 'twenty-shared/application';\n\nimport { postGraphqlRequest } from '@/sdk/logic-function/utils/post-graphql-request.util';\n\nconst GET_APP_KEY_VALUE_QUERY = `\n  query GetAppKeyValue($key: String!, $scope: AppKeyValueScope) {\n    appKeyValue(key: $key, scope: $scope) {\n      key\n      value\n      scope\n    }\n  }\n`;\n\nconst SET_APP_KEY_VALUE_MUTATION = `\n  mutation SetAppKeyValue($input: SetAppKeyValueInput!) {\n    setAppKeyValue(input: $input) {\n      key\n      value\n      scope\n    }\n  }\n`;\n\nconst DELETE_APP_KEY_VALUE_MUTATION = `\n  mutation DeleteAppKeyValue($key: String!, $scope: AppKeyValueScope) {\n    deleteAppKeyValue(key: $key, scope: $scope)\n  }\n`;\n\nconst DEFAULT_APP_KEY_VALUE_SCOPE: AppKeyValueScope = 'WORKSPACE';\n\ntype KvOptions = {\n  scope?: AppKeyValueScope;\n};\n\nexport const kv = {\n  async get<TValue = unknown>(\n    key: string,\n    options?: KvOptions,\n  ): Promise<TValue | null> {\n    const { appKeyValue } = await postGraphqlRequest<\n      { key: string; scope: AppKeyValueScope },\n      { appKeyValue: AppKeyValue | null }\n    >({\n      query: GET_APP_KEY_VALUE_QUERY,\n      variables: { key, scope: options?.scope ?? DEFAULT_APP_KEY_VALUE_SCOPE },\n      caller: 'kv.get',\n    });\n\n    return (appKeyValue?.value ?? null) as TValue | null;\n  },\n\n  async set<TValue>(\n    key: string,\n    value: TValue,\n    options?: KvOptions,\n  ): Promise<void> {\n    await postGraphqlRequest<\n      {\n        input: { key: string; value: TValue; scope: AppKeyValueScope };\n      },\n      { setAppKeyValue: AppKeyValue }\n    >({\n      query: SET_APP_KEY_VALUE_MUTATION,\n      variables: {\n        input: {\n          key,\n          value,\n          scope: options?.scope ?? DEFAULT_APP_KEY_VALUE_SCOPE,\n        },\n      },\n      caller: 'kv.set',\n    });\n  },\n\n  async delete(key: string, options?: KvOptions): Promise<boolean> {\n    const { deleteAppKeyValue } = await postGraphqlRequest<\n      { key: string; scope: AppKeyValueScope },\n      { deleteAppKeyValue: boolean }\n    >({\n      query: DELETE_APP_KEY_VALUE_MUTATION,\n      variables: { key, scope: options?.scope ?? DEFAULT_APP_KEY_VALUE_SCOPE },\n      caller: 'kv.delete',\n    });\n\n    return deleteAppKeyValue;\n  },\n};\n", "import { type LogicFunctionHttpResponse } from 'twenty-shared/types';\n\nexport type ResponseInit = {\n  status?: number;\n  headers?: Record<string, string>;\n};\n\nexport class Response implements LogicFunctionHttpResponse {\n  readonly __twentyHttpResponse = true as const;\n  readonly body: unknown;\n  readonly status?: number;\n  readonly headers?: Record<string, string>;\n\n  constructor(body: unknown, init?: ResponseInit) {\n    this.body = body;\n    this.status = init?.status;\n    this.headers = init?.headers;\n  }\n}\n", "import { Response } from \"twenty-sdk/logic-function\";\n\nexport const jsonResponse = (\n    body: unknown,\n    status = 200,\n): Response =>\n    new Response(JSON.stringify(body), {\n        status,\n        headers: { \"Content-Type\": \"application/json\" },\n    });\n", "import {\n    findConnectionForRequest,\n    listConnections,\n    type AppConnection,\n} from \"twenty-sdk/logic-function\";\n\nimport { SAJN_CONNECTION_PROVIDER_NAME } from \"src/constants/universal-identifiers\";\nimport { SajnApiError } from \"src/logic-functions/utils/sajn-api\";\n\ntype RequestConnectionContext = {\n    userWorkspaceId: string | null;\n};\n\nexport const getSajnConnectionForRequest = async (\n    event: RequestConnectionContext,\n): Promise<AppConnection> => {\n    const connections = await listConnections({\n        providerName: SAJN_CONNECTION_PROVIDER_NAME,\n    });\n    const connection = findConnectionForRequest(connections, event);\n\n    if (!connection) {\n        throw new SajnApiError(\n            \"sajn is not connected. Open the app settings and add a connection.\",\n            503,\n        );\n    }\n\n    if (connection.authFailedAt) {\n        throw new SajnApiError(\n            \"The sajn connection needs to be reconnected from the app settings.\",\n            401,\n        );\n    }\n\n    return connection;\n};\n", "import { defineLogicFunction, type RoutePayload } from \"twenty-sdk/define\";\nimport { Response } from \"twenty-sdk/logic-function\";\n\nimport { CREATE_DOCUMENT_ROUTE_UNIVERSAL_IDENTIFIER } from \"src/constants/universal-identifiers\";\nimport {\n    createSajnDocumentHandler,\n    type CreateSajnDocumentInput,\n} from \"src/logic-functions/handlers/create-sajn-document-handler\";\nimport { jsonResponse } from \"src/logic-functions/utils/json-response\";\nimport { SajnApiError } from \"src/logic-functions/utils/sajn-api\";\nimport { getSajnConnectionForRequest } from \"src/logic-functions/utils/sajn-connection\";\n\nconst handler = async (\n    event: RoutePayload<CreateSajnDocumentInput>,\n): Promise<Response> => {\n    try {\n        const connection = await getSajnConnectionForRequest(event);\n        const result = await createSajnDocumentHandler(\n            event.body ?? ({} as CreateSajnDocumentInput),\n            connection.accessToken,\n        );\n\n        return jsonResponse(\n            result,\n            result.success ? 200 : (result.status ?? 400),\n        );\n    } catch (error) {\n        const status = error instanceof SajnApiError ? error.status : 500;\n        const message =\n            error instanceof Error\n                ? error.message\n                : \"Could not create the sajn document.\";\n\n        return jsonResponse({ success: false, message }, status);\n    }\n};\n\nexport default defineLogicFunction({\n    universalIdentifier: CREATE_DOCUMENT_ROUTE_UNIVERSAL_IDENTIFIER,\n    name: \"create-sajn-document\",\n    description:\n        \"Creates a sajn document from a Twenty opportunity and stores the linked CRM record.\",\n    timeoutSeconds: 30,\n    handler,\n    httpRouteTriggerSettings: {\n        path: \"/sajn/documents\",\n        httpMethod: \"POST\",\n        isAuthRequired: true,\n    },\n});\n"],
  "mappings": "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",
  "names": ["s", "n", "e", "t", "t", "n", "r", "e", "t", "n", "e", "t"]
}
