| 1 | packages: |
| 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. |
| 11 | allowBuilds: |
| 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 | |
| 29 | catalog: |
| 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 | |
| 84 | minimumReleaseAgeExclude: |
| 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 | |
| 195 | overrides: |
| 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 | |
| 277 | packageExtensions: |
| 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 | |
| 287 | patchedDependencies: |
| 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 | |
| 312 | peerDependencyRules: |
| 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. |
| 321 | publicHoistPattern: |
| 322 | - "@cursor/sdk-*" |
| 323 | |
| 324 | supportedArchitectures: |
| 325 | cpu: [current, x64] |
| 326 | libc: [current, glibc] |
| 327 | os: [current, linux] |