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}