{
  "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", "../../../../src/logic-functions/disconnect-granola.function.ts", "twenty-sdk-define-stub:__twenty-sdk-define-stub__", "../../../../src/constants/universal-identifiers.ts", "../../../../src/logic-functions/utils/run-core-graphql.ts", "../../../../src/utils/is-defined.ts", "../../../../src/logic-functions/utils/granola-connection-store.ts", "../../../../src/logic-functions/utils/get-acting-user-id.ts", "../../../../src/logic-functions/utils/resolve-workspace-member.ts"],
  "sourcesContent": [null, null, null, null, "import { CoreApiClient } from 'twenty-client-sdk/core';\nimport { defineLogicFunction } from 'twenty-sdk/define';\n\nimport { GRANOLA_CONNECTION_LOGIC_FUNCTIONS } from 'src/constants/universal-identifiers';\nimport { deactivateConnection } from 'src/logic-functions/utils/granola-connection-store';\nimport { resolveWorkspaceMember } from 'src/logic-functions/utils/resolve-workspace-member';\n\ntype DisconnectResult = { success: boolean; message?: string };\n\nconst handler = async (): Promise<DisconnectResult> => {\n  const client = new CoreApiClient();\n\n  const member = await resolveWorkspaceMember(client);\n\n  if (!member) {\n    return { success: false, message: 'Could not identify your account.' };\n  }\n\n  await deactivateConnection(member.workspaceMemberId);\n\n  return { success: true, message: 'Granola disconnected.' };\n};\n\nexport default defineLogicFunction({\n  universalIdentifier:\n    GRANOLA_CONNECTION_LOGIC_FUNCTIONS.disconnect.universalIdentifier,\n  name: 'granola-disconnect',\n  description:\n    \"Clears and deactivates the invoking member's Granola connection so their meetings stop syncing.\",\n  timeoutSeconds: 30,\n  handler,\n  httpRouteTriggerSettings: {\n    path: GRANOLA_CONNECTION_LOGIC_FUNCTIONS.disconnect.path,\n    httpMethod: 'POST',\n    isAuthRequired: true,\n  },\n});\n", "\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", "export const APPLICATION_UNIVERSAL_IDENTIFIER =\n  '79738d7c-6b48-47fd-949f-de6510e3137d';\n\nexport const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =\n  '43e9f830-3b8e-4af6-ae29-1520d86f6903';\n\nexport const GRANOLA_SYNC_LOGIC_FUNCTION_UNIVERSAL_IDENTIFIER =\n  'e3b3aa22-b36a-4c5b-a02e-4d36e43524d4';\n\nexport const GRANOLA_BACKFILL_LOGIC_FUNCTION_UNIVERSAL_IDENTIFIER =\n  'f50358d3-3e94-4933-bbed-f94b05311b7f';\n\n// Per-user Granola API keys. Each workspace member connects their own account;\n// the sync enumerates every connection and pulls that member's meetings.\nexport const GRANOLA_CONNECTION_OBJECT_UNIVERSAL_IDENTIFIER =\n  'fbaf8a1c-c53e-4a86-bfbf-31b773c1a838';\n\nexport const GRANOLA_CONNECTION_FIELD_UNIVERSAL_IDENTIFIERS = {\n  name: '32c08eee-f433-4027-bf7e-f36f2f6b49f6',\n  workspaceMemberId: '6126dadc-9462-4901-b8d0-b9cdf25abd83',\n  apiKey: 'ff502f4b-a889-46fc-8d41-108e78e10827',\n  isActive: '4bbb3104-122c-45d3-a278-d8e72cff031d',\n  lastSyncedAt: '2321678a-f090-4688-bf91-4b57f83a33d8',\n  lastSyncStatus: 'ba88113f-1639-4e8e-af39-da18a695b37f',\n  lastSyncError: '59cea986-0a5b-42e1-ae49-a1a8f8cb982f',\n} as const;\n\nexport const GRANOLA_CONNECTION_LOGIC_FUNCTIONS = {\n  setKey: {\n    universalIdentifier: '04a667fa-07c7-46fa-a589-56f47a9a4131',\n    path: '/granola/connection/set-key',\n  },\n  getConnection: {\n    universalIdentifier: '73535e55-5400-41ce-bd8e-65840e4224ea',\n    path: '/granola/connection/get',\n  },\n  disconnect: {\n    universalIdentifier: '6cc6511f-5b9c-4bd2-b010-75b9ece3d937',\n    path: '/granola/connection/disconnect',\n  },\n} as const;\n\nexport const GRANOLA_CONNECT_COMMAND_MENU_ITEM_UNIVERSAL_IDENTIFIER =\n  '0ac3a91c-76a2-45d9-903d-2d6f18c59c1f';\n\nexport const GRANOLA_CONNECT_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER =\n  'cf44e138-08ba-42bf-8144-a130d3f7448d';\n\n// Shared core CalendarEvent record page layout that apps attach tabs to.\nexport const CALENDAR_EVENT_RECORD_PAGE_LAYOUT_UNIVERSAL_IDENTIFIER =\n  'b9b10e40-9ce2-4704-8ac6-c6e92e2563c1';\n\nexport const CALENDAR_EVENT_SUMMARY_PAGE_LAYOUT_TAB_UNIVERSAL_IDENTIFIER =\n  '73bd93e8-379e-4f04-a7cf-72965f1c1984';\n\nexport const CALENDAR_EVENT_SUMMARY_PAGE_LAYOUT_WIDGET_UNIVERSAL_IDENTIFIER =\n  '04780500-8a23-43de-b8bd-04e0e5f6dac8';\n\nexport const CALENDAR_EVENT_SUMMARY_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER =\n  '0233043a-8284-495c-98cf-9b2380ee063a';\n\nexport const CALENDAR_EVENT_TRANSCRIPT_PAGE_LAYOUT_TAB_UNIVERSAL_IDENTIFIER =\n  '5a57429d-6ade-441d-8c35-512616793a2f';\n\nexport const CALENDAR_EVENT_TRANSCRIPT_PAGE_LAYOUT_WIDGET_UNIVERSAL_IDENTIFIER =\n  '8768103e-b059-44ee-b72e-bc164b954511';\n\nexport const CALENDAR_EVENT_TRANSCRIPT_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER =\n  'bea81361-5df7-4c1f-984d-73274957bd5d';\n", "import { isNonEmptyString } from '@sniptt/guards';\n\n// The generated (Zeus) client is built from the workspace's GraphQL\n// introspection, which does NOT expose this app's own custom object\n// (granolaConnection) \u2014 so client.query({ granolaConnections }) fails client-side\n// with \"type Query does not have a field granolaConnections\". The server DOES\n// have the type, so we talk to it directly with a raw GraphQL request using the\n// application access token the function runs with. Standard objects still use\n// the typed client; only granolaConnection goes through here.\nconst API_URL_ENV = 'TWENTY_API_URL';\nconst TOKEN_ENV_VARS = ['TWENTY_APP_ACCESS_TOKEN', 'TWENTY_API_KEY'] as const;\n\nconst getToken = (): string | undefined => {\n  for (const envVar of TOKEN_ENV_VARS) {\n    const value = process.env[envVar];\n\n    if (isNonEmptyString(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 (!isNonEmptyString(apiUrl) || !isNonEmptyString(token)) {\n    throw new Error(\n      'Granola: 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 {\n    data?: TData;\n    errors?: unknown;\n  };\n\n  if (payload.errors) {\n    throw new Error(\n      `Granola GraphQL error: ${JSON.stringify(payload.errors).slice(0, 300)}`,\n    );\n  }\n\n  return payload.data as TData;\n};\n", "export const isDefined = <T>(\n  value: T | null | undefined,\n): value is NonNullable<T> => value !== null && value !== undefined;\n", "import { type GranolaSyncStatus } from 'src/constants/granola-connection';\nimport { runCoreGraphql } from 'src/logic-functions/utils/run-core-graphql';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport type GranolaConnectionNode = {\n  id: string;\n  workspaceMemberId: string;\n  apiKey: string;\n  isActive: boolean;\n  lastSyncedAt: string | null;\n  lastSyncStatus: string | null;\n};\n\n// granolaConnection is this app's OWN custom object. The workspace GraphQL\n// introspection the generated client is built from does not expose it, so we\n// query it with raw GraphQL against the server (which does have the type).\nconst CONNECTION_NODE_FRAGMENT = `\n  id\n  workspaceMemberId\n  apiKey\n  isActive\n  lastSyncedAt\n  lastSyncStatus\n`;\n\nconst ACTIVE_CONNECTIONS_PAGE_SIZE = 100;\n\ntype ConnectionEdges = {\n  granolaConnections?: {\n    edges?: { node?: Partial<GranolaConnectionNode> | null }[] | null;\n    pageInfo?: { hasNextPage?: boolean | null; endCursor?: string | null };\n  };\n};\n\nconst toNode = (\n  node: Partial<GranolaConnectionNode> | null | undefined,\n): GranolaConnectionNode | undefined => {\n  if (!isDefined(node) || !isDefined(node.id)) {\n    return undefined;\n  }\n\n  return {\n    id: node.id,\n    workspaceMemberId: node.workspaceMemberId ?? '',\n    apiKey: node.apiKey ?? '',\n    isActive: node.isActive ?? false,\n    lastSyncedAt: node.lastSyncedAt ?? null,\n    lastSyncStatus: node.lastSyncStatus ?? null,\n  };\n};\n\nexport const findConnectionByMemberId = async (\n  workspaceMemberId: string,\n): Promise<GranolaConnectionNode | undefined> => {\n  const result = await runCoreGraphql<ConnectionEdges>(\n    `query FindGranolaConnection($filter: GranolaConnectionFilterInput) {\n      granolaConnections(filter: $filter, first: 1) {\n        edges { node { ${CONNECTION_NODE_FRAGMENT} } }\n      }\n    }`,\n    { filter: { workspaceMemberId: { eq: workspaceMemberId } } },\n  );\n\n  return toNode(result.granolaConnections?.edges?.[0]?.node);\n};\n\n// Lists every active connection, paging through all members so the sync covers\n// the whole workspace.\nexport const listActiveConnections = async (): Promise<\n  GranolaConnectionNode[]\n> => {\n  const connections: GranolaConnectionNode[] = [];\n  let after: string | undefined;\n\n  for (;;) {\n    const result = await runCoreGraphql<ConnectionEdges>(\n      `query ListActiveGranolaConnections($filter: GranolaConnectionFilterInput, $first: Int, $after: String) {\n        granolaConnections(filter: $filter, first: $first, after: $after) {\n          edges { node { ${CONNECTION_NODE_FRAGMENT} } }\n          pageInfo { hasNextPage endCursor }\n        }\n      }`,\n      {\n        filter: { isActive: { eq: true } },\n        first: ACTIVE_CONNECTIONS_PAGE_SIZE,\n        after: after ?? null,\n      },\n    );\n\n    for (const edge of result.granolaConnections?.edges ?? []) {\n      const node = toNode(edge?.node);\n\n      if (isDefined(node)) {\n        connections.push(node);\n      }\n    }\n\n    const pageInfo = result.granolaConnections?.pageInfo;\n\n    if (pageInfo?.hasNextPage !== true || !isDefined(pageInfo.endCursor)) {\n      break;\n    }\n\n    after = pageInfo.endCursor;\n  }\n\n  return connections;\n};\n\nconst updateConnection = async (\n  id: string,\n  data: Record<string, unknown>,\n): Promise<void> => {\n  await runCoreGraphql(\n    `mutation UpdateGranolaConnection($id: UUID!, $data: GranolaConnectionUpdateInput!) {\n      updateGranolaConnection(id: $id, data: $data) { id }\n    }`,\n    { id, data },\n  );\n};\n\nexport const upsertConnection = async ({\n  workspaceMemberId,\n  displayName,\n  apiKey,\n}: {\n  workspaceMemberId: string;\n  displayName: string;\n  apiKey: string;\n}): Promise<void> => {\n  const existing = await findConnectionByMemberId(workspaceMemberId);\n\n  if (isDefined(existing)) {\n    await updateConnection(existing.id, {\n      apiKey,\n      name: displayName,\n      isActive: true,\n    });\n\n    return;\n  }\n\n  await runCoreGraphql(\n    `mutation CreateGranolaConnection($data: GranolaConnectionCreateInput!) {\n      createGranolaConnection(data: $data) { id }\n    }`,\n    { data: { workspaceMemberId, apiKey, name: displayName, isActive: true } },\n  );\n};\n\nexport const deactivateConnection = async (\n  workspaceMemberId: string,\n): Promise<boolean> => {\n  const existing = await findConnectionByMemberId(workspaceMemberId);\n\n  if (!isDefined(existing)) {\n    return false;\n  }\n\n  // Clear the stored key on disconnect so it no longer lives in the workspace,\n  // and flag inactive so the sync skips it.\n  await updateConnection(existing.id, { apiKey: '', isActive: false });\n\n  return true;\n};\n\nexport const stampSyncResult = async (\n  connectionId: string,\n  {\n    syncedAt,\n    status,\n    error,\n  }: { syncedAt: string; status: GranolaSyncStatus; error: string | null },\n): Promise<void> => {\n  await updateConnection(connectionId, {\n    lastSyncedAt: syncedAt,\n    lastSyncStatus: status,\n    lastSyncError: error,\n  });\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\n\n// The function runs with the application access token in its environment (the\n// same token the CoreApiClient authenticates with). For a route-auth'd call the\n// server mints it carrying the invoking user, so its `userId` claim is the\n// verified caller. There is no `currentUser` query on the app-scoped workspace\n// schema, so decoding this claim is how a function learns who invoked it.\nconst APP_TOKEN_ENV_VARS = ['TWENTY_APP_ACCESS_TOKEN', 'TWENTY_API_KEY'] as const;\n\ntype TokenClaims = { userId?: unknown; userWorkspaceId?: unknown };\n\nconst decodeJwtClaims = (token: string): TokenClaims | undefined => {\n  const segments = token.split('.');\n\n  if (segments.length < 2) {\n    return undefined;\n  }\n\n  try {\n    const claims = JSON.parse(\n      Buffer.from(segments[1], 'base64url').toString('utf8'),\n    );\n\n    return typeof claims === 'object' && claims !== null\n      ? (claims as TokenClaims)\n      : undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const getActingUserId = (): string | undefined => {\n  for (const envVar of APP_TOKEN_ENV_VARS) {\n    const token = process.env[envVar];\n\n    if (!isNonEmptyString(token)) {\n      continue;\n    }\n\n    const userId = decodeJwtClaims(token)?.userId;\n\n    if (isNonEmptyString(userId)) {\n      return userId;\n    }\n  }\n\n  return undefined;\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { getActingUserId } from 'src/logic-functions/utils/get-acting-user-id';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport type ResolvedMember = {\n  workspaceMemberId: string;\n  displayName: string;\n};\n\ntype MemberNode = {\n  id?: string | null;\n  name?: { firstName?: string | null; lastName?: string | null } | null;\n  userEmail?: string | null;\n};\n\ntype WorkspaceMembersResult = {\n  workspaceMembers?: { edges?: { node?: MemberNode | null }[] | null };\n};\n\nconst MEMBER_SELECTION = {\n  id: true,\n  name: { firstName: true, lastName: true },\n  userEmail: true,\n} as const;\n\nconst buildDisplayName = (member: MemberNode): string => {\n  const firstName = member.name?.firstName ?? '';\n  const lastName = member.name?.lastName ?? '';\n  const fullName = `${firstName} ${lastName}`.trim();\n\n  if (fullName.length > 0) {\n    return fullName;\n  }\n\n  return member.userEmail ?? 'Granola connection';\n};\n\n// Resolves the INVOKING user for a route-auth'd call. The function's app-scoped\n// client has no `currentUser` query, so we read the verified `userId` from the\n// application access token the server minted for this call, then look up the\n// matching workspaceMember (the app role must be able to read workspaceMember).\n// Deny-by-default: returns undefined when no user/member resolves.\nexport const resolveWorkspaceMember = async (\n  client: CoreApiClient,\n): Promise<ResolvedMember | undefined> => {\n  const userId = getActingUserId();\n\n  if (!isDefined(userId)) {\n    return undefined;\n  }\n\n  try {\n    const result = (await client.query({\n      workspaceMembers: {\n        __args: { filter: { userId: { eq: userId } }, first: 1 },\n        edges: { node: MEMBER_SELECTION },\n      },\n    })) as WorkspaceMembersResult;\n\n    const member = result.workspaceMembers?.edges?.[0]?.node;\n\n    if (!isDefined(member) || !isDefined(member.id)) {\n      return undefined;\n    }\n\n    return {\n      workspaceMemberId: member.id,\n      displayName: buildDisplayName(member),\n    };\n  } catch {\n    return undefined;\n  }\n};\n"],
  "mappings": "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",
  "names": ["isNonEmptyString", "import_guards"]
}
