Scheduling infrastructure for absolutely everyone.
This report presents the forensic synthetic code analysis of calcom/cal.diy, a TypeScript project with 46,387 GitHub stars. SynthScan v2.0 examined 800,678 lines of code across 6045 source files, recording 1208 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 2.5 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1208 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 251 | mockHubspotClient.crm.owners.ownersApi.getPage.mockResolvedValue({ results: [] }); | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 254 | mockHubspotClient.crm.objects.meetings.basicApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 260 | mockHubspotClient.crm.associations.batchApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 267 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 590 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 889 | mockHubspotClient.crm.owners.ownersApi.getPage.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 894 | mockHubspotClient.crm.contacts.basicApi.getById.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 900 | mockHubspotClient.crm.contacts.basicApi.update.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 905 | mockHubspotClient.crm.objects.meetings.basicApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 910 | mockHubspotClient.crm.associations.batchApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 932 | mockHubspotClient.crm.owners.ownersApi.getPage.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 936 | mockHubspotClient.crm.contacts.basicApi.update.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 941 | mockHubspotClient.crm.objects.meetings.basicApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 946 | mockHubspotClient.crm.associations.batchApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 964 | mockHubspotClient.crm.owners.ownersApi.getPage.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 968 | mockHubspotClient.crm.contacts.basicApi.getById.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 973 | mockHubspotClient.crm.objects.meetings.basicApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 978 | mockHubspotClient.crm.associations.batchApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 996 | mockHubspotClient.crm.owners.ownersApi.getPage.mockResolvedValue({ results: [] }); | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 998 | mockHubspotClient.crm.objects.meetings.basicApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 1003 | mockHubspotClient.crm.associations.batchApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 1023 | mockHubspotClient.crm.owners.ownersApi.getPage.mockRejectedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 1032 | mockHubspotClient.crm.objects.meetings.basicApi.create.mockResolvedValue({ | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.test.ts | 1037 | mockHubspotClient.crm.associations.batchApi.create.mockResolvedValue({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 283 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 293 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 306 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 318 | mockHubspotClient.crm.owners.ownersApi.getById.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 350 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 384 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 420 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 432 | mockHubspotClient.crm.owners.ownersApi.getById.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 463 | mockHubspotClient.crm.contacts.searchApi.doSearch.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 475 | mockHubspotClient.crm.owners.ownersApi.getById.mockRejectedValueOnce(new Error("Owner not found")); | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 497 | mockHubspotClient.crm.contacts.basicApi.create.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 515 | mockHubspotClient.crm.contacts.basicApi.create.mockRejectedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 564 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 620 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 651 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 677 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 703 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 735 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 767 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 809 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 846 | mockHubspotClient.crm.properties.coreApi.getAll.mockResolvedValueOnce({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 1068 | mockHubspotClient.crm.objects.meetings.basicApi.update.mockResolvedValue({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 1092 | mockHubspotClient.crm.objects.meetings.basicApi.update.mockResolvedValue({ | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.test.ts | 1109 | mockHubspotClient.crm.objects.meetings.basicApi.archive.mockResolvedValue(undefined); | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 95 | const properties = await this.hubspotClient.crm.properties.coreApi.getAll("meetings"); | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 314 | return this.hubspotClient.crm.objects.meetings.basicApi.create(simplePublicObjectInput); | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 325 | return this.hubspotClient.crm.associations.batchApi.create( | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.ts | 350 | return this.hubspotClient.crm.objects.meetings.basicApi.update(uid, simplePublicObjectInput); | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.ts | 360 | return this.hubspotClient.crm.objects.meetings.basicApi.update(uid, simplePublicObjectInput); | CODE |
| CRITICAL⚡ | packages/app-store/hubspot/lib/CrmService.ts | 364 | return this.hubspotClient.crm.objects.meetings.basicApi.archive(uid); | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 579 | this.hubspotClient.crm.contacts.basicApi.create(contact).catch((error) => { | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 611 | const ownersResponse = await this.hubspotClient.crm.owners.ownersApi.getPage( | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 630 | await this.hubspotClient.crm.contacts.basicApi.update(contactId, { | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 639 | const contact = await this.hubspotClient.crm.contacts.basicApi.getById(contactId, ["hubspot_owner_id"]); | CODE |
| CRITICAL | packages/app-store/hubspot/lib/CrmService.ts | 665 | const owner = await this.hubspotClient.crm.owners.ownersApi.getById(parseInt(ownerId, 10)); | CODE |
| CRITICAL | …ents/getting-started/steps-views/SetupAvailability.tsx | 25 | const queryAvailability = trpc.viewer.availability.schedule.get.useQuery( | CODE |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agents/skills/calcom-api/SKILL.md | 95 | "name": "John Doe", | CODE |
| LOW | agents/skills/calcom-api/references/authentication.md | 240 | "email": "user@example.com", | CODE |
| LOW | agents/skills/calcom-api/references/authentication.md | 242 | "name": "John Doe", | CODE |
| LOW | agents/skills/calcom-api/references/webhooks.md | 108 | "name": "John Doe", | CODE |
| LOW | agents/skills/calcom-api/references/webhooks.md | 121 | "name": "John Doe", | CODE |
| LOW | agents/skills/calcom-api/references/event-types.md | 89 | "placeholder": "Any additional information..." | CODE |
| LOW | agents/skills/calcom-api/references/event-types.md | 211 | "placeholder": "Enter your company name" | CODE |
| LOW | agents/skills/calcom-api/references/bookings.md | 62 | "name": "John Doe", | CODE |
| LOW | agents/skills/calcom-api/references/bookings.md | 96 | "name": "John Doe", | CODE |
| LOW | docs/api-reference/v2/openapi.json | 166 | "example": "John Doe", | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7465 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7477 | "required": ["type", "slug", "label", "required", "placeholder", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7499 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7512 | "required": ["type", "slug", "label", "required", "placeholder", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7534 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7547 | "required": ["type", "slug", "label", "required", "placeholder", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7569 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7582 | "required": ["type", "slug", "label", "required", "placeholder", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7604 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7617 | "required": ["type", "slug", "label", "required", "placeholder", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7639 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7659 | "required": ["type", "slug", "label", "required", "placeholder", "options", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7719 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7732 | "required": ["type", "slug", "label", "required", "placeholder", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7861 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 7874 | "required": ["type", "slug", "label", "required", "placeholder", "hidden"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8141 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8149 | "required": ["type", "label", "placeholder"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8170 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8178 | "required": ["type", "label", "placeholder"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8198 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8240 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8268 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8296 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8926 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8944 | "required": ["type", "label", "placeholder", "isDefault", "slug"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8958 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 8979 | "required": ["type", "label", "placeholder", "isDefault", "slug", "required"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9031 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9070 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9109 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9148 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9188 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9207 | "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9310 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9329 | "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9395 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9414 | "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9436 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9455 | "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9476 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9494 | "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9560 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9586 | "required": ["type", "slug", "label", "required", "placeholder", "options", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9608 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9627 | "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9649 | "placeholder": { | CODE |
| LOW | docs/api-reference/v2/openapi.json | 9668 | "required": ["type", "slug", "label", "required", "placeholder", "hidden", "isDefault"] | CODE |
| LOW | docs/api-reference/v2/openapi.json | 12200 | "example": "John Doe" | CODE |
| LOW | docs/api-reference/v2/openapi.json | 12570 | "example": "Jane Doe" | CODE |
| 492 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playwright.config.ts | 335 | function ensureAppServerIsReadyToServeEmbed(webServer: { port?: number; url?: string }) { | CODE |
| LOW | example-apps/credential-sync/lib/integrations.ts | 10 | export async function generateGoogleCalendarAccessToken() { | CODE |
| LOW | agents/rules/performance-scheduling-complexity.md | 41 | async function precomputeTeamAvailability(teamId: number) { | CODE |
| LOW | scripts/seed-performance-testing.ts | 242 | async function createAUserWithManyBookings() { | CODE |
| LOW | scripts/seed-huge-event-types.ts | 29 | async function createTeamsWithEventTypes({ | CODE |
| LOW | scripts/seed.ts | 113 | async function createOrganizationAndAddMembersAndTeams({ | CODE |
| LOW | scripts/seed.ts | 522 | async function ensureAcmeOwnerHasApiKeySeeded() { | CODE |
| LOW | scripts/seed.ts | 531 | async function seedPerHostLocationsInAcmeOrg() { | CODE |
| LOW | …ges/ui/components/dialog/ConfirmationDialogContent.tsx | 21 | export function ConfirmationDialogContent(props: PropsWithChildren<ConfirmationDialogContentProps>) { | CODE |
| LOW | packages/types/business-days-plugin.d.ts | 42 | function getAdditionalWorkingDayFormat(): string | undefined; | CODE |
| LOW | packages/types/business-days-plugin.d.ts | 43 | function setAdditionalWorkingDayFormat(additionalWorkingDayFormat: string): void; | CODE |
| LOW | …/routers/loggedInViewer/connectAndJoin.handler.test.ts | 55 | function mockPrismaForSuccessfulJoin({ oldStatus = BookingStatus.AWAITING_HOST } = {}) { | CODE |
| LOW | …iewer/calendars/setDestinationCalendar.handler.test.ts | 74 | function createMockConnectedCalendars({ | CODE |
| LOW | …server/routers/viewer/bookings/editLocation.handler.ts | 41 | async function updateLocationInConnectedAppForBooking({ | CODE |
| LOW | …server/routers/viewer/bookings/editLocation.handler.ts | 66 | function extractAdditionalInformation(result: { | CODE |
| LOW | …server/routers/viewer/bookings/editLocation.handler.ts | 78 | async function updateBookingLocationInDb({ | CODE |
| LOW | …server/routers/viewer/bookings/editLocation.handler.ts | 127 | async function getAllCredentialsIncludeServiceAccountKey({ | CODE |
| LOW | …server/routers/viewer/bookings/editLocation.handler.ts | 159 | async function getLocationInEvtFormatOrThrow({ | CODE |
| LOW | …server/routers/viewer/bookings/editLocation.handler.ts | 213 | export function getLocationForOrganizerDefaultConferencingAppInEvtFormat({ | CODE |
| LOW | …pc/server/routers/viewer/bookings/addGuests.handler.ts | 115 | export function validateGuestsFieldEnabled(booking: Booking): void { | CODE |
| LOW | …pc/server/routers/viewer/bookings/addGuests.handler.ts | 172 | async function getEmailVerificationRequirements(guestEmails: string[]): Promise<Map<string, boolean>> { | CODE |
| LOW | …ges/trpc/server/routers/viewer/bookings/get.handler.ts | 877 | async function getEventTypeIdsFromTeamIdsFilter(prisma: PrismaClient, teamIds?: number[]) { | CODE |
| LOW | …ges/trpc/server/routers/viewer/bookings/get.handler.ts | 897 | async function getAttendeeEmailsFromUserIdsFilter( | CODE |
| LOW | …ges/trpc/server/routers/viewer/bookings/get.handler.ts | 929 | async function getEventTypeIdsFromEventTypeIdsFilter(prisma: PrismaClient, eventTypeIds?: number[]) { | CODE |
| LOW | …ges/trpc/server/routers/viewer/bookings/get.handler.ts | 1051 | function addAdvancedAttendeeWhereClause( | CODE |
| LOW | …uters/viewer/holidays/getSupportedCountries.handler.ts | 3 | export async function getSupportedCountriesHandler() { | CODE |
| LOW | packages/trpc/server/routers/viewer/eventTypes/util.ts | 252 | export function ensureUniqueBookingFields(fields: TUpdateInputSchema["bookingFields"]) { | CODE |
| LOW | packages/trpc/server/routers/viewer/eventTypes/util.ts | 274 | export function ensureEmailOrPhoneNumberIsPresent(fields: TUpdateInputSchema["bookingFields"]) { | CODE |
| LOW | …rver/routers/viewer/eventTypes/utils/transformUtils.ts | 121 | export function createProfilesWithPermissions( | CODE |
| LOW | …/server/routers/viewer/eventTypes/utils/filterUtils.ts | 26 | export function shouldIncludeTeamMembership( | CODE |
| LOW | packages/trpc/server/lib/toTRPCError.ts | 62 | export function convertErrorWithCodeToTRPCError(cause: unknown) { | CODE |
| LOW | packages/emails/templates/organizer-request-email.ts | 12 | async function getOrganizerRequestTemplate(userId?: number) { | CODE |
| LOW | …ooks/organizations/bookings/useOrganizationBookings.ts | 36 | function extractOrganizationBookingsQueryKeys(query: GetOrganizationsBookingsInput) { | CODE |
| LOW | …ility/wrappers/AvailabilitySettingsPlatformWrapper.tsx | 44 | >(function AvailabilitySettingsPlatformWrapper(props, ref) { | CODE |
| LOW | …nnect/conferencing-apps/AppListCardPlatformWrapper.tsx | 4 | export default function AppListCardPlatformWrapper(props: AppListCardProps) { | CODE |
| LOW | …pes/bookings/2024-08-13/inputs/create-booking.input.ts | 48 | function RequireEventTypeIdentification(validationOptions?: ValidationOptions) { | CODE |
| LOW | …pes_2024_06_14/inputs/booking-limits-duration.input.ts | 97 | export function ValidateBookingLimistsDuration(validationOptions?: ValidationOptions) { | CODE |
| LOW | …-types_2024_06_14/inputs/booking-limits-count.input.ts | 106 | export function ValidateBookingLimitsCount(validationOptions?: ValidationOptions) { | CODE |
| LOW | …t-types_2024_06_14/inputs/confirmation-policy.input.ts | 92 | export function ValidateConfirmationPolicy(validationOptions?: ValidationOptions) { | CODE |
| LOW | …/event-types_2024_06_14/inputs/booker-layouts.input.ts | 63 | function IsDefaultLayoutWithinEnabledLayouts(validationOptions?: ValidationOptions) { | CODE |
| LOW | …tors/CantHaveRecurrenceAndBookerActiveBookingsLimit.ts | 9 | export function CantHaveRecurrenceAndBookerActiveBookingsLimit(validationOptions?: ValidationOptions) { | CODE |
| LOW | …/types/utils/RequiresOneOfPropertiesWhenNotDisabled.ts | 13 | export function RequiresAtLeastOnePropertyWhenNotDisabled(validationOptions?: ValidationOptions) { | CODE |
| LOW | packages/platform/libraries/app-store.ts | 47 | export async function enrichUserWithDelegationConferencingCredentialsWithoutOrgId(_args: { | CODE |
| LOW | packages/platform/libraries/organizations.ts | 22 | export function getActiveUserBillingService(): ActiveUserBillingServiceStub { | CODE |
| LOW | packages/platform/libraries/emails.ts | 54 | export async function sendSignupToOrganizationEmail(_args: { | CODE |
| LOW | packages/platform/libraries/tasker.ts | 5 | export function getIncrementUsageIdempotencyKey(bookingUid: string): string { | CODE |
| LOW | packages/platform/libraries/slots.ts | 14 | export async function validateRoundRobinSlotAvailability( | CODE |
| LOW | packages/platform/libraries/index.ts | 126 | export async function roundRobinManualReassignment(_args: { | CODE |
| LOW | packages/platform/libraries/index.ts | 166 | export function getClientSecretFromPayment(payment: { data: Record<string, unknown> }): string | null { | CODE |
| LOW | packages/platform/libraries/index.ts | 184 | export async function createNewUsersConnectToOrgIfExists(_args: { | CODE |
| LOW | …s/platform/examples/base/src/pages/api/managed-user.ts | 15 | async function createUserWithDefaultSchedule(email: string, name: string, avatarUrl: string) { | CODE |
| LOW | …s/platform/examples/base/src/pages/api/managed-user.ts | 175 | async function createOrgTeamMembershipMember(orgId: number, teamId: number, userId: number) { | CODE |
| LOW | …s/platform/examples/base/src/pages/api/managed-user.ts | 221 | async function createCollectiveEventType(orgId: number, teamId: number, userIds: number[]) { | CODE |
| LOW | …s/platform/examples/base/src/pages/api/managed-user.ts | 246 | async function createRoundRobinEventType(orgId: number, teamId: number, userIds: number[]) { | CODE |
| LOW | …tures/settings/appDir/SettingsHeaderWithBackButton.tsx | 17 | export default function SettingsHeaderWithBackButton(props: SettingsHeaderWithBackButtonProps) { | CODE |
| LOW | …slation/di/EventTypeTranslationRepository.container.ts | 10 | export function getEventTypeTranslationRepository(): EventTypeTranslationRepository { | CODE |
| LOW | …ures/calendars/lib/getConnectedDestinationCalendars.ts | 69 | async function handleNoConnectedCalendars(user: UserWithCalendars) { | CODE |
| LOW | …ures/calendars/lib/getConnectedDestinationCalendars.ts | 88 | async function handleNoDestinationCalendar({ | CODE |
| LOW | …ures/calendars/lib/getConnectedDestinationCalendars.ts | 153 | async function handleDestinationCalendarNotInConnectedCalendars({ | CODE |
| LOW | …ures/calendars/lib/getConnectedDestinationCalendars.ts | 213 | async function ensureSelectedCalendarIsInDb({ | CODE |
| 437 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | agents/rules/culture-leverage-ai.md | 39 | // AI-generated test case | COMMENT |
| HIGH⚡ | agents/rules/culture-leverage-ai.md | 43 | // AI-generated test case | COMMENT |
| HIGH⚡ | agents/rules/culture-leverage-ai.md | 47 | // AI-generated test case | COMMENT |
| HIGH⚡ | agents/rules/culture-leverage-ai.md | 51 | // AI-generated test case | COMMENT |
| HIGH⚡ | agents/rules/culture-leverage-ai.md | 55 | // AI-generated test case | COMMENT |
| HIGH⚡ | agents/rules/culture-leverage-ai.md | 59 | // AI-generated test case | COMMENT |
| HIGH⚡ | agents/rules/culture-leverage-ai.md | 64 | // AI-generated edge case | COMMENT |
| HIGH | apps/api/v2/src/main.ts | 114 | // Preserved as requested: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …sync/__tests__/CalendarSyncService.integration.test.ts | 125 | // ─── Helper function tests (pure, no mocks needed) ─────────────────────────── | COMMENT |
| MEDIUM | …sync/__tests__/CalendarSyncService.integration.test.ts | 426 | // ─── Change detection ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sync/__tests__/CalendarSyncService.integration.test.ts | 529 | // ─── iCalUID parsing edge cases ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sync/__tests__/CalendarSyncService.integration.test.ts | 608 | // ─── Zero/negative duration edge cases ──────────────────────────────────────── | COMMENT |
| MEDIUM | …sync/__tests__/CalendarSyncService.integration.test.ts | 658 | // ─── End-to-end data flow: event fields → createBooking ─────────────────────── | COMMENT |
| MEDIUM | …sync/__tests__/CalendarSyncService.integration.test.ts | 845 | // ─── Service-level integration tests ────────────────────────────────────────── | COMMENT |
| MEDIUM | …unified-calendars/services/unified-calendar.service.ts | 51 | // ─── Strategy: validate calendar type ────────────────────────────────── | COMMENT |
| MEDIUM | …unified-calendars/services/unified-calendar.service.ts | 69 | // ─── Connections ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …unified-calendars/services/unified-calendar.service.ts | 93 | // ─── User-scoped calendar operations ─────────────────────────────────── | COMMENT |
| MEDIUM | …unified-calendars/services/unified-calendar.service.ts | 129 | // ─── Connection-scoped operations ────────────────────────────────────── | COMMENT |
| MEDIUM | …-unified-calendars/services/google-calendar.service.ts | 213 | // ─── Shared private helpers (DRY calendar CRUD) ────────────────────── | COMMENT |
| MEDIUM | …-unified-calendars/services/google-calendar.service.ts | 369 | // ─── Public user-scoped methods ────────────────────────────────────── | COMMENT |
| MEDIUM | …-unified-calendars/services/google-calendar.service.ts | 405 | // ─── Public connection-scoped methods ───────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | example-apps/credential-sync/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | scripts/wait-for-it.sh | 1 | #!/bin/sh | COMMENT |
| LOW | packages/trpc/index.ts | 1 | // React exports have been moved to @calcom/trpc/react | COMMENT |
| LOW | …atures/bookings/lib/service/RecurringBookingService.ts | 81 | // .flatMap((book) => (book.appsStatus !== undefined ? book.appsStatus : [])) | COMMENT |
| LOW | …eatures/bookings/Booker/utils/getPrefetchMonthCount.ts | 21 | // Column view always needs 2 months because it displays multiple weeks side-by-side, | COMMENT |
| LOW | packages/features/schedules/lib/slots.ts | 41 | // so that maximum possible slots are shown. | COMMENT |
| LOW | …pes/repositories/__tests__/EventTypeRepository.test.ts | 201 | // - describe("findById", () => { ... }) | COMMENT |
| LOW | packages/features/webhooks/lib/WebhookService.test.ts | 61 | const service = await WebhookService.init(mockOptions); | COMMENT |
| LOW | packages/features/webhooks/lib/WebhookService.test.ts | 81 | // appId: "appId2", | COMMENT |
| LOW | packages/features/webhooks/lib/WebhookService.test.ts | 101 | // | COMMENT |
| LOW | packages/features/webhooks/lib/WebhookService.test.ts | 121 | // appId: "appId", | COMMENT |
| LOW | packages/features/webhooks/lib/WebhookService.test.ts | 141 | // data: "test" | COMMENT |
| LOW | packages/features/tasker/repository.ts | 201 | // TODO: Uncomment this later | COMMENT |
| LOW | packages/prisma/run-enum-generator.js | 1 | #!/usr/bin/env node | COMMENT |
| LOW | packages/lib/sdk-event.ts | 1 | // We can't use sdkActionManager without embed because sdkActionManager needs embed namespace to be able to inform the c | COMMENT |
| LOW | packages/lib/deriveAppDictKeyFromType.ts | 41 | // if (appType.match(matcher)) { | COMMENT |
| LOW | packages/embeds/embed-core/src/embed.test.ts | 641 | COMMENT | |
| LOW | .github/workflows/nextjs-bundle-analysis-annotation.yml | 21 | uses: dawidd6/action-download-artifact@v6 | COMMENT |
| LOW | apps/web/pagesAndRewritePaths.ts | 61 | // It would also not match /free/30min/embed because we are ensuring just two slashes | COMMENT |
| LOW | apps/web/playwright/overlay-calendar.e2e.ts | 1 | export {}; | COMMENT |
| LOW | apps/web/playwright/overlay-calendar.e2e.ts | 21 | // await test.step("Log in and return to booking page", async () => { | COMMENT |
| LOW | apps/web/pages/_error.tsx | 81 | // threw or returned a Promise that rejected | COMMENT |
| LOW | apps/docs/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | …ent-types_2024_04_15/inputs/update-event-type.input.ts | 321 | // @IsOptional() | COMMENT |
| LOW | …ent-types_2024_04_15/inputs/update-event-type.input.ts | 361 | // periodStartDate?: Date; | COMMENT |
| LOW | …ent-types_2024_04_15/inputs/update-event-type.input.ts | 381 | // requiresConfirmation?: boolean; | COMMENT |
| LOW | …ent-types_2024_04_15/inputs/update-event-type.input.ts | 441 | // @IsOptional() | COMMENT |
| LOW | …ent-types_2024_04_15/inputs/update-event-type.input.ts | 461 | @Min(0) | COMMENT |
| LOW | …ent-types_2024_04_15/inputs/update-event-type.input.ts | 481 | // @IsBoolean() | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AGENTS.md | 200 | // Step 1: In packages/platform/libraries/index.ts, add the export | COMMENT |
| LOW | AGENTS.md | 203 | // Step 2: In apps/api/v2, import from platform-libraries | COMMENT |
| LOW | CLAUDE.md | 200 | // Step 1: In packages/platform/libraries/index.ts, add the export | COMMENT |
| LOW | CLAUDE.md | 203 | // Step 2: In apps/api/v2, import from platform-libraries | COMMENT |
| LOW | scripts/seed.ts | 276 | // Step 1: Create organization (team) with just metadata and organizationSettings | COMMENT |
| LOW | scripts/seed.ts | 295 | // Step 2: Create org profiles in batches to avoid large transactions | COMMENT |
| LOW | scripts/seed.ts | 318 | // Step 3: Create memberships using createMany for better performance | COMMENT |
| LOW | scripts/seed.ts | 332 | // Step 4: Fetch created profiles to rebuild orgMembersInDBWithProfileId | COMMENT |
| LOW | packages/platform/atoms/STRIPE.md | 11 | ### Step 1: Create Stripe Account and Get API Keys | COMMENT |
| LOW | packages/platform/atoms/STRIPE.md | 31 | ### Step 2: Install and Configure Stripe CLI | COMMENT |
| LOW | packages/platform/atoms/STRIPE.md | 47 | ### Step 3: Configure Environment Variables | COMMENT |
| LOW | packages/platform/atoms/STRIPE.md | 116 | ### Step 4: Local Development Workaround | COMMENT |
| LOW | packages/platform/atoms/STRIPE.md | 122 | ### Step 5: Testing the Integration | COMMENT |
| LOW | …ings/2024-08-13/controllers/e2e/add-guests.e2e-spec.ts | 286 | // Step 1: Organizer adds guest user as a guest | COMMENT |
| LOW | …ings/2024-08-13/controllers/e2e/add-guests.e2e-spec.ts | 302 | // Step 2: Now the guest can add their own guests | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/seed.ts | 276 | // Step 1: Create organization (team) with just metadata and organizationSettings | COMMENT |
| LOW | scripts/seed.ts | 295 | // Step 2: Create org profiles in batches to avoid large transactions | COMMENT |
| LOW | scripts/seed.ts | 318 | // Step 3: Create memberships using createMany for better performance | COMMENT |
| LOW | scripts/seed.ts | 332 | // Step 4: Fetch created profiles to rebuild orgMembersInDBWithProfileId | COMMENT |
| LOW | …ges/features/bookings/lib/getBookingResponsesSchema.ts | 258 | // Either the field is required or there is a radio selected, we need to check if the optionInput is required or | COMMENT |
| LOW | …ings/2024-08-13/controllers/e2e/add-guests.e2e-spec.ts | 286 | // Step 1: Organizer adds guest user as a guest | COMMENT |
| LOW | …ings/2024-08-13/controllers/e2e/add-guests.e2e-spec.ts | 302 | // Step 2: Now the guest can add their own guests | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/platform/atoms/hooks/useSlots.ts | 111 | // TODO: implement slot no longer available feature | COMMENT |
| LOW | …pes/repositories/__tests__/EventTypeRepository.test.ts | 199 | // TODO: Add tests for other EventTypeRepository methods as they are added | COMMENT |
| LOW | packages/features/credentials/deleteCredential.test.ts | 125 | // TODO: Add test for payment apps | COMMENT |
| LOW | packages/features/credentials/deleteCredential.test.ts | 126 | // TODO: Add test for event type apps | COMMENT |
| LOW | apps/web/modules/settings/my-account/profile-view.tsx | 90 | // TODO: Add error codes. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/web/test/jest-resolver.js | 2 | // Call the defaultResolver, so we leverage its cache, error handling, etc. | COMMENT |
| MEDIUM | apps/web/lib/app-providers.tsx | 230 | ? // Same Namespace, Same Organizer but different themes would still work seamless and not cause theme flicker | CODE |
| MEDIUM | apps/web/lib/getThemeProviderProps.ts | 128 | ? // Same Namespace, Same Organizer but different themes would still work seamless and not cause theme flicker | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agents/skills/calcom-api/SKILL.md | 44 | Authorization: Bearer cal_<your_api_key> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/draft-release.yml | 88 | # Create the TypeScript content | COMMENT |