import type { KnipConfig } from 'knip'; const config: KnipConfig = { workspaces: { // ── Root ────────────────────────────────────────────── '.': { project: ['scripts/**/*.ts'], }, // ── Apps ────────────────────────────────────────────── 'apps/api': { project: ['src/**/*.ts'], // Externalized by tsup and loaded from the runtime dependency tree. ignoreDependencies: ['dompurify'], }, 'apps/bullmq': { project: ['src/**/*.ts'], }, 'apps/controller': { entry: [], project: ['src/**/*.ts'], // Loaded by the Daytona SDK through a bundler-evading dynamic require // when uploading files; shipped as a runtime dep next to the bundled // dist in .docker/app/Dockerfile. ignoreDependencies: ['form-data'], }, 'apps/dev': { project: ['src/**/*.ts'], ignore: ['src/services/worker-release.ts'], // tar is supplied by the host and used to inspect worker release archives. ignoreBinaries: ['pm2', 'ngrok', 'tar'], }, // Self-contained Mintlify docs site. It has no TypeScript project; the // `mint` CLI is installed globally. 'apps/docs': { entry: [], project: [], ignoreBinaries: ['mint'], }, 'apps/e2e': { entry: ['src/run-direct-suite.ts', 'src/suites/**/*.ts'], project: ['src/**/*.ts'], }, 'apps/preview-proxy': { project: ['src/**/*.ts'], }, 'apps/web': { entry: [ 'src/app/**/{page,layout,loading,error,not-found,default,template,route,middleware}.{ts,tsx}', 'next.config.*', 'postcss.config.*', '.storybook/**/*.{ts,tsx}', 'src/**/*.stories.{ts,tsx}', ], project: ['src/**/*.{ts,tsx}'], // Used to satisfy vulnerable peer resolution edges in Storybook/Sentry, not imported directly. ignoreDependencies: ['webpack'], }, 'apps/worker': { entry: ['scripts/**/*.ts'], project: ['src/**/*.ts', 'scripts/**/*.ts'], ignoreBinaries: [ 'rg', 'mysqladmin', 'pg_isready', 'ps', 'python', 'fc-cache', 'dpkg-query', ], }, // ── Packages ───────────────────────────────────────── 'packages/auth': { project: ['src/**/*.ts'], }, 'packages/cloud-agents': { project: ['src/**/*.ts'], // The feature-demo skill bundles a standalone Remotion render project // that runs from a sandbox work dir, not from this package's graph. ignore: ['src/server/workflows/skills/standard/feature-demo/**'], ignoreBinaries: [], }, 'packages/communication': { project: ['src/**/*.ts'], }, 'packages/compute-providers': { project: ['src/**/*.ts'], }, 'packages/config-eslint': { project: ['**/*.js'], }, 'packages/config-typescript': { ignoreDependencies: ['next'], }, 'packages/db': { project: ['src/**/*.ts'], drizzle: false, }, 'packages/env': { project: ['src/**/*.ts'], }, 'packages/feature-flags': { project: ['src/**/*.ts'], }, 'packages/github': { project: ['src/**/*.ts'], ignoreBinaries: ['gh'], }, 'packages/linear': { project: ['src/**/*.ts'], }, 'packages/redis': { project: ['src/**/*.ts'], }, 'packages/sdk': { project: ['src/**/*.ts'], }, 'packages/slack': { project: ['src/**/*.ts'], }, 'packages/telemetry': { project: ['src/**/*.ts'], }, 'packages/types': { project: ['src/**/*.ts'], }, }, ignoreDependencies: [ // Imported via CSS (@import 'tailwindcss'), not traceable by knip. 'tailwindcss', 'tw-animate-css', ], }; export default config;