The open alternative to Salesforce, designed for AI.
This report summarizes scanner evidence for twentyhq/twenty, a TypeScript project with 60,195 GitHub stars. SynthScan examined 2,822,447 lines of code across 36015 source files, recording 1169 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 0.8 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 408 finding(s).
Are imports declared and package/API names verified? 684 finding(s).
Are wrappers, guards, and repeated structures necessary? 272 finding(s).
Which changes need focused human review? 1169 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1169 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …form/visuals/halftone-studio/engine/HalftoneCanvas.tsx | 161 | resources.imageMaterial.uniforms.imageSize.value.set(1, 1); | CODE |
| CRITICAL | …form/visuals/halftone-studio/engine/HalftoneCanvas.tsx | 176 | resources.imageMaterial.uniforms.imageSize.value.set( | CODE |
| CRITICAL | …google/calendar/channel-visibility.integration-spec.ts | 51 | return response.body.data.calendarEvents.edges.map( | CODE |
| CRITICAL | …google/calendar/channel-visibility.integration-spec.ts | 72 | return response.body.data.calendarEventParticipants.edges.map( | CODE |
| CRITICAL | …oogle/messaging/channel-visibility.integration-spec.ts | 50 | return response.body.data.messages.edges.map( | CODE |
| CRITICAL | …oogle/messaging/channel-visibility.integration-spec.ts | 71 | return response.body.data.messageParticipants.edges.map( | CODE |
| CRITICAL | …er/test/integration/utils/list-chat-thread-ids.util.ts | 30 | return response.body.data.agentChatThreads.edges.map( | CODE |
| CRITICAL | …on/application-variable-encryption.integration-spec.ts | 174 | findResponse.body.data.findOneApplication.applicationVariables.find( | CODE |
| CRITICAL | …on/application-variable-encryption.integration-spec.ts | 241 | findResponse.body.data.findOneApplication.applicationVariables.find( | CODE |
| CRITICAL | …l/suites/calendar-event-visibility.integration-spec.ts | 206 | calendarEvents: response.body.data.calendarEvents.edges.map( | CODE |
| CRITICAL | …l/suites/calendar-event-visibility.integration-spec.ts | 241 | calendarEvents: response.body.data.calendarEventParticipants.edges.map( | CODE |
| CRITICAL | …l/suites/calendar-event-visibility.integration-spec.ts | 272 | response.body.data.person.calendarEventParticipants.edges.map( | CODE |
| CRITICAL | …ql/suites/mutate-by-relation-field.integration-spec.ts | 143 | findResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/mutate-by-relation-field.integration-spec.ts | 202 | const remainingIds = findResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …hql/suites/chat-thread-participant.integration-spec.ts | 262 | return response.body.data.agentChatThreadParticipants.edges.map( | CODE |
| CRITICAL | …application-user-role-intersection.integration-spec.ts | 123 | return response.body.data.companies.edges.map( | CODE |
| CRITICAL | …hat-conversation-record-attachment.integration-spec.ts | 109 | return response.body.data.agentChatThreadTargets.edges.map( | CODE |
| CRITICAL | …/suites/composite-field-pagination.integration-spec.ts | 80 | const firstPagePeople = firstPageResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …/suites/composite-field-pagination.integration-spec.ts | 114 | const secondPagePeople = secondPageResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …/suites/composite-field-pagination.integration-spec.ts | 153 | const thirdPagePeople = thirdPageResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …/suites/composite-field-pagination.integration-spec.ts | 180 | const firstPagePeople = firstPageResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …/suites/composite-field-pagination.integration-spec.ts | 208 | const secondPagePeople = secondPageResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …/suites/composite-field-pagination.integration-spec.ts | 236 | const allPeople = allPeopleResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …/suites/composite-field-pagination.integration-spec.ts | 260 | const backwardPagePeople = backwardPageResponse.body.data.people.edges.map( | CODE |
| CRITICAL | …/suites/person-participant-rematch.integration-spec.ts | 73 | response.body.data.messageParticipants.edges.map( | CODE |
| CRITICAL | …n/graphql/suites/relation-join-rls.integration-spec.ts | 71 | const ids = response.body.data.people.edges.map( | CODE |
| CRITICAL | …n/graphql/suites/relation-join-rls.integration-spec.ts | 94 | response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 169 | const ids = response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 205 | const ids = response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 242 | const ids = response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 303 | const ids = response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 345 | const companyNames = response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 387 | const ids = response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 482 | const ids = response.body.data.people.edges.map( | CODE |
| CRITICAL | …ql/suites/filter-by-relation-field.integration-spec.ts | 516 | const ids = response.body.data.pets.edges.map( | CODE |
| CRITICAL | …suites/timeline-from-object-record.integration-spec.ts | 432 | threadResponse.body.data.getTimelineThreadsFromObjectRecord.timelineThreads.map( | CODE |
| CRITICAL | …suites/timeline-from-object-record.integration-spec.ts | 437 | calendarResponse.body.data.getTimelineCalendarEventsFromObjectRecord.timelineCalendarEvents.map( | CODE |
| CRITICAL | …/suites/uncompilable-rls-predicate.integration-spec.ts | 36 | return response.body.data.companies.edges.map( | CODE |
| CRITICAL | …art-data-relation-traversal-filter.integration-spec.ts | 58 | }> = objectsResponse.body.data.objects.edges.map( | CODE |
| CRITICAL | …/suites/cursor-pagination-order-by.integration-spec.ts | 645 | response.body.data.opportunities.edges.map( | CODE |
| CRITICAL | …ites/event-logs/object-event-write.integration-spec.ts | 51 | personObjectMetadataId = response.body.data.objects.edges.find( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 301 | const errorRecord = response.body.data.eventLogs.records.find( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 346 | const firstPageTimestamps = firstPage.body.data.eventLogs.records.map( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 349 | const secondPageTimestamps = secondPage.body.data.eventLogs.records.map( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 394 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 437 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 462 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 489 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 515 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 535 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 557 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 594 | upgradeResponse.body.data.eventLogs.records.filter( | CODE |
| CRITICAL | …aphql/suites/event-logs/event-logs.integration-spec.ts | 620 | response.body.data.eventLogs.records.forEach( | CODE |
| CRITICAL | …issions/record-sharing-beyond-role.integration-spec.ts | 314 | sharing.body.data.recordSharing.shares.map( | CODE |
| CRITICAL | …actions-object-records-permissions.integration-spec.ts | 90 | response.body.data.currentUser.currentUserWorkspace.objectsPermissions.find( | CODE |
| CRITICAL | …cord-level-permissions-on-relation.integration-spec.ts | 68 | return response.body.data.companies.edges.map( | CODE |
| CRITICAL | …ability-object-records-permissions.integration-spec.ts | 417 | response.body.data.people.edges.map( | CODE |
| CRITICAL | …ect-generated/companies-merge-many.integration-spec.ts | 503 | findCompaniesResponse.body.data.companies.edges.map( | CODE |
| CRITICAL | …eople-merge-many-field-permissions.integration-spec.ts | 80 | return response.body.data.people.edges.map( | CODE |
| CRITICAL | …object-generated/people-merge-many.integration-spec.ts | 237 | return response.body.data.messageThreadTargets.edges.map( | CODE |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ves/feedback/Skeleton/__stories__/Skeleton.stories.tsx | 17 | render: (args) => <Skeleton {...args} data-testid="placeholder" />, | CODE |
| LOW | …ves/feedback/Skeleton/__stories__/Skeleton.stories.tsx | 52 | const placeholder = canvas.getByTestId('placeholder'); | CODE |
| LOW | …ves/feedback/Skeleton/__stories__/Skeleton.stories.tsx | 175 | const placeholder = canvas.getByTestId('placeholder'); | CODE |
| LOW | …ves/feedback/Skeleton/__stories__/Skeleton.stories.tsx | 199 | canvas.getByTestId('placeholder'), | CODE |
| LOW | …ves/feedback/Skeleton/__stories__/Skeleton.stories.tsx | 223 | const placeholder = canvas.getByTestId('placeholder'); | CODE |
| LOW | …ck/Skeleton/__tests__/Skeleton.reduced-motion.test.tsx | 9 | render(<Skeleton data-testid="placeholder" width={120} height={16} />); | CODE |
| LOW | …ck/Skeleton/__tests__/Skeleton.reduced-motion.test.tsx | 11 | const placeholder = screen.getByTestId('placeholder'); | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 14 | render(<Skeleton data-testid="placeholder" />); | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 16 | expect(screen.getByTestId('placeholder')).toHaveAttribute( | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 26 | data-testid="placeholder" | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 40 | expect(screen.getByTestId('placeholder')).toHaveStyle( | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 46 | render(<Skeleton data-testid="placeholder" layout="inline" />); | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 48 | expect(screen.getByTestId('placeholder').textContent).toBe(''); | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 52 | render(<Skeleton data-testid="placeholder" />); | CODE |
| LOW⚡ | …imitives/feedback/Skeleton/__tests__/Skeleton.test.tsx | 54 | const placeholder = screen.getByTestId('placeholder'); | CODE |
| LOW | …mitives/data-display/Chip/__stories__/Chip.stories.tsx | 109 | children: 'John Doe', | CODE |
| LOW | …mitives/data-display/Chip/__stories__/Chip.stories.tsx | 111 | <Avatar name="JD" colorSeed="John Doe" size="sm" shape="circle" /> | CODE |
| LOW | …ves/data-display/Status/__stories__/Status.stories.tsx | 37 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …ves/data-display/Status/__stories__/Status.stories.tsx | 37 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW⚡ | …ves/data-display/Avatar/__stories__/Avatar.stories.tsx | 268 | <Avatar.Root name="Jane Doe" shape="circle" size="xxl"> | CODE |
| LOW⚡ | …ves/data-display/Avatar/__stories__/Avatar.stories.tsx | 269 | <Avatar.Image src={VALID_IMAGE} alt="Jane Doe" decoding="async" /> | CODE |
| LOW⚡ | …ves/data-display/Avatar/__stories__/Avatar.stories.tsx | 270 | <Avatar.Fallback role="img" aria-label="Jane Doe"> | CODE |
| LOW | …ves/data-display/Avatar/__stories__/Avatar.stories.tsx | 281 | const image = await canvas.findByAltText('Jane Doe'); | CODE |
| LOW | …ves/data-display/Avatar/__stories__/Avatar.stories.tsx | 544 | <Avatar.Root name="Jane Doe" size="xxl"> | CODE |
| LOW | …ves/data-display/Avatar/__stories__/Avatar.stories.tsx | 549 | aria-label="Jane Doe" | CODE |
| LOW | …ves/data-display/Avatar/__stories__/Avatar.stories.tsx | 567 | const fallback = await canvas.findByRole('img', { name: 'Jane Doe' }); | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 38 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 38 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 50 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 50 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 63 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 63 | children: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 77 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 77 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 90 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 90 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 104 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …rimitives/data-display/Tag/__stories__/Tag.stories.tsx | 104 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …ooltip/__stories__/OverflowTextWithTooltip.stories.tsx | 12 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tellus diam, rhoncus nec consequat quis, dapibus quis | CODE |
| LOW | …ooltip/__stories__/OverflowTextWithTooltip.stories.tsx | 12 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tellus diam, rhoncus nec consequat quis, dapibus quis | CODE |
| LOW | …rimitives/typography/Text/__stories__/Text.stories.tsx | 23 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore'; | CODE |
| LOW | …rimitives/typography/Text/__stories__/Text.stories.tsx | 23 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore'; | CODE |
| LOW | …/utilities/utils/__tests__/normalizeSearchText.test.ts | 241 | { text: 'user@example.com', expected: 'user@example.com' }, | CODE |
| LOW | …er/__stories__/CurrencyPicker.interactions.stories.tsx | 170 | await expect(search).toHaveAttribute('placeholder', 'Find a currency'); | CODE |
| LOW | …icker/__stories__/EmojiPicker.interactions.stories.tsx | 86 | await expect(search).toHaveAttribute('placeholder', 'Search by name'); | CODE |
| LOW | …/src/components/__stories__/LabelOverrides.stories.tsx | 117 | ).toHaveAttribute('placeholder', 'Search everything'); | CODE |
| LOW | …/src/components/__stories__/LabelOverrides.stories.tsx | 271 | ).toHaveAttribute('placeholder', 'Type a choice'); | CODE |
| LOW | …components/navigation/MenuItem/types/MenuItemAccent.ts | 1 | export type MenuItemAccent = 'default' | 'danger' | 'placeholder'; | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 190 | name: 'John Doe', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 212 | name: 'John Doe', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 219 | const name = await canvas.findByText('John Doe'); | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 246 | name: 'John Doe', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 248 | street: '123 Main St', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 314 | name: 'John Doe', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 344 | name: 'John Doe', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 346 | street: '123 Main St', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 393 | name: 'John Doe', | CODE |
| LOW | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 395 | street: '123 Main St', | CODE |
| LOW⚡ | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 549 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum iaculis est tincidunt, sagittis neque vitae, | CODE |
| LOW⚡ | …data-display/JsonTree/__stories__/JsonTree.stories.tsx | 549 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum iaculis est tincidunt, sagittis neque vitae, | CODE |
| 495 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/twenty-ui/scripts/generateBarrels.ts | 366 | function extractExportsFromSourceFile(sourceFile: ts.SourceFile) { | CODE |
| LOW | …mitives/feedback/Banner/__stories__/Banner.stories.tsx | 233 | render: function ControlledDismissalExample() { | CODE |
| LOW | …rflowingTextWithTooltip/OverflowingTextWithTooltip.tsx | 18 | function OverflowingTextWithTooltip({ | CODE |
| LOW | …e/src/apps-marketplace/fetch-marketplace-app-detail.ts | 40 | export async function fetchMarketplaceAppDetailBySlug( | CODE |
| LOW | …te/src/sections/footer/LocaleSwitcherDismissEffect.tsx | 12 | export function LocaleSwitcherDismissEffect({ | CODE |
| LOW | …ct-feature/PipelineVisual/components/CreatedByChip.tsx | 9 | function renderCreatedByLeftComponent(actor: DealActor): ReactNode { | CODE |
| LOW | …/sections/testimonials/PartnerTestimonialsCarousel.tsx | 205 | export function PartnerTestimonialsCarousel({ | CODE |
| LOW | …ions/pricing-salesfarce/SalesfarceWrongChoicePopup.tsx | 91 | export function SalesfarceWrongChoicePopup({ | CODE |
| LOW | …/menu/effect-components/CloseDrawerOnDesktopEffect.tsx | 11 | export function CloseDrawerOnDesktopEffect({ | CODE |
| LOW | …oduct-stepper/components/ProductStepperVisualFrame.tsx | 48 | export function ProductStepperVisualFrame({ | CODE |
| LOW | …ctions/case-study-detail/CustomersCaseStudySignoff.tsx | 7 | export function CustomersCaseStudySignoff() { | CODE |
| LOW | …used)/partners/apply/PartnerApplicationPageContent.tsx | 34 | export function PartnerApplicationPageContent() { | CODE |
| LOW | …le]/(site)/compare-pricing/microsoft-dynamics/page.tsx | 13 | export default async function CompareMicrosoftDynamicsPricingPage({ | CODE |
| LOW | …app/[locale]/(site)/compare-pricing/pipedrive/page.tsx | 13 | export default async function ComparePipedrivePricingPage({ | CODE |
| LOW | …c/app/[locale]/(site)/compare-pricing/hubspot/page.tsx | 13 | export default async function CompareHubspotPricingPage({ | CODE |
| LOW | …pp/[locale]/(site)/compare-pricing/salesforce/page.tsx | 13 | export default async function CompareSalesforcePricingPage({ | CODE |
| LOW | …artners-marketplace/fetch-live-marketplace-partners.ts | 85 | export async function fetchLiveMarketplacePartners(): Promise< | CODE |
| LOW | …iliate-application/build-affiliate-workflow-payload.ts | 18 | export function buildAffiliateWorkflowPayload( | CODE |
| LOW | …rc/platform/enterprise/is-searchable-metadata-value.ts | 3 | export function isSearchableMetadataValue(value: unknown): value is string { | CODE |
| LOW | …website/src/platform/enterprise/sign-validity-token.ts | 18 | function getValidityTokenDurationDays(): number { | CODE |
| LOW | …tform/enterprise/resolve-subscription-license-state.ts | 43 | export function resolveSubscriptionLicenseState({ | CODE |
| LOW | …rprise/get-validity-token-emission-limit-per-window.ts | 3 | export function getValidityTokenEmissionLimitPerWindow(): number { | CODE |
| LOW | …erprise/evaluate-validity-token-emission-rate-limit.ts | 12 | export function evaluateValidityTokenEmissionRateLimit({ | CODE |
| LOW | …atform/enterprise/has-prior-subscription-for-server.ts | 11 | export async function hasPriorSubscriptionForServer({ | CODE |
| LOW | …platform/enterprise/subscription-current-period-end.ts | 3 | export function getSubscriptionCurrentPeriodEnd( | CODE |
| LOW | …atform/enterprise/get-licensee-from-stripe-customer.ts | 9 | export function getLicenseeFromStripeCustomer( | CODE |
| LOW | …form/visuals/halftone-studio/studio/HalftoneStudio.tsx | 118 | function normalizePresetAssetReference(reference: string | null) { | CODE |
| LOW | …/halftone-studio/studio/CopyHalftoneShortcutEffect.tsx | 29 | export function CopyHalftoneShortcutEffect({ | CODE |
| LOW | …c/platform/visuals/halftone-studio/export/exporters.ts | 27 | function toIllustrationRegistryKey(componentName: string) { | CODE |
| LOW | …c/platform/visuals/halftone-studio/export/exporters.ts | 35 | function normalizeReactExportSettings( | CODE |
| LOW | …c/platform/visuals/halftone-studio/export/exporters.ts | 77 | function getStandaloneThreeImports( | CODE |
| LOW | …c/platform/visuals/halftone-studio/export/exporters.ts | 105 | function getTwentyReactHeaderComment( | CODE |
| LOW | …orm/visuals/halftone-studio/export/exporter-parsing.ts | 32 | function isRoundedBandHalftoneSettings(value: unknown): value is Omit< | CODE |
| LOW | …orm/visuals/halftone-studio/export/exporter-parsing.ts | 231 | function deriveExportComponentName( | CODE |
| LOW | …als/halftone-studio/export/footprint-runtime-source.ts | 107 | function getFootprintScaleFromRects(currentRect, referenceRect) { | CODE |
| LOW | …latform/visuals/halftone-studio/export/export-names.ts | 21 | function normalizeExportComponentName( | CODE |
| LOW | …latform/visuals/halftone-studio/export/export-names.ts | 41 | function resolveExportArtifactNames( | CODE |
| LOW | …orm/visuals/halftone-studio/export/image-svg-export.ts | 49 | function getHorizontalAlphaSegments( | CODE |
| LOW | …form/visuals/halftone-studio/export/exporter-source.ts | 442 | function normalizeTextureCoordinates(geometry) { | CODE |
| LOW | …form/visuals/halftone-studio/export/exporter-source.ts | 478 | function normalizeImportedGeometry(geometry) { | CODE |
| LOW | …form/visuals/halftone-studio/export/exporter-source.ts | 610 | function createImportedRuntimeSource(loader: HalftoneGeometrySpec['loader']) { | CODE |
| LOW | …form/visuals/halftone-studio/export/exporter-source.ts | 619 | async function loadImportedGeometryFromUrl(modelUrl, label) { | CODE |
| LOW | …form/visuals/halftone-studio/export/exporter-source.ts | 657 | function createImportedGeometryRuntimeSource(shape: ExportedShapeDescriptor) { | CODE |
| LOW | …uals/halftone-studio/export/material-runtime-source.ts | 29 | function createGlassTransmissionScene(environmentTexture) { | CODE |
| LOW | …uals/halftone-studio/export/material-runtime-source.ts | 85 | async function createHalftoneMaterialAssets(renderer) { | CODE |
| LOW | …uals/halftone-studio/export/material-runtime-source.ts | 100 | function applyHalftoneMaterialSettings(material, materialSettings, materialAssets) { | CODE |
| LOW | …uals/halftone-studio/export/material-runtime-source.ts | 162 | function renderHalftoneMaterialScene({ | CODE |
| LOW⚡ | …uals/halftone-studio/export/material-runtime-source.ts | 207 | function disposeHalftoneMaterialAssets(materialAssets) { | CODE |
| LOW⚡ | …uals/halftone-studio/export/material-runtime-source.ts | 214 | function createImageTextureLoadSource(url: string | null) { | CODE |
| LOW⚡ | …uals/halftone-studio/export/material-runtime-source.ts | 220 | export function createMaterialRuntimeSource({ | CODE |
| LOW | …uals/halftone-studio/export/material-runtime-source.ts | 239 | function loadMaterialImageTextures(renderer) { | CODE |
| LOW | …rm/visuals/halftone-studio/engine/interaction-state.ts | 33 | function createHalftoneInteractionState( | CODE |
| LOW | …rm/visuals/halftone-studio/engine/interaction-state.ts | 85 | function resetHalftoneInteractionState( | CODE |
| LOW | …/halftone-studio/engine/create-initial-studio-state.ts | 5 | export function createInitialHalftoneStudioState(): HalftoneStudioState { | CODE |
| LOW | …c/platform/visuals/halftone-studio/engine/materials.ts | 491 | function createGlassTransmissionScene(environmentTexture: THREE.Texture) { | CODE |
| LOW | …c/platform/visuals/halftone-studio/engine/materials.ts | 562 | async function loadHalftoneMaterialTextures({ | CODE |
| LOW | …c/platform/visuals/halftone-studio/engine/materials.ts | 592 | async function createHalftoneMaterialAssets({ | CODE |
| LOW | …c/platform/visuals/halftone-studio/engine/materials.ts | 621 | function applyHalftoneMaterialSettings( | CODE |
| LOW | …c/platform/visuals/halftone-studio/engine/materials.ts | 694 | function renderHalftoneMaterialScene(options: { | CODE |
| LOW | …c/platform/visuals/halftone-studio/engine/materials.ts | 755 | function disposeHalftoneMaterialAssets(assets: HalftoneMaterialAssets) { | CODE |
| 135 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ls/code-interpreter-tool/twenty-mcp-helper.constant.ts | 184 | return None | CODE |
| HIGH⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 775 | print(f"{len(tools)} catalog tools available") | CODE |
| HIGH⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 777 | print(f"- {tool['name']}") | CODE |
| HIGH⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 782 | print(c['name'], c.get('employees')) | CODE |
| HIGH⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 791 | print(f"Created company id={result['id']}") | CODE |
| HIGH⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1049 | print(row) | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 267 | print(summary) # { 'created': 4000, 'updated': 380, 'upserted': 4380, 'failed': 0, 'errors': [] } | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 733 | print('Chart saved!') | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 744 | print(f"Loaded {len(df)} rows") | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 754 | print('Analysis complete!') | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1032 | print(text) | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1170 | print(para.text) | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1176 | print(cell.text) | CODE |
| HIGH | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1473 | print(shape.text) | CODE |
| HIGH⚡ | …es/ai/components/__stories__/AiChatMessage.stories.tsx | 85 | print(f"Total sales: $" + str(df['sales'].sum())) | CODE |
| HIGH⚡ | …es/ai/components/__stories__/AiChatMessage.stories.tsx | 86 | print("Chart saved successfully!")`, | CODE |
| HIGH | …es/ai/components/__stories__/AiChatMessage.stories.tsx | 158 | print("Processing data...") | CODE |
| HIGH | …es/ai/components/__stories__/AiChatMessage.stories.tsx | 160 | print("Done!")`, | CODE |
| HIGH | …es/ai/components/__stories__/AiChatMessage.stories.tsx | 184 | print(df.head())`, | CODE |
| HIGH | …omponents/__stories__/CodeExecutionDisplay.stories.tsx | 23 | print(f"Total Revenue: $" + f"{total:,.2f}") | CODE |
| HIGH | …omponents/__stories__/CodeExecutionDisplay.stories.tsx | 24 | print(f"Average Monthly: $" + f"{average:,.2f}") | CODE |
| HIGH | …omponents/__stories__/CodeExecutionDisplay.stories.tsx | 56 | print("Complete!")`, | CODE |
| HIGH | …omponents/__stories__/CodeExecutionDisplay.stories.tsx | 86 | print(df.head())`, | CODE |
| HIGH | …omponents/__stories__/CodeExecutionDisplay.stories.tsx | 142 | print("Files exported successfully!")`, | CODE |
| HIGH | …omponents/__stories__/CodeExecutionDisplay.stories.tsx | 203 | print(f"Processing item {i+1}...")`, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/twenty-ui/src/vite-env.d.ts | 1 | /// <reference types="vite/client" /> | COMMENT |
| LOW | …i/src/components/code-editor/CodeEditor/CodeEditor.tsx | 21 | import { defineCodeEditorDefaultTheme } from './internal/utils/defineCodeEditorDefaultTheme'; | COMMENT |
| LOW | packages/twenty-docker/docker-compose.yml | 21 | STORAGE_S3_NAME: ${STORAGE_S3_NAME} | COMMENT |
| LOW | packages/twenty-docker/docker-compose.yml | 81 | STORAGE_S3_ENDPOINT: ${STORAGE_S3_ENDPOINT} | COMMENT |
| LOW | packages/twenty-docker/helm/twenty/README.md | 61 | **Local (default):** Uses PVCs for persistence | COMMENT |
| LOW | …te/src/platform/routing/partner-directory-anchor-id.ts | 1 | // The lead page's directory zone is reached by anchor from the hero CTA | COMMENT |
| LOW | …bsite/src/platform/menu-style/menu-style-background.ts | 1 | // The Menu's background override channel: a page writes this custom | COMMENT |
| LOW | …e/src/app-preview/stage/traffic-lights-escape-event.ts | 1 | // The prompt egg (terminal subtree) launches the traffic-light escape | COMMENT |
| LOW | packages/twenty-website/src/tokens/hero-composition.ts | 1 | // The hero's internal vertical rhythm: the gap from the CTA row down to the | COMMENT |
| LOW | …ty-website/src/tokens/app-preview/app-preview-tones.ts | 1 | // The mockup's tone tables (single module). Every product-color group derives | COMMENT |
| LOW | …kages/twenty-docs/scripts/prune-orphan-translations.ts | 1 | import fs from 'fs'; | COMMENT |
| LOW | …n-command/2-18/utils/does-physical-index-exist.util.ts | 1 | import { type QueryRunner } from 'typeorm'; | COMMENT |
| LOW | …mmand/2-18/utils/get-physical-index-definition.util.ts | 1 | import { type QueryRunner } from 'typeorm'; | COMMENT |
| LOW | …529458168-backfill-name-field-is-system-side-effect.ts | 1 | import { DataSource, QueryRunner } from 'typeorm'; | COMMENT |
| LOW | …59040-make-billing-credit-grant-expires-at-nullable.ts | 1 | import { QueryRunner } from 'typeorm'; | COMMENT |
| LOW | …-fast-1747234200000-add-sub-field-name-to-view-sort.ts | 1 | import { QueryRunner } from 'typeorm'; | COMMENT |
| LOW | …1277453604-rename-is-ui-read-only-to-is-ui-editable.ts | 1 | // Grandfathered: this 2.13 command already shipped to cloud and is recorded | COMMENT |
| LOW | …nly-to-is-ui-editable-upgrade-command-name.constant.ts | 1 | // Step name of the 2.13 fast instance command that renames isUIReadOnly to | COMMENT |
| LOW | …compute-unique-field-metadata-ids-from-indexes.util.ts | 21 | // UNIQUE index — e.g. `defineIndex({ isUnique: true, fields: [oneField] })` — | COMMENT |
| LOW | …de-interpreter/drivers/local-driver-kernel.constant.ts | 1 | // Persistent Python "kernel" used by the LocalDriver to keep variables, | COMMENT |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 21 | Usage: | COMMENT |
| LOW | …event/constants/max-events-per-trigger-job.constant.ts | 1 | // Hard ceiling on how many database events a single logic function trigger job carries when the | COMMENT |
| LOW | …-modules/file/constants/twenty-mime-policy.constant.ts | 1 | // Extensions where Twenty intentionally deviates from the IANA-standard mime | COMMENT |
| LOW | …modules/usage-limit/utils/normalize-spender-id.util.ts | 1 | // The entity stores '' for a limit with no spenderId so the unique index can | COMMENT |
| LOW | …ules/pending-wake-up/types/owner-waiting-state.type.ts | 1 | // Whether the owner of a wake-up, or the caller of an agent run, still waits on it. | COMMENT |
| LOW | …/message-queue/message-queue-worker-config.constant.ts | 1 | import { type MessageQueueWorkerOptions } from 'src/engine/core-modules/message-queue/interfaces/message-queue-worker-op | COMMENT |
| LOW | …nstants/server-route-dispatch-job-priority.constant.ts | 1 | // A server route dispatch answers an inbound webhook someone is waiting on, | COMMENT |
| LOW | …ool-provider/interfaces/tool-retrieval-options.type.ts | 1 | import { type ToolCatalogOptions } from 'src/engine/core-modules/tool-provider/types/tool-catalog-options.type'; | COMMENT |
| LOW | …ool/constants/max-inline-tool-output-bytes.constant.ts | 1 | // Shared budget for inlining a tool result. Above this, outputs are spilled to | COMMENT |
| LOW | …ty-server/src/engine/guards/custom-permission.guard.ts | 1 | import { | COMMENT |
| LOW | …twenty-server/src/engine/guards/no-permission.guard.ts | 1 | import { | COMMENT |
| LOW | packages/twenty-sdk/vite.config.node.ts | 1 | import path from 'path'; | COMMENT |
| LOW | …ogic-function/connections/types/app-connection.type.ts | 1 | // One credential the running app owns. Returned from `listConnections` and | COMMENT |
| LOW | …enty-shared/src/constants/CsvInjectionPreventionZwj.ts | 1 | // Zero-Width Joiner character used to prevent CSV injection while preserving data. | COMMENT |
| LOW | …wenty-shared/src/application/connectionProviderType.ts | 1 | // Discriminator on `connectionProvider.type`. Each value pairs with a | COMMENT |
| LOW | …ges/twenty-shared/src/application/appConnectionType.ts | 1 | // Wire shape exchanged between an app's logic-function runtime and the | COMMENT |
| LOW | …ges/twenty-shared/src/application/appConnectionType.ts | 21 | // Upstream account id from identifyAccountLogicFunction; not unique, apps dedupe on it themselves. | COMMENT |
| LOW | …kages/twenty-front-component-renderer/vitest.config.ts | 1 | // Re-exported so @storybook/addon-vitest's in-UI "Run tests" button (which | COMMENT |
| LOW | …src/polyfills/image/utils/createImagePreloaderClass.ts | 41 | #state: ImagePreloaderState = 'idle'; | COMMENT |
| LOW | packages/twenty-utils/setup-dev-env.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …pp-template/example/files/github/workflows/publish.yml | 1 | # Publishes the app to npm with provenance (npm trusted publishing). | COMMENT |
| LOW | …enty-cli/src/app/add/entity-logic-function-template.ts | 41 | // }, | COMMENT |
| LOW | …enty-cli/src/app/translations/locale-catalog-format.ts | 1 | import { isDefined } from 'twenty-shared/utils'; | COMMENT |
| LOW | …es/twenty-client-sdk/src/generate/runtime-templates.ts | 1 | // The generated client ships its own copy of the genql runtime. We import the | COMMENT |
| LOW | packages/twenty-client-sdk/src/generate/genql/config.ts | 1 | // Path the generated client imports its runtime from. | COMMENT |
| LOW | …c/generate/genql/render/responseTypes/interfaceType.ts | 21 | )}) & { __isUnion?: true }`, | COMMENT |
| LOW | …c/generate/genql/render/responseTypes/interfaceType.ts | 41 | // const typeNames = ctx.schema.getPossibleTypes(type).map((t) => t.name) | COMMENT |
| LOW | …generate/genql/render/responseTypes/typeMappedAlias.ts | 21 | } | COMMENT |
| LOW | …k/src/generate/genql/render/responseTypes/unionType.ts | 21 | `${typeComment(type)}export type ${type.name} = (${typeNames.join( | COMMENT |
| LOW | …k/src/generate/genql/render/responseTypes/unionType.ts | 41 | // }`, | COMMENT |
| LOW | …erate/__tests__/upstream-3.0.5/execute-queries.test.ts | 21 | } from './fixture/generated'; | COMMENT |
| LOW | …unctions/constants/recall-recovery-calls-per-minute.ts | 1 | // Recall caps GET /bot/{id} at 300/min for the whole account, shared by every | COMMENT |
| LOW | …nts/upcoming-calendar-event-scheduling-horizon-days.ts | 1 | // Recall recommends scheduling bots for a rolling near-term window rather than far in advance, | COMMENT |
| LOW | packages/twenty-front/src/vite-env.d.ts | 1 | /// <reference types="vite/client" /> | COMMENT |
| LOW | packages/twenty-front/src/nx-react.d.ts | 1 | /// <reference types="@nx/react/typings/cssmodule.d.ts" /> | COMMENT |
| LOW | …s/data-model/indexes/utils/indexableOptionSeparator.ts | 1 | // The Select component takes string values. We encode (fieldMetadataId, | COMMENT |
| LOW | …s/object-record/__stories__/RecordShowPage.stories.tsx | 61 | export default meta; | COMMENT |
| LOW | …s/twenty-e2e-testing/tests/workflow-visualizer.spec.ts | 1 | // import { expect } from '@playwright/test'; | COMMENT |
| LOW | …s/twenty-e2e-testing/tests/workflow-visualizer.spec.ts | 21 | // await expect(draftWorkflowStatus).toBeVisible(); | COMMENT |
| LOW | …s/twenty-e2e-testing/tests/workflow-visualizer.spec.ts | 41 | // await workflowVisualizer.createStep('create-record'); | COMMENT |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/twenty-docs/scripts/__tests__/lint-mdx.spec.ts | 8 | 'Set the header to <your-api-key> before calling.', | CODE |
| HIGH | packages/twenty-docs/scripts/__tests__/lint-mdx.spec.ts | 12 | { line: 1, column: 19, text: '<your-api-key>', name: 'your-api-key' }, | CODE |
| HIGH | …s/twenty-agent-skills/scripts/validate-distribution.js | 174 | if (/Bearer\s+(?!YOUR_API_KEY\b)[A-Za-z0-9._-]{20,}/.test(contents)) { | CODE |
| HIGH | …ges/twenty-agent-skills/scripts/validators/metadata.js | 126 | if (/Bearer\s+(?!YOUR_API_KEY\b)[A-Za-z0-9._-]{20,}/.test(contents)) { | CODE |
| HIGH | …y-front/src/modules/settings/mcp/constants/McpSetup.ts | 10 | value: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …y-front/src/modules/settings/mcp/constants/McpSetup.ts | 10 | value: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 48 | Authorization: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 48 | Authorization: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 61 | Authorization: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 61 | Authorization: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 106 | Authorization: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 106 | Authorization: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 122 | expect(params.get('header')).toBe('Authorization=Bearer <YOUR_API_KEY>'); | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 122 | expect(params.get('header')).toBe('Authorization=Bearer <YOUR_API_KEY>'); | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 137 | value: 'Bearer <YOUR_API_KEY>', | CODE |
| HIGH | …/modules/settings/mcp/utils/__tests__/mcpSetup.test.ts | 137 | value: 'Bearer <YOUR_API_KEY>', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …-docker/helm/twenty/tests/schema_permissions_test.yaml | 9 | # ================ | COMMENT |
| MEDIUM | …-docker/helm/twenty/tests/schema_permissions_test.yaml | 63 | # ================== | COMMENT |
| MEDIUM | …ls/code-interpreter-tool/twenty-mcp-helper.constant.ts | 212 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ls/code-interpreter-tool/twenty-mcp-helper.constant.ts | 217 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 2 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 18 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 160 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 162 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 217 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 219 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 235 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 237 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 255 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 257 | # ============================================================================= | COMMENT |
| MEDIUM | packages/twenty-utils/setup-dev-env.sh | 274 | # ============================================================================= | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 115 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 117 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 188 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 190 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 249 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 251 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 323 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-cross-version-upgrade.yaml | 325 | # ================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-e2e-main.yaml | 166 | # ── QA Scout ───────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …skills/syncable-entity-builder-and-validation/SKILL.md | 28 | ## Step 1: Create Validator Service | COMMENT |
| LOW | …skills/syncable-entity-builder-and-validation/SKILL.md | 170 | ## Step 2: Create Builder Service | COMMENT |
| LOW | …skills/syncable-entity-builder-and-validation/SKILL.md | 283 | ## Step 3: Wire into Orchestrator (**CRITICAL**) | COMMENT |
| LOW | .claude/skills/syncable-entity-testing/SKILL.md | 25 | ## Step 1: Create Test Utilities | COMMENT |
| LOW | .claude/skills/syncable-entity-testing/SKILL.md | 120 | ## Step 2: Failing Creation Tests | COMMENT |
| LOW | .claude/skills/syncable-entity-testing/SKILL.md | 265 | ## Step 3: Successful Creation Tests | COMMENT |
| LOW | .claude/skills/syncable-entity-testing/SKILL.md | 382 | ## Step 4: Update and Delete Tests | COMMENT |
| LOW | …de/skills/syncable-entity-types-and-constants/SKILL.md | 25 | ## Step 1: Add Metadata Name | COMMENT |
| LOW | …de/skills/syncable-entity-types-and-constants/SKILL.md | 38 | ## Step 2: Create TypeORM Entity | COMMENT |
| LOW | …de/skills/syncable-entity-types-and-constants/SKILL.md | 78 | ## Step 3: Define Flat Entity Types | COMMENT |
| LOW | …de/skills/syncable-entity-types-and-constants/SKILL.md | 102 | ## Step 4: Define Editable Properties | COMMENT |
| LOW | …de/skills/syncable-entity-types-and-constants/SKILL.md | 120 | ## Step 5: Define Action Types | COMMENT |
| LOW | …de/skills/syncable-entity-types-and-constants/SKILL.md | 171 | ## Step 6: Register in Central Constants | COMMENT |
| LOW | …de/skills/syncable-entity-cache-and-transform/SKILL.md | 25 | ## Step 1: Create Cache Service | COMMENT |
| LOW | …de/skills/syncable-entity-cache-and-transform/SKILL.md | 72 | ## Step 2: Entity-to-Flat Conversion | COMMENT |
| LOW | …de/skills/syncable-entity-cache-and-transform/SKILL.md | 107 | ## Step 3: Input Transform Utils (DTO → Universal Flat Entity) | COMMENT |
| LOW | …de/skills/syncable-entity-cache-and-transform/SKILL.md | 182 | ## Step 4: Create Flat Entity Module | COMMENT |
| LOW | .claude/skills/syncable-entity-integration/SKILL.md | 26 | ## Step 1: Register in Builder Module | COMMENT |
| LOW | .claude/skills/syncable-entity-integration/SKILL.md | 53 | ## Step 2: Register in Validators Module | COMMENT |
| LOW | .claude/skills/syncable-entity-integration/SKILL.md | 78 | ## Step 3: Register Action Handlers | COMMENT |
| LOW | .claude/skills/syncable-entity-integration/SKILL.md | 108 | ## Step 4: Create Service Layer | COMMENT |
| LOW | .claude/skills/syncable-entity-integration/SKILL.md | 186 | ## Step 5: Create Resolver Layer | COMMENT |
| LOW | .claude/skills/syncable-entity-integration/SKILL.md | 244 | ## Step 6: Flat-to-DTO Conversion | COMMENT |
| LOW | …ude/skills/syncable-entity-runner-and-actions/SKILL.md | 28 | ## Step 1: Create Action Handler | COMMENT |
| LOW | …ude/skills/syncable-entity-runner-and-actions/SKILL.md | 100 | ## Step 2: Update Action Handler | COMMENT |
| LOW | …ude/skills/syncable-entity-runner-and-actions/SKILL.md | 173 | ## Step 3: Delete Action Handler | COMMENT |
| LOW | …ude/skills/syncable-entity-runner-and-actions/SKILL.md | 230 | ## Step 4: Universal-to-Flat Conversion | COMMENT |
| LOW⚡ | packages/twenty-docker/k8s/README.md | 37 | ### Step 1: Clone the Repository | COMMENT |
| LOW⚡ | packages/twenty-docker/k8s/README.md | 46 | ### Step 2: Customize the Manifests and Terraform Files | COMMENT |
| LOW⚡ | packages/twenty-docker/k8s/README.md | 50 | ### Step 3: Deploy with Terraform | COMMENT |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 176 | # Step 1: DUPLICATE repeated slides | COMMENT |
| LOW⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 200 | # Step 2: DELETE unwanted slides (work backwards) | COMMENT |
| LOW⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 209 | # Step 3: REORDER to final sequence | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1054 | ### Step 1: Extract field information | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1059 | ### Step 2: Create fill data JSON | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1068 | ### Step 3: Fill the form | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1073 | ### Step 4: Validate the output | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1211 | ### Step 1: Unpack | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1216 | ### Step 2: Edit XML directly | COMMENT |
| LOW | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1229 | ### Step 3: Validate & Repack | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …de-interpreter/drivers/local-driver-kernel.constant.ts | 55 | except Exception: | CODE |
| LOW | …de-interpreter/drivers/local-driver-kernel.constant.ts | 60 | except Exception: | CODE |
| LOW | …odules/code-interpreter/sandbox-scripts/xlsx/recalc.py | 49 | except Exception: | CODE |
| LOW | …odules/code-interpreter/sandbox-scripts/xlsx/recalc.py | 154 | except Exception as e: | CODE |
| MEDIUM | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 100 | print(f"Error: Invalid PowerPoint file: {args.input}") | CODE |
| MEDIUM | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 124 | print("Error: No slides found") | CODE |
| LOW⚡ | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 144 | except Exception as e: | CODE |
| MEDIUM⚡ | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 145 | print(f"Error: {e}") | CODE |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 351 | except Exception: | CODE |
| MEDIUM⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 58 | print(f"Error: Template file not found: {args.template}") | STRING |
| MEDIUM⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 68 | print(f"Error: {e}") | STRING |
| LOW⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 70 | except Exception as e: | STRING |
| MEDIUM⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 71 | print(f"Error processing presentation: {e}") | STRING |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 124 | except Exception: | CODE |
| MEDIUM | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 84 | print(f"Error: Input file not found: {args.input}") | STRING |
| MEDIUM | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 88 | print("Error: Input must be a PowerPoint file (.pptx)") | STRING |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 120 | except Exception as e: | STRING |
| MEDIUM | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 121 | print(f"Error processing presentation: {e}") | STRING |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 384 | except Exception: | CODE |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 504 | except Exception: | CODE |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 601 | except Exception: | CODE |
| MEDIUM⚡ | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 367 | print(f"Error: Input file '{input_pptx}' not found") | CODE |
| MEDIUM⚡ | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 371 | print(f"Error: Replacements JSON file '{replacements_json}' not found") | CODE |
| LOW⚡ | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 376 | except Exception as e: | CODE |
| MEDIUM⚡ | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 377 | print(f"Error applying replacements: {e}") | CODE |
| LOW | …-modules/code-interpreter/sandbox-scripts/docx/pack.py | 128 | except Exception as e: | CODE |
| MEDIUM | …ules/code-interpreter/sandbox-scripts/docx/validate.py | 52 | print(f"Error: Validation not supported for file type {file_extension}") | CODE |
| LOW⚡ | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 187 | except Exception as e: | CODE |
| MEDIUM⚡ | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 188 | print(f"Error counting paragraphs in unpacked document: {e}") | CODE |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 211 | except Exception as e: | CODE |
| MEDIUM | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 212 | print(f"Error counting paragraphs in original document: {e}") | CODE |
| LOW | …terpreter/sandbox-scripts/docx/validation/redlining.py | 59 | except Exception: | CODE |
| LOW | …terpreter/sandbox-scripts/docx/validation/redlining.py | 71 | except Exception as e: | CODE |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 228 | except Exception as e: | CODE |
| LOW⚡ | …de-interpreter/sandbox-scripts/docx/validation/base.py | 471 | except Exception as e: | CODE |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 140 | except Exception as e: | CODE |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 359 | except Exception as e: | CODE |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 604 | except Exception: | CODE |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 626 | except Exception as e: | CODE |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 866 | except Exception as e: | CODE |
| LOW | …ls/code-interpreter-tool/twenty-mcp-helper.constant.ts | 124 | except Exception as exc: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/twenty-docker/scripts/install.sh | 8 | # Check if docker compose plugin is installed | COMMENT |
| LOW⚡ | packages/twenty-docker/scripts/install.sh | 13 | # Check if docker is started | COMMENT |
| LOW⚡ | packages/twenty-docker/scripts/install.sh | 23 | # Check if docker compose version is >= 2 | COMMENT |
| LOW⚡ | packages/twenty-docker/scripts/install.sh | 28 | # Check if docker-compose is installed, if so issue a warning if version is < 2 | COMMENT |
| LOW | packages/twenty-docker/scripts/install.sh | 127 | # Check if command nc is available | COMMENT |
| LOW | packages/twenty-docker/scripts/install.sh | 129 | # Check if port 3000 is already in use, propose to change it | COMMENT |
| LOW | packages/twenty-docker/scripts/install.sh | 155 | # Check if port is listening | COMMENT |
| LOW | packages/twenty-server/scripts/ssl-generation/script.sh | 3 | # Check if OpenSSL is installed | COMMENT |
| LOW | …odules/code-interpreter/sandbox-scripts/xlsx/recalc.py | 82 | # Check if gtimeout is available on macOS | COMMENT |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 873 | # Check if there's meaningful overlap (more than tolerance) | COMMENT |
| LOW | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 173 | # Check if slide exists | COMMENT |
| LOW | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 306 | # Check if any text overflow got worse | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 90 | # Check if text starts or ends with whitespace | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 92 | # Check if xml:space="preserve" attribute exists | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 94 | # Check if this is an ID attribute | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 97 | # Check if value looks like a UUID (has the right length and pattern structure) | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 125 | # Check if it's 32 hex-like characters (could include invalid hex chars) | COMMENT |
| LOW⚡ | …de-interpreter/sandbox-scripts/docx/validation/base.py | 449 | # Check if the ID exists | COMMENT |
| LOW⚡ | …de-interpreter/sandbox-scripts/docx/validation/base.py | 456 | # Check if we have type expectations for this element | COMMENT |
| LOW⚡ | …de-interpreter/sandbox-scripts/docx/validation/base.py | 463 | # Check if the actual type matches or contains the expected type | COMMENT |
| LOW⚡ | …de-interpreter/sandbox-scripts/docx/validation/base.py | 759 | # Check if file is in a main content folder and use appropriate schema | COMMENT |
| LOW⚡ | …de-interpreter/sandbox-scripts/docx/validation/base.py | 776 | # Check if attribute is from a namespace other than allowed ones | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 212 | # Check if this element type has ID uniqueness requirements | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 503 | # Check if this might be a compound like "sldMasterId" | COMMENT |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 619 | # Check if it's a known media extension that should be declared | COMMENT |
| LOW | .github/workflows/ci-breaking-changes.yaml | 538 | # Check if the output file was created and is valid JSON | COMMENT |
| LOW | .github/workflows/ci-breaking-changes.yaml | 609 | # Check if the output file was created and is valid JSON | COMMENT |
| LOW | .github/workflows/ci-emails.yaml | 58 | # Check if server is running | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/twenty-docker/scripts/install.sh | 96 | # Create a directory named twenty | COMMENT |
| MEDIUM | packages/twenty-server/scripts/ssl-generation/script.sh | 17 | # Create a directory to store the certificates | COMMENT |
| MEDIUM | packages/twenty-server/scripts/ssl-generation/script.sh | 36 | # Create a Certificate Signing Request (CSR) for the provided domain | COMMENT |
| MEDIUM | packages/twenty-server/scripts/ssl-generation/script.sh | 40 | # Create a configuration file for certificate extensions | COMMENT |
| MEDIUM | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 401 | # Create a highlight overlay | COMMENT |
| MEDIUM | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 108 | # Create a new relationship in the destination slide for this image | COMMENT |
| MEDIUM⚡ | …de-interpreter/sandbox-scripts/docx/validation/base.py | 767 | # Create a clean copy | COMMENT |
| MEDIUM | …de-interpreter/sandbox-scripts/docx/validation/base.py | 919 | # Create a copy of the document to avoid modifying the original | COMMENT |
| MEDIUM | …de-interpreter/sandbox-scripts/docx/validation/base.py | 298 | ): # This file is not referenced by .rels | CODE |
| MEDIUM⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 784 | # Create a record — arguments match the tool's inputSchema directly, | COMMENT |
| MEDIUM⚡ | …es/ai/components/__stories__/AiChatMessage.stories.tsx | 78 | # Create the chart | COMMENT |
| MEDIUM | .github/workflows/ci-breaking-changes.yaml | 246 | # Create a temp directory to store current branch files | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …odules/code-interpreter/sandbox-scripts/xlsx/recalc.py | 86 | except (FileNotFoundError, subprocess.TimeoutExpired): | CODE |
| HIGH | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 124 | except Exception: | CODE |
| HIGH | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 384 | except Exception: | CODE |
| HIGH | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 504 | except Exception: | CODE |
| HIGH | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 219 | except (AttributeError, TypeError): | CODE |
| HIGH | …terpreter/sandbox-scripts/docx/validation/redlining.py | 59 | except Exception: | CODE |
| HIGH | …terpreter/sandbox-scripts/docx/validation/redlining.py | 211 | except (subprocess.CalledProcessError, FileNotFoundError, Exception): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …odules/code-interpreter/sandbox-scripts/xlsx/recalc.py | 53 | CODE | |
| LOW | …nterpreter/sandbox-scripts/pdf/fill_fillable_fields.py | 12 | CODE | |
| LOW | …nterpreter/sandbox-scripts/pdf/fill_fillable_fields.py | 59 | CODE | |
| LOW | …rpreter/sandbox-scripts/pdf/extract_form_field_info.py | 22 | CODE | |
| LOW | …rpreter/sandbox-scripts/pdf/extract_form_field_info.py | 62 | CODE | |
| LOW | …nterpreter/sandbox-scripts/pdf/check_bounding_boxes.py | 18 | CODE | |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 67 | CODE | |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/thumbnail.py | 321 | CODE | |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 149 | CODE | |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 140 | CODE | |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 280 | CODE | |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 362 | CODE | |
| LOW | …les/code-interpreter/sandbox-scripts/pptx/inventory.py | 480 | CODE | |
| LOW | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 143 | CODE | |
| LOW | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 162 | CODE | |
| LOW | …dules/code-interpreter/sandbox-scripts/pptx/replace.py | 214 | CODE | |
| LOW | …-modules/code-interpreter/sandbox-scripts/docx/pack.py | 45 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 72 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 124 | CODE | |
| LOW | …terpreter/sandbox-scripts/docx/validation/redlining.py | 139 | CODE | |
| LOW | …terpreter/sandbox-scripts/docx/validation/redlining.py | 217 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 77 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 128 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 243 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 186 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 277 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 388 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 486 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 522 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 688 | CODE | |
| LOW | …de-interpreter/sandbox-scripts/docx/validation/base.py | 765 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 176 | # Step 1: DUPLICATE repeated slides | COMMENT |
| LOW⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 200 | # Step 2: DELETE unwanted slides (work backwards) | COMMENT |
| LOW⚡ | …les/code-interpreter/sandbox-scripts/pptx/rearrange.py | 209 | # Step 3: REORDER to final sequence | COMMENT |
| LOW | …es/cloudflare/controllers/dns-cloudflare.controller.ts | 37 | // since notification are not scoped to a zone, we need to check if the zone is in the list of zones | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1054 | ### Step 1: Extract field information | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1059 | ### Step 2: Create fill data JSON | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1068 | ### Step 3: Fill the form | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1073 | ### Step 4: Validate the output | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1211 | ### Step 1: Unpack | COMMENT |
| LOW⚡ | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1216 | ### Step 2: Edit XML directly | COMMENT |
| LOW | …l-metadata/create-standard-flat-skill-metadata.util.ts | 1229 | ### Step 3: Validate & Repack | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …de-interpreter/sandbox-scripts/docx/validation/docx.py | 0 | run all validation checks and return true if all pass. | STRING |
| HIGH | …de-interpreter/sandbox-scripts/docx/validation/pptx.py | 0 | run all validation checks and return true if all pass. | STRING |
| HIGH | …de-interpreter/sandbox-scripts/docx/validation/base.py | 0 | run all validation checks and return true if all pass. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/twenty-apps/public/slack/README.md | 11 | > Answers are generated by AI and can be inaccurate. Check important details in Twenty before acting on them. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …nterpreter/sandbox-scripts/docx/validation/__init__.py | 5 | CODE | |
| LOW | …nterpreter/sandbox-scripts/docx/validation/__init__.py | 6 | CODE | |
| LOW | …nterpreter/sandbox-scripts/docx/validation/__init__.py | 7 | CODE | |
| LOW | …nterpreter/sandbox-scripts/docx/validation/__init__.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …site/src/sections/testimonials/PartnerTestimonials.tsx | 10 | // its notch reveals the white surface behind it (seamless with the white | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/twenty-cli/src/app/add/README.md | 1 | # App definition scaffolding | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/twenty-docker/docker-compose.dev.yml | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …tabase/commands/instance-command-generation.service.ts | 155 | // TODO: implement data backfill before the DDL migration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …nterpreter/sandbox-scripts/docx/validation/__init__.py | 10 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …yout-widget/compute-my-first-dashboard-widgets.util.ts | 122 | text: "Don't forget to replace the sample data with your own.", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/twenty-front/public/mockServiceWorker.js | 124 | async function handleRequest(event, requestId, requestInterceptedAt) { | CODE |