| 1 | { |
| 2 | "$schema": "https://unpkg.com/knip@6/schema.json", |
| 3 | // Exported types are part of our contracts even before they have consumers. |
| 4 | "rules": { "types": "off", "nsTypes": "off" }, |
| 5 | // These executables are supplied by the OS or installed separately from npm. |
| 6 | "ignoreBinaries": ["eas", "file", "mkfifo", "pkill", "pkg-config", "plutil", "sips"], |
| 7 | "workspaces": { |
| 8 | ".": { |
| 9 | // Keep vendored reference repositories outside the root project. |
| 10 | "project": ["*.{js,mjs,cjs,ts,mts,cts}", ".github/**/*.cjs"], |
| 11 | "entry": [ |
| 12 | // CodeRabbit loads its configuration by filename. |
| 13 | ".coderabbit.config.ts", |
| 14 | ".github/scripts/thread-transfer-report.cjs", |
| 15 | ], |
| 16 | "vite": { "entry": [".github/**/*.test.cjs"] }, |
| 17 | "vitest": { "entry": [".github/**/*.test.cjs"] }, |
| 18 | }, |
| 19 | "scripts": { |
| 20 | // Knip loads its preprocessor through a CLI option; native verification and |
| 21 | // worktree setup (from t3.json) run directly. |
| 22 | "entry": ["knip-schemas.ts", "mobile-native-client.ts", "setup-worktree.ts"], |
| 23 | }, |
| 24 | "apps/server": { |
| 25 | // Vite+ pack entries and the launcher used by installed background services. |
| 26 | "entry": [ |
| 27 | "src/bin.ts!", |
| 28 | "src/claude-history-worker.ts!", |
| 29 | "scripts/cli.ts", |
| 30 | "scripts/evaluate-thread-titles.ts", |
| 31 | "scripts/measure-pr-preview.ts", |
| 32 | "scripts/probe-claude-fork-local-rollback-replay.ts", |
| 33 | "scripts/update-test-shard-weights.ts", |
| 34 | "scripts/verify-background-live.ts", |
| 35 | "src/provider/testFixtures/*.mjs", |
| 36 | ], |
| 37 | // Keep the transitive Effect runtime pinned for standalone npm installs. |
| 38 | // The Vite+ web build prerequisite. |
| 39 | // Native and disk-loaded provider packages stay external to the bundle; the |
| 40 | // CLI archive and desktop sidecar stage them from this manifest. |
| 41 | "ignoreDependencies": ["@effect/platform-node-shared", "@t3tools/web", "@napi-rs/keyring"], |
| 42 | }, |
| 43 | "apps/desktop": { |
| 44 | // Electron loads these bundles by filename rather than importing them. |
| 45 | "entry": [ |
| 46 | "gnome-extension/extension.js!", |
| 47 | "src/electron/WindowsForegroundFocusWorker.ts!", |
| 48 | "src/snapShot/GlobalShiftShortcutWorker.ts!", |
| 49 | "src/snapShot/RegionSnapShotWorker.ts!", |
| 50 | "src/snapShot/SnapShotAccessibilityWorker.ts!", |
| 51 | "src/boot.ts!", |
| 52 | "src/compileCache.ts!", |
| 53 | "src/main.ts!", |
| 54 | "src/preload.ts!", |
| 55 | "src/preview-pick-preload.ts!", |
| 56 | "src/preview-pip-preload.ts!", |
| 57 | "src/mac-permission-preload.ts!", |
| 58 | "src/preview/Annotation.css!", |
| 59 | ], |
| 60 | // The injected runtime resolves Playwright by string; release tooling runs |
| 61 | // electron-builder from this workspace, outside its package scripts. |
| 62 | "ignoreDependencies": ["playwright-core", "electron-builder"], |
| 63 | }, |
| 64 | "apps/web": { |
| 65 | // Vitest loads this through the per-file @vitest-environment directive. |
| 66 | "ignoreDependencies": ["jsdom"], |
| 67 | // Worktree setup (scripts/setup-worktree.ts) runs this directly. |
| 68 | "entry": ["scripts/warm-dep-cache.ts"], |
| 69 | // UI component modules are copied and adapted as cohesive sets. Keep their |
| 70 | // named subcomponents even before they have callers; the file audit still |
| 71 | // reports an entire component module when nothing imports it. |
| 72 | "ignoreIssues": { "src/components/ui/*.tsx": ["exports", "nsExports", "duplicates"] }, |
| 73 | }, |
| 74 | "apps/mobile": { |
| 75 | // Expo loads plugins and the fingerprint config by string; Metro embeds the browser entry in the native WebView. |
| 76 | "entry": [ |
| 77 | "index.ts!", |
| 78 | "fingerprint.config.js", |
| 79 | "plugins/*.cjs", |
| 80 | "scripts/generate-device-stream.mts", |
| 81 | "src/features/devices/device-stream.browser.ts!", |
| 82 | "src/features/browser/preview-stream.browser.ts!", |
| 83 | ], |
| 84 | // Fonts are configured as asset paths; Expo autolinks the native packages. |
| 85 | "ignoreDependencies": [ |
| 86 | "@expo-google-fonts/dm-sans", |
| 87 | "@t3tools/mobile-review-diff-native", |
| 88 | "@t3tools/mobile-terminal-native", |
| 89 | ], |
| 90 | }, |
| 91 | "apps/mobile/modules/t3-source-text": { |
| 92 | // React Native codegen discovers component specifications by filename. |
| 93 | "entry": ["src/*NativeComponent.ts!"], |
| 94 | }, |
| 95 | "infra/relay": { |
| 96 | "entry": ["alchemy.run.ts!", "src/persistence/schema.ts!"], |
| 97 | }, |
| 98 | "packages/*": { |
| 99 | // These workspace packages are private to this monorepo. |
| 100 | "includeEntryExports": true, |
| 101 | }, |
| 102 | "packages/effect-acp": { |
| 103 | "includeEntryExports": true, |
| 104 | "entry": ["test/fixtures/*.ts"], |
| 105 | // Generated upstream protocol definitions are retained as a complete set. |
| 106 | "ignoreIssues": { "src/_generated/**": ["exports", "types"] }, |
| 107 | }, |
| 108 | "packages/effect-codex-app-server": { |
| 109 | "includeEntryExports": true, |
| 110 | "entry": ["test/fixtures/*.ts"], |
| 111 | "ignoreIssues": { "src/_generated/**": ["exports", "types"] }, |
| 112 | }, |
| 113 | }, |
| 114 | } |