{
  "version": 3,
  "sources": ["../../../../node_modules/@sniptt/guards/lib/guards/primitives.ts", "../../../../node_modules/@sniptt/guards/lib/guards/structural.ts", "../../../../node_modules/@sniptt/guards/lib/guards/convenience.ts", "../../../../node_modules/@sniptt/guards/lib/index.ts", "twenty-sdk-define-stub:__twenty-sdk-define-stub__", "../../../../src/constants/universal-identifiers.ts", "../../../../src/logic-functions/handlers/submit-for-review.ts", "../../../../src/constants/messages.ts", "../../../../src/logic-functions/utils/now-iso.ts", "../../../../src/utils/is-defined.ts", "../../../../src/logic-functions/utils/run-core-graphql.ts", "../../../../src/logic-functions/utils/read-contract.ts", "../../../../src/constants/manager-role.ts", "../../../../src/logic-functions/utils/resolve-actor.ts", "../../../../src/logic-functions/utils/update-contract.ts", "../../../../src/utils/prune-undefined.ts", "../../../../src/logic-functions/utils/route-input.ts", "../../../../src/logic-functions/submit-for-review.function.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 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", "// Auto-generated by scripts/generate-universal-identifiers.mjs.\n// Every identifier is a freshly generated UUID to avoid collisions with other\n// installed apps. Regenerate with: node scripts/generate-universal-identifiers.mjs\n\nexport const APPLICATION_UNIVERSAL_IDENTIFIER =\n  'e18866a9-afd0-440a-9855-1e7e9e693a74';\n\nexport const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =\n  '77fda223-b7a9-4f4a-844e-4a475f2adf0c';\n\nexport const GERENTE_SOCIO_ROLE_UNIVERSAL_IDENTIFIER =\n  '4f7a44cc-05c0-40c9-b833-ea335199959c';\n\nexport const APPLICATION_VARIABLE_UNIVERSAL_IDENTIFIERS = {\n  anthropicApiKey: \"2f9824be-df6f-4065-aa4e-a8313d201ef8\",\n  llmModel: \"43bc75b0-ef4c-42ec-848e-35297e90364e\"\n} as const;\n\nexport const OBJECT_UNIVERSAL_IDENTIFIERS = {\n  contract: \"45a32a16-21a5-4142-ad6b-7949cacad591\",\n  approvalDecision: \"6e6de038-df90-4dc3-a1bd-fb9c15b98308\"\n} as const;\n\nexport const CONTRACT_FIELD_UNIVERSAL_IDENTIFIERS = {\n  name: \"08a4f050-7c85-463e-9aa4-009d0213ba05\",\n  paymentTermsCustomer: \"df60b392-c2bf-4460-a3ba-9846a7da98f7\",\n  paymentTermsSupplier: \"94443e7c-c83e-4542-93f7-63dad2207a75\",\n  status: \"128da9a5-ffba-4310-9792-5be2805de9f5\",\n  aiReviewSummary: \"e1b7f3eb-eadf-4644-92d4-ef44954ef179\",\n  aiFindings: \"acb5962d-1072-4791-89e8-2d0158db386b\",\n  aiPaymentMismatch: \"2223a01a-25a1-4c2d-a13e-6044bfc3df62\",\n  aiPaymentTermsSnapshot: \"7b1c9d24-3f68-4a05-9e13-c4d2a86f5b70\",\n  submittedAt: \"324d19ae-98c7-4c1c-ae81-258619222ec7\",\n  decidedAt: \"e330567f-d443-4d21-ad7a-307576da6e19\",\n  opportunity: \"8abe646d-41d4-483d-8f22-09859a1bce26\",\n  approver: \"cd548383-5560-4b90-a8ac-fb88f6483fe2\",\n  submittedBy: \"9288433a-6972-4a3f-b7d2-5bbf655ad0c2\",\n  approvalDecisions: \"f2754979-61fa-45eb-aefb-aa9ede9a73ef\"\n} as const;\n\nexport const CONTRACT_SELECT_OPTION_UNIVERSAL_IDENTIFIERS = {\n  status: {\n    draft: \"fd147573-5cd0-455d-9c1d-5a1f1f3dd5b3\",\n    pendingAiReview: \"3dea697a-77f4-49d4-aa44-f5d8662d260b\",\n    pendingManagerApproval: \"fbc4bab6-17ce-4544-a21d-aeb1d92d83ec\",\n    approved: \"660dce9e-d054-462a-b50f-0335d54446f1\",\n    rejected: \"7292e345-7d05-4564-8a56-8378f1359c96\"\n  },\n  aiPaymentMismatch: {\n    unknown: \"16a115a7-7b44-4073-9715-89203605470b\",\n    match: \"55247810-5361-4a18-b094-84e3f1191a79\",\n    mismatch: \"e783ade0-e7e9-42d4-89d9-68944eacdd61\"\n  }\n} as const;\n\nexport const APPROVAL_DECISION_FIELD_UNIVERSAL_IDENTIFIERS = {\n  name: \"80cd5548-93db-43eb-b3c3-953572e973fe\",\n  decision: \"e8769cd6-4e43-43bd-86c9-18ed19d8e3c2\",\n  comment: \"e8263f3c-29c2-4fb9-b9e8-43e2a68dbdd2\",\n  decidedAt: \"becbc35b-dd19-4ca2-bbc7-801a65118abf\",\n  contract: \"b949d9af-6b11-4ff3-8a76-7862bf90ceae\",\n  decidedBy: \"d554d5c1-48d4-4ee8-879d-bb7fe11fe925\"\n} as const;\n\nexport const APPROVAL_DECISION_SELECT_OPTION_UNIVERSAL_IDENTIFIERS = {\n  decision: {\n    approve: \"35ff0df0-202b-4abd-8264-98834c48c502\",\n    reject: \"cbb44164-7e65-468f-98ab-788315c77db1\"\n  }\n} as const;\n\nexport const STANDARD_REVERSE_FIELD_UNIVERSAL_IDENTIFIERS = {\n  opportunityContracts: \"0a9f9101-7093-4ef8-8087-671964f5b642\",\n  workspaceMemberApprovedContracts: \"7dde2294-c596-4234-8aff-54e28af08a1c\",\n  workspaceMemberSubmittedContracts: \"310b6c4e-22ab-4af5-bfc0-caf059128bf5\",\n  workspaceMemberApprovalDecisions: \"67718dfb-37a1-46a6-961a-ec5d48a36c5f\"\n} as const;\n\nexport const LOGIC_FUNCTION_CONSTANTS = {\n  aiReview: {\n    universalIdentifier: \"7e4b41b4-a567-40d5-ac4f-af230e1fb198\",\n    path: \"/contract-approval/ai-review\"\n  },\n  submitForReview: {\n    universalIdentifier: \"db02d2d0-85e9-4d97-a5cc-282d9ee0ca5f\",\n    path: \"/contract-approval/submit-for-review\"\n  },\n  recordDecision: {\n    universalIdentifier: \"6cf39b95-7065-4158-93b2-d4f954ed69ab\",\n    path: \"/contract-approval/record-decision\"\n  },\n  postInstall: {\n    universalIdentifier: \"65b60977-844a-4230-aacc-0dff6e2eb69d\"\n  }\n} as const;\n\nexport const FRONT_COMPONENT_UNIVERSAL_IDENTIFIERS = {\n  approve: \"146f44e2-164f-4173-8e42-11095c71455a\",\n  reject: \"cd900b9d-6fed-40e8-b725-bfddd9fc350a\",\n  submitForReview: \"0c35bc5e-7a5c-475d-a2c2-9eff530dc0a0\"\n} as const;\n\nexport const COMMAND_MENU_ITEM_UNIVERSAL_IDENTIFIERS = {\n  approve: \"4daf5c53-8a72-44ea-8e1a-0ca5b64ca844\",\n  reject: \"c341b153-c8c2-4226-96b5-4b8c1b2fc84e\",\n  submitForReview: \"af85127b-54be-4812-946f-bca6ce3c9fbd\"\n} as const;\n\nexport const VIEW_UNIVERSAL_IDENTIFIERS = {\n  pendingApprovals: \"a89136c8-e306-4416-b23f-ae8d499ef25e\"\n} as const;\n\n// Added 2026-07-15 for the UI enhancements (nav item, risk-level chip, Opportunity tab).\nexport const NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIERS = {\n  contracts: \"979e246d-fac3-4098-bcad-24f77d065f57\",\n  pendingApprovalsView: \"983b3173-3401-440b-af22-8bee5e31d7a1\"\n} as const;\n\nexport const CONTRACT_RISK_LEVEL_FIELD_UNIVERSAL_IDENTIFIER =\n  \"40bb9271-9f33-4e52-b4b6-91cc58a412dc\";\n\nexport const CONTRACT_RISK_LEVEL_OPTION_UNIVERSAL_IDENTIFIERS = {\n  verde: \"98306cd9-e9cb-43fb-8a35-f2d1c8ce8d51\",\n  amarelo: \"4f64ec67-7b70-43d4-812a-1631964eb1b1\",\n  vermelho: \"029e55fa-61fb-480f-b8f5-a585388da4e9\"\n} as const;\n\n// Adds the reverse Opportunity -> Contracts relation to the Opportunity record\n// page's Relations group.\nexport const OPPORTUNITY_CONTRACTS_VIEW_FIELD_UNIVERSAL_IDENTIFIER =\n  \"6f2d9f81-2bf7-4030-af1e-0fffe3468793\";\n\nexport const CONTRACT_RISK_LEVEL_VIEW_FIELD_UNIVERSAL_IDENTIFIER =\n  \"77b79f8d-d365-4068-a88d-96f1a0a6941e\";\n\n// Added 2026-07-29 for renewal tracking (vig\u00EAncia + est\u00E1gio de renova\u00E7\u00E3o).\n//\n// IMPORTANT: unlike every other identifier in this file, these are NOT freshly\n// generated. They are pinned to the field/option identifiers that already exist\n// in the production workspace, where the fields were first created outside the\n// app (under the workspace's own application). Regenerating them would make the\n// deploy try to create a second `dataInicio`/`dataTermino`/`estagioRenovacao`\n// on Contract, which collides on the (object, name) uniqueness constraint.\n// Do not replace these with new UUIDs \u2014 see README \"Renewal tracking\".\nexport const CONTRACT_RENEWAL_FIELD_UNIVERSAL_IDENTIFIERS = {\n  dataInicio: '18dd3809-2832-484a-87b6-c0a74bf70c56',\n  dataTermino: '28eb43b7-fcfb-4259-a894-cef533ba2292',\n  estagioRenovacao: '83f2704a-bb13-4dd9-9bf2-ec792ba800b3',\n} as const;\n\nexport const CONTRACT_RENEWAL_STAGE_OPTION_UNIVERSAL_IDENTIFIERS = {\n  ativo: 'f3f27751-d3ea-4d1b-b2db-4d36179125f3',\n  renovacaoIniciada: '7517bf3d-b13e-4fa3-b199-b2280fe30267',\n  renovado: '5a7e5049-d115-4bb3-84b0-941b00c85f8d',\n  encerrado: '44755541-0569-418d-997c-8fcdb0025d2c',\n} as const;\n\nexport const VIEW_FIELD_UNIVERSAL_IDENTIFIERS = {\n  pendingApprovals: [\n    \"91bff7b8-d653-4e55-b46a-e1897dd1cc7b\",\n    \"deba2d27-b7e2-43c2-9ae6-f373f963b79f\",\n    \"cafed141-82dc-4bed-a039-4f54786f5f97\",\n    \"229831ac-f972-435a-87ac-ec3fa90cfe7e\",\n    \"f1ab3513-d8e6-4fe3-80af-dec9dcf67447\",\n    \"e342b6e0-9699-43d0-a4ae-b4cd139a6e6c\",\n    \"f91c99ea-0a38-4eed-a5ec-dbe7c3440ca3\",\n    \"ed138b74-a407-4c29-86bd-d8acd69340ef\",\n    \"762f5269-1d9b-4ce3-a417-5b26c257f3ad\"\n  ]\n} as const;\n", "import { CoreApiClient } from 'twenty-client-sdk/core';\n\nimport {\n  CONTRACT_NOT_FOUND_ERROR,\n  CONTRACT_NOT_SUBMITTABLE_ERROR,\n} from 'src/constants/messages';\nimport { nowIso } from 'src/logic-functions/utils/now-iso';\nimport { readContract } from 'src/logic-functions/utils/read-contract';\nimport { resolveActor } from 'src/logic-functions/utils/resolve-actor';\nimport { updateContract } from 'src/logic-functions/utils/update-contract';\nimport {\n  type SubmitForReviewInput,\n  type SubmitForReviewOutcome,\n} from 'src/types/logic-function-io';\nimport { isDefined } from 'src/utils/is-defined';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\n// A contract can (re)enter review from any non-final state, including while it\n// waits on a manager: a corrected version has to be reviewable without asking\n// the manager to reject the previous one first. Submitting withdraws the pending\n// request (the stamps are cleared below) rather than clobbering a decision.\n// APPROVED is excluded \u2014 reopening a closed contract is not a submit.\nconst SUBMITTABLE_STATUSES = new Set([\n  'DRAFT',\n  'REJECTED',\n  'PENDING_AI_REVIEW',\n  'PENDING_MANAGER_APPROVAL',\n]);\n\n// Marks the contract pending_ai_review and stamps who submitted it, then returns\n// immediately. The AI review is slow (tens of seconds), so it is NOT run inline\n// here \u2014 the caller (front-component) fires the ai-review function in the\n// background so the submit request returns instantly.\nexport const submitForReviewCore = async ({\n  input,\n  client = new CoreApiClient(),\n  eventUserWorkspaceId,\n}: {\n  input: SubmitForReviewInput;\n  client?: CoreApiClient;\n  eventUserWorkspaceId?: string | null;\n}): Promise<SubmitForReviewOutcome> => {\n  const contractId = input.contractId;\n\n  const contract = await readContract({ contractId });\n\n  if (!isDefined(contract)) {\n    return { success: false, recordId: contractId, error: CONTRACT_NOT_FOUND_ERROR };\n  }\n\n  const currentStatus = contract.status ?? 'DRAFT';\n\n  if (!SUBMITTABLE_STATUSES.has(currentStatus)) {\n    return {\n      success: false,\n      recordId: contractId,\n      status: currentStatus,\n      error: CONTRACT_NOT_SUBMITTABLE_ERROR,\n    };\n  }\n\n  const actor = await resolveActor({ client, eventUserWorkspaceId });\n\n  await updateContract({\n    contractId,\n    data: pruneUndefined({\n      status: 'PENDING_AI_REVIEW',\n      submittedAt: nowIso(),\n      submittedById: actor.workspaceMemberId,\n      // A new round starts undecided. Clearing these also lets the next decision\n      // be stamped, since the stamping guard keys off decidedAt being empty.\n      decidedAt: null,\n      approverId: null,\n    }),\n  });\n\n  return { success: true, recordId: contractId, status: 'PENDING_AI_REVIEW' };\n};\n", "export const LLM_NOT_CONFIGURED_SUMMARY =\n  'AI review not configured: set the ANTHROPIC_API_KEY app variable in Settings \u2192 Apps to enable automatic clause review. This contract awaits manual manager review.';\n\nexport const NON_MANAGER_ERROR =\n  'Only a Manager can approve or reject contracts.';\n\nexport const CONTRACT_NOT_FOUND_ERROR = 'Contract not found.';\n\nexport const CONTRACT_NOT_AWAITING_APPROVAL_ERROR =\n  'This contract is not awaiting manager approval.';\n\nexport const CONTRACT_NOT_SUBMITTABLE_ERROR =\n  'This contract cannot be submitted for review in its current status.';\n\nexport const AI_REVIEW_FAILED_PREFIX = 'AI review failed';\n", "export const nowIso = (): string => new Date().toISOString();\n", "import { isNull, isUndefined } from '@sniptt/guards';\n\nexport const isDefined = <T>(\n  value: T | null | undefined,\n): value is NonNullable<T> => !isUndefined(value) && !isNull(value);\n", "import { isDefined } from 'src/utils/is-defined';\n\n// The generated (Zeus) client is built from the workspace GraphQL introspection,\n// which does not reliably expose this app's own custom objects (Contract,\n// ApprovalDecision) \u2014 so client.query/mutation on them can fail client-side at\n// runtime with \"type Query does not have a field contracts\". The server has the\n// types, so we talk to it directly with a raw GraphQL request using the\n// application access token the function runs with. Standard objects can still use\n// the typed client; custom-object operations go through here.\nconst API_URL_ENV = 'TWENTY_API_URL';\nconst TOKEN_ENV_VARS = ['TWENTY_APP_ACCESS_TOKEN', 'TWENTY_API_KEY'] as const;\n\nconst isNonEmpty = (value: unknown): value is string =>\n  typeof value === 'string' && value.length > 0;\n\nconst getToken = (): string | undefined => {\n  for (const envVar of TOKEN_ENV_VARS) {\n    const value = process.env[envVar];\n\n    if (isNonEmpty(value)) {\n      return value;\n    }\n  }\n\n  return undefined;\n};\n\nexport const runCoreGraphql = async <TData>(\n  query: string,\n  variables?: Record<string, unknown>,\n): Promise<TData> => {\n  const apiUrl = process.env[API_URL_ENV]?.replace(/\\/$/, '');\n  const token = getToken();\n\n  if (!isNonEmpty(apiUrl) || !isDefined(token)) {\n    throw new Error(\n      'Contract Approval: missing API URL or access token in the function environment.',\n    );\n  }\n\n  const response = await fetch(`${apiUrl}/graphql`, {\n    method: 'POST',\n    headers: {\n      'content-type': 'application/json',\n      authorization: `Bearer ${token}`,\n    },\n    body: JSON.stringify({ query, ...(variables ? { variables } : {}) }),\n  });\n\n  const payload = (await response.json()) as { data?: TData; errors?: unknown };\n\n  if (payload.errors) {\n    throw new Error(\n      `Contract Approval GraphQL error: ${JSON.stringify(payload.errors).slice(0, 300)}`,\n    );\n  }\n\n  return payload.data as TData;\n};\n", "import {\n  type AttachmentNode,\n  type ContractRecord,\n} from 'src/types/attachment-node';\nimport { runCoreGraphql } from 'src/logic-functions/utils/run-core-graphql';\nimport { isDefined } from 'src/utils/is-defined';\n\ntype ContractQueryResult = {\n  contracts?: {\n    edges?: {\n      node?: {\n        id?: string | null;\n        name?: string | null;\n        paymentTermsCustomer?: string | null;\n        paymentTermsSupplier?: string | null;\n        status?: string | null;\n        submittedAt?: string | null;\n        decidedAt?: string | null;\n        submittedById?: string | null;\n        approverId?: string | null;\n        aiPaymentTermsSnapshot?: string | null;\n        updatedBy?: { workspaceMemberId?: string | null; name?: string | null } | null;\n        attachments?: { edges?: { node?: AttachmentNode }[] };\n      };\n    }[];\n  };\n};\n\n// Reads a Contract plus its attachments. Contract is this app's custom object,\n// which the generated client can't reliably query, so use raw GraphQL. Custom\n// objects automatically receive an `attachments` relation, and the Attachment\n// `file` FILES field is returned with a signed, fetchable `url` on read.\nexport const readContract = async ({\n  contractId,\n}: {\n  contractId: string;\n}): Promise<ContractRecord | undefined> => {\n  const result = await runCoreGraphql<ContractQueryResult>(\n    `query ReadContract($filter: ContractFilterInput) {\n      contracts(filter: $filter, first: 1) {\n        edges {\n          node {\n            id\n            name\n            paymentTermsCustomer\n            paymentTermsSupplier\n            status\n            submittedAt\n            decidedAt\n            submittedById\n            approverId\n            aiPaymentTermsSnapshot\n            updatedBy { workspaceMemberId name }\n            attachments {\n              edges {\n                node {\n                  id\n                  name\n                  fullPath\n                  createdAt\n                  file { fileId label extension url }\n                }\n              }\n            }\n          }\n        }\n      }\n    }`,\n    { filter: { id: { eq: contractId } } },\n  );\n\n  const node = result.contracts?.edges?.[0]?.node;\n\n  if (!isDefined(node) || !isDefined(node.id)) {\n    return undefined;\n  }\n\n  const attachments = (node.attachments?.edges ?? [])\n    .map((edge) => edge?.node)\n    .filter((attachment): attachment is AttachmentNode => isDefined(attachment));\n\n  return {\n    id: node.id,\n    name: node.name ?? null,\n    paymentTermsCustomer: node.paymentTermsCustomer ?? null,\n    paymentTermsSupplier: node.paymentTermsSupplier ?? null,\n    status: node.status ?? null,\n    submittedAt: node.submittedAt ?? null,\n    decidedAt: node.decidedAt ?? null,\n    submittedById: node.submittedById ?? null,\n    approverId: node.approverId ?? null,\n    aiPaymentTermsSnapshot: node.aiPaymentTermsSnapshot ?? null,\n    lastEditorWorkspaceMemberId: node.updatedBy?.workspaceMemberId ?? null,\n    attachments,\n  };\n};\n", "import { GERENTE_SOCIO_ROLE_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport type RoleRef = {\n  universalIdentifier?: string | null;\n  label?: string | null;\n};\n\n// The exact label seeded by src/roles/gerente-socio.role.ts. Used only as a\n// resilience fallback when a role's universalIdentifier is not returned by the\n// API. Keep in sync with MANAGER_ROLE_LABEL there.\nexport const MANAGER_ROLE_LABEL = 'Manager';\n\n// A role grants approve/reject authority only when it is THIS app's seeded\n// Manager role, matched by its stable universalIdentifier \u2014 not by a\n// human-editable label an admin could reuse for an unrelated role (which would\n// silently broaden who can pass the legal/financial approval gate).\nexport const isManagerRole = (role: RoleRef): boolean => {\n  if (\n    isDefined(role.universalIdentifier) &&\n    role.universalIdentifier === GERENTE_SOCIO_ROLE_UNIVERSAL_IDENTIFIER\n  ) {\n    return true;\n  }\n\n  // Resilience fallback: only when universalIdentifier is absent, accept an\n  // exact match on the seeded label (not broad single-word variants). Prevents\n  // a total lockout if the API omits universalIdentifier on the roles field.\n  return (\n    !isDefined(role.universalIdentifier) &&\n    typeof role.label === 'string' &&\n    role.label.trim() === MANAGER_ROLE_LABEL\n  );\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { isManagerRole, type RoleRef } from 'src/constants/manager-role';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport type ResolvedActor = {\n  workspaceMemberId: string | undefined;\n  userWorkspaceId: string | undefined;\n  roleLabels: string[];\n  isManager: boolean;\n};\n\ntype RoleResult = {\n  id?: string | null;\n  universalIdentifier?: string | null;\n  label?: string | null;\n};\n\ntype CurrentUserResult = {\n  currentUser?: {\n    id?: string | null;\n    workspaceMember?: {\n      id?: string | null;\n      userWorkspaceId?: string | null;\n      roles?: RoleResult[] | null;\n    } | null;\n  } | null;\n};\n\nconst toRoleRefs = (roles: RoleResult[] | null | undefined): RoleRef[] =>\n  (roles ?? []).map((role) => ({\n    universalIdentifier: role?.universalIdentifier ?? undefined,\n    label: role?.label ?? undefined,\n  }));\n\nconst roleLabelsOf = (roles: RoleRef[]): string[] =>\n  roles\n    .map((role) => role.label)\n    .filter((label): label is string => isDefined(label));\n\n// currentUser is a core query that may not be present in the generated client\n// schema, so query through a loosely-typed escape hatch (same pattern the\n// enrichment apps use for not-yet-typed mutations).\nconst queryUnchecked = (\n  client: CoreApiClient,\n  request: unknown,\n): Promise<unknown> => client.query(request as never);\n\nexport const determineIsManager = (roles: RoleRef[]): boolean =>\n  roles.some((role) => isManagerRole(role));\n\n// Resolves the INVOKING user (the actor) for a route-auth'd (isAuthRequired:true)\n// logic function.\n//\n// PRIMARY PATH (Phase-0 P0b = GO): the app-access-token minted for an\n// authenticated route carries the invoking user's identity, so the CoreApiClient\n// authenticates AS that user. `currentUser.workspaceMember` then returns the\n// actor's id and their roles (self-scoped \u2014 no ROLES settings permission needed).\n//\n// FALLBACK PATH (flip here if P0b turns out NO): the route event also exposes\n// `userWorkspaceId` at the top level. If currentUser is unavailable, resolve the\n// workspace member by that userWorkspaceId and treat missing roles as non-manager\n// (deny-by-default). Swap `primaryActor` for `fallbackActor` below to flip the\n// go/no-go without restructuring callers.\nexport const resolveActor = async ({\n  client,\n  eventUserWorkspaceId,\n}: {\n  client: CoreApiClient;\n  eventUserWorkspaceId?: string | null;\n}): Promise<ResolvedActor> => {\n  const primaryActor = await tryResolveViaCurrentUser(client);\n\n  if (isDefined(primaryActor)) {\n    return primaryActor;\n  }\n\n  return fallbackViaUserWorkspaceId({ client, eventUserWorkspaceId });\n};\n\nconst tryResolveViaCurrentUser = async (\n  client: CoreApiClient,\n): Promise<ResolvedActor | undefined> => {\n  let result: CurrentUserResult;\n\n  try {\n    result = (await queryUnchecked(client, {\n      currentUser: {\n        id: true,\n        workspaceMember: {\n          id: true,\n          userWorkspaceId: true,\n          roles: { id: true, universalIdentifier: true, label: true },\n        },\n      },\n    })) as CurrentUserResult;\n  } catch {\n    return undefined;\n  }\n\n  const member = result.currentUser?.workspaceMember;\n\n  if (!isDefined(member) || !isDefined(member.id)) {\n    return undefined;\n  }\n\n  const roles = toRoleRefs(member.roles);\n\n  return {\n    workspaceMemberId: member.id,\n    userWorkspaceId: member.userWorkspaceId ?? undefined,\n    roleLabels: roleLabelsOf(roles),\n    isManager: determineIsManager(roles),\n  };\n};\n\ntype WorkspaceMemberByUserWorkspaceResult = {\n  workspaceMembers?: {\n    edges?: {\n      node?: {\n        id?: string | null;\n        roles?: RoleResult[] | null;\n      };\n    }[];\n  };\n};\n\nconst fallbackViaUserWorkspaceId = async ({\n  client,\n  eventUserWorkspaceId,\n}: {\n  client: CoreApiClient;\n  eventUserWorkspaceId?: string | null;\n}): Promise<ResolvedActor> => {\n  const emptyActor: ResolvedActor = {\n    workspaceMemberId: undefined,\n    userWorkspaceId: eventUserWorkspaceId ?? undefined,\n    roleLabels: [],\n    isManager: false,\n  };\n\n  if (!isDefined(eventUserWorkspaceId)) {\n    return emptyActor;\n  }\n\n  try {\n    const result = (await queryUnchecked(client, {\n      workspaceMembers: {\n        __args: {\n          filter: { userWorkspaceId: { eq: eventUserWorkspaceId } },\n          first: 1,\n        },\n        edges: {\n          node: {\n            id: true,\n            roles: { id: true, universalIdentifier: true, label: true },\n          },\n        },\n      },\n    })) as WorkspaceMemberByUserWorkspaceResult;\n\n    const node = result.workspaceMembers?.edges?.[0]?.node;\n\n    if (!isDefined(node) || !isDefined(node.id)) {\n      return emptyActor;\n    }\n\n    const roles = toRoleRefs(node.roles);\n\n    return {\n      workspaceMemberId: node.id,\n      userWorkspaceId: eventUserWorkspaceId,\n      roleLabels: roleLabelsOf(roles),\n      isManager: determineIsManager(roles),\n    };\n  } catch {\n    return emptyActor;\n  }\n};\n", "import { runCoreGraphql } from 'src/logic-functions/utils/run-core-graphql';\n\nexport type ContractUpdateData = Record<string, unknown>;\n\n// updateContract targets this app's custom object, which the generated client\n// can't reliably mutate, so use raw GraphQL against the server.\nexport const updateContract = async ({\n  contractId,\n  data,\n}: {\n  contractId: string;\n  data: ContractUpdateData;\n}): Promise<void> => {\n  await runCoreGraphql(\n    `mutation UpdateContract($id: UUID!, $data: ContractUpdateInput!) {\n      updateContract(id: $id, data: $data) { id }\n    }`,\n    { id: contractId, data },\n  );\n};\n", "import { isUndefined } from '@sniptt/guards';\n\nexport const pruneUndefined = <TValue>(\n  record: Record<string, TValue | undefined>,\n): Record<string, TValue> => {\n  const pruned: Record<string, TValue> = {};\n\n  for (const [key, value] of Object.entries(record)) {\n    if (!isUndefined(value)) {\n      pruned[key] = value as TValue;\n    }\n  }\n\n  return pruned;\n};\n", "import { isObject } from '@sniptt/guards';\nimport { type RoutePayload } from 'twenty-sdk/define';\n\nimport { isDefined } from 'src/utils/is-defined';\n\n// A RoutePayload (HTTP route invocation) is detectable by its requestContext;\n// a workflow/tool invocation passes the input object directly.\nexport const isRoutePayload = <TBody>(\n  input: unknown,\n): input is RoutePayload<TBody> =>\n  isObject(input) && 'requestContext' in (input as Record<string, unknown>);\n\nexport const extractBody = <TBody>(\n  input: RoutePayload<TBody> | TBody,\n): TBody | undefined =>\n  isRoutePayload<TBody>(input) ? (input.body ?? undefined) : input;\n\nexport const extractUserWorkspaceId = (input: unknown): string | undefined => {\n  if (!isRoutePayload<unknown>(input)) {\n    return undefined;\n  }\n\n  const value = input.userWorkspaceId;\n\n  return isDefined(value) ? value : undefined;\n};\n\n// A database-event invocation carries `name` (e.g. \"contract.updated\") and a\n// top-level `recordId`. Detect it and return the record id so the same handler\n// can serve both the DB-event trigger and the HTTP route.\nexport const extractDatabaseEventRecordId = (\n  input: unknown,\n): string | undefined => {\n  if (!isObject(input)) {\n    return undefined;\n  }\n\n  const event = input as { name?: unknown; recordId?: unknown };\n\n  if (typeof event.name !== 'string' || !event.name.includes('.')) {\n    return undefined;\n  }\n\n  return typeof event.recordId === 'string' && event.recordId.trim() !== ''\n    ? event.recordId.trim()\n    : undefined;\n};\n\n// A workflow \"record\" input arrives as { id }, an HTTP body sends a plain\n// string. Normalize both to the record id.\nexport const normalizeRecordId = (value: unknown): string | undefined => {\n  if (typeof value === 'string' && value.trim() !== '') {\n    return value.trim();\n  }\n\n  if (isObject(value)) {\n    const id = (value as { id?: unknown }).id;\n\n    if (typeof id === 'string' && id.trim() !== '') {\n      return id.trim();\n    }\n  }\n\n  return undefined;\n};\n", "import { defineLogicFunction } from 'twenty-sdk/define';\n\nimport {\n  LOGIC_FUNCTION_CONSTANTS,\n  OBJECT_UNIVERSAL_IDENTIFIERS,\n} from 'src/constants/universal-identifiers';\nimport { submitForReviewCore } from 'src/logic-functions/handlers/submit-for-review';\nimport {\n  extractBody,\n  extractUserWorkspaceId,\n  normalizeRecordId,\n} from 'src/logic-functions/utils/route-input';\nimport {\n  type SubmitForReviewInput,\n  type SubmitForReviewOutcome,\n} from 'src/types/logic-function-io';\n\nconst handler = (input: unknown): Promise<SubmitForReviewOutcome> => {\n  const body = extractBody<SubmitForReviewInput>(input as never);\n  const contractId = normalizeRecordId(body?.contractId);\n\n  if (contractId === undefined) {\n    return Promise.resolve({\n      success: false,\n      recordId: '',\n      error: 'Missing contractId.',\n    });\n  }\n\n  return submitForReviewCore({\n    input: { contractId },\n    eventUserWorkspaceId: extractUserWorkspaceId(input),\n  });\n};\n\nexport default defineLogicFunction({\n  universalIdentifier:\n    LOGIC_FUNCTION_CONSTANTS.submitForReview.universalIdentifier,\n  name: 'submit-for-review',\n  description:\n    'Submits a Contract for review: marks it pending AI review, records the submitter, and runs the AI review directly.',\n  timeoutSeconds: 120,\n  handler,\n  httpRouteTriggerSettings: {\n    path: LOGIC_FUNCTION_CONSTANTS.submitForReview.path,\n    httpMethod: 'POST',\n    isAuthRequired: true,\n  },\n  workflowActionTriggerSettings: {\n    label: 'Submit contract for review',\n    icon: 'IconFileUpload',\n    inputSchema: [\n      {\n        type: 'object',\n        properties: {\n          contractId: {\n            type: 'record',\n            objectUniversalIdentifier: OBJECT_UNIVERSAL_IDENTIFIERS.contract,\n            label: 'Contract',\n          },\n        },\n      },\n    ],\n    outputSchema: [\n      {\n        type: 'object',\n        properties: {\n          success: { type: 'boolean', label: 'Success' },\n          recordId: { type: 'string', label: 'Record Id' },\n        },\n      },\n    ],\n  },\n});\n"],
  "mappings": "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",
  "names": ["isUndefined", "isNull", "isObject", "import_guards", "import_guards"]
}
