@oxbit/cli 0.0.0-stage → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +19 -2
- package/package.json +52 -4
- package/runtime/dist/index.js +12505 -0
- package/runtime/package.json +6 -0
- package/scripts/repair-pty.mjs +44 -0
- package/web/dist/LICENSE.txt +21 -0
- package/web/dist/apple-touch-icon.png +0 -0
- package/web/dist/assets/addon-image-BxricI7a.js +2 -0
- package/web/dist/assets/addon-ligatures-BOzI2Oy0.js +3 -0
- package/web/dist/assets/addon-webgl-PbQqCq-D.js +59 -0
- package/web/dist/assets/babel-BktJt1uC.js +17 -0
- package/web/dist/assets/estree-DFfjoHvx.js +45 -0
- package/web/dist/assets/format.worker-BOByM0b_.js +3 -0
- package/web/dist/assets/html-DwgzGnwN.js +26 -0
- package/web/dist/assets/index-WzJHy4M7.js +251 -0
- package/web/dist/assets/index-nCiWoOlW.css +1 -0
- package/web/dist/assets/markdown-Bd15IfY5.js +71 -0
- package/web/dist/assets/postcss-BGfBeQpW.js +63 -0
- package/web/dist/assets/standalone-Cayz_KD-.js +30 -0
- package/web/dist/assets/typescript-CaioFRCx.js +434 -0
- package/web/dist/assets/typescript-HXNn4lJN.js +434 -0
- package/web/dist/assets/typescript-cMir0TZb.js +23 -0
- package/web/dist/assets/worker-CsXkqX-T.js +4 -0
- package/web/dist/brand/index.html +65 -0
- package/web/dist/brand/oxbit-avatar.png +0 -0
- package/web/dist/brand/oxbit-avatar.svg +1 -0
- package/web/dist/brand/oxbit-brand-kit.zip +0 -0
- package/web/dist/brand/oxbit-github-banner.png +0 -0
- package/web/dist/brand/oxbit-github-banner.svg +1 -0
- package/web/dist/brand/oxbit-logo-dark.png +0 -0
- package/web/dist/brand/oxbit-logo-dark.svg +1 -0
- package/web/dist/brand/oxbit-logo-mono.svg +1 -0
- package/web/dist/brand/oxbit-logo-white.svg +1 -0
- package/web/dist/brand/oxbit-logo.png +0 -0
- package/web/dist/brand/oxbit-logo.svg +1 -0
- package/web/dist/brand/oxbit-mark-dark.svg +1 -0
- package/web/dist/brand/oxbit-mark-light.svg +1 -0
- package/web/dist/brand/oxbit-mark-teal.svg +1 -0
- package/web/dist/brand/oxbit-mark.png +0 -0
- package/web/dist/brand/oxbit-mark.svg +1 -0
- package/web/dist/brand/oxbit-social-card.png +0 -0
- package/web/dist/brand/oxbit-social-card.svg +1 -0
- package/web/dist/brand/oxbit-wordmark-dark.svg +1 -0
- package/web/dist/brand/oxbit-wordmark.svg +1 -0
- package/web/dist/brand/preview.js +10 -0
- package/web/dist/brand/variants/README.md +33 -0
- package/web/dist/brand/variants/dark/browser/apple-touch-icon-120x120.png +0 -0
- package/web/dist/brand/variants/dark/browser/apple-touch-icon-152x152.png +0 -0
- package/web/dist/brand/variants/dark/browser/apple-touch-icon-167x167.png +0 -0
- package/web/dist/brand/variants/dark/browser/apple-touch-icon-180x180.png +0 -0
- package/web/dist/brand/variants/dark/browser/apple-touch-icon.png +0 -0
- package/web/dist/brand/variants/dark/browser/favicon-16x16.png +0 -0
- package/web/dist/brand/variants/dark/browser/favicon-32x32.png +0 -0
- package/web/dist/brand/variants/dark/browser/favicon-48x48.png +0 -0
- package/web/dist/brand/variants/dark/browser/favicon.ico +0 -0
- package/web/dist/brand/variants/dark/browser/favicon.svg +1 -0
- package/web/dist/brand/variants/dark/full-logo/oxbit-full-logo-1120x320.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/oxbit-full-logo-2240x640.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/oxbit-full-logo-4480x1280.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/oxbit-full-logo-560x160.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/oxbit-full-logo.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/oxbit-full-logo.svg +1 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-1024x1024.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-128x128.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-144x144.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-152x152.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-16x16.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-180x180.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-192x192.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-2048x2048.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-24x24.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-256x256.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-32x32.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-384x384.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-48x48.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-512x512.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-64x64.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-96x96.png +0 -0
- package/web/dist/brand/variants/dark/full-logo/square/oxbit-full-logo-square.svg +1 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-1024x1024.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-128x128.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-144x144.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-152x152.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-16x16.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-180x180.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-192x192.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-2048x2048.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-24x24.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-256x256.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-32x32.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-384x384.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-48x48.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-512x512.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-64x64.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark-96x96.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark.png +0 -0
- package/web/dist/brand/variants/dark/logo-mark/oxbit-logo-mark.svg +1 -0
- package/web/dist/brand/variants/dark-transparent/browser/apple-touch-icon-120x120.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/apple-touch-icon-152x152.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/apple-touch-icon-167x167.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/apple-touch-icon-180x180.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/apple-touch-icon.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/favicon-16x16.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/favicon-32x32.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/favicon-48x48.png +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/favicon.ico +0 -0
- package/web/dist/brand/variants/dark-transparent/browser/favicon.svg +1 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/oxbit-full-logo-1120x320.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/oxbit-full-logo-2240x640.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/oxbit-full-logo-4480x1280.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/oxbit-full-logo-560x160.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/oxbit-full-logo.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/oxbit-full-logo.svg +1 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-1024x1024.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-128x128.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-144x144.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-152x152.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-16x16.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-180x180.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-192x192.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-2048x2048.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-24x24.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-256x256.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-32x32.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-384x384.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-48x48.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-512x512.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-64x64.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-96x96.png +0 -0
- package/web/dist/brand/variants/dark-transparent/full-logo/square/oxbit-full-logo-square.svg +1 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-1024x1024.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-128x128.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-144x144.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-152x152.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-16x16.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-180x180.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-192x192.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-2048x2048.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-24x24.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-256x256.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-32x32.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-384x384.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-48x48.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-512x512.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-64x64.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark-96x96.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark.png +0 -0
- package/web/dist/brand/variants/dark-transparent/logo-mark/oxbit-logo-mark.svg +1 -0
- package/web/dist/brand/variants/index.html +8 -0
- package/web/dist/brand/variants/light/browser/apple-touch-icon-120x120.png +0 -0
- package/web/dist/brand/variants/light/browser/apple-touch-icon-152x152.png +0 -0
- package/web/dist/brand/variants/light/browser/apple-touch-icon-167x167.png +0 -0
- package/web/dist/brand/variants/light/browser/apple-touch-icon-180x180.png +0 -0
- package/web/dist/brand/variants/light/browser/apple-touch-icon.png +0 -0
- package/web/dist/brand/variants/light/browser/favicon-16x16.png +0 -0
- package/web/dist/brand/variants/light/browser/favicon-32x32.png +0 -0
- package/web/dist/brand/variants/light/browser/favicon-48x48.png +0 -0
- package/web/dist/brand/variants/light/browser/favicon.ico +0 -0
- package/web/dist/brand/variants/light/browser/favicon.svg +1 -0
- package/web/dist/brand/variants/light/full-logo/oxbit-full-logo-1120x320.png +0 -0
- package/web/dist/brand/variants/light/full-logo/oxbit-full-logo-2240x640.png +0 -0
- package/web/dist/brand/variants/light/full-logo/oxbit-full-logo-4480x1280.png +0 -0
- package/web/dist/brand/variants/light/full-logo/oxbit-full-logo-560x160.png +0 -0
- package/web/dist/brand/variants/light/full-logo/oxbit-full-logo.png +0 -0
- package/web/dist/brand/variants/light/full-logo/oxbit-full-logo.svg +1 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-1024x1024.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-128x128.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-144x144.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-152x152.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-16x16.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-180x180.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-192x192.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-2048x2048.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-24x24.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-256x256.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-32x32.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-384x384.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-48x48.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-512x512.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-64x64.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-96x96.png +0 -0
- package/web/dist/brand/variants/light/full-logo/square/oxbit-full-logo-square.svg +1 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-1024x1024.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-128x128.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-144x144.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-152x152.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-16x16.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-180x180.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-192x192.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-2048x2048.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-24x24.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-256x256.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-32x32.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-384x384.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-48x48.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-512x512.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-64x64.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark-96x96.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark.png +0 -0
- package/web/dist/brand/variants/light/logo-mark/oxbit-logo-mark.svg +1 -0
- package/web/dist/brand/variants/light-transparent/browser/apple-touch-icon-120x120.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/apple-touch-icon-152x152.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/apple-touch-icon-167x167.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/apple-touch-icon-180x180.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/apple-touch-icon.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/favicon-16x16.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/favicon-32x32.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/favicon-48x48.png +0 -0
- package/web/dist/brand/variants/light-transparent/browser/favicon.ico +0 -0
- package/web/dist/brand/variants/light-transparent/browser/favicon.svg +1 -0
- package/web/dist/brand/variants/light-transparent/full-logo/oxbit-full-logo-1120x320.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/oxbit-full-logo-2240x640.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/oxbit-full-logo-4480x1280.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/oxbit-full-logo-560x160.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/oxbit-full-logo.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/oxbit-full-logo.svg +1 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-1024x1024.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-128x128.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-144x144.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-152x152.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-16x16.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-180x180.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-192x192.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-2048x2048.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-24x24.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-256x256.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-32x32.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-384x384.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-48x48.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-512x512.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-64x64.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-96x96.png +0 -0
- package/web/dist/brand/variants/light-transparent/full-logo/square/oxbit-full-logo-square.svg +1 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-1024x1024.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-128x128.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-144x144.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-152x152.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-16x16.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-180x180.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-192x192.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-2048x2048.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-24x24.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-256x256.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-32x32.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-384x384.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-48x48.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-512x512.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-64x64.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark-96x96.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark.png +0 -0
- package/web/dist/brand/variants/light-transparent/logo-mark/oxbit-logo-mark.svg +1 -0
- package/web/dist/brand/variants/manifest.json +1218 -0
- package/web/dist/brand/variants/preview.css +1 -0
- package/web/dist/extensions/bundle-inspector.js +369 -0
- package/web/dist/favicon.ico +0 -0
- package/web/dist/favicon.svg +1 -0
- package/web/dist/fonts/fonts.css +46 -0
- package/web/dist/fonts/instrumentsans-OFL.txt +93 -0
- package/web/dist/fonts/jetbrainsmono-OFL.txt +93 -0
- package/web/dist/fonts/oxbit-font-0.woff2 +0 -0
- package/web/dist/fonts/oxbit-font-1.woff2 +0 -0
- package/web/dist/fonts/oxbit-font-2.woff2 +0 -0
- package/web/dist/fonts/oxbit-font-3.woff2 +0 -0
- package/web/dist/fonts/oxbit-font-4.woff2 +0 -0
- package/web/dist/fonts/oxbit-font-5.woff2 +0 -0
- package/web/dist/icon-192.png +0 -0
- package/web/dist/icon-512.png +0 -0
- package/web/dist/index.html +5 -0
- package/web/dist/licenses/vscode-themes.txt +21 -0
- package/web/dist/panel.html +2 -0
- package/web/dist/schemas/icon-file.v1.schema.json +385 -0
- package/web/dist/schemas/icon-manifest.v1.schema.json +122 -0
- package/web/dist/schemas/icon-product.v1.schema.json +124 -0
- package/web/dist/schemas/settings.v1.schema.json +861 -0
- package/web/dist/schemas/tasks.v1.schema.json +331 -0
- package/web/dist/schemas/theme-pack.v1.schema.json +2364 -0
- package/web/dist/sdk/index.js +1317 -0
- package/web/dist/sdk/react.js +4 -0
- package/web/dist/site.webmanifest +23 -0
|
@@ -0,0 +1,1317 @@
|
|
|
1
|
+
// packages/sdk/src/languages.ts
|
|
2
|
+
var languages = [
|
|
3
|
+
{ id: "typescript", title: "TypeScript", extensions: ["ts", "mts", "cts"], syntax: "typescript", providers: ["typescript"], badge: "TS" },
|
|
4
|
+
{ id: "typescriptreact", title: "TypeScript React", extensions: ["tsx"], settingsAliases: ["tsx"], syntax: "tsx", providers: ["typescript"], badge: "TS" },
|
|
5
|
+
{ id: "javascript", title: "JavaScript", extensions: ["js", "mjs", "cjs"], syntax: "javascript", providers: ["typescript"], badge: "JS" },
|
|
6
|
+
{ id: "javascriptreact", title: "JavaScript React", extensions: ["jsx"], settingsAliases: ["javascript"], syntax: "jsx", providers: ["typescript"], badge: "JS" },
|
|
7
|
+
{ id: "markdown", title: "Markdown", extensions: ["md", "markdown"], syntax: "markdown", providers: ["marksman"], badge: "M\u2193" },
|
|
8
|
+
{ id: "mdx", title: "MDX", extensions: ["mdx"], syntax: "mdx", providers: ["mdx"], badge: "MDX" },
|
|
9
|
+
{ id: "html", title: "HTML", extensions: ["html", "htm"], syntax: "html", providers: ["html"], badge: "<>" },
|
|
10
|
+
{ id: "vue", title: "Vue", extensions: ["vue"], syntax: "vue", providers: ["vue"], badge: "V" },
|
|
11
|
+
{ id: "astro", title: "Astro", extensions: ["astro"], syntax: "astro", providers: ["astro"], badge: "A" },
|
|
12
|
+
{ id: "dockerfile", title: "Dockerfile", extensions: ["dockerfile"], filenames: ["Dockerfile"], patterns: ["Dockerfile.*"], syntax: "dockerfile", providers: ["dockerfile"], badge: "D" },
|
|
13
|
+
{ id: "shellscript", title: "Bash", extensions: ["sh", "bash"], filenames: [".bashrc", ".bash_profile", ".bash_login", ".bash_logout", ".bash_aliases", ".profile"], shebangs: ["bash", "sh"], syntax: "shell", providers: ["bash"], badge: "$" },
|
|
14
|
+
{ id: "zsh", title: "Zsh", extensions: ["zsh"], filenames: [".zshrc", ".zshenv", ".zprofile", ".zlogin", ".zlogout"], shebangs: ["zsh"], syntax: "zsh", providers: ["local"], badge: "%" },
|
|
15
|
+
{ id: "json", title: "JSON", extensions: ["json"], syntax: "json", providers: ["json"], badge: "{}" },
|
|
16
|
+
{ id: "jsonc", title: "JSON with Comments", extensions: ["jsonc"], syntax: "jsonc", providers: ["json"], badge: "{}" },
|
|
17
|
+
{ id: "jsonl", title: "JSON Lines", extensions: ["jsonl", "ndjson"], syntax: "jsonl", providers: ["local"], badge: "{}" },
|
|
18
|
+
{ id: "toml", title: "TOML", extensions: ["toml"], filenames: ["Cargo.lock"], patterns: ["**/.cargo/config"], syntax: "toml", providers: ["taplo"], badge: "T" },
|
|
19
|
+
{ id: "blade", title: "Blade", extensions: ["blade.php"], syntax: "php", providers: ["laravel"], badge: "B" },
|
|
20
|
+
{ id: "php", title: "PHP", extensions: ["php", "phtml"], syntax: "php", providers: ["intelephense", "laravel"], badge: "PHP" },
|
|
21
|
+
{ id: "xml", title: "XML", extensions: ["xml", "xsd", "xsl", "xslt", "svg"], syntax: "xml", providers: ["lemminx"], badge: "<>" },
|
|
22
|
+
{ id: "ini", title: "INI", extensions: ["ini"], syntax: "ini", providers: ["local"], badge: "=" },
|
|
23
|
+
{ id: "dotenv", title: "Environment", extensions: ["env"], filenames: [".env"], patterns: [".env.*"], syntax: "dotenv", providers: ["local"], badge: "=" },
|
|
24
|
+
{ id: "csv", title: "CSV", extensions: ["csv"], syntax: "csv", providers: ["local"], badge: "\u25A6" },
|
|
25
|
+
{ id: "log", title: "Log", extensions: ["log"], syntax: "log", providers: ["local"], badge: "\u2261" },
|
|
26
|
+
{ id: "css", title: "CSS", extensions: ["css"], syntax: "css", providers: [], badge: "#" },
|
|
27
|
+
{ id: "plaintext", title: "Plain Text", extensions: ["txt"], syntax: "plaintext", providers: [], badge: "\xB7" }
|
|
28
|
+
];
|
|
29
|
+
function canonicalLanguageId(id) {
|
|
30
|
+
return id === "tsx" ? "typescriptreact" : id === "jsx" ? "javascriptreact" : id;
|
|
31
|
+
}
|
|
32
|
+
function matchesFilePattern(pattern, file) {
|
|
33
|
+
if (!pattern || pattern.length > 1024) return false;
|
|
34
|
+
const source = pattern.split(/(\*\*\/|\*\*|\*|\?)/).map(
|
|
35
|
+
(part) => part === "**/" ? "(?:.*/)?" : part === "**" ? ".*" : part === "*" ? "[^/]*" : part === "?" ? "[^/]" : part.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
|
|
36
|
+
).join("");
|
|
37
|
+
const normalized = file.replaceAll("\\", "/").replace(/^\.\//, "");
|
|
38
|
+
return new RegExp(`^${source}$`).test(pattern.includes("/") ? normalized : normalized.split("/").at(-1));
|
|
39
|
+
}
|
|
40
|
+
function resolveLanguage(file, options = {}) {
|
|
41
|
+
const definitions = [...options.definitions ?? [], ...languages];
|
|
42
|
+
for (const [pattern, id] of Object.entries(options.associations ?? {}).reverse()) {
|
|
43
|
+
if (matchesFilePattern(pattern, file)) {
|
|
44
|
+
const canonical = canonicalLanguageId(id);
|
|
45
|
+
return definitions.find((item) => item.id === canonical) ?? { id: canonical, extensions: [] };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const name = file.replaceAll("\\", "/").split("/").at(-1);
|
|
49
|
+
const named = definitions.find((item) => item.filenames?.includes(name) || item.patterns?.some((pattern) => matchesFilePattern(pattern, file)));
|
|
50
|
+
if (named) return named;
|
|
51
|
+
const extension = definitions.find((item) => item.extensions.some((ext) => name.toLowerCase().endsWith("." + ext.replace(/^\./, "").toLowerCase())));
|
|
52
|
+
if (extension) return extension;
|
|
53
|
+
const interpreter = /^#!\s*(?:\S*\/)?(\w+)(?:\s+(?:-S\s+)?(\w+))?/.exec(options.firstLine ?? "");
|
|
54
|
+
const executable = interpreter?.[1] === "env" ? interpreter[2] : interpreter?.[1];
|
|
55
|
+
return definitions.find((item) => executable && item.shebangs?.includes(executable)) ?? languages[languages.length - 1];
|
|
56
|
+
}
|
|
57
|
+
function languageForKernel(kernel, file, firstLine) {
|
|
58
|
+
return resolveLanguage(file, {
|
|
59
|
+
associations: kernel.configuration.get("files.associations"),
|
|
60
|
+
definitions: kernel.contributions.list("language").map((item) => item.data).filter((item) => item && typeof item.id === "string" && Array.isArray(item.extensions)),
|
|
61
|
+
firstLine
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function languageIdForPath(file, options) {
|
|
65
|
+
const id = resolveLanguage(file, options).id;
|
|
66
|
+
return languages.find((item) => item.id === id)?.settingsAliases?.[0] ?? id;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// packages/sdk/src/language-servers.ts
|
|
70
|
+
function validateJson(value, seen = /* @__PURE__ */ new Set(), depth = 0) {
|
|
71
|
+
if (depth > 64) throw new Error("JSON nesting exceeds 64 levels");
|
|
72
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") return;
|
|
73
|
+
if (typeof value === "number" && Number.isFinite(value)) return;
|
|
74
|
+
if (!value || typeof value !== "object" || seen.has(value)) throw new Error("Settings require finite, acyclic JSON values");
|
|
75
|
+
if (!Array.isArray(value) && Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)
|
|
76
|
+
throw new Error("Settings require plain JSON objects");
|
|
77
|
+
seen.add(value);
|
|
78
|
+
for (const [key, child] of Object.entries(value)) {
|
|
79
|
+
if (["__proto__", "constructor", "prototype"].includes(key)) throw new Error("Unsafe settings key");
|
|
80
|
+
validateJson(child, seen, depth + 1);
|
|
81
|
+
}
|
|
82
|
+
seen.delete(value);
|
|
83
|
+
}
|
|
84
|
+
function object(value) {
|
|
85
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error("Expected a JSON object");
|
|
86
|
+
}
|
|
87
|
+
function strings(value) {
|
|
88
|
+
if (!Array.isArray(value) || value.some((item) => typeof item !== "string" || item.includes("\0"))) throw new Error("Expected an array of strings without NUL characters");
|
|
89
|
+
}
|
|
90
|
+
function validateFileAssociations(value) {
|
|
91
|
+
validateJson(value);
|
|
92
|
+
object(value);
|
|
93
|
+
for (const [pattern, id] of Object.entries(value))
|
|
94
|
+
if (!pattern || pattern.length > 1024 || typeof id !== "string" || !/^[\w+-]+$/.test(id)) throw new Error("File associations map glob patterns to language IDs");
|
|
95
|
+
}
|
|
96
|
+
function validateLanguageServers(value) {
|
|
97
|
+
validateJson(value);
|
|
98
|
+
object(value);
|
|
99
|
+
const keys = ["enabled", "selectors", "rootMarkers", "executable", "args", "env", "initializationOptions", "settings", "priority"];
|
|
100
|
+
for (const [id, config] of Object.entries(value)) {
|
|
101
|
+
if (!/^[a-zA-Z0-9._-]+$/.test(id)) throw new Error("Invalid language server ID");
|
|
102
|
+
object(config);
|
|
103
|
+
for (const key of Object.keys(config)) if (!keys.includes(key)) throw new Error(`Unknown language server option: ${key}`);
|
|
104
|
+
if (config.enabled !== void 0 && typeof config.enabled !== "boolean") throw new Error("enabled must be boolean");
|
|
105
|
+
if (config.priority !== void 0 && (typeof config.priority !== "number" || !Number.isFinite(config.priority))) throw new Error("priority must be finite");
|
|
106
|
+
if (config.executable !== void 0 && (typeof config.executable !== "string" || !config.executable || config.executable.includes("\0"))) throw new Error("executable must be a path or executable name");
|
|
107
|
+
if (config.args !== void 0) strings(config.args);
|
|
108
|
+
if (config.rootMarkers !== void 0) {
|
|
109
|
+
strings(config.rootMarkers);
|
|
110
|
+
if (config.rootMarkers.some((marker) => !marker || marker.startsWith("/") || marker.includes("\\") || marker.split("/").includes(".."))) throw new Error("Root markers must stay within the workspace");
|
|
111
|
+
}
|
|
112
|
+
if (config.selectors !== void 0) {
|
|
113
|
+
if (!Array.isArray(config.selectors)) throw new Error("selectors must be an array");
|
|
114
|
+
for (const selector of config.selectors) {
|
|
115
|
+
object(selector);
|
|
116
|
+
if (Object.keys(selector).some((key) => !["language", "pattern", "scheme"].includes(key)) || !Object.keys(selector).length || Object.values(selector).some((item) => typeof item !== "string") || selector.scheme !== void 0 && selector.scheme !== "file") throw new Error("Invalid document selector");
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
for (const key of ["env", "settings", "initializationOptions"]) if (config[key] !== void 0) object(config[key]);
|
|
120
|
+
if (config.env && Object.entries(config.env).some(([key, item]) => !/^[A-Za-z_][A-Za-z0-9_]*$/.test(key) || typeof item !== "string" || item.includes("\0"))) throw new Error("Invalid environment override");
|
|
121
|
+
const credentials = (item) => Boolean(item && typeof item === "object" && Object.entries(item).some(([key, child]) => /(?:^|[._-])licen[cs]e(?:[._-]?key)?$/i.test(key) || credentials(child)));
|
|
122
|
+
if (credentials(config.initializationOptions) || credentials(config.settings) || credentials(config.env)) throw new Error("Store license credentials in the runtime-local language server credential file");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// packages/sdk/src/settings.schema.json
|
|
127
|
+
var settings_schema_default = {
|
|
128
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
129
|
+
$id: "https://oxbit.dev/schemas/settings.v1.schema.json",
|
|
130
|
+
title: "Oxbit Settings",
|
|
131
|
+
description: "User, private workspace and repository settings. Literal dotted IDs; objects merge recursively, arrays and scalar values replace. Unrecognized extension settings are preserved. Null is a value, not a reset, and must be valid for its setting.",
|
|
132
|
+
type: "object",
|
|
133
|
+
properties: {
|
|
134
|
+
$schema: {
|
|
135
|
+
type: "string",
|
|
136
|
+
description: "JSON Schema URI. Ignored when merging effective preferences."
|
|
137
|
+
},
|
|
138
|
+
"agentACP.provider": {
|
|
139
|
+
title: "Default agent",
|
|
140
|
+
type: "string",
|
|
141
|
+
default: "codex",
|
|
142
|
+
enum: [
|
|
143
|
+
"codex",
|
|
144
|
+
"cursor",
|
|
145
|
+
"amp"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
"agentACP.codex.command": {
|
|
149
|
+
title: "Codex ACP executable",
|
|
150
|
+
type: "string",
|
|
151
|
+
default: "npx"
|
|
152
|
+
},
|
|
153
|
+
"agentACP.codex.args": {
|
|
154
|
+
title: "Codex ACP arguments (JSON array)",
|
|
155
|
+
type: "string",
|
|
156
|
+
default: '["-y","@agentclientprotocol/codex-acp@1.10.0"]'
|
|
157
|
+
},
|
|
158
|
+
"agentACP.cursor.command": {
|
|
159
|
+
title: "Cursor ACP executable",
|
|
160
|
+
type: "string",
|
|
161
|
+
default: "agent"
|
|
162
|
+
},
|
|
163
|
+
"agentACP.cursor.args": {
|
|
164
|
+
title: "Cursor ACP arguments (JSON array)",
|
|
165
|
+
type: "string",
|
|
166
|
+
default: '["acp"]'
|
|
167
|
+
},
|
|
168
|
+
"agentACP.amp.command": {
|
|
169
|
+
title: "Amp Agent ACP executable",
|
|
170
|
+
type: "string",
|
|
171
|
+
default: "npx"
|
|
172
|
+
},
|
|
173
|
+
"agentACP.amp.args": {
|
|
174
|
+
title: "Amp Agent ACP arguments (JSON array)",
|
|
175
|
+
type: "string",
|
|
176
|
+
default: '["-y","amp-acp@0.9.0"]'
|
|
177
|
+
},
|
|
178
|
+
"workbench.keymap": {
|
|
179
|
+
title: "Keymap",
|
|
180
|
+
description: "Keyboard layout applied on top of the Oxbit defaults. User keybindings always win.",
|
|
181
|
+
type: "string",
|
|
182
|
+
default: "default",
|
|
183
|
+
enum: [
|
|
184
|
+
"default",
|
|
185
|
+
"vscode",
|
|
186
|
+
"jetbrains",
|
|
187
|
+
"macos",
|
|
188
|
+
"sublime",
|
|
189
|
+
"atom",
|
|
190
|
+
"visual-studio",
|
|
191
|
+
"emacs"
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
"workbench.tooltipDelay": {
|
|
195
|
+
title: "Tooltip Delay",
|
|
196
|
+
description: "Delay in milliseconds before showing a tooltip on hover. Keyboard focus shows tooltips immediately.",
|
|
197
|
+
type: "number",
|
|
198
|
+
default: 400,
|
|
199
|
+
minimum: 0,
|
|
200
|
+
maximum: 5e3
|
|
201
|
+
},
|
|
202
|
+
"workbench.colorTheme": {
|
|
203
|
+
title: "Color Theme",
|
|
204
|
+
description: "Specifies the color theme used in the workbench.",
|
|
205
|
+
type: "string",
|
|
206
|
+
default: "Graphite (dark)"
|
|
207
|
+
},
|
|
208
|
+
"workbench.density": {
|
|
209
|
+
title: "Layout Density",
|
|
210
|
+
description: "Controls row heights, padding and label sizes across the workbench.",
|
|
211
|
+
type: "string",
|
|
212
|
+
default: "compact",
|
|
213
|
+
enum: [
|
|
214
|
+
"compact",
|
|
215
|
+
"comfortable"
|
|
216
|
+
]
|
|
217
|
+
},
|
|
218
|
+
"workbench.sidebarLocation": {
|
|
219
|
+
title: "Sidebar Location",
|
|
220
|
+
description: "Where the primary sidebar is docked.",
|
|
221
|
+
type: "string",
|
|
222
|
+
default: "left",
|
|
223
|
+
enum: [
|
|
224
|
+
"left",
|
|
225
|
+
"right"
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
"editor.fontFamily": {
|
|
229
|
+
title: "Font Family",
|
|
230
|
+
description: "Controls the font family of the editor.",
|
|
231
|
+
type: "string",
|
|
232
|
+
default: "'JetBrains Mono', ui-monospace, monospace"
|
|
233
|
+
},
|
|
234
|
+
"editor.fontSize": {
|
|
235
|
+
title: "Font Size",
|
|
236
|
+
description: "Font size in pixels.",
|
|
237
|
+
type: "number",
|
|
238
|
+
default: 13,
|
|
239
|
+
minimum: 8,
|
|
240
|
+
maximum: 32
|
|
241
|
+
},
|
|
242
|
+
"editor.lineHeight": {
|
|
243
|
+
title: "Line Height",
|
|
244
|
+
description: "Line height in pixels. 0 uses 1.55 \xD7 font size.",
|
|
245
|
+
type: "number",
|
|
246
|
+
default: 20,
|
|
247
|
+
minimum: 0,
|
|
248
|
+
maximum: 60
|
|
249
|
+
},
|
|
250
|
+
"editor.fontLigatures": {
|
|
251
|
+
title: "Font Ligatures",
|
|
252
|
+
description: "Enables font ligatures when the font supports them.",
|
|
253
|
+
type: "boolean",
|
|
254
|
+
default: false
|
|
255
|
+
},
|
|
256
|
+
"editor.tabSize": {
|
|
257
|
+
title: "Tab Size",
|
|
258
|
+
description: "The number of spaces a tab is equal to.",
|
|
259
|
+
type: "number",
|
|
260
|
+
default: 2,
|
|
261
|
+
minimum: 1,
|
|
262
|
+
maximum: 8
|
|
263
|
+
},
|
|
264
|
+
"editor.insertSpaces": {
|
|
265
|
+
title: "Insert Spaces",
|
|
266
|
+
description: "Insert spaces when pressing Tab.",
|
|
267
|
+
type: "boolean",
|
|
268
|
+
default: true
|
|
269
|
+
},
|
|
270
|
+
"editor.detectIndentation": {
|
|
271
|
+
title: "Detect Indentation",
|
|
272
|
+
description: "Detect Tab Size and Insert Spaces from file contents on open.",
|
|
273
|
+
type: "boolean",
|
|
274
|
+
default: true
|
|
275
|
+
},
|
|
276
|
+
"editor.renderIndentGuides": {
|
|
277
|
+
title: "Indentation Guides",
|
|
278
|
+
description: "Render vertical guides for each indent level.",
|
|
279
|
+
type: "boolean",
|
|
280
|
+
default: true
|
|
281
|
+
},
|
|
282
|
+
"editor.wordWrap": {
|
|
283
|
+
title: "Word Wrap",
|
|
284
|
+
description: "Controls how lines should wrap.",
|
|
285
|
+
type: "string",
|
|
286
|
+
default: "off",
|
|
287
|
+
enum: [
|
|
288
|
+
"off",
|
|
289
|
+
"on",
|
|
290
|
+
"bounded"
|
|
291
|
+
]
|
|
292
|
+
},
|
|
293
|
+
"editor.renderWhitespace": {
|
|
294
|
+
title: "Render Whitespace",
|
|
295
|
+
description: "Controls how the editor renders whitespace characters.",
|
|
296
|
+
type: "string",
|
|
297
|
+
default: "selection",
|
|
298
|
+
enum: [
|
|
299
|
+
"none",
|
|
300
|
+
"boundary",
|
|
301
|
+
"selection",
|
|
302
|
+
"all"
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
"editor.cursorBlinking": {
|
|
306
|
+
title: "Cursor Blinking",
|
|
307
|
+
description: "Cursor animation style.",
|
|
308
|
+
type: "string",
|
|
309
|
+
default: "blink",
|
|
310
|
+
enum: [
|
|
311
|
+
"blink",
|
|
312
|
+
"smooth",
|
|
313
|
+
"phase",
|
|
314
|
+
"solid"
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
"editor.minimap": {
|
|
318
|
+
title: "Minimap",
|
|
319
|
+
description: "Show a minimap of the document.",
|
|
320
|
+
type: "boolean",
|
|
321
|
+
default: false
|
|
322
|
+
},
|
|
323
|
+
"files.autoSave": {
|
|
324
|
+
title: "Auto Save",
|
|
325
|
+
description: "Controls auto save of editors that have unsaved changes.",
|
|
326
|
+
type: "string",
|
|
327
|
+
default: "off",
|
|
328
|
+
enum: [
|
|
329
|
+
"off",
|
|
330
|
+
"afterDelay",
|
|
331
|
+
"onFocusChange",
|
|
332
|
+
"onWindowChange"
|
|
333
|
+
]
|
|
334
|
+
},
|
|
335
|
+
"files.autoSaveDelay": {
|
|
336
|
+
title: "Auto Save Delay",
|
|
337
|
+
description: "Delay in milliseconds after which an editor is saved automatically. Applies when Auto Save is afterDelay.",
|
|
338
|
+
type: "number",
|
|
339
|
+
default: 1e3,
|
|
340
|
+
minimum: 100,
|
|
341
|
+
maximum: 6e4
|
|
342
|
+
},
|
|
343
|
+
"files.trimTrailingWhitespace": {
|
|
344
|
+
title: "Trim Trailing Whitespace",
|
|
345
|
+
description: "Remove trailing whitespace when saving.",
|
|
346
|
+
type: "boolean",
|
|
347
|
+
default: true
|
|
348
|
+
},
|
|
349
|
+
"editor.formatOnSave": {
|
|
350
|
+
title: "Format On Save",
|
|
351
|
+
description: "Format a file on save. A formatter must be available.",
|
|
352
|
+
type: "boolean",
|
|
353
|
+
default: false
|
|
354
|
+
},
|
|
355
|
+
"editor.defaultFormatter": {
|
|
356
|
+
title: "Default Formatter",
|
|
357
|
+
description: "Formatter used when several are available.",
|
|
358
|
+
type: "string",
|
|
359
|
+
default: "oxbit.prettier",
|
|
360
|
+
anyOf: [
|
|
361
|
+
{
|
|
362
|
+
enum: [
|
|
363
|
+
"oxbit.prettier",
|
|
364
|
+
"oxbit.builtin-ts"
|
|
365
|
+
]
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
type: "string"
|
|
369
|
+
}
|
|
370
|
+
]
|
|
371
|
+
},
|
|
372
|
+
"terminal.fontSize": {
|
|
373
|
+
title: "Terminal Font Size",
|
|
374
|
+
description: "Font size in pixels for the terminal.",
|
|
375
|
+
type: "number",
|
|
376
|
+
default: 12,
|
|
377
|
+
minimum: 8,
|
|
378
|
+
maximum: 32
|
|
379
|
+
},
|
|
380
|
+
"terminal.scrollback": {
|
|
381
|
+
title: "Scrollback",
|
|
382
|
+
description: "Maximum number of lines kept in the terminal buffer.",
|
|
383
|
+
type: "number",
|
|
384
|
+
default: 5e3,
|
|
385
|
+
minimum: 100,
|
|
386
|
+
maximum: 1e5
|
|
387
|
+
},
|
|
388
|
+
"terminal.confirmOnKill": {
|
|
389
|
+
title: "Confirm On Kill",
|
|
390
|
+
description: "Ask before killing a terminal with a running process.",
|
|
391
|
+
type: "boolean",
|
|
392
|
+
default: true
|
|
393
|
+
},
|
|
394
|
+
"scm.autoFetch": {
|
|
395
|
+
title: "Auto Fetch",
|
|
396
|
+
description: "Periodically fetch from the default remote.",
|
|
397
|
+
type: "boolean",
|
|
398
|
+
default: true
|
|
399
|
+
},
|
|
400
|
+
"scm.diffLayout": {
|
|
401
|
+
title: "Diff Layout",
|
|
402
|
+
description: "Default layout for diff editors.",
|
|
403
|
+
type: "string",
|
|
404
|
+
default: "side-by-side",
|
|
405
|
+
enum: [
|
|
406
|
+
"side-by-side",
|
|
407
|
+
"inline"
|
|
408
|
+
]
|
|
409
|
+
},
|
|
410
|
+
"files.associations": {
|
|
411
|
+
title: "File Associations",
|
|
412
|
+
description: "Map filename or workspace-relative glob patterns to language IDs. Explicit associations take precedence over built-in detection.",
|
|
413
|
+
type: "object",
|
|
414
|
+
default: {},
|
|
415
|
+
propertyNames: {
|
|
416
|
+
minLength: 1,
|
|
417
|
+
maxLength: 1024
|
|
418
|
+
},
|
|
419
|
+
additionalProperties: {
|
|
420
|
+
type: "string",
|
|
421
|
+
pattern: "^[\\w+-]+$"
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
languageServers: {
|
|
425
|
+
title: "Language Servers",
|
|
426
|
+
description: "Configure enabled state, selectors, rootMarkers, executable, args, env, initializationOptions, settings, and priority by server ID. Servers install on first use in a trusted runtime. License keys belong in the runtime-local credential file.",
|
|
427
|
+
type: "object",
|
|
428
|
+
default: {},
|
|
429
|
+
propertyNames: {
|
|
430
|
+
pattern: "^[a-zA-Z0-9._-]+$"
|
|
431
|
+
},
|
|
432
|
+
additionalProperties: {
|
|
433
|
+
type: "object",
|
|
434
|
+
properties: {
|
|
435
|
+
enabled: {
|
|
436
|
+
type: "boolean",
|
|
437
|
+
description: "Enable this language server."
|
|
438
|
+
},
|
|
439
|
+
selectors: {
|
|
440
|
+
type: "array",
|
|
441
|
+
items: {
|
|
442
|
+
type: "object",
|
|
443
|
+
properties: {
|
|
444
|
+
language: {
|
|
445
|
+
type: "string"
|
|
446
|
+
},
|
|
447
|
+
pattern: {
|
|
448
|
+
type: "string"
|
|
449
|
+
},
|
|
450
|
+
scheme: {
|
|
451
|
+
const: "file"
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
additionalProperties: false,
|
|
455
|
+
minProperties: 1
|
|
456
|
+
}
|
|
457
|
+
},
|
|
458
|
+
rootMarkers: {
|
|
459
|
+
type: "array",
|
|
460
|
+
items: {
|
|
461
|
+
type: "string",
|
|
462
|
+
pattern: "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.(?:/|$))[^\\u0000]+$",
|
|
463
|
+
minLength: 1
|
|
464
|
+
}
|
|
465
|
+
},
|
|
466
|
+
executable: {
|
|
467
|
+
type: "string",
|
|
468
|
+
pattern: "^[^\\u0000]*$",
|
|
469
|
+
minLength: 1
|
|
470
|
+
},
|
|
471
|
+
args: {
|
|
472
|
+
type: "array",
|
|
473
|
+
items: {
|
|
474
|
+
type: "string",
|
|
475
|
+
pattern: "^[^\\u0000]*$"
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
env: {
|
|
479
|
+
type: "object",
|
|
480
|
+
propertyNames: {
|
|
481
|
+
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
482
|
+
},
|
|
483
|
+
additionalProperties: {
|
|
484
|
+
type: "string",
|
|
485
|
+
pattern: "^[^\\u0000]*$"
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
initializationOptions: {
|
|
489
|
+
type: "object",
|
|
490
|
+
additionalProperties: true,
|
|
491
|
+
description: "Server-specific initialization options. Store license credentials in the runtime credential file."
|
|
492
|
+
},
|
|
493
|
+
settings: {
|
|
494
|
+
type: "object",
|
|
495
|
+
additionalProperties: true,
|
|
496
|
+
description: "Server-specific configuration; nested objects merge across files."
|
|
497
|
+
},
|
|
498
|
+
priority: {
|
|
499
|
+
type: "number"
|
|
500
|
+
}
|
|
501
|
+
},
|
|
502
|
+
additionalProperties: false
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"ui.fontFamily": {
|
|
506
|
+
title: "UI Font Family",
|
|
507
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
508
|
+
type: "string",
|
|
509
|
+
default: ""
|
|
510
|
+
},
|
|
511
|
+
"ui.fontSize": {
|
|
512
|
+
title: "UI Font Size",
|
|
513
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
514
|
+
type: "number",
|
|
515
|
+
default: 12,
|
|
516
|
+
minimum: 8,
|
|
517
|
+
maximum: 72
|
|
518
|
+
},
|
|
519
|
+
"ui.fontWeight": {
|
|
520
|
+
title: "UI Font Weight",
|
|
521
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
522
|
+
type: "number",
|
|
523
|
+
default: 400,
|
|
524
|
+
minimum: 100,
|
|
525
|
+
maximum: 900
|
|
526
|
+
},
|
|
527
|
+
"ui.fontStyle": {
|
|
528
|
+
title: "UI Font Style",
|
|
529
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
530
|
+
type: "string",
|
|
531
|
+
default: "normal",
|
|
532
|
+
enum: [
|
|
533
|
+
"normal",
|
|
534
|
+
"italic",
|
|
535
|
+
"oblique"
|
|
536
|
+
]
|
|
537
|
+
},
|
|
538
|
+
"ui.lineHeight": {
|
|
539
|
+
title: "UI Line Height",
|
|
540
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
541
|
+
type: "number",
|
|
542
|
+
default: 1.4,
|
|
543
|
+
minimum: 1,
|
|
544
|
+
maximum: 3
|
|
545
|
+
},
|
|
546
|
+
"ui.letterSpacing": {
|
|
547
|
+
title: "UI Letter Spacing",
|
|
548
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
549
|
+
type: "number",
|
|
550
|
+
default: 0,
|
|
551
|
+
minimum: -3,
|
|
552
|
+
maximum: 10
|
|
553
|
+
},
|
|
554
|
+
"ui.fontLigatures": {
|
|
555
|
+
title: "UI Font Ligatures",
|
|
556
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
557
|
+
type: "boolean",
|
|
558
|
+
default: false
|
|
559
|
+
},
|
|
560
|
+
"terminal.fontFamily": {
|
|
561
|
+
title: "Terminal Font Family",
|
|
562
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
563
|
+
type: "string",
|
|
564
|
+
default: ""
|
|
565
|
+
},
|
|
566
|
+
"terminal.fontWeight": {
|
|
567
|
+
title: "Terminal Font Weight",
|
|
568
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
569
|
+
type: "number",
|
|
570
|
+
default: 400,
|
|
571
|
+
minimum: 100,
|
|
572
|
+
maximum: 900
|
|
573
|
+
},
|
|
574
|
+
"terminal.fontStyle": {
|
|
575
|
+
title: "Terminal Font Style",
|
|
576
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
577
|
+
type: "string",
|
|
578
|
+
default: "normal",
|
|
579
|
+
enum: [
|
|
580
|
+
"normal",
|
|
581
|
+
"italic",
|
|
582
|
+
"oblique"
|
|
583
|
+
]
|
|
584
|
+
},
|
|
585
|
+
"terminal.lineHeight": {
|
|
586
|
+
title: "Terminal Line Height",
|
|
587
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
588
|
+
type: "number",
|
|
589
|
+
default: 1,
|
|
590
|
+
minimum: 1,
|
|
591
|
+
maximum: 3
|
|
592
|
+
},
|
|
593
|
+
"terminal.letterSpacing": {
|
|
594
|
+
title: "Terminal Letter Spacing",
|
|
595
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
596
|
+
type: "number",
|
|
597
|
+
default: 0,
|
|
598
|
+
minimum: -3,
|
|
599
|
+
maximum: 10
|
|
600
|
+
},
|
|
601
|
+
"terminal.fontLigatures": {
|
|
602
|
+
title: "Terminal Font Ligatures",
|
|
603
|
+
description: "Overrides theme typography. Reset restores the theme value.",
|
|
604
|
+
type: "boolean",
|
|
605
|
+
default: false
|
|
606
|
+
},
|
|
607
|
+
"workbench.iconTheme": {
|
|
608
|
+
title: "File Icon Theme",
|
|
609
|
+
description: "Select a locally installed icon theme. Unavailable selections use Oxbit defaults until restored.",
|
|
610
|
+
type: "string",
|
|
611
|
+
default: "oxbit.default"
|
|
612
|
+
},
|
|
613
|
+
"workbench.productIconTheme": {
|
|
614
|
+
title: "Product Icon Theme",
|
|
615
|
+
description: "Select a locally installed icon theme. Unavailable selections use Oxbit defaults until restored.",
|
|
616
|
+
type: "string",
|
|
617
|
+
default: "oxbit.default"
|
|
618
|
+
},
|
|
619
|
+
"editor.semanticHighlighting": {
|
|
620
|
+
title: "Semantic Highlighting",
|
|
621
|
+
description: "Color symbols using language server information.",
|
|
622
|
+
type: "boolean",
|
|
623
|
+
default: true
|
|
624
|
+
},
|
|
625
|
+
"editor.inlayHints.types": {
|
|
626
|
+
title: "Type Inlay Hints",
|
|
627
|
+
description: "Show supported type hints in the visible editor.",
|
|
628
|
+
type: "boolean",
|
|
629
|
+
default: true
|
|
630
|
+
},
|
|
631
|
+
"editor.inlayHints.parameters": {
|
|
632
|
+
title: "Parameter Inlay Hints",
|
|
633
|
+
description: "Show supported parameter hints in the visible editor.",
|
|
634
|
+
type: "boolean",
|
|
635
|
+
default: true
|
|
636
|
+
},
|
|
637
|
+
"editor.largeFileIntelligence": {
|
|
638
|
+
title: "Large File Intelligence",
|
|
639
|
+
description: "Allow full semantic highlighting and inlay hints for files larger than 1 MiB.",
|
|
640
|
+
type: "boolean",
|
|
641
|
+
default: false
|
|
642
|
+
},
|
|
643
|
+
"workbench.locale": {
|
|
644
|
+
title: "Display Language",
|
|
645
|
+
type: "string",
|
|
646
|
+
default: "en",
|
|
647
|
+
enum: [
|
|
648
|
+
"en",
|
|
649
|
+
"de",
|
|
650
|
+
"es",
|
|
651
|
+
"ja",
|
|
652
|
+
"zh"
|
|
653
|
+
]
|
|
654
|
+
},
|
|
655
|
+
"workbench.reducedMotion": {
|
|
656
|
+
title: "Reduced Motion",
|
|
657
|
+
type: "boolean",
|
|
658
|
+
default: false
|
|
659
|
+
},
|
|
660
|
+
"desktop.projects.openBehavior": {
|
|
661
|
+
title: "Open projects",
|
|
662
|
+
type: "string",
|
|
663
|
+
default: "currentWindow",
|
|
664
|
+
enum: [
|
|
665
|
+
"currentWindow",
|
|
666
|
+
"newWindow"
|
|
667
|
+
]
|
|
668
|
+
},
|
|
669
|
+
"desktop.tools.gitPath": {
|
|
670
|
+
title: "git executable path",
|
|
671
|
+
type: "string",
|
|
672
|
+
default: ""
|
|
673
|
+
},
|
|
674
|
+
"desktop.tools.ghPath": {
|
|
675
|
+
title: "gh executable path",
|
|
676
|
+
type: "string",
|
|
677
|
+
default: ""
|
|
678
|
+
},
|
|
679
|
+
"project.intelligence": {
|
|
680
|
+
type: "object",
|
|
681
|
+
properties: {
|
|
682
|
+
enabled: {
|
|
683
|
+
type: "boolean",
|
|
684
|
+
default: true,
|
|
685
|
+
description: "Index project dependencies, imports and related files."
|
|
686
|
+
},
|
|
687
|
+
exclude: {
|
|
688
|
+
type: "array",
|
|
689
|
+
items: {
|
|
690
|
+
type: "string",
|
|
691
|
+
maxLength: 1024
|
|
692
|
+
},
|
|
693
|
+
default: []
|
|
694
|
+
},
|
|
695
|
+
maxFiles: {
|
|
696
|
+
type: "integer",
|
|
697
|
+
minimum: 1,
|
|
698
|
+
maximum: 1e5,
|
|
699
|
+
default: 2e4
|
|
700
|
+
},
|
|
701
|
+
maxFileBytes: {
|
|
702
|
+
type: "integer",
|
|
703
|
+
minimum: 1,
|
|
704
|
+
maximum: 5242880,
|
|
705
|
+
default: 1048576
|
|
706
|
+
}
|
|
707
|
+
},
|
|
708
|
+
additionalProperties: false,
|
|
709
|
+
title: "Project Intelligence",
|
|
710
|
+
description: "Partial overrides of project.json intelligence. Objects merge across files."
|
|
711
|
+
},
|
|
712
|
+
"project.schemas": {
|
|
713
|
+
type: "object",
|
|
714
|
+
properties: {
|
|
715
|
+
catalog: {
|
|
716
|
+
type: "boolean",
|
|
717
|
+
default: true,
|
|
718
|
+
description: "Discover file schemas through SchemaStore. Bundled Oxbit settings support remains available."
|
|
719
|
+
},
|
|
720
|
+
download: {
|
|
721
|
+
type: "boolean",
|
|
722
|
+
default: true,
|
|
723
|
+
description: "Allow remote schema downloads; cached and bundled schemas work offline."
|
|
724
|
+
},
|
|
725
|
+
associations: {
|
|
726
|
+
type: "array",
|
|
727
|
+
maxItems: 1e3,
|
|
728
|
+
default: [],
|
|
729
|
+
items: {
|
|
730
|
+
type: "object",
|
|
731
|
+
properties: {
|
|
732
|
+
url: {
|
|
733
|
+
type: "string",
|
|
734
|
+
minLength: 1,
|
|
735
|
+
description: "Schema URL or workspace file URI."
|
|
736
|
+
},
|
|
737
|
+
fileMatch: {
|
|
738
|
+
type: "array",
|
|
739
|
+
items: {
|
|
740
|
+
type: "string",
|
|
741
|
+
maxLength: 1024
|
|
742
|
+
}
|
|
743
|
+
},
|
|
744
|
+
schema: {
|
|
745
|
+
type: [
|
|
746
|
+
"object",
|
|
747
|
+
"boolean"
|
|
748
|
+
],
|
|
749
|
+
description: "An inline JSON Schema."
|
|
750
|
+
}
|
|
751
|
+
},
|
|
752
|
+
additionalProperties: false,
|
|
753
|
+
anyOf: [
|
|
754
|
+
{
|
|
755
|
+
required: [
|
|
756
|
+
"url"
|
|
757
|
+
]
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
required: [
|
|
761
|
+
"schema"
|
|
762
|
+
]
|
|
763
|
+
}
|
|
764
|
+
]
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
additionalProperties: false,
|
|
769
|
+
title: "JSON Schemas",
|
|
770
|
+
description: "Partial overrides of project.json schemas. Association arrays replace lower arrays."
|
|
771
|
+
}
|
|
772
|
+
},
|
|
773
|
+
propertyNames: {
|
|
774
|
+
anyOf: [
|
|
775
|
+
{
|
|
776
|
+
not: {
|
|
777
|
+
pattern: "^\\[.*\\]$"
|
|
778
|
+
}
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
pattern: "^\\[[^\\[\\]]+\\]$"
|
|
782
|
+
}
|
|
783
|
+
]
|
|
784
|
+
},
|
|
785
|
+
patternProperties: {
|
|
786
|
+
"^\\[[^\\[\\]]+\\]$": {
|
|
787
|
+
$ref: "#/definitions/languageOverrides"
|
|
788
|
+
}
|
|
789
|
+
},
|
|
790
|
+
additionalProperties: true,
|
|
791
|
+
definitions: {
|
|
792
|
+
languageOverrides: {
|
|
793
|
+
type: "object",
|
|
794
|
+
properties: {
|
|
795
|
+
"agentACP.provider": {
|
|
796
|
+
$ref: "#/properties/agentACP.provider"
|
|
797
|
+
},
|
|
798
|
+
"agentACP.codex.command": {
|
|
799
|
+
$ref: "#/properties/agentACP.codex.command"
|
|
800
|
+
},
|
|
801
|
+
"agentACP.codex.args": {
|
|
802
|
+
$ref: "#/properties/agentACP.codex.args"
|
|
803
|
+
},
|
|
804
|
+
"agentACP.cursor.command": {
|
|
805
|
+
$ref: "#/properties/agentACP.cursor.command"
|
|
806
|
+
},
|
|
807
|
+
"agentACP.cursor.args": {
|
|
808
|
+
$ref: "#/properties/agentACP.cursor.args"
|
|
809
|
+
},
|
|
810
|
+
"agentACP.amp.command": {
|
|
811
|
+
$ref: "#/properties/agentACP.amp.command"
|
|
812
|
+
},
|
|
813
|
+
"agentACP.amp.args": {
|
|
814
|
+
$ref: "#/properties/agentACP.amp.args"
|
|
815
|
+
},
|
|
816
|
+
"workbench.keymap": {
|
|
817
|
+
$ref: "#/properties/workbench.keymap"
|
|
818
|
+
},
|
|
819
|
+
"workbench.tooltipDelay": {
|
|
820
|
+
$ref: "#/properties/workbench.tooltipDelay"
|
|
821
|
+
},
|
|
822
|
+
"workbench.colorTheme": {
|
|
823
|
+
$ref: "#/properties/workbench.colorTheme"
|
|
824
|
+
},
|
|
825
|
+
"workbench.density": {
|
|
826
|
+
$ref: "#/properties/workbench.density"
|
|
827
|
+
},
|
|
828
|
+
"workbench.sidebarLocation": {
|
|
829
|
+
$ref: "#/properties/workbench.sidebarLocation"
|
|
830
|
+
},
|
|
831
|
+
"editor.fontFamily": {
|
|
832
|
+
$ref: "#/properties/editor.fontFamily"
|
|
833
|
+
},
|
|
834
|
+
"editor.fontSize": {
|
|
835
|
+
$ref: "#/properties/editor.fontSize"
|
|
836
|
+
},
|
|
837
|
+
"editor.lineHeight": {
|
|
838
|
+
$ref: "#/properties/editor.lineHeight"
|
|
839
|
+
},
|
|
840
|
+
"editor.fontLigatures": {
|
|
841
|
+
$ref: "#/properties/editor.fontLigatures"
|
|
842
|
+
},
|
|
843
|
+
"editor.tabSize": {
|
|
844
|
+
$ref: "#/properties/editor.tabSize"
|
|
845
|
+
},
|
|
846
|
+
"editor.insertSpaces": {
|
|
847
|
+
$ref: "#/properties/editor.insertSpaces"
|
|
848
|
+
},
|
|
849
|
+
"editor.detectIndentation": {
|
|
850
|
+
$ref: "#/properties/editor.detectIndentation"
|
|
851
|
+
},
|
|
852
|
+
"editor.renderIndentGuides": {
|
|
853
|
+
$ref: "#/properties/editor.renderIndentGuides"
|
|
854
|
+
},
|
|
855
|
+
"editor.wordWrap": {
|
|
856
|
+
$ref: "#/properties/editor.wordWrap"
|
|
857
|
+
},
|
|
858
|
+
"editor.renderWhitespace": {
|
|
859
|
+
$ref: "#/properties/editor.renderWhitespace"
|
|
860
|
+
},
|
|
861
|
+
"editor.cursorBlinking": {
|
|
862
|
+
$ref: "#/properties/editor.cursorBlinking"
|
|
863
|
+
},
|
|
864
|
+
"editor.minimap": {
|
|
865
|
+
$ref: "#/properties/editor.minimap"
|
|
866
|
+
},
|
|
867
|
+
"files.autoSave": {
|
|
868
|
+
$ref: "#/properties/files.autoSave"
|
|
869
|
+
},
|
|
870
|
+
"files.autoSaveDelay": {
|
|
871
|
+
$ref: "#/properties/files.autoSaveDelay"
|
|
872
|
+
},
|
|
873
|
+
"files.trimTrailingWhitespace": {
|
|
874
|
+
$ref: "#/properties/files.trimTrailingWhitespace"
|
|
875
|
+
},
|
|
876
|
+
"editor.formatOnSave": {
|
|
877
|
+
$ref: "#/properties/editor.formatOnSave"
|
|
878
|
+
},
|
|
879
|
+
"editor.defaultFormatter": {
|
|
880
|
+
$ref: "#/properties/editor.defaultFormatter"
|
|
881
|
+
},
|
|
882
|
+
"terminal.fontSize": {
|
|
883
|
+
$ref: "#/properties/terminal.fontSize"
|
|
884
|
+
},
|
|
885
|
+
"terminal.scrollback": {
|
|
886
|
+
$ref: "#/properties/terminal.scrollback"
|
|
887
|
+
},
|
|
888
|
+
"terminal.confirmOnKill": {
|
|
889
|
+
$ref: "#/properties/terminal.confirmOnKill"
|
|
890
|
+
},
|
|
891
|
+
"scm.autoFetch": {
|
|
892
|
+
$ref: "#/properties/scm.autoFetch"
|
|
893
|
+
},
|
|
894
|
+
"scm.diffLayout": {
|
|
895
|
+
$ref: "#/properties/scm.diffLayout"
|
|
896
|
+
},
|
|
897
|
+
"files.associations": {
|
|
898
|
+
$ref: "#/properties/files.associations"
|
|
899
|
+
},
|
|
900
|
+
languageServers: {
|
|
901
|
+
$ref: "#/properties/languageServers"
|
|
902
|
+
},
|
|
903
|
+
"ui.fontFamily": {
|
|
904
|
+
$ref: "#/properties/ui.fontFamily"
|
|
905
|
+
},
|
|
906
|
+
"ui.fontSize": {
|
|
907
|
+
$ref: "#/properties/ui.fontSize"
|
|
908
|
+
},
|
|
909
|
+
"ui.fontWeight": {
|
|
910
|
+
$ref: "#/properties/ui.fontWeight"
|
|
911
|
+
},
|
|
912
|
+
"ui.fontStyle": {
|
|
913
|
+
$ref: "#/properties/ui.fontStyle"
|
|
914
|
+
},
|
|
915
|
+
"ui.lineHeight": {
|
|
916
|
+
$ref: "#/properties/ui.lineHeight"
|
|
917
|
+
},
|
|
918
|
+
"ui.letterSpacing": {
|
|
919
|
+
$ref: "#/properties/ui.letterSpacing"
|
|
920
|
+
},
|
|
921
|
+
"ui.fontLigatures": {
|
|
922
|
+
$ref: "#/properties/ui.fontLigatures"
|
|
923
|
+
},
|
|
924
|
+
"terminal.fontFamily": {
|
|
925
|
+
$ref: "#/properties/terminal.fontFamily"
|
|
926
|
+
},
|
|
927
|
+
"terminal.fontWeight": {
|
|
928
|
+
$ref: "#/properties/terminal.fontWeight"
|
|
929
|
+
},
|
|
930
|
+
"terminal.fontStyle": {
|
|
931
|
+
$ref: "#/properties/terminal.fontStyle"
|
|
932
|
+
},
|
|
933
|
+
"terminal.lineHeight": {
|
|
934
|
+
$ref: "#/properties/terminal.lineHeight"
|
|
935
|
+
},
|
|
936
|
+
"terminal.letterSpacing": {
|
|
937
|
+
$ref: "#/properties/terminal.letterSpacing"
|
|
938
|
+
},
|
|
939
|
+
"terminal.fontLigatures": {
|
|
940
|
+
$ref: "#/properties/terminal.fontLigatures"
|
|
941
|
+
},
|
|
942
|
+
"workbench.iconTheme": {
|
|
943
|
+
$ref: "#/properties/workbench.iconTheme"
|
|
944
|
+
},
|
|
945
|
+
"workbench.productIconTheme": {
|
|
946
|
+
$ref: "#/properties/workbench.productIconTheme"
|
|
947
|
+
},
|
|
948
|
+
"editor.semanticHighlighting": {
|
|
949
|
+
$ref: "#/properties/editor.semanticHighlighting"
|
|
950
|
+
},
|
|
951
|
+
"editor.inlayHints.types": {
|
|
952
|
+
$ref: "#/properties/editor.inlayHints.types"
|
|
953
|
+
},
|
|
954
|
+
"editor.inlayHints.parameters": {
|
|
955
|
+
$ref: "#/properties/editor.inlayHints.parameters"
|
|
956
|
+
},
|
|
957
|
+
"editor.largeFileIntelligence": {
|
|
958
|
+
$ref: "#/properties/editor.largeFileIntelligence"
|
|
959
|
+
},
|
|
960
|
+
"workbench.locale": {
|
|
961
|
+
$ref: "#/properties/workbench.locale"
|
|
962
|
+
},
|
|
963
|
+
"workbench.reducedMotion": {
|
|
964
|
+
$ref: "#/properties/workbench.reducedMotion"
|
|
965
|
+
},
|
|
966
|
+
"desktop.projects.openBehavior": {
|
|
967
|
+
$ref: "#/properties/desktop.projects.openBehavior"
|
|
968
|
+
},
|
|
969
|
+
"desktop.tools.gitPath": {
|
|
970
|
+
$ref: "#/properties/desktop.tools.gitPath"
|
|
971
|
+
},
|
|
972
|
+
"desktop.tools.ghPath": {
|
|
973
|
+
$ref: "#/properties/desktop.tools.ghPath"
|
|
974
|
+
},
|
|
975
|
+
"project.intelligence": false,
|
|
976
|
+
"project.schemas": false
|
|
977
|
+
},
|
|
978
|
+
additionalProperties: true,
|
|
979
|
+
description: "Settings for a language ID, such as [mdx] or [php]. Runtime project options belong at the top level.",
|
|
980
|
+
propertyNames: {
|
|
981
|
+
not: {
|
|
982
|
+
pattern: "^\\[.*\\]$"
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
};
|
|
988
|
+
|
|
989
|
+
// packages/sdk/src/settings-schema.ts
|
|
990
|
+
var settingsSchema = settings_schema_default;
|
|
991
|
+
var SETTINGS_SCHEMA_URI = settings_schema_default.$id;
|
|
992
|
+
|
|
993
|
+
// packages/sdk/src/text-positions.ts
|
|
994
|
+
function textOffset(text, pos) {
|
|
995
|
+
const lines = text.split("\n");
|
|
996
|
+
if (!Number.isInteger(pos.line) || pos.line < 0 || pos.line >= lines.length) throw new Error("Language server returned an invalid line");
|
|
997
|
+
if (!Number.isInteger(pos.character) || pos.character < 0 || pos.character > lines[pos.line].replace(/\r$/, "").length) throw new Error("Language server returned an invalid column");
|
|
998
|
+
let at = 0;
|
|
999
|
+
for (let line = 0; line < pos.line; line++) at += lines[line].length + 1;
|
|
1000
|
+
return at + pos.character;
|
|
1001
|
+
}
|
|
1002
|
+
function textPosition(text, at) {
|
|
1003
|
+
if (!Number.isInteger(at) || at < 0 || at > text.length) throw new Error("Invalid document offset");
|
|
1004
|
+
const lines = text.slice(0, at).split("\n");
|
|
1005
|
+
return { line: lines.length - 1, character: lines.at(-1).replace(/\r$/, "").length };
|
|
1006
|
+
}
|
|
1007
|
+
function incrementalChange(before, after) {
|
|
1008
|
+
let from = 0, oldEnd = before.length, newEnd = after.length;
|
|
1009
|
+
while (from < oldEnd && from < newEnd && before[from] === after[from]) from++;
|
|
1010
|
+
const boundary = (text, at) => at > 0 && (text[at - 1] === "\r" && text[at] === "\n" || /[\uD800-\uDBFF]/.test(text[at - 1]) && /[\uDC00-\uDFFF]/.test(text[at] ?? ""));
|
|
1011
|
+
if (boundary(before, from) || boundary(after, from)) from--;
|
|
1012
|
+
while (oldEnd > from && newEnd > from && before[oldEnd - 1] === after[newEnd - 1]) {
|
|
1013
|
+
oldEnd--;
|
|
1014
|
+
newEnd--;
|
|
1015
|
+
}
|
|
1016
|
+
if (boundary(before, oldEnd) || boundary(after, newEnd)) {
|
|
1017
|
+
oldEnd++;
|
|
1018
|
+
newEnd++;
|
|
1019
|
+
}
|
|
1020
|
+
return { range: { start: textPosition(before, from), end: textPosition(before, oldEnd) }, text: after.slice(from, newEnd) };
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
// packages/sdk/src/csv.ts
|
|
1024
|
+
function parseCsv(text) {
|
|
1025
|
+
const rows = [], errors = [];
|
|
1026
|
+
let row = [], at = 0;
|
|
1027
|
+
while (at < text.length) {
|
|
1028
|
+
const from = at;
|
|
1029
|
+
let value = "";
|
|
1030
|
+
if (text[at] === '"') {
|
|
1031
|
+
at++;
|
|
1032
|
+
let closed = false;
|
|
1033
|
+
while (at < text.length) {
|
|
1034
|
+
if (text[at] !== '"') {
|
|
1035
|
+
value += text[at++];
|
|
1036
|
+
continue;
|
|
1037
|
+
}
|
|
1038
|
+
if (text[at + 1] === '"') {
|
|
1039
|
+
value += '"';
|
|
1040
|
+
at += 2;
|
|
1041
|
+
continue;
|
|
1042
|
+
}
|
|
1043
|
+
at++;
|
|
1044
|
+
closed = true;
|
|
1045
|
+
break;
|
|
1046
|
+
}
|
|
1047
|
+
if (!closed) errors.push({ from, to: at, message: "Unterminated quoted field" });
|
|
1048
|
+
if (at < text.length && !/[,\r\n]/.test(text[at])) {
|
|
1049
|
+
const start = at;
|
|
1050
|
+
while (at < text.length && !/[,\r\n]/.test(text[at])) at++;
|
|
1051
|
+
errors.push({ from: start, to: at, message: "Unexpected text after closing quote" });
|
|
1052
|
+
}
|
|
1053
|
+
} else {
|
|
1054
|
+
while (at < text.length && !/[,\r\n]/.test(text[at])) {
|
|
1055
|
+
if (text[at] === '"') errors.push({ from: at, to: at + 1, message: "Quote inside an unquoted field" });
|
|
1056
|
+
value += text[at++];
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
row.push({ from, to: at, value, row: rows.length, column: row.length });
|
|
1060
|
+
if (text[at] === ",") {
|
|
1061
|
+
at++;
|
|
1062
|
+
if (at === text.length) row.push({ from: at, to: at, value: "", row: rows.length, column: row.length });
|
|
1063
|
+
} else {
|
|
1064
|
+
rows.push(row);
|
|
1065
|
+
row = [];
|
|
1066
|
+
if (text[at] === "\r" && text[at + 1] === "\n") at += 2;
|
|
1067
|
+
else if (at < text.length) at++;
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
if (row.length) rows.push(row);
|
|
1071
|
+
const columns = rows[0]?.length;
|
|
1072
|
+
for (const record of rows.slice(1)) if (record.length !== columns) errors.push({ from: record[0].from, to: record.at(-1).to, message: `Expected ${columns} columns; found ${record.length}` });
|
|
1073
|
+
return { rows, errors };
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
// packages/sdk/src/lsp-glob.ts
|
|
1077
|
+
function lspGlobMatches(pattern, file) {
|
|
1078
|
+
if (typeof pattern !== "string" || pattern.length > 2048 || file.length > 8192) return false;
|
|
1079
|
+
let index = 0, groups = 0;
|
|
1080
|
+
const literal = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1081
|
+
function expression(depth = 0) {
|
|
1082
|
+
if (depth > 8) throw new Error("Glob nesting limit");
|
|
1083
|
+
let result = "";
|
|
1084
|
+
while (index < pattern.length) {
|
|
1085
|
+
const character = pattern[index++];
|
|
1086
|
+
if (depth && (character === "," || character === "}")) {
|
|
1087
|
+
index--;
|
|
1088
|
+
break;
|
|
1089
|
+
}
|
|
1090
|
+
if (character === "*") {
|
|
1091
|
+
if (pattern[index] === "*") {
|
|
1092
|
+
index++;
|
|
1093
|
+
if (pattern[index] === "/") {
|
|
1094
|
+
index++;
|
|
1095
|
+
result += "(?:.*/)?";
|
|
1096
|
+
} else result += ".*";
|
|
1097
|
+
} else result += "[^/]*";
|
|
1098
|
+
} else if (character === "?") result += "[^/]";
|
|
1099
|
+
else if (character === "{") {
|
|
1100
|
+
if (++groups > 32) throw new Error("Glob alternative limit");
|
|
1101
|
+
const choices = [expression(depth + 1)];
|
|
1102
|
+
while (pattern[index] === ",") {
|
|
1103
|
+
index++;
|
|
1104
|
+
choices.push(expression(depth + 1));
|
|
1105
|
+
}
|
|
1106
|
+
if (pattern[index++] !== "}") throw new Error("Unclosed glob group");
|
|
1107
|
+
result += "(?:" + choices.join("|") + ")";
|
|
1108
|
+
} else if (character === "[") {
|
|
1109
|
+
const end = pattern.indexOf("]", index);
|
|
1110
|
+
if (end < 0) throw new Error("Unclosed character class");
|
|
1111
|
+
let contents = pattern.slice(index, end);
|
|
1112
|
+
index = end + 1;
|
|
1113
|
+
const negate = contents[0] === "!";
|
|
1114
|
+
if (negate) contents = contents.slice(1);
|
|
1115
|
+
if (!contents || /[\\/[]/.test(contents)) throw new Error("Invalid character class");
|
|
1116
|
+
result += "(?!/)[" + (negate ? "^" : "") + contents.replace(/\^/g, "\\^") + "]";
|
|
1117
|
+
} else if (character === "\\") result += literal(pattern[index++] ?? "\\");
|
|
1118
|
+
else result += literal(character);
|
|
1119
|
+
}
|
|
1120
|
+
return result;
|
|
1121
|
+
}
|
|
1122
|
+
try {
|
|
1123
|
+
return new RegExp("^" + expression() + "$", "u").test(file);
|
|
1124
|
+
} catch {
|
|
1125
|
+
return false;
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
function lspWatchPattern(glob, rootUri) {
|
|
1129
|
+
try {
|
|
1130
|
+
const rootUrl = new URL(rootUri);
|
|
1131
|
+
if (rootUrl.protocol !== "file:" || rootUrl.host) return;
|
|
1132
|
+
const root = decodeURIComponent(rootUrl.pathname).replace(/\/$/, "");
|
|
1133
|
+
let pattern, base = root;
|
|
1134
|
+
if (typeof glob === "string") pattern = glob;
|
|
1135
|
+
else if (glob && typeof glob === "object" && "pattern" in glob && "baseUri" in glob && typeof glob.pattern === "string") {
|
|
1136
|
+
pattern = glob.pattern;
|
|
1137
|
+
const uri = typeof glob.baseUri === "string" ? glob.baseUri : glob.baseUri?.uri;
|
|
1138
|
+
if (!uri) return;
|
|
1139
|
+
const url = new URL(uri);
|
|
1140
|
+
if (url.protocol !== "file:" || url.host || url.search || url.hash) return;
|
|
1141
|
+
base = decodeURIComponent(url.pathname).replace(/\/$/, "");
|
|
1142
|
+
if (pattern.startsWith("/")) return;
|
|
1143
|
+
} else return;
|
|
1144
|
+
if (base !== root && !base.startsWith(root + "/")) return;
|
|
1145
|
+
if (pattern.startsWith("/")) {
|
|
1146
|
+
if (!pattern.startsWith(root + "/")) return;
|
|
1147
|
+
pattern = pattern.slice(root.length + 1);
|
|
1148
|
+
}
|
|
1149
|
+
if (!pattern || pattern.length > 2048 || pattern.includes("\0") || pattern.split("/").includes("..")) return;
|
|
1150
|
+
return (base === root ? "" : base.slice(root.length + 1) + "/") + pattern;
|
|
1151
|
+
} catch {
|
|
1152
|
+
return;
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
// packages/sdk/src/lsp-capabilities.ts
|
|
1157
|
+
var lspCapabilityKeys = {
|
|
1158
|
+
"textDocument/completion": "completionProvider",
|
|
1159
|
+
"textDocument/hover": "hoverProvider",
|
|
1160
|
+
"textDocument/signatureHelp": "signatureHelpProvider",
|
|
1161
|
+
"textDocument/definition": "definitionProvider",
|
|
1162
|
+
"textDocument/declaration": "declarationProvider",
|
|
1163
|
+
"textDocument/typeDefinition": "typeDefinitionProvider",
|
|
1164
|
+
"textDocument/implementation": "implementationProvider",
|
|
1165
|
+
"textDocument/references": "referencesProvider",
|
|
1166
|
+
"textDocument/rename": "renameProvider",
|
|
1167
|
+
"textDocument/codeAction": "codeActionProvider",
|
|
1168
|
+
"textDocument/documentSymbol": "documentSymbolProvider",
|
|
1169
|
+
"textDocument/formatting": "documentFormattingProvider",
|
|
1170
|
+
"workspace/executeCommand": "executeCommandProvider",
|
|
1171
|
+
"workspace/symbol": "workspaceSymbolProvider",
|
|
1172
|
+
"textDocument/documentHighlight": "documentHighlightProvider",
|
|
1173
|
+
"textDocument/documentLink": "documentLinkProvider",
|
|
1174
|
+
"textDocument/prepareCallHierarchy": "callHierarchyProvider",
|
|
1175
|
+
"textDocument/prepareTypeHierarchy": "typeHierarchyProvider",
|
|
1176
|
+
"textDocument/semanticTokens": "semanticTokensProvider",
|
|
1177
|
+
"textDocument/inlayHint": "inlayHintProvider"
|
|
1178
|
+
};
|
|
1179
|
+
function registrationMatches(selector, document) {
|
|
1180
|
+
if (selector === void 0 || selector === null) return true;
|
|
1181
|
+
if (!document || !Array.isArray(selector)) return false;
|
|
1182
|
+
return selector.some((item) => item && (!item.scheme || item.scheme === "file") && (!item.language || item.language === "*" || canonicalLanguageId(item.language) === canonicalLanguageId(document.language)) && (!item.pattern || typeof item.pattern === "string" && lspGlobMatches(item.pattern, document.path)));
|
|
1183
|
+
}
|
|
1184
|
+
function effectiveCapabilities(base, registrations, document) {
|
|
1185
|
+
const result = { ...base };
|
|
1186
|
+
for (const registration of registrations) {
|
|
1187
|
+
const key = lspCapabilityKeys[registration.method];
|
|
1188
|
+
if (!registrationMatches(registration.registerOptions?.documentSelector, document)) continue;
|
|
1189
|
+
if (key) result[key] = registration.registerOptions ?? true;
|
|
1190
|
+
const sync = { ...synchronization(result) };
|
|
1191
|
+
if (registration.method === "textDocument/didOpen" || registration.method === "textDocument/didClose") sync.openClose = true;
|
|
1192
|
+
else if (registration.method === "textDocument/didChange") sync.change = registration.registerOptions?.syncKind ?? 0;
|
|
1193
|
+
else if (registration.method === "textDocument/didSave") sync.save = registration.registerOptions ?? true;
|
|
1194
|
+
else if (registration.method === "textDocument/willSave") sync.willSave = true;
|
|
1195
|
+
else if (registration.method === "textDocument/willSaveWaitUntil") sync.willSaveWaitUntil = true;
|
|
1196
|
+
else continue;
|
|
1197
|
+
result.textDocumentSync = sync;
|
|
1198
|
+
}
|
|
1199
|
+
return result;
|
|
1200
|
+
}
|
|
1201
|
+
function synchronization(capabilities) {
|
|
1202
|
+
const sync = capabilities.textDocumentSync;
|
|
1203
|
+
return typeof sync === "number" ? { openClose: true, change: sync } : sync ?? { openClose: false, change: 0 };
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
// packages/sdk/src/agent-acp.ts
|
|
1207
|
+
var ACP_PROVIDERS = [
|
|
1208
|
+
{
|
|
1209
|
+
id: "codex",
|
|
1210
|
+
name: "Codex ACP",
|
|
1211
|
+
command: "npx",
|
|
1212
|
+
args: ["-y", "@agentclientprotocol/codex-acp@1.10.0"],
|
|
1213
|
+
setup: "Uses the Codex ACP adapter. Sign in through an advertised authentication method, or use your existing Codex credentials.",
|
|
1214
|
+
url: "https://github.com/agentclientprotocol/codex-acp"
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
id: "cursor",
|
|
1218
|
+
name: "Cursor ACP",
|
|
1219
|
+
command: "agent",
|
|
1220
|
+
args: ["acp"],
|
|
1221
|
+
setup: "Install Cursor CLI and run agent login first. If your executable is cursor-agent, change the command below.",
|
|
1222
|
+
url: "https://cursor.com/docs/cli/acp"
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
id: "amp",
|
|
1226
|
+
name: "Amp Agent ACP",
|
|
1227
|
+
command: "npx",
|
|
1228
|
+
args: ["-y", "amp-acp@0.9.0"],
|
|
1229
|
+
setup: "Uses the community Amp ACP adapter. Install Amp CLI and run amp login first. Set AMP_CLI_PATH in the runtime environment if needed.",
|
|
1230
|
+
url: "https://github.com/tao12345666333/amp-acp"
|
|
1231
|
+
}
|
|
1232
|
+
];
|
|
1233
|
+
|
|
1234
|
+
// packages/sdk/src/tasks.ts
|
|
1235
|
+
var taskPhases = [
|
|
1236
|
+
"preinit",
|
|
1237
|
+
"init",
|
|
1238
|
+
"preteardown",
|
|
1239
|
+
"teardown"
|
|
1240
|
+
];
|
|
1241
|
+
|
|
1242
|
+
// packages/sdk/src/settings.ts
|
|
1243
|
+
var settingsObject = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
1244
|
+
function mergeSettings(lower, upper) {
|
|
1245
|
+
if (!settingsObject(lower) || !settingsObject(upper)) return structuredClone(upper);
|
|
1246
|
+
return Object.fromEntries([.../* @__PURE__ */ new Set([...Object.keys(lower), ...Object.keys(upper)])].map((key) => [
|
|
1247
|
+
key,
|
|
1248
|
+
Object.hasOwn(upper, key) ? Object.hasOwn(lower, key) ? mergeSettings(lower[key], upper[key]) : structuredClone(upper[key]) : structuredClone(lower[key])
|
|
1249
|
+
]));
|
|
1250
|
+
}
|
|
1251
|
+
function parseSettings(value) {
|
|
1252
|
+
validateJson(value);
|
|
1253
|
+
if (!settingsObject(value)) throw new Error("Settings must contain a JSON object");
|
|
1254
|
+
for (const [key, item] of Object.entries(value))
|
|
1255
|
+
if (/^\[.*\]$/.test(key) && (!/^\[[^\[\]]+\]$/.test(key) || !settingsObject(item)))
|
|
1256
|
+
throw new Error(`Language settings ${key} must contain an object`);
|
|
1257
|
+
return value;
|
|
1258
|
+
}
|
|
1259
|
+
function settingsLayers(user, workspace) {
|
|
1260
|
+
const result = { user: {}, workspace: {}, userLanguages: {}, workspaceLanguages: {} };
|
|
1261
|
+
for (const [scope, value] of [["user", user], ["workspace", workspace]])
|
|
1262
|
+
for (const [key, item] of Object.entries(value)) {
|
|
1263
|
+
const language = key.match(/^\[([^\]]+)\]$/)?.[1];
|
|
1264
|
+
if (language) result[scope === "user" ? "userLanguages" : "workspaceLanguages"][language] = structuredClone(item);
|
|
1265
|
+
else if (key !== "$schema") result[scope][key] = structuredClone(item);
|
|
1266
|
+
}
|
|
1267
|
+
return result;
|
|
1268
|
+
}
|
|
1269
|
+
function settingsFile(layers, scope) {
|
|
1270
|
+
return { ...structuredClone(layers[scope]), ...Object.fromEntries(Object.entries(layers[scope === "user" ? "userLanguages" : "workspaceLanguages"]).filter(([, value]) => Object.keys(value).length).map(([language, value]) => [`[${language}]`, structuredClone(value)])) };
|
|
1271
|
+
}
|
|
1272
|
+
function settingsChanges(before, after) {
|
|
1273
|
+
const result = [];
|
|
1274
|
+
const visit = (scope, path, a, b) => {
|
|
1275
|
+
if (JSON.stringify(a) === JSON.stringify(b)) return;
|
|
1276
|
+
if (settingsObject(a) && settingsObject(b)) {
|
|
1277
|
+
for (const key of /* @__PURE__ */ new Set([...Object.keys(a), ...Object.keys(b)])) visit(scope, [...path, key], a[key], b[key]);
|
|
1278
|
+
} else result.push({ scope, path, ...a === void 0 ? {} : { before: structuredClone(a) }, ...b === void 0 ? {} : { value: structuredClone(b) } });
|
|
1279
|
+
};
|
|
1280
|
+
for (const scope of ["user", "workspace"]) visit(scope, [], settingsFile(before, scope), settingsFile(after, scope));
|
|
1281
|
+
return result;
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
// packages/sdk/src/index.ts
|
|
1285
|
+
var SDK_VERSION = "1.0.0";
|
|
1286
|
+
export {
|
|
1287
|
+
ACP_PROVIDERS,
|
|
1288
|
+
SDK_VERSION,
|
|
1289
|
+
SETTINGS_SCHEMA_URI,
|
|
1290
|
+
canonicalLanguageId,
|
|
1291
|
+
effectiveCapabilities,
|
|
1292
|
+
incrementalChange,
|
|
1293
|
+
languageForKernel,
|
|
1294
|
+
languageIdForPath,
|
|
1295
|
+
languages,
|
|
1296
|
+
lspCapabilityKeys,
|
|
1297
|
+
lspGlobMatches,
|
|
1298
|
+
lspWatchPattern,
|
|
1299
|
+
matchesFilePattern,
|
|
1300
|
+
mergeSettings,
|
|
1301
|
+
parseCsv,
|
|
1302
|
+
parseSettings,
|
|
1303
|
+
registrationMatches,
|
|
1304
|
+
resolveLanguage,
|
|
1305
|
+
settingsChanges,
|
|
1306
|
+
settingsFile,
|
|
1307
|
+
settingsLayers,
|
|
1308
|
+
settingsObject,
|
|
1309
|
+
settingsSchema,
|
|
1310
|
+
synchronization,
|
|
1311
|
+
taskPhases,
|
|
1312
|
+
textOffset,
|
|
1313
|
+
textPosition,
|
|
1314
|
+
validateFileAssociations,
|
|
1315
|
+
validateJson,
|
|
1316
|
+
validateLanguageServers
|
|
1317
|
+
};
|