1packages:
2 - apps/*
3 - infra/*
4 - oxlint-plugin-t3code
5 - packages/*
6 - scripts
7
8# Successor to onlyBuiltDependencies/ignoredBuiltDependencies (pnpm 11).
9# true = allowed to run build scripts; false mirrors the pnpm 10 behavior
10# where anything outside onlyBuiltDependencies was silently not built.
11allowBuilds:
12 browser-tabs-lock: false
13 bufferutil: false
14 core-js: false
15 electron: true
16 electron-winstaller: false
17 esbuild: true
18 msgpackr-extract: true
19 msw: false
20 node-pty: true
21 # Ships N-API prebuilds; its install script only rebuilds from source.
22 objc-js: false
23 "react-native-enriched-markdown@file:apps/mobile/deps/react-native-enriched-markdown-1.2.0-t3.11.tgz": true
24 sharp: true
25 tsc-rs: true
26 utf-8-validate: false
27 workerd: false
28
29catalog:
30 "@clerk/backend": 3.18.1
31 "@clerk/clerk-js": 6.32.1
32 "@clerk/electron": 0.0.44
33 "@clerk/electron-passkeys": 0.0.3
34 "@clerk/expo": 4.6.8
35 "@clerk/react": 6.16.1
36 "@clerk/shared": 4.33.0
37 "@effect/atom-react": 4.0.4
38 "@effect/openapi-generator": 4.0.4
39 "@effect/platform-node": 4.0.4
40 "@effect/platform-node-shared": 4.0.4
41 "@effect/sql-pg": 4.0.4
42 "@effect/sql-sqlite-do": 4.0.4
43 "@effect/tsgo": 0.51.1
44 "@effect/vitest": 4.0.4
45 "@electron-webauthn/macos": 1.3.1
46 "@legendapp/list": 3.3.5
47 "@noble/curves": 1.9.1
48 "@noble/hashes": 1.8.0
49 "@pierre/diffs": 1.5.2
50 "@tailwindcss/node": 4.3.3
51 "@tailwindcss/oxide": 4.3.3
52 "@tailwindcss/vite": 4.3.3
53 "@types/node": 24.12.4
54 "@types/plist": 3.0.5
55 "@types/ws": 8.18.2
56 effect: 4.0.4
57 electron-webauthn: 1.3.1
58 jose: 6.2.2
59 lightningcss: 1.33.0
60 objc-js: 1.5.0
61 plist: 3.1.1
62 tailwindcss: 4.3.3
63 tldts: 7.4.2
64 typescript: 7.0.2
65 undici: 8.11.2
66 vite: npm:@voidzero-dev/vite-plus-core@1.0.0
67 vite-plus: 1.0.0
68 ws: 8.22.0
69 yaml: ^2.9.0
70 # Markdown pipeline: the server counts find matches with the same parser the
71 # web renders with, so both must resolve to one version.
72 mdast-util-directive: 3.1.0
73 micromark-extension-directive: 4.0.0
74 micromark-util-character: 2.1.1
75 micromark-util-types: 2.0.2
76 rehype-raw: 7.0.0
77 rehype-sanitize: 6.0.0
78 remark-breaks: 4.0.0
79 remark-gfm: 4.0.1
80 remark-parse: 11.0.0
81 remark-rehype: 11.1.2
82 unified: 11.0.5
83
84minimumReleaseAgeExclude:
85 - tsc-rs
86 - "@tsc-rs/*"
87 - expo-glass-effect@58.0.3
88 - expo-blur@58.0.3
89 - expo-audio@58.0.4
90 - "@clerk/backend@3.18.1"
91 - "@clerk/clerk-js@6.32.1"
92 - "@clerk/electron@0.0.44"
93 - "@clerk/expo@4.6.8"
94 - "@clerk/react@6.16.1"
95 - "@clerk/shared@4.33.0"
96 - "@distilled.cloud/aws@1.0.0-rc.13"
97 - "@distilled.cloud/axiom@1.0.0-rc.13"
98 - "@distilled.cloud/cloudflare@1.0.0-rc.13"
99 - "@distilled.cloud/core@1.0.0-rc.13"
100 - "@distilled.cloud/neon@1.0.0-rc.13"
101 - "@distilled.cloud/planetscale@1.0.0-rc.13"
102 - "@effect/atom-react@4.0.4"
103 - "@effect/openapi-generator@4.0.4"
104 - "@effect/platform-node-shared@4.0.4"
105 - "@effect/platform-node@4.0.4"
106 - "@effect/sql-pg@4.0.4"
107 - "@effect/sql-sqlite-do@4.0.4"
108 - "@effect/vitest@4.0.4"
109 - alchemy@2.0.0-beta.80
110 - effect@4.0.4
111 - "@legendapp/list@3.3.5"
112 - "@expo/cli@58.1.1"
113 - "@expo/env@2.5.1"
114 - "@expo/fingerprint@0.21.2"
115 - "@expo/metro-config@58.0.6"
116 - expo-constants@58.0.9
117 - expo-font@58.0.5
118 - expo-updates@58.0.13
119 - expo@58.0.2
120 - expo-widgets@58.0.11
121 - "@expo/config-plugins@58.0.4"
122 - "@expo/log-box@58.0.8"
123 - "@expo/metro-file-map@58.0.3"
124 - "@expo/metro-runtime@58.0.10"
125 - "@expo/metro@58.0.0-rc.0"
126 - "@expo/prebuild-config@58.0.7"
127 - "@expo/router-server@58.0.6"
128 - "@expo/ui@58.0.11"
129 - babel-preset-expo@58.0.8
130 - expo-asset@58.0.10
131 - expo-build-properties@58.0.9
132 - expo-dev-client@58.0.10
133 - expo-dev-launcher@58.0.10
134 - expo-dev-menu@58.0.10
135 - expo-image-manipulator@58.0.11
136 - expo-image-picker@58.0.10
137 - expo-image@58.0.10
138 - expo-linking@58.0.10
139 - expo-modules-autolinking@58.0.7
140 - expo-modules-core@58.0.11
141 - expo-modules-jsi@58.0.7
142 - expo-notifications@58.0.11
143 - expo-sharing@58.0.13
144 - expo-sqlite@58.0.8
145 - expo-symbols@58.0.3
146 - electron@44.4.5
147 - "@anthropic-ai/claude-agent-sdk@0.3.276"
148 - "@alchemy.run/cloudflare-runtime@2.0.0-beta.80"
149 - "@alchemy.run/floci@2.0.0-beta.80"
150 - "@alchemy.run/node-utils@2.0.0-beta.80"
151 - "@distilled.cloud/fly-io@1.0.0-rc.13"
152 - "@distilled.cloud/hetzner@1.0.0-rc.13"
153 - "@distilled.cloud/prisma@1.0.0-rc.13"
154 - "@distilled.cloud/railway@1.0.0-rc.13"
155 - "@distilled.cloud/stripe@1.0.0-rc.13"
156 - "@shadcn/lint@0.1.5"
157 - cn@0.3.2
158 - uniwind@1.12.1
159 - "@expo/dom-webview@58.0.2"
160 - "expo-auth-session@58.0.7"
161 - "expo-camera@58.0.7"
162 - "expo-clipboard@58.0.3"
163 - "expo-crypto@58.0.4"
164 - "expo-device@58.0.5"
165 - "expo-document-picker@58.0.4"
166 - "expo-file-system@58.0.5"
167 - "expo-haptics@58.0.4"
168 - "expo-keep-awake@58.0.3"
169 - "expo-network@58.0.3"
170 - "expo-secure-store@58.0.2"
171 - "expo-splash-screen@58.0.4"
172 - "expo-video@58.0.6"
173 - "expo-web-browser@58.0.4"
174 - "react@19.3.0"
175 - "react-dom@19.3.0"
176 - "react-native@0.88.0-rc.3"
177 - "react-native-keyboard-controller@1.22.6"
178 - "react-native-worklets@0.13.0"
179 - "react-native-reanimated@4.7.0"
180 - "react-native-screens@4.28.0"
181 - "@expo/config-types@58.0.2"
182 - expo-application@58.0.3
183 - expo-eas-client@58.0.2
184 - expo-image-loader@58.0.3
185 - "@distilled.cloud/acme@1.0.0-rc.13"
186 - "@distilled.cloud/doppler@1.0.0-rc.13"
187 - "@distilled.cloud/gcp@1.0.0-rc.13"
188 - "@distilled.cloud/infisical@1.0.0-rc.13"
189 - "@distilled.cloud/zerossl@1.0.0-rc.13"
190 - "@opencode/client@2.0.28"
191 - "@opencode/protocol@2.0.28"
192 - "@opencode/schema@2.0.28"
193 - "@muse-code/sdk@1.4.6"
194
195overrides:
196 # Keep jsdom's optional peer consistent so Vite+ has one test-runner instance.
197 "@exodus/bytes>@noble/hashes": "1.8.0"
198 # Earlier React Navigation declarations create a circular type alias in TypeScript 7.
199 "@react-navigation/core": 7.21.13
200 # The dbus-next patch drops usocket from the package, but pnpm resolves from the
201 # registry manifest, so the edge has to be cut here as well.
202 "dbus-next>usocket": "-"
203 # The SDK always receives the user's Claude executable, so its bundled binaries are unused.
204 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-darwin-arm64": "-"
205 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-darwin-x64": "-"
206 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-arm64": "-"
207 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "-"
208 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-x64": "-"
209 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-x64-musl": "-"
210 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-arm64": "-"
211 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-x64": "-"
212 # Alchemy's Ink fork declares React as a hard dependency, but the relay only
213 # reaches its terminal-capability helpers; the TUI is never imported, so the
214 # extra React copy is pure install weight.
215 "@alchemy.run/sigil>react": "-"
216 "@alchemy.run/sigil>react-reconciler": "-"
217 "@alchemy.run/sigil>scheduler": "-"
218 # Alchemy only reaches @prisma/dev through a lazy import inside the Prisma
219 # database provider, which the relay never deploys. Its exact hono/valibot
220 # pins are also the bulk of our open dependency advisories.
221 "alchemy>@prisma/dev": "-"
222 "@clerk/backend": "catalog:"
223 "@clerk/clerk-js": "catalog:"
224 "@clerk/clerk-js>@base-org/account": "-"
225 "@clerk/clerk-js>@coinbase/wallet-sdk": "-"
226 "@clerk/clerk-js>@solana/wallet-adapter-base": "-"
227 "@clerk/clerk-js>@solana/wallet-adapter-react": "-"
228 "@clerk/clerk-js>@solana/wallet-standard": "-"
229 "@clerk/clerk-js>@wallet-standard/core": "-"
230 "@clerk/electron": "catalog:"
231 "@clerk/electron-passkeys": "catalog:"
232 "@clerk/expo": "catalog:"
233 "@clerk/react": "catalog:"
234 "@clerk/shared": "catalog:"
235 "@effect/atom-react": "catalog:"
236 "@effect/platform-node": "catalog:"
237 "@effect/platform-node-shared": "catalog:"
238 "@effect/sql-pg": "catalog:"
239 "@effect/vitest": "catalog:"
240 "@effect/vitest>vitest": "-"
241 "@expo/dom-webview": 58.0.2
242 "@expo/metro-config": 58.0.6
243 expo-constants: 58.0.9
244 expo-router: 58.0.10
245 "expo-sharing>@expo/config-plugins": 58.0.4
246 "expo-sharing>@expo/config-types": 58.0.2
247 "@pierre/diffs>@shikijs/transformers": ^4.2.0
248 # Keep one copy of these native-binary packages. lightningcss ships 11 platform binaries per
249 # version, and the workspaces' tailwindcss ^4 ranges drift into two 4.3.x copies of the family.
250 "@tailwindcss/node": "catalog:"
251 "@tailwindcss/oxide": "catalog:"
252 "@tailwindcss/vite": "catalog:"
253 "@types/node": "catalog:"
254 effect: "catalog:"
255 # OpenCode 2's protocol and schema packages hard-pin an exact Effect version as a
256 # dependency, and their schemas fail to decode under a second Effect copy.
257 # The `effect` override above already collapses them; these name the edge so it
258 # stays pinned on its own. OpenCode2Client.live.test.ts re-proves it on bumps.
259 "@opencode/protocol>effect": "catalog:"
260 "@opencode/schema>effect": "catalog:"
261 node-abi: 4.33.0
262 # The desktop app installs these without a lockfile when it packages them, so
263 # pin the native passkey code that runs in its main process.
264 "electron-webauthn>@electron-webauthn/macos": "catalog:"
265 "@electron-webauthn/macos>objc-js": "catalog:"
266 lightningcss: "catalog:"
267 tailwindcss: "catalog:"
268 # Ranges from @effect/platform-node, jsdom, unifont, Expo and libsql otherwise
269 # settle on two patch releases of each major. Older majors stay as they are.
270 "@types/ws@^8": "catalog:"
271 "undici@^8": "catalog:"
272 "ws@^8": "catalog:"
273 vite: "catalog:"
274 vite-plus: "catalog:"
275 yaml: "catalog:"
276
277packageExtensions:
278 "@clerk/expo@*":
279 dependencies:
280 "@expo/config-plugins": 58.0.4
281 # Our patch makes @effect/vitest import vite-plus/test. A catalog: spec here
282 # resolves through the vite-plus override above.
283 "@effect/vitest@*":
284 dependencies:
285 vite-plus: "catalog:"
286
287patchedDependencies:
288 alchemy@2.0.0-beta.80: patches/alchemy@2.0.0-beta.80.patch
289 expo-glass-effect@58.0.3: patches/expo-glass-effect@58.0.3.patch
290 expo-blur@58.0.3: patches/expo-blur@58.0.3.patch
291 expo-audio@58.0.4: patches/expo-audio@58.0.4.patch
292 "@clerk/expo@4.6.8": patches/@clerk__expo@4.6.8.patch
293 "@effect/vitest@4.0.4": patches/@effect__vitest@4.0.4.patch
294 "@expo/metro-config@58.0.6": patches/@expo__metro-config@58.0.6.patch
295 expo-sharing@58.0.13: patches/expo-sharing@58.0.13.patch
296 expo-widgets@58.0.11: patches/expo-widgets@58.0.11.patch
297 "@ff-labs/fff-node@0.11.0": patches/@ff-labs__fff-node@0.11.0.patch
298 "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch
299 # Exports the dependency-light subpaths mobile and the web diff parser import, and keeps
300 # measured wrapped-row heights above an edit (fileEditorVirtualization.test.ts).
301 "@pierre/diffs@1.5.2": patches/@pierre%2Fdiffs@1.5.2.patch
302 "@react-native-ai/apple@0.12.0": patches/@react-native-ai__apple@0.12.0.patch
303 "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch
304 "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch
305 dbus-next@0.10.2: patches/dbus-next@0.10.2.patch
306 node-pty@1.2.0-beta.15: patches/node-pty@1.2.0-beta.15.patch
307 react-native-gesture-handler@3.2.1: patches/react-native-gesture-handler@3.2.1.patch
308 react-native-keyboard-controller@1.22.6: patches/react-native-keyboard-controller@1.22.6.patch
309 # Android: a nested WebView hands a vertical drag to its scrolling parent at the page's edge.
310 react-native-webview@14.0.1: patches/react-native-webview@14.0.1.patch
311
312peerDependencyRules:
313 allowAny:
314 - vite
315 allowedVersions:
316 vite: "*"
317
318# @cursor/sdk finds its platform package (sandbox helper, rg, tree-sitter) by
319# walking up from the entry script for node_modules/@cursor/sdk-<platform>-<arch>.
320# pnpm keeps optional deps inside the virtual store, so hoist it to the root.
321publicHoistPattern:
322 - "@cursor/sdk-*"
323
324supportedArchitectures:
325 cpu: [current, x64]
326 libc: [current, glibc]
327 os: [current, linux]