{
  "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/lib/score-record.ts", "../../../../node_modules/twenty-shared/dist/is-record-object-schema-CwzshFdt.mjs", "../../../../node_modules/twenty-shared/dist/logic-function.mjs", "../../../../node_modules/twenty-sdk/src/sdk/logic-function/connections/errors/app-connection-auth-failed.error.ts", "../../../../node_modules/twenty-shared/dist/ViewKey-YV4NySfb.mjs", "../../../../node_modules/twenty-shared/dist/get-field-universal-identifier.util-CK9_m9RQ.mjs", "../../../../node_modules/twenty-shared/dist/application.mjs", "../../../../node_modules/twenty-sdk/src/sdk/logic-function/utils/post-graphql-request.util.ts", "../../../../node_modules/twenty-sdk/src/sdk/logic-function/connections/get-connection.ts", "../../../../node_modules/twenty-sdk/src/sdk/logic-function/connections/list-connections.ts", "../../../../node_modules/twenty-sdk/src/sdk/logic-function/connections/find-connection-for-request.ts", "../../../../node_modules/twenty-sdk/src/sdk/logic-function/agents/run-agent.ts", "../../../../node_modules/twenty-sdk/src/sdk/logic-function/response.ts", "../../../../src/lib/build-prompt.ts", "../../../../src/lib/enrich.ts", "../../../../src/lib/score-on-event.ts", "../../../../src/logic-functions/opportunity-score-on-updated.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 defineSkill = __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 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 = 'Lead Scoring Agent';\nexport const APP_DESCRIPTION = 'AI lead scoring and enrichment agent for Twenty CRM';\nexport const APPLICATION_UNIVERSAL_IDENTIFIER = '94f2e86e-62e5-4695-b4e8-50059cd7db30';\nexport const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'c9a59ba6-03be-41f8-9ef3-3fc858fbd8ae';\nexport const MAIN_PAGE_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER =\n  '90e55e60-286b-49de-a2ce-6303afaae532';\nexport const MAIN_PAGE_LAYOUT_UNIVERSAL_IDENTIFIER = 'dbec88c2-9609-4d9a-8f04-4da5fa4325d5';\nexport const MAIN_PAGE_LAYOUT_TAB_UNIVERSAL_IDENTIFIER = 'b3090e7f-59ea-4cc3-afb5-dc9396e19756';\nexport const MAIN_PAGE_WIDGET_UNIVERSAL_IDENTIFIER = '721c32d7-e919-4ab3-af47-8f83ce3813d8';\nexport const MAIN_PAGE_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER =\n  '05883ee0-85f0-47cc-ac55-958be6a6e502';\n\n// Lead-scoring custom fields (TCA-3)\nexport const PERSON_LEAD_SCORE_FIELD_UNIVERSAL_IDENTIFIER =\n  'f5374be3-4752-4eb1-aaee-aeaa99782274';\nexport const PERSON_LEAD_SCORE_SUMMARY_FIELD_UNIVERSAL_IDENTIFIER =\n  '8a2cf015-3059-483a-b655-9b4c8381a2de';\nexport const PERSON_LEAD_SCORED_AT_FIELD_UNIVERSAL_IDENTIFIER =\n  'b56cb686-455c-42ea-8a42-eb64d45aeb70';\nexport const PERSON_LEAD_SCORE_STATUS_FIELD_UNIVERSAL_IDENTIFIER =\n  '3b99d41b-67f6-4436-ae53-deb9f5d6a70f';\nexport const OPPORTUNITY_LEAD_SCORE_FIELD_UNIVERSAL_IDENTIFIER =\n  '37831211-183e-4766-b643-d4539c79e16b';\nexport const OPPORTUNITY_LEAD_SCORE_SUMMARY_FIELD_UNIVERSAL_IDENTIFIER =\n  '44c4fa1e-a1c9-4a7d-bf10-8e3d8ed0ce0a';\nexport const OPPORTUNITY_LEAD_SCORED_AT_FIELD_UNIVERSAL_IDENTIFIER =\n  '0c29ee13-9fd6-4cf1-812c-921861845941';\nexport const OPPORTUNITY_LEAD_SCORE_STATUS_FIELD_UNIVERSAL_IDENTIFIER =\n  'aecb4dd2-514a-49fa-a9fc-76d8a903714a';\n\n// Lead-scorer agent (TCA-4)\nexport const LEAD_SCORER_AGENT_UNIVERSAL_IDENTIFIER =\n  '9d7079b1-cb1f-473e-8cf3-69614f382254';\n\n// Logic functions: scoreOnEvent (TCA-9) + drainQueue (TCA-10)\nexport const PERSON_SCORE_ON_CREATED_FUNCTION_UNIVERSAL_IDENTIFIER =\n  '3a44b88b-a56f-4693-8968-33b9215407fc';\nexport const PERSON_SCORE_ON_UPDATED_FUNCTION_UNIVERSAL_IDENTIFIER =\n  '2a879207-f1c2-409a-90fe-636133ce4446';\nexport const OPPORTUNITY_SCORE_ON_CREATED_FUNCTION_UNIVERSAL_IDENTIFIER =\n  '9130ed95-9c76-49a5-8722-2b3e7b52d640';\nexport const OPPORTUNITY_SCORE_ON_UPDATED_FUNCTION_UNIVERSAL_IDENTIFIER =\n  'efcf62de-260b-4583-9c2d-a14e7296d13c';\nexport const DRAIN_QUEUE_FUNCTION_UNIVERSAL_IDENTIFIER =\n  'a68d29b9-eb06-41d5-9416-52498f6fd41f';\n\n// Leads views sorted by leadScore desc (TCA-8)\nexport const PERSON_LEADS_VIEW_UNIVERSAL_IDENTIFIER =\n  '1120ee21-41a8-4af0-9a26-6cae1a7432cd';\nexport const PERSON_LEADS_VIEW_SORT_UNIVERSAL_IDENTIFIER =\n  '56341e06-9015-452b-a802-6d0bbade0b87';\nexport const OPPORTUNITY_LEADS_VIEW_UNIVERSAL_IDENTIFIER =\n  '97f70757-8635-4f98-8281-b1bc0182f19d';\nexport const OPPORTUNITY_LEADS_VIEW_SORT_UNIVERSAL_IDENTIFIER =\n  '50125f82-1d24-4a86-856d-1717763c455c';\n\n// Standard field universal identifiers (context columns in leads views, TCA-8)\nexport const PERSON_NAME_FIELD_UNIVERSAL_IDENTIFIER =\n  '20202020-3875-44d5-8c33-a6239011cab8';\nexport const PERSON_JOB_TITLE_FIELD_UNIVERSAL_IDENTIFIER =\n  '20202020-b0d0-415a-bef9-640a26dacd9b';\nexport const PERSON_COMPANY_FIELD_UNIVERSAL_IDENTIFIER =\n  '20202020-e2f3-448e-b34c-2d625f0025fd';\nexport const OPPORTUNITY_NAME_FIELD_UNIVERSAL_IDENTIFIER =\n  '20202020-8609-4f65-a2d9-44009eb422b5';\nexport const OPPORTUNITY_AMOUNT_FIELD_UNIVERSAL_IDENTIFIER =\n  '20202020-583e-4642-8533-db761d5fa82f';\nexport const OPPORTUNITY_STAGE_FIELD_UNIVERSAL_IDENTIFIER =\n  '20202020-6f76-477d-8551-28cd65b2b4b9';\n\n// Leads view fields (visible columns, TCA-8)\nexport const PERSON_LEADS_VIEW_FIELD_NAME_UNIVERSAL_IDENTIFIER =\n  'eb70632e-53c1-4184-a0ce-0fcab78e93c7';\nexport const PERSON_LEADS_VIEW_FIELD_JOB_TITLE_UNIVERSAL_IDENTIFIER =\n  '40a34cb1-df20-46d0-a6a9-d0fe356fa23c';\nexport const PERSON_LEADS_VIEW_FIELD_COMPANY_UNIVERSAL_IDENTIFIER =\n  '41c3f224-d5b2-42cf-87f8-ff2d3f86ddb3';\nexport const PERSON_LEADS_VIEW_FIELD_LEAD_SCORE_UNIVERSAL_IDENTIFIER =\n  '93d0d121-54c6-4aab-83fc-e519837ead26';\nexport const PERSON_LEADS_VIEW_FIELD_LEAD_SCORE_STATUS_UNIVERSAL_IDENTIFIER =\n  '17d29dc8-8e67-4080-8003-3df2baab8c24';\nexport const OPPORTUNITY_LEADS_VIEW_FIELD_NAME_UNIVERSAL_IDENTIFIER =\n  '5c1ae67c-67ac-4799-be80-1aad69e9fa60';\nexport const OPPORTUNITY_LEADS_VIEW_FIELD_AMOUNT_UNIVERSAL_IDENTIFIER =\n  '39d02d43-ec15-4023-a475-16637cc57841';\nexport const OPPORTUNITY_LEADS_VIEW_FIELD_STAGE_UNIVERSAL_IDENTIFIER =\n  '9de6325a-5598-4767-b985-440ec024c17f';\nexport const OPPORTUNITY_LEADS_VIEW_FIELD_LEAD_SCORE_UNIVERSAL_IDENTIFIER =\n  'e78fb4e2-fa89-4311-8c4d-c2b6e11a2c02';\nexport const OPPORTUNITY_LEADS_VIEW_FIELD_LEAD_SCORE_STATUS_UNIVERSAL_IDENTIFIER =\n  '2df313ba-eca2-4621-8998-435a2d7ed31b';\n\n// Backfill logic function (TCA-12)\nexport const BACKFILL_FUNCTION_UNIVERSAL_IDENTIFIER =\n  '4e419acc-e5b1-4346-a4c6-7262851fc507';\n", "/**\n * Shared scoring path (TCA-9 / TCA-10).\n *\n * `scoreRecord` runs the full enrich -> build prompt -> runAgent -> write\n * pipeline for a single person or opportunity and is reused by both the\n * database-event handler (inline scoring) and the cron drain (queued scoring).\n *\n * Loop safety: writes only ever touch the score fields (`leadScore`,\n * `leadScoreSummary`, `leadScoredAt`, `leadScoreStatus`). No update trigger\n * watches those fields, so a score write can never re-trigger scoring.\n */\nimport { CoreApiClient } from 'twenty-client-sdk/core';\nimport { runAgent } from 'twenty-sdk/logic-function';\n\nimport { LEAD_SCORER_AGENT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';\nimport {\n  buildOpportunityScoringPrompt,\n  buildPersonScoringPrompt,\n  type OpportunityScoringRecord,\n  type PersonScoringRecord,\n} from 'src/lib/build-prompt';\nimport { enrichRecord } from 'src/lib/enrich';\n\nexport type ScoreObjectType = 'person' | 'opportunity';\nexport type LeadScoreStatus = 'QUEUED' | 'SCORED' | 'SKIPPED' | 'FAILED';\n\ntype LeadScoreData = {\n  leadScoreStatus: LeadScoreStatus;\n  leadScore?: number;\n  leadScoreSummary?: string;\n  leadScoredAt?: string;\n};\n\nconst writeLeadScoreFields = async (\n  objectType: ScoreObjectType,\n  recordId: string,\n  data: LeadScoreData,\n): Promise<void> => {\n  const client = new CoreApiClient();\n\n  if (objectType === 'person') {\n    await client.mutation({\n      updatePerson: { __args: { id: recordId, data }, id: true },\n    });\n  } else {\n    await client.mutation({\n      updateOpportunity: { __args: { id: recordId, data }, id: true },\n    });\n  }\n};\n\n/** Write only the lifecycle status (used for SKIPPED / QUEUED / FAILED). */\nexport const setLeadScoreStatus = (\n  objectType: ScoreObjectType,\n  recordId: string,\n  status: LeadScoreStatus,\n): Promise<void> =>\n  writeLeadScoreFields(objectType, recordId, { leadScoreStatus: status });\n\nconst buildPromptFor = (\n  objectType: ScoreObjectType,\n  record: PersonScoringRecord | OpportunityScoringRecord,\n): string =>\n  objectType === 'person'\n    ? buildPersonScoringPrompt(record as PersonScoringRecord)\n    : buildOpportunityScoringPrompt(record as OpportunityScoringRecord);\n\n/**\n * Transient credit/quota exhaustion \u2014 retry when credits return, never fail\n * terminally. Matches the message the SDK throws on quota errors, e.g.\n * `Error(\"runAgent() failed: Credits exhausted\")`; string-matching is the only\n * signal available since `RunAgentResult` exposes only `error: string | null`.\n */\nconst CREDIT_EXHAUSTION_PATTERN = /credits?\\s+exhausted/i;\n\nconst reasonFrom = (source: unknown): string => {\n  const message =\n    source instanceof Error ? source.message : String(source ?? '');\n\n  return message.trim() || 'Unknown scoring error';\n};\n\n/**\n * Persist a non-success outcome without swallowing it (TCA-13). Credit\n * exhaustion is transient, so the record goes back to QUEUED to be re-scored\n * once credits return; any other error is terminal FAILED with the reason\n * captured in `leadScoreSummary` (and logged) so a failed record is\n * self-explaining.\n */\nconst recordFailure = async (\n  objectType: ScoreObjectType,\n  recordId: string,\n  source: unknown,\n): Promise<LeadScoreStatus> => {\n  const reason = reasonFrom(source);\n  console.error(`scoreRecord ${objectType} ${recordId} failed: ${reason}`);\n\n  if (CREDIT_EXHAUSTION_PATTERN.test(reason)) {\n    await setLeadScoreStatus(objectType, recordId, 'QUEUED');\n    return 'QUEUED';\n  }\n\n  await writeLeadScoreFields(objectType, recordId, {\n    leadScoreStatus: 'FAILED',\n    leadScoreSummary: reason,\n  });\n\n  return 'FAILED';\n};\n\n/**\n * Enrich, score via the agent, and persist the result.\n * Writes SCORED (with score + summary + timestamp) on success. On failure the\n * outcome is captured (never swallowed): credit exhaustion re-queues as QUEUED,\n * any other error is terminal FAILED with the reason in `leadScoreSummary`.\n * Returns the resulting status.\n */\nexport const scoreRecord = async (\n  objectType: ScoreObjectType,\n  recordId: string,\n): Promise<LeadScoreStatus> => {\n  try {\n    const record = await enrichRecord({ objectType, recordId });\n    const prompt = buildPromptFor(objectType, record);\n\n    const { result, error, success } = await runAgent({\n      agentUniversalIdentifier: LEAD_SCORER_AGENT_UNIVERSAL_IDENTIFIER,\n      prompt,\n    });\n\n    const parsed = result as { score?: number; summary?: string } | null;\n\n    if (!success || !parsed || typeof parsed.score !== 'number') {\n      return recordFailure(objectType, recordId, error ?? 'Agent returned no score');\n    }\n\n    await writeLeadScoreFields(objectType, recordId, {\n      leadScore: parsed.score,\n      leadScoreSummary: parsed.summary ?? '',\n      leadScoredAt: new Date().toISOString(),\n      leadScoreStatus: 'SCORED',\n    });\n\n    return 'SCORED';\n  } catch (error) {\n    return recordFailure(objectType, recordId, error);\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}({}), t = /* @__PURE__ */ function(e) {\n\treturn e.INDEX = \"INDEX\", e;\n}({});\n//#endregion\nexport { e as n, 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});\n//#endregion\nexport { n, t as r, r as t };\n", "import { n as e, t } from \"./ViewKey-YV4NySfb.mjs\";\nimport { n, r, t as i } from \"./get-field-universal-identifier.util-CK9_m9RQ.mjs\";\n//#region src/application/applicationCategoryType.ts\nvar a = [\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], o = (e) => a.includes(e), s = [\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], c = \"public\", l = \"TWENTY_API_KEY\", u = \"TWENTY_API_URL\", d = \"TWENTY_APP_ACCESS_TOKEN\", f = \"TWENTY_FUNCTIONS_URL\", p = \"generated\", m = { js: \"import { createRequire as __createRequire } from 'module';\\nconst require = __createRequire(import.meta.url);\" }, h = \".twenty/output\", g = \"Standard\", _ = ({ applicationUniversalIdentifier: e, name: t }) => n({\n\tentityNamespace: \"agent\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), v = ({ applicationUniversalIdentifier: e, key: t }) => n({\n\tentityNamespace: \"applicationVariable\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), y = \"navigation\", b = ({ applicationUniversalIdentifier: e, engineComponentKey: t }) => n({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `GLOBAL:${t}`,\n\tapplicationUniversalIdentifier: e\n}), x = ({ applicationUniversalIdentifier: e, engineComponentKey: t }) => n({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `GLOBAL_OBJECT_CONTEXT:${t}`,\n\tapplicationUniversalIdentifier: e\n}), S = ({ applicationUniversalIdentifier: e, engineComponentKey: t, objectUniversalIdentifier: r }) => n({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `RECORD_SELECTION:${t}:${r ?? \"\"}`,\n\tapplicationUniversalIdentifier: e\n}), C = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t }) => n({\n\tentityNamespace: \"commandMenuItem\",\n\tvalue: `${t}:${y}`,\n\tapplicationUniversalIdentifier: e\n}), w = ({ applicationUniversalIdentifier: e, name: t }) => n({\n\tentityNamespace: \"connectionProvider\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), T = ({ applicationUniversalIdentifier: e, roleUniversalIdentifier: t, fieldUniversalIdentifier: r }) => n({\n\tentityNamespace: \"fieldPermission\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), E = ({ applicationUniversalIdentifier: e, componentName: t }) => n({\n\tentityNamespace: \"frontComponent\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), D = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t, name: r }) => n({\n\tentityNamespace: \"index\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), O = ({ applicationUniversalIdentifier: e, name: t }) => n({\n\tentityNamespace: \"logicFunction\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), k = ({ applicationUniversalIdentifier: e, name: t }) => n({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `FOLDER:${t}`,\n\tapplicationUniversalIdentifier: e\n}), A = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t }) => n({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `OBJECT:${t}`,\n\tapplicationUniversalIdentifier: e\n}), ee = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: t }) => n({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `VIEW:${t}`,\n\tapplicationUniversalIdentifier: e\n}), j = ({ applicationUniversalIdentifier: e, link: t }) => n({\n\tentityNamespace: \"navigationMenuItem\",\n\tvalue: `LINK:${t}`,\n\tapplicationUniversalIdentifier: e\n}), M = ({ applicationUniversalIdentifier: e, roleUniversalIdentifier: t, objectUniversalIdentifier: r }) => n({\n\tentityNamespace: \"objectPermission\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), N = ({ applicationUniversalIdentifier: e, nameSingular: t }) => n({\n\tentityNamespace: \"objectMetadata\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), P = ({ applicationUniversalIdentifier: e, pageLayoutUniversalIdentifier: t, title: r }) => n({\n\tentityNamespace: \"pageLayoutTab\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), F = \"RECORD_PAGE\", I = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t, name: r }) => n({\n\tentityNamespace: \"pageLayout\",\n\tvalue: t ? `${t}:${r}` : r,\n\tapplicationUniversalIdentifier: e\n}), L = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t }) => n({\n\tentityNamespace: \"pageLayout\",\n\tvalue: `${t}:${F}`,\n\tapplicationUniversalIdentifier: e\n}), R = ({ applicationUniversalIdentifier: e, pageLayoutTabUniversalIdentifier: t, title: r }) => n({\n\tentityNamespace: \"pageLayoutWidget\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), z = ({ applicationUniversalIdentifier: e, key: t }) => n({\n\tentityNamespace: \"permissionFlag\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), B = ({ applicationUniversalIdentifier: e, roleUniversalIdentifier: t, permissionFlagUniversalIdentifier: r }) => n({\n\tentityNamespace: \"rolePermissionFlag\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), V = ({ applicationUniversalIdentifier: e, label: t }) => n({\n\tentityNamespace: \"role\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), H = ({ applicationUniversalIdentifier: e, fieldMetadataUniversalIdentifier: t }) => n({\n\tentityNamespace: \"searchFieldMetadata\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), U = ({ applicationUniversalIdentifier: e, fieldUniversalIdentifier: t, value: r }) => n({\n\tentityNamespace: \"selectOption\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), W = ({ applicationUniversalIdentifier: e, name: t }) => n({\n\tentityNamespace: \"skill\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), G = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: t, name: r }) => n({\n\tentityNamespace: \"viewFieldGroup\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), K = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: t, fieldMetadataUniversalIdentifier: r }) => n({\n\tentityNamespace: \"viewField\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), q = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: t, fieldMetadataUniversalIdentifier: r, operand: i, subFieldName: a }) => n({\n\tentityNamespace: \"viewFilter\",\n\tvalue: `${t}:${r}:${i}:${a ?? \"\"}`,\n\tapplicationUniversalIdentifier: e\n}), J = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: t, fieldValue: r }) => n({\n\tentityNamespace: \"viewGroup\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), Y = ({ applicationUniversalIdentifier: e, viewUniversalIdentifier: t, fieldMetadataUniversalIdentifier: r }) => n({\n\tentityNamespace: \"viewSort\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), X = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: t, name: r }) => n({\n\tentityNamespace: \"view\",\n\tvalue: `${t}:${r}`,\n\tapplicationUniversalIdentifier: e\n}), Z = ({ applicationUniversalIdentifier: e, objectUniversalIdentifier: r }) => n({\n\tentityNamespace: \"view\",\n\tvalue: `${r}:${t.INDEX}`,\n\tapplicationUniversalIdentifier: e\n}), Q = ({ applicationUniversalIdentifier: e, pageLayoutWidgetUniversalIdentifier: t }) => n({\n\tentityNamespace: \"view\",\n\tvalue: t,\n\tapplicationUniversalIdentifier: e\n}), $ = /* @__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}({}), te = (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}, ne = (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 { a as APPLICATION_CATEGORIES, s as APPLICATION_VARIABLE_FIELD_METADATA_TYPES, c as ASSETS_DIR, l as DEFAULT_API_KEY_NAME, u as DEFAULT_API_URL_NAME, d as DEFAULT_APP_ACCESS_TOKEN_NAME, f as DEFAULT_FUNCTIONS_URL_NAME, p as GENERATED_DIR, m as NODE_ESM_CJS_BANNER, h as OUTPUT_DIR, $ as SyncableEntity, g as TWENTY_STANDARD_APPLICATION_NAME, r as TWENTY_STANDARD_APPLICATION_UNIVERSAL_IDENTIFIER, n as computeDeterministicUuid, ne as deserializeApplicationVariableValue, _ as getAgentUniversalIdentifier, v as getApplicationVariableUniversalIdentifier, w as getConnectionProviderUniversalIdentifier, T as getFieldPermissionUniversalIdentifier, i as getFieldUniversalIdentifier, Q as getFieldsWidgetViewUniversalIdentifier, k as getFolderNavigationMenuItemUniversalIdentifier, E as getFrontComponentUniversalIdentifier, b as getGlobalCommandMenuItemUniversalIdentifier, x as getGlobalObjectContextCommandMenuItemUniversalIdentifier, D as getIndexUniversalIdentifier, Z as getIndexViewUniversalIdentifier, j as getLinkNavigationMenuItemUniversalIdentifier, O as getLogicFunctionUniversalIdentifier, C as getNavigationCommandUniversalIdentifier, A as getObjectNavigationMenuItemUniversalIdentifier, M as getObjectPermissionUniversalIdentifier, N as getObjectUniversalIdentifier, P as getPageLayoutTabUniversalIdentifier, I as getPageLayoutUniversalIdentifier, R as getPageLayoutWidgetUniversalIdentifier, z as getPermissionFlagUniversalIdentifier, L as getRecordPageLayoutUniversalIdentifier, S as getRecordSelectionCommandMenuItemUniversalIdentifier, B as getRolePermissionFlagUniversalIdentifier, V as getRoleUniversalIdentifier, H as getSearchFieldUniversalIdentifier, U as getSelectOptionUniversalIdentifier, W as getSkillUniversalIdentifier, G as getViewFieldGroupUniversalIdentifier, K as getViewFieldUniversalIdentifier, q as getViewFilterUniversalIdentifier, J as getViewGroupUniversalIdentifier, ee as getViewNavigationMenuItemUniversalIdentifier, Y as getViewSortUniversalIdentifier, X as getViewUniversalIdentifier, o as isKnownApplicationCategory, te 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 { 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", "/**\n * Pure, dependency-free prompt builders that turn a CRM record into the\n * runtime instruction passed to the lead-scorer agent at `runAgent` time.\n *\n * The agent's base system prompt (see `src/agents/lead-scorer.agent.ts`)\n * defines HOW to score; these functions supply the record-specific WHAT.\n */\n\nexport type PersonScoringRecord = {\n  name?: string;\n  jobTitle?: string;\n  company?: string;\n  city?: string;\n  email?: string;\n  linkedinUrl?: string;\n  companyDomain?: string;\n  recentActivity?: string[];\n};\n\nexport type OpportunityScoringRecord = {\n  name?: string;\n  amount?: number;\n  stage?: string;\n  closeDate?: string;\n  company?: string;\n  companyDomain?: string;\n  recentActivity?: string[];\n};\n\nconst line = (label: string, value: unknown): string | null => {\n  if (value === undefined || value === null || value === '') {\n    return null;\n  }\n\n  return `- ${label}: ${value}`;\n};\n\nconst activityLine = (activity: string[] | undefined): string | null =>\n  activity && activity.length > 0\n    ? line('Recent activity', activity.join('; '))\n    : null;\n\nconst buildPrompt = (\n  recordType: string,\n  fields: (string | null)[],\n): string => {\n  const known = fields.filter((field): field is string => field !== null);\n  const details =\n    known.length > 0 ? known.join('\\n') : '- (no additional details provided)';\n\n  return [\n    `Score the following ${recordType} record as a B2B sales lead.`,\n    '',\n    'Record details:',\n    details,\n    '',\n    'Return the score (0-100) and a short summary of your reasoning.',\n  ].join('\\n');\n};\n\nexport const buildPersonScoringPrompt = (\n  record: PersonScoringRecord,\n): string =>\n  buildPrompt('person (contact)', [\n    line('Name', record.name),\n    line('Job title', record.jobTitle),\n    line('Company', record.company),\n    line('Company domain', record.companyDomain),\n    line('City', record.city),\n    line('Email', record.email),\n    line('LinkedIn', record.linkedinUrl),\n    activityLine(record.recentActivity),\n  ]);\n\nexport const buildOpportunityScoringPrompt = (\n  record: OpportunityScoringRecord,\n): string =>\n  buildPrompt('opportunity (deal)', [\n    line('Name', record.name),\n    line('Amount', record.amount),\n    line('Stage', record.stage),\n    line('Close date', record.closeDate),\n    line('Company', record.company),\n    line('Company domain', record.companyDomain),\n    activityLine(record.recentActivity),\n  ]);\n", "/**\n * Enrichment helper (TCA-7).\n *\n * Fetches the scoring context for a single CRM record via the Core GraphQL API\n * (genql `CoreApiClient`) and normalizes it into the plain record shape that\n * `build-prompt.ts` consumes. Alongside the record's own scoring-relevant\n * fields it pulls the linked company and the most recent timeline activities so\n * the lead-scorer agent has richer signal than the bare record provides.\n *\n * Field names and selection shapes are taken from the generated core schema\n * (`twenty-client-sdk/dist/core/generated/schema.ts`): Person.name is a\n * `FullName` (firstName/lastName), Person.emails is `Emails` (primaryEmail),\n * Opportunity.amount is a `Currency` (amountMicros/currencyCode), Company has\n * `domainName` (Links) and `annualRevenue` (Currency), and both objects expose\n * a `timelineActivities` connection ordered by `createdAt`.\n */\nimport { CoreApiClient } from 'twenty-client-sdk/core';\n\nimport {\n  type OpportunityScoringRecord,\n  type PersonScoringRecord,\n} from 'src/lib/build-prompt';\n\nexport type EnrichmentInput = {\n  objectType: 'person' | 'opportunity';\n  recordId: string;\n};\n\nconst RECENT_ACTIVITY_LIMIT = 10;\n\ntype TimelineActivitiesResult = {\n  edges?:\n    | ({ node?: { name?: string | null } | null } | null)[]\n    | null;\n};\n\nconst nonEmpty = (value: string | null | undefined): value is string =>\n  typeof value === 'string' && value.trim() !== '';\n\nconst joinName = (\n  name: { firstName?: string | null; lastName?: string | null } | null | undefined,\n): string | undefined => {\n  const joined = [name?.firstName, name?.lastName].filter(nonEmpty).join(' ');\n\n  return joined === '' ? undefined : joined;\n};\n\nconst recentActivity = (\n  timelineActivities: TimelineActivitiesResult | null | undefined,\n): string[] | undefined => {\n  const names = (timelineActivities?.edges ?? [])\n    .map((edge) => edge?.node?.name)\n    .filter(nonEmpty);\n\n  return names.length > 0 ? names : undefined;\n};\n\n/** Convert a `Currency.amountMicros` (micros, 1e6 = one unit) to a plain number. */\nconst microsToAmount = (\n  amountMicros: string | number | null | undefined,\n): number | undefined => {\n  if (amountMicros === null || amountMicros === undefined) {\n    return undefined;\n  }\n\n  const asNumber = Number(amountMicros);\n\n  return Number.isFinite(asNumber) ? asNumber / 1_000_000 : undefined;\n};\n\nconst enrichPerson = async (\n  client: CoreApiClient,\n  recordId: string,\n): Promise<PersonScoringRecord> => {\n  const { person } = await client.query({\n    person: {\n      __args: { filter: { id: { eq: recordId } } },\n      id: true,\n      name: { firstName: true, lastName: true },\n      jobTitle: true,\n      emails: { primaryEmail: true },\n      linkedinLink: { primaryLinkUrl: true },\n      leadScore: true,\n      company: {\n        name: true,\n        domainName: { primaryLinkUrl: true },\n        annualRevenue: { amountMicros: true, currencyCode: true },\n        address: { addressCity: true, addressState: true, addressCountry: true },\n      },\n      timelineActivities: {\n        __args: {\n          first: RECENT_ACTIVITY_LIMIT,\n          orderBy: [{ createdAt: 'DescNullsLast' }],\n        },\n        edges: {\n          node: { id: true, name: true, happensAt: true, createdAt: true },\n        },\n      },\n    },\n  });\n\n  if (!person) {\n    throw new Error(`Person not found for id ${recordId}`);\n  }\n\n  return {\n    name: joinName(person.name),\n    jobTitle: person.jobTitle ?? undefined,\n    company: person.company?.name ?? undefined,\n    companyDomain: person.company?.domainName?.primaryLinkUrl ?? undefined,\n    city: person.company?.address?.addressCity ?? undefined,\n    email: person.emails?.primaryEmail ?? undefined,\n    linkedinUrl: person.linkedinLink?.primaryLinkUrl ?? undefined,\n    recentActivity: recentActivity(person.timelineActivities),\n  };\n};\n\nconst enrichOpportunity = async (\n  client: CoreApiClient,\n  recordId: string,\n): Promise<OpportunityScoringRecord> => {\n  const { opportunity } = await client.query({\n    opportunity: {\n      __args: { filter: { id: { eq: recordId } } },\n      id: true,\n      name: true,\n      amount: { amountMicros: true, currencyCode: true },\n      stage: true,\n      closeDate: true,\n      leadScore: true,\n      company: {\n        name: true,\n        domainName: { primaryLinkUrl: true },\n        annualRevenue: { amountMicros: true, currencyCode: true },\n        address: { addressCity: true, addressState: true, addressCountry: true },\n      },\n      timelineActivities: {\n        __args: {\n          first: RECENT_ACTIVITY_LIMIT,\n          orderBy: [{ createdAt: 'DescNullsLast' }],\n        },\n        edges: {\n          node: { id: true, name: true, happensAt: true, createdAt: true },\n        },\n      },\n    },\n  });\n\n  if (!opportunity) {\n    throw new Error(`Opportunity not found for id ${recordId}`);\n  }\n\n  return {\n    name: opportunity.name ?? undefined,\n    amount: microsToAmount(opportunity.amount?.amountMicros),\n    stage: opportunity.stage ?? undefined,\n    closeDate: opportunity.closeDate ?? undefined,\n    company: opportunity.company?.name ?? undefined,\n    companyDomain: opportunity.company?.domainName?.primaryLinkUrl ?? undefined,\n    recentActivity: recentActivity(opportunity.timelineActivities),\n  };\n};\n\n/**\n * Fetch and normalize the scoring context for a single person or opportunity.\n * The returned object is shaped for `buildPersonScoringPrompt` /\n * `buildOpportunityScoringPrompt`.\n */\nexport const enrichRecord = async (\n  input: EnrichmentInput,\n): Promise<PersonScoringRecord | OpportunityScoringRecord> => {\n  const client = new CoreApiClient();\n\n  return input.objectType === 'person'\n    ? enrichPerson(client, input.recordId)\n    : enrichOpportunity(client, input.recordId);\n};\n", "/**\n * Shared database-event handler for scoreOnEvent (TCA-9).\n *\n * Each thin logic-function file in `src/logic-functions/*.function.ts` wires a\n * single (object, action) trigger to this handler \u2014 the SDK's\n * `databaseEventTriggerSettings` allows only one `eventName` per function, so\n * the routing logic lives here once and is delegated to from each trigger.\n *\n * Routing:\n *  - no scoring signal            -> SKIPPED (no AI)\n *  - createdBy.source === IMPORT  -> QUEUED  (drained later by the cron, no AI)\n *  - otherwise                    -> inline scoreRecord() (enrich + runAgent)\n */\nimport type { DatabaseEventPayload } from 'twenty-sdk/logic-function';\n\nimport {\n  type ScoreObjectType,\n  scoreRecord,\n  setLeadScoreStatus,\n} from 'src/lib/score-record';\n\nconst IMPORT_SOURCE = 'IMPORT';\n\ntype RecordAfter = {\n  jobTitle?: string | null;\n  companyId?: string | null;\n  amount?: { amountMicros?: string | number | null } | number | null;\n  stage?: string | null;\n  createdBy?: { source?: string | null } | null;\n};\n\nconst hasScoringSignal = (\n  objectType: ScoreObjectType,\n  after: RecordAfter,\n): boolean => {\n  if (objectType === 'person') {\n    return Boolean(after.jobTitle) || Boolean(after.companyId);\n  }\n\n  const amountPresent =\n    after.amount != null &&\n    (typeof after.amount === 'number' ? true : after.amount.amountMicros != null);\n\n  return amountPresent || Boolean(after.stage);\n};\n\nexport const handleScoreOnEvent = async (\n  objectType: ScoreObjectType,\n  event: DatabaseEventPayload,\n): Promise<void> => {\n  const recordId = event.recordId;\n  const after =\n    ((event.properties as { after?: RecordAfter | null } | undefined)?.after ??\n      {}) as RecordAfter;\n\n  if (!hasScoringSignal(objectType, after)) {\n    await setLeadScoreStatus(objectType, recordId, 'SKIPPED');\n    return;\n  }\n\n  if (after.createdBy?.source === IMPORT_SOURCE) {\n    await setLeadScoreStatus(objectType, recordId, 'QUEUED');\n    return;\n  }\n\n  await scoreRecord(objectType, recordId);\n};\n", "import { defineLogicFunction } from 'twenty-sdk/define';\nimport type { DatabaseEventPayload } from 'twenty-sdk/logic-function';\n\nimport { OPPORTUNITY_SCORE_ON_UPDATED_FUNCTION_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';\nimport { handleScoreOnEvent } from 'src/lib/score-on-event';\n\nexport default defineLogicFunction({\n  universalIdentifier: OPPORTUNITY_SCORE_ON_UPDATED_FUNCTION_UNIVERSAL_IDENTIFIER,\n  name: 'scoreOnOpportunityUpdated',\n  description:\n    'Re-score an opportunity when a scoring-relevant business field changes.',\n  timeoutSeconds: 60,\n  // Watches only business fields \u2014 never the score fields \u2014 so score writes\n  // cannot re-trigger scoring (loop guard).\n  databaseEventTriggerSettings: {\n    eventName: 'opportunity.updated',\n    updatedFields: ['amount', 'stage', 'closeDate'],\n  },\n  handler: (event: DatabaseEventPayload) =>\n    handleScoreOnEvent('opportunity', event),\n});\n"],
  "mappings": "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",
  "names": ["CoreApiClient", "s", "n", "e", "t", "t", "n", "o", "e", "t", "CoreApiClient"]
}
