From d1652ea25f0ea389d0ecca36f787f1257bcd053f Mon Sep 17 00:00:00 2001 From: Tom Ross Date: Tue, 4 Feb 2025 14:05:28 +0000 Subject: [PATCH] feat(autoedit): Support image rendering for complex diffs (#6545) image ## Description This PR adds support for generating diff-like images of code snippets, that we can use to render auto-edit suggestions to the user. We are using [CanvasKit](https://skia.org/docs/user/modules/canvaskit/), which has good cross platform support (a WASM binary is provided) and means we can efficiently draw and paint text to a canvas. We can then convert this to a PNG for rendering as a decoration (via `contentIconPath`). We are also using [Shiki](https://shiki.matsu.io/), which provides syntax highlighting for our code snippets. Unfortunately we cannot access the users' selected theme colors programmatically ([see this issue](https://github.com/microsoft/vscode/issues/32813)). ### Design Considerations Due to some limitations in the VS Code API, I have taken some design considerations which I think work well - but I am happy to discuss alternative solutions. **Syntax Highlighting theme**: We cannot access the users' syntax highlighting colors, so we use [Vitesse Dark/Light](https://shiki.style/themes#:~:text=Vitesse%20Dark,vitesse%2Dlight). From my testing, these colors are fairly neutral and work well, but could possibly be an eye sore for users if it doesn't match their preferred highlight colors. **Image background**: I have made the background of the image transparent, this is because we can actually provide our own background through the VS Code decoration options. So we *can* theme the background and border to match the users editor. This means that it many cases the suggestions look great. There is a possibility that this could clash with the highlighting theme we have chosen though. The alternative would be to provide our own background color and accept it would likely not match the users' theme. Note: We may have to do this for non-VSCode clients anyway. **Font**: We are using [DejaVu Sans Mono](https://dejavu-fonts.github.io/). This is a publicly available font that renders a wide range of code snippets clearly, from my testing. It is also the font that the Menlo font (default on MacOS) is based off, so many users are likely to be familiar with it. We do not currently adjust the image to match the users' font size, but this is something we should be able to do. Likewise with the users' line height. ### Screenshots **Suggestion Dark** image **Suggestion Light** image **Suggestion Alternative Theme A** image **Suggestion Alternative Theme B** image **Raw Image** ![image](https://github.com/user-attachments/assets/47e3245c-fbc9-4bfc-b567-91714168f8d0) ## How to manually test 1. Checkout this branch and run it locally in VS Code 2. Ensure that the following settings are set, to enable auto-edit and the image generation ``` "cody.suggestions.mode": "auto-edit (Experimental)", "cody.experimental.autoedit.renderer": "image", ``` 3. Try triggering some auto-edits! # Test plan 1. Enable auto edits 4. Generate suggestions where lines are expected to be added/modified 5. Observe results Also tested with E2E and unit visual tests --- pnpm-lock.yaml | 377 +++++++++++++++++- vscode/.gitignore | 3 + vscode/.vscodeignore | 1 + vscode/package.json | 11 +- vscode/resources/DejaVuSansMono.ttf | Bin 0 -> 335068 bytes vscode/scripts/download-fonts.ts | 27 ++ vscode/scripts/download-wasm-modules.ts | 3 + vscode/scripts/measure-bundle-size.ts | 4 +- vscode/src/autoedits/autoedits-provider.ts | 20 +- .../renderer/decorators/blockify.test.ts | 8 +- .../autoedits/renderer/decorators/blockify.ts | 18 +- .../renderer/decorators/default-decorator.ts | 118 +++++- .../highlighted-suggestion-dark.png | Bin 0 -> 18656 bytes .../highlighted-suggestion-light.png | Bin 0 -> 18294 bytes .../unhighlighted-suggestion-dark.png | Bin 0 -> 18409 bytes .../unhighlighted-suggestion-light.png | Bin 0 -> 18077 bytes .../autoedits/renderer/image-gen/canvas.ts | 222 +++++++++++ .../autoedits/renderer/image-gen/highlight.ts | 80 ++++ .../renderer/image-gen/index.test.ts | 85 ++++ .../src/autoedits/renderer/image-gen/index.ts | 24 ++ .../src/autoedits/renderer/image-gen/shiki.ts | 60 +++ vscode/src/completions/detect-multiline.ts | 10 +- 22 files changed, 1024 insertions(+), 47 deletions(-) create mode 100644 vscode/resources/DejaVuSansMono.ttf create mode 100644 vscode/scripts/download-fonts.ts create mode 100644 vscode/src/autoedits/renderer/image-gen/__image_snapshots__/highlighted-suggestion-dark.png create mode 100644 vscode/src/autoedits/renderer/image-gen/__image_snapshots__/highlighted-suggestion-light.png create mode 100644 vscode/src/autoedits/renderer/image-gen/__image_snapshots__/unhighlighted-suggestion-dark.png create mode 100644 vscode/src/autoedits/renderer/image-gen/__image_snapshots__/unhighlighted-suggestion-light.png create mode 100644 vscode/src/autoedits/renderer/image-gen/canvas.ts create mode 100644 vscode/src/autoedits/renderer/image-gen/highlight.ts create mode 100644 vscode/src/autoedits/renderer/image-gen/index.test.ts create mode 100644 vscode/src/autoedits/renderer/image-gen/index.ts create mode 100644 vscode/src/autoedits/renderer/image-gen/shiki.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97f7d1e8dd4e..fc0b70e32cc3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -596,6 +596,9 @@ importers: axios: specifier: ^1.3.6 version: 1.3.6 + canvaskit-wasm: + specifier: ^0.39.1 + version: 0.39.1 class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -704,6 +707,9 @@ importers: semver: specifier: ^7.5.4 version: 7.5.4 + shiki: + specifier: ^1.26.1 + version: 1.26.1 signal-exit: specifier: ^4.1.0 version: 4.1.0 @@ -810,6 +816,9 @@ importers: '@types/ini': specifier: ^4.1.0 version: 4.1.0 + '@types/jest-image-snapshot': + specifier: ^6.4.0 + version: 6.4.0 '@types/js-levenshtein': specifier: ^1.1.1 version: 1.1.1 @@ -933,6 +942,9 @@ importers: immer: specifier: ^10.1.1 version: 10.1.1 + jest-image-snapshot: + specifier: ^6.4.0 + version: 6.4.0 keytar: specifier: ^7.9.0 version: 7.9.0 @@ -1150,7 +1162,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.24.5 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: true /@babel/compat-data@7.24.4: @@ -1408,7 +1420,7 @@ packages: '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: true /@babel/parser@7.24.5: @@ -3182,7 +3194,7 @@ packages: '@inquirer/figures': 1.0.3 '@inquirer/type': 1.3.3 ansi-escapes: 4.3.2 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: false /@inquirer/confirm@3.1.11: @@ -3206,7 +3218,7 @@ packages: cli-spinners: 2.9.2 cli-width: 4.1.0 mute-stream: 1.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 signal-exit: 4.1.0 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 @@ -3227,7 +3239,7 @@ packages: dependencies: '@inquirer/core': 8.2.4 '@inquirer/type': 1.3.3 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: false /@inquirer/figures@1.0.3: @@ -3272,7 +3284,7 @@ packages: dependencies: '@inquirer/core': 8.2.4 '@inquirer/type': 1.3.3 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: false /@inquirer/select@2.3.7: @@ -3283,7 +3295,7 @@ packages: '@inquirer/figures': 1.0.3 '@inquirer/type': 1.3.3 ansi-escapes: 4.3.2 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: false /@inquirer/type@1.3.3: @@ -3302,6 +3314,32 @@ packages: wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.12.7 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + dev: true + /@jgoz/esbuild-plugin-typecheck@4.0.1(esbuild@0.18.20)(typescript@5.7.2): resolution: {integrity: sha512-0gATXkXWzKIZpC8hvZfHW4/cdwVyGaeO154/iVeOXWcxoAPnESJ9cgvTtl+QXiR4K/QMeeu2Ptcr472L7paMlQ==} peerDependencies: @@ -4331,7 +4369,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.26.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.37)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.37)(react@18.2.0) @@ -5706,6 +5744,59 @@ packages: '@sentry/types': 7.107.0 dev: false + /@shikijs/core@1.26.1: + resolution: {integrity: sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==} + dependencies: + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + dev: false + + /@shikijs/engine-javascript@1.26.1: + resolution: {integrity: sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==} + dependencies: + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 + oniguruma-to-es: 0.10.0 + dev: false + + /@shikijs/engine-oniguruma@1.26.1: + resolution: {integrity: sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==} + dependencies: + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 + dev: false + + /@shikijs/langs@1.26.1: + resolution: {integrity: sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==} + dependencies: + '@shikijs/types': 1.26.1 + dev: false + + /@shikijs/themes@1.26.1: + resolution: {integrity: sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==} + dependencies: + '@shikijs/types': 1.26.1 + dev: false + + /@shikijs/types@1.26.1: + resolution: {integrity: sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==} + dependencies: + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + dev: false + + /@shikijs/vscode-textmate@10.0.1: + resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + /@sindresorhus/fnv1a@2.0.1: resolution: {integrity: sha512-suq9tRQ6bkpMukTG5K5z0sPWB7t0zExMzZCdmYm6xTSSIm/yCKNm7VCL36wVeyTsFr597/UhU1OAYdHGMDiHrw==} engines: {node: '>=10'} @@ -7117,6 +7208,37 @@ packages: resolution: {integrity: sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==} dev: true + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/jest-image-snapshot@6.4.0: + resolution: {integrity: sha512-8TQ/EgqFCX0UWSpH488zAc21fCkJNpZPnnp3xWFMqElxApoJV5QOoqajnVRV7AhfF0rbQWTVyc04KG7tXnzCPA==} + dependencies: + '@types/jest': 29.5.14 + '@types/pixelmatch': 5.2.6 + ssim.js: 3.5.0 + dev: true + + /@types/jest@29.5.14: + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + /@types/js-levenshtein@1.1.1: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true @@ -7272,6 +7394,12 @@ packages: resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==} dev: true + /@types/pixelmatch@5.2.6: + resolution: {integrity: sha512-wC83uexE5KGuUODn6zkm9gMzTwdY5L0chiK+VrKcDfEjzxh1uadlWTvOmAbCpnM9zx/Ww3f8uKlYQVnO/TrqVg==} + dependencies: + '@types/node': 20.12.7 + dev: true + /@types/pretty-hrtime@1.0.3: resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} dev: true @@ -7367,6 +7495,10 @@ packages: resolution: {integrity: sha512-e7EUPfU9afHyWc5CXtlqbvVHEshrb05uPlDCenWIbMgtWoFrTuTDVYNLKk6o4X2/4oHTfNqrJX/vaJ3uBhtXTg==} dev: true + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + /@types/stylus@0.48.42: resolution: {integrity: sha512-CPGlr5teL4sqdap+EOowMifLuNGeIoLwc0VQ7u/BPxo+ocqiNa5jeVt0H0IVBblEh6ZwX1sGpIQIFnSSr8NBQA==} dependencies: @@ -7447,6 +7579,16 @@ packages: '@types/node': 20.12.7 dev: true + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -7590,6 +7732,10 @@ packages: keytar: 7.9.0 dev: true + /@webgpu/types@0.1.21: + resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} + dev: false + /@xmldom/xmldom@0.7.13: resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} engines: {node: '>=10.0.0'} @@ -8484,6 +8630,12 @@ packages: resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} dev: true + /canvaskit-wasm@0.39.1: + resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} + dependencies: + '@webgpu/types': 0.1.21 + dev: false + /catharsis@0.9.0: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} engines: {node: '>= 10'} @@ -8629,6 +8781,11 @@ packages: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + /citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} dependencies: @@ -9465,6 +9622,11 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -9628,6 +9790,10 @@ packages: resolution: {integrity: sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==} dev: true + /emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + dev: false + /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} dev: true @@ -10040,6 +10206,17 @@ packages: requiresBuild: true dev: true + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + /exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} dev: false @@ -10596,6 +10773,11 @@ packages: engines: {node: '>=12.17'} dev: true + /get-stdin@5.0.1: + resolution: {integrity: sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==} + engines: {node: '>=0.12.0'} + dev: true + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -10753,6 +10935,10 @@ packages: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} dev: true + /glur@1.1.2: + resolution: {integrity: sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA==} + dev: true + /google-auth-library@8.9.0: resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} engines: {node: '>=12'} @@ -10968,6 +11154,22 @@ packages: unist-util-position: 5.0.0 dev: false + /hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + dev: false + /hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: @@ -11058,6 +11260,10 @@ packages: resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} dev: false + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: false + /htmlnano@2.1.1(postcss@8.4.38)(typescript@5.7.2): resolution: {integrity: sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==} peerDependencies: @@ -11811,6 +12017,77 @@ packages: filelist: 1.0.4 minimatch: 3.1.2 + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-image-snapshot@6.4.0: + resolution: {integrity: sha512-IWGtSOnelwaVPd09STbJuLmnAwlBC/roJtTLGLb8M3TA0vfku3MRNEXmljTa1EMXqdRbA0oIWiqHFB1ttTGazQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + jest: '>=20 <=29' + peerDependenciesMeta: + jest: + optional: true + dependencies: + chalk: 4.1.2 + get-stdin: 5.0.1 + glur: 1.1.2 + lodash: 4.17.21 + pixelmatch: 5.3.0 + pngjs: 3.4.0 + rimraf: 2.7.1 + ssim.js: 3.5.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.24.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.12.7 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -13683,6 +13960,14 @@ packages: mimic-fn: 4.0.0 dev: true + /oniguruma-to-es@0.10.0: + resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==} + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + dev: false + /only@0.0.2: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} dev: true @@ -14018,10 +14303,10 @@ packages: /picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + dev: true /picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -14053,6 +14338,13 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + /pixelmatch@5.3.0: + resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} + hasBin: true + dependencies: + pngjs: 6.0.0 + dev: true + /pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} @@ -14096,6 +14388,16 @@ packages: fsevents: 2.3.2 dev: true + /pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + dev: true + + /pngjs@6.0.0: + resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} + engines: {node: '>=12.13.0'} + dev: true + /polished@4.3.1: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} @@ -14292,7 +14594,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 /postcss@8.4.49: @@ -14366,6 +14668,15 @@ packages: react-is: 17.0.2 dev: true + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.1.0 + dev: true + /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} @@ -15093,6 +15404,23 @@ packages: safe-regex: 1.1.0 dev: false + /regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + dev: false + + /regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + dev: false + + /regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + dependencies: + regex-utilities: 2.3.0 + dev: false + /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} @@ -15340,7 +15668,6 @@ packages: hasBin: true dependencies: glob: 7.2.3 - dev: false /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -15641,6 +15968,19 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true + /shiki@1.26.1: + resolution: {integrity: sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==} + dependencies: + '@shikijs/core': 1.26.1 + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/langs': 1.26.1 + '@shikijs/themes': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + dev: false + /shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} dev: false @@ -15887,6 +16227,10 @@ packages: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} dev: false + /ssim.js@3.5.0: + resolution: {integrity: sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g==} + dev: true + /ssri@9.0.1: resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -15894,6 +16238,13 @@ packages: minipass: 3.3.6 dev: false + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true @@ -16293,7 +16644,7 @@ packages: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: false /svgpath@2.6.0: @@ -17067,7 +17418,7 @@ packages: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: true /uri-js@4.4.1: diff --git a/vscode/.gitignore b/vscode/.gitignore index 31e8030889e6..28a828f8a7bd 100644 --- a/vscode/.gitignore +++ b/vscode/.gitignore @@ -11,3 +11,6 @@ tsconfig.typehacks.json # these are snapshots that haven't been accepted *.new.json + +# jest-image-snapshot debugging files +__diff_output__ diff --git a/vscode/.vscodeignore b/vscode/.vscodeignore index dccefbe96674..294353f80e50 100644 --- a/vscode/.vscodeignore +++ b/vscode/.vscodeignore @@ -13,6 +13,7 @@ !dist/*.exe !dist/*.wasm !dist/*.node +!dist/*.ttf !resources/* !walkthroughs/*.md diff --git a/vscode/package.json b/vscode/package.json index a83399a792cc..442988a690e5 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -10,7 +10,7 @@ "description": "Sourcegraph’s AI code assistant goes beyond individual dev productivity, helping enterprises achieve consistency and quality at scale with AI. & codebase context to help you write code faster. Cody brings you autocomplete, chat, and commands, so you can generate code, write unit tests, create docs, and explain complex code using AI. Choose from the best LLMs, including GPT-4o and Claude 3.5 Sonnet.", "scripts": { "build:root": "pnpm -C .. run -s build", - "postinstall": "pnpm download-wasm && pnpm copy-win-ca-roots", + "postinstall": "pnpm download-wasm && pnpm download-fonts && pnpm copy-win-ca-roots", "dev": "pnpm run -s dev:desktop", "dev:insiders": "pnpm run -s dev:desktop:insiders", "start:dev:desktop": "NODE_ENV=development code --extensionDevelopmentPath=$PWD --disable-extension=sourcegraph.cody-ai --disable-extension=github.copilot --inspect-extensions=9333 --new-window . --goto ./src/completions/inline-completion-item-provider.ts:16:5", @@ -30,7 +30,7 @@ "build:prod:webviews": "pnpm run -s _build:webviews --mode production", "watch:build:dev:web": "concurrently \"pnpm run -s _build:esbuild:web --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", "watch:build:dev:desktop": "concurrently \"pnpm run -s _build:esbuild:desktop --watch\" \"pnpm run -s _build:webviews --mode development --watch\"", - "_build:esbuild:desktop": "pnpm download-wasm && pnpm run -s _build:esbuild:uninstall && pnpm run -s _build:esbuild:node", + "_build:esbuild:desktop": "pnpm download-wasm && pnpm download-fonts && pnpm run -s _build:esbuild:uninstall && pnpm run -s _build:esbuild:node", "_build:esbuild:node": "esbuild ./src/extension.node.ts --bundle --outfile=dist/extension.node.js --loader:.node=copy --external:vscode --external:typescript --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:lexical=./build/lexical-package-fix --format=cjs --platform=node --sourcemap --target=es2022", "_build:esbuild:web": "esbuild ./src/extension.web.ts --platform=browser --bundle --outfile=dist/extension.web.js --alias:@sourcegraph/cody-shared=@sourcegraph/cody-shared/src/index --alias:@sourcegraph/cody-shared/src=@sourcegraph/cody-shared/src --alias:path=path-browserify --external:typescript --alias:node:path=path-browserify --alias:node:os=os-browserify --alias:os=os-browserify --external:vscode --external:node:child_process --external:node:util --external:node:fs --external:node:fs/promises --external:node:process --define:process='{\"env\":{}}' --define:window=self --format=cjs --sourcemap", "_build:esbuild:uninstall": "node ./uninstall/esbuild.mjs", @@ -38,8 +38,9 @@ "_build:vsix_for_test": "vsce package --no-dependencies --out dist/cody.e2e.vsix", "release": "ts-node-transpile-only ./scripts/release.ts", "download-wasm": "ts-node-transpile-only ./scripts/download-wasm-modules.ts", + "download-fonts": "ts-node-transpile-only ./scripts/download-fonts.ts", "copy-win-ca-roots": "ts-node-transpile-only ./scripts/copy-win-ca-roots.ts", - "release:dry-run": "pnpm run download-wasm && CODY_RELEASE_DRY_RUN=1 ts-node ./scripts/release.ts", + "release:dry-run": "pnpm run download-wasm && pnpm run download-fonts && CODY_RELEASE_DRY_RUN=1 ts-node ./scripts/release.ts", "storybook": "storybook dev -p 6007 --no-open --no-version-updates", "test:e2e": "playwright install && tsc --build && node dist/tsc/test/e2e/install-deps.js && pnpm run -s _build:vsix_for_test && pnpm run -s build:dev:desktop && pnpm run -s test:e2e:run", "test:e2e:run": "playwright test", @@ -1479,6 +1480,7 @@ "agent-base": "^7.1.1", "async-mutex": "^0.4.0", "axios": "^1.3.6", + "canvaskit-wasm": "^0.39.1", "class-variance-authority": "^0.7.0", "classnames": "^2.5.1", "clsx": "^2.1.1", @@ -1515,6 +1517,7 @@ "remark-gfm": "^4.0.0", "safe-stable-stringify": "^2.5.0", "semver": "^7.5.4", + "shiki": "^1.26.1", "signal-exit": "^4.1.0", "socks-proxy-agent": "^8.0.1", "tailwind-merge": "^2.3.0", @@ -1552,6 +1555,7 @@ "@types/glob": "^8.0.0", "@types/graceful-fs": "^4.1.9", "@types/ini": "^4.1.0", + "@types/jest-image-snapshot": "^6.4.0", "@types/js-levenshtein": "^1.1.1", "@types/lodash": "^4.14.195", "@types/marked": "^5.0.0", @@ -1593,6 +1597,7 @@ "htmlnano": "^2.1.1", "http-proxy-middleware": "^3.0.0", "immer": "^10.1.1", + "jest-image-snapshot": "^6.4.0", "keytar": "^7.9.0", "kill-sync": "^1.0.3", "mocha": "^10.2.0", diff --git a/vscode/resources/DejaVuSansMono.ttf b/vscode/resources/DejaVuSansMono.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8b7bb2a4e1b2c27786398c320e9020bcc24c3af3 GIT binary patch literal 335068 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�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

b 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 literal 0 HcmV?d00001 diff --git a/vscode/scripts/download-fonts.ts b/vscode/scripts/download-fonts.ts new file mode 100644 index 000000000000..1b07be4a873c --- /dev/null +++ b/vscode/scripts/download-fonts.ts @@ -0,0 +1,27 @@ +import { copyFileSync, existsSync, mkdirSync } from 'node:fs' +import path from 'node:path' + +const DIST_DIRECTORY = path.join(__dirname, '../dist') +const FONT_PATH = path.join(__dirname, '../resources/DejaVuSansMono.ttf') + +export async function main(): Promise { + try { + copyFonts() + console.log('Fonts were successfully copied to dist directory') + } catch (error) { + console.error('Error copying fonts:', error) + process.exit(1) + } +} + +void main() + +function copyFonts(): void { + const hasDistDir = existsSync(DIST_DIRECTORY) + + if (!hasDistDir) { + mkdirSync(DIST_DIRECTORY) + } + + copyFileSync(FONT_PATH, path.join(DIST_DIRECTORY, 'DejaVuSansMono.ttf')) +} diff --git a/vscode/scripts/download-wasm-modules.ts b/vscode/scripts/download-wasm-modules.ts index 47fb15201aaa..7344325782b5 100755 --- a/vscode/scripts/download-wasm-modules.ts +++ b/vscode/scripts/download-wasm-modules.ts @@ -14,6 +14,8 @@ const TREE_SITTER_WASM_FILE = 'tree-sitter.wasm' const TREE_SITTER_WASM_PATH = require.resolve(`web-tree-sitter/${TREE_SITTER_WASM_FILE}`) const JS_GRAMMAR_PATH = require.resolve('@sourcegraph/tree-sitter-wasms/out/tree-sitter-javascript.wasm') const GRAMMARS_PATH = path.dirname(JS_GRAMMAR_PATH) +const CANVASKIT_WASM_FILE = 'canvaskit.wasm' +const CANVASKIT_WASM_PATH = require.resolve(`canvaskit-wasm/bin/${CANVASKIT_WASM_FILE}`) export async function main(): Promise { const hasStoreDir = existsSync(WASM_DIRECTORY) @@ -50,4 +52,5 @@ function copyFilesToDistDir(): void { } copyFileSync(TREE_SITTER_WASM_PATH, path.join(DIST_DIRECTORY, TREE_SITTER_WASM_FILE)) + copyFileSync(CANVASKIT_WASM_PATH, path.join(DIST_DIRECTORY, CANVASKIT_WASM_FILE)) } diff --git a/vscode/scripts/measure-bundle-size.ts b/vscode/scripts/measure-bundle-size.ts index 7b5beefc12ab..e09b71f5a972 100644 --- a/vscode/scripts/measure-bundle-size.ts +++ b/vscode/scripts/measure-bundle-size.ts @@ -2,8 +2,8 @@ import { promises as fs } from 'node:fs' import { appendFileSync } from 'node:fs' const SIZE_LIMITS = { - extension: 15 * 1024 * 1024, // 15MB - webview: 10 * 1024 * 1024, // 10MB + extension: 20 * 1024 * 1024, // 20MB + webview: 15 * 1024 * 1024, // 15MB } function prettyPrintMB(bytes: number): string { diff --git a/vscode/src/autoedits/autoedits-provider.ts b/vscode/src/autoedits/autoedits-provider.ts index 3d0112114895..6d33e41401ae 100644 --- a/vscode/src/autoedits/autoedits-provider.ts +++ b/vscode/src/autoedits/autoedits-provider.ts @@ -35,6 +35,7 @@ import type { DecorationInfo } from './renderer/decorators/base' import { DefaultDecorator } from './renderer/decorators/default-decorator' import { InlineDiffDecorator } from './renderer/decorators/inline-diff-decorator' import { getDecorationInfo } from './renderer/diff-utils' +import { initImageSuggestionService } from './renderer/image-gen' import { AutoEditsInlineRendererManager } from './renderer/inline-manager' import { AutoEditsDefaultRendererManager, type AutoEditsRendererManager } from './renderer/manager' import { @@ -81,9 +82,15 @@ export class AutoeditsProvider implements vscode.InlineCompletionItemProvider, v private readonly onSelectionChangeDebounced: DebouncedFunc public readonly rendererManager: AutoEditsRendererManager private readonly modelAdapter: AutoeditsModelAdapter + + /** + * Default: Current supported renderer + * Inline: Experimental renderer that uses inline decorations to show additions + * Image: Experimental renderer that uses images to show additions. + */ private readonly enabledRenderer = vscode.workspace .getConfiguration() - .get<'default' | 'inline'>('cody.experimental.autoedit.renderer', 'default') + .get<'default' | 'inline' | 'image'>('cody.experimental.autoedit.renderer', 'default') private readonly promptStrategy = new ShortTermPromptStrategy() public readonly filterPrediction = new FilterPredictionBasedOnRecentEdits() @@ -101,6 +108,12 @@ export class AutoeditsProvider implements vscode.InlineCompletionItemProvider, v chatClient: chatClient, }) + if (this.enabledRenderer === 'image') { + // Initialise the canvas renderer for image generation. + // TODO: Consider moving this if we decide to enable this by default. + initImageSuggestionService() + } + this.rendererManager = this.enabledRenderer === 'inline' ? new AutoEditsInlineRendererManager( @@ -108,7 +121,10 @@ export class AutoeditsProvider implements vscode.InlineCompletionItemProvider, v fixupController ) : new AutoEditsDefaultRendererManager( - (editor: vscode.TextEditor) => new DefaultDecorator(editor), + (editor: vscode.TextEditor) => + new DefaultDecorator(editor, { + shouldRenderImage: this.enabledRenderer === 'image', + }), fixupController ) diff --git a/vscode/src/autoedits/renderer/decorators/blockify.test.ts b/vscode/src/autoedits/renderer/decorators/blockify.test.ts index f47ef45bbe94..6e83a3c6391e 100644 --- a/vscode/src/autoedits/renderer/decorators/blockify.test.ts +++ b/vscode/src/autoedits/renderer/decorators/blockify.test.ts @@ -21,7 +21,9 @@ function blockifyAndExtractForTest( expect(highlightedText).toBe(expectedText) addedLines.push({ - ranges: [[range.start.character, range.end.character]], + highlightedRanges: [ + { type: 'diff-added', range: [range.start.character, range.end.character] }, + ], afterLine: range.start.line, lineText: document.lineAt(range.start.line).text, }) @@ -30,7 +32,9 @@ function blockifyAndExtractForTest( const blockified = blockify(document, addedLines) return { code: blockified.map(({ lineText }) => lineText).join('\n'), - ranges: blockified.flatMap(({ ranges }) => ranges), + ranges: blockified.flatMap(({ highlightedRanges }) => + highlightedRanges.map(({ range }) => range) + ), } } diff --git a/vscode/src/autoedits/renderer/decorators/blockify.ts b/vscode/src/autoedits/renderer/decorators/blockify.ts index 60e147f67d09..a0052e05096f 100644 --- a/vscode/src/autoedits/renderer/decorators/blockify.ts +++ b/vscode/src/autoedits/renderer/decorators/blockify.ts @@ -55,7 +55,7 @@ export function convertToSpaceIndentation( // this as we are converting this text to use spaces. // 1. Account for the fact that each tab is being replaced with tabSize spaces // 2. Adjust the position based on how many tabs appear before the range - const newRanges = line.ranges.map(([start, end]) => { + const newRanges = line.highlightedRanges.map(({ range: [start, end], ...rest }) => { // Count tabs before the start and end positions const tabsBeforeStart = (line.lineText.slice(0, start).match(/\t/g) || []).length const tabsBeforeEnd = (line.lineText.slice(0, end).match(/\t/g) || []).length @@ -63,14 +63,13 @@ export function convertToSpaceIndentation( // Each tab expands to tabSize spaces, so we need to add (tabSize - 1) for each tab const adjustedStart = start + tabsBeforeStart * (tabSize - 1) const adjustedEnd = end + tabsBeforeEnd * (tabSize - 1) - - return [adjustedStart, adjustedEnd] as [number, number] + return { ...rest, range: [adjustedStart, adjustedEnd] as [number, number] } }) return { ...line, lineText: newLineText, - ranges: newRanges, + highlightedRanges: newRanges, } }) } @@ -110,10 +109,13 @@ function removeLeadingWhitespaceBlock( return addedLines.map(line => ({ ...line, lineText: line.lineText.replace(leastCommonWhitespacePrefix, ''), - ranges: line.ranges.map(([start, end]) => [ - start - leastCommonWhitespacePrefix.length, - end - leastCommonWhitespacePrefix.length, - ]), + highlightedRanges: line.highlightedRanges.map(({ range: [start, end], ...rest }) => ({ + ...rest, + range: [ + Math.max(0, start - leastCommonWhitespacePrefix.length), + Math.max(0, end - leastCommonWhitespacePrefix.length), + ], + })), })) } diff --git a/vscode/src/autoedits/renderer/decorators/default-decorator.ts b/vscode/src/autoedits/renderer/decorators/default-decorator.ts index 20ab23673a1d..724889a5f863 100644 --- a/vscode/src/autoedits/renderer/decorators/default-decorator.ts +++ b/vscode/src/autoedits/renderer/decorators/default-decorator.ts @@ -3,12 +3,25 @@ import * as vscode from 'vscode' import { GHOST_TEXT_COLOR } from '../../../commands/GhostHintDecorator' import { getEditorInsertSpaces, getEditorTabSize } from '@sourcegraph/cody-shared' +import { generateSuggestionAsImage } from '../image-gen' import type { AutoEditsDecorator, DecorationInfo, ModifiedLineInfo } from './base' import { UNICODE_SPACE, blockify } from './blockify' import { cssPropertiesToString } from './utils' +export interface DiffedTextDecorationRange { + range: [number, number] + type: 'diff-added' +} + +export interface SyntaxHighlightedTextDecorationRange { + range: [number, number] + // Hex color that the text should be painted as + color: string + type: 'syntax-highlighted' +} + export interface AddedLinesDecorationInfo { - ranges: [number, number][] + highlightedRanges: (DiffedTextDecorationRange | SyntaxHighlightedTextDecorationRange)[] afterLine: number lineText: string } @@ -32,9 +45,15 @@ interface DiffDecorationInfo { addedLinesInfo?: DiffDecorationAddedLinesInfo } +interface DefaultDecoratorOptions { + /** Experimentally render added lines as images in the editor */ + shouldRenderImage?: boolean +} + export class DefaultDecorator implements AutoEditsDecorator { private readonly decorationTypes: vscode.TextEditorDecorationType[] private readonly editor: vscode.TextEditor + private readonly options: DefaultDecoratorOptions // Decoration types private readonly removedTextDecorationType: vscode.TextEditorDecorationType @@ -48,8 +67,10 @@ export class DefaultDecorator implements AutoEditsDecorator { */ private diffDecorationInfo: DiffDecorationInfo | undefined - constructor(editor: vscode.TextEditor) { + constructor(editor: vscode.TextEditor, options: DefaultDecoratorOptions = {}) { this.editor = editor + this.options = options + // Initialize decoration types this.removedTextDecorationType = vscode.window.createTextEditorDecorationType({ backgroundColor: new vscode.ThemeColor('diffEditor.removedTextBackground'), @@ -85,9 +106,15 @@ export class DefaultDecorator implements AutoEditsDecorator { } public canRenderDecoration(decorationInfo: DecorationInfo): boolean { + if (this.options.shouldRenderImage) { + // Image decorations can expand beyond the editor boundaries, so we can always render them. + return true + } + if (!this.diffDecorationInfo) { this.diffDecorationInfo = this.getDiffDecorationsInfo(decorationInfo) } + const { addedLinesInfo } = this.diffDecorationInfo if (addedLinesInfo) { // Check if there are enough lines in the editor to render the diff decorations @@ -143,6 +170,15 @@ export class DefaultDecorator implements AutoEditsDecorator { return } + if (this.options.shouldRenderImage) { + this.renderAddedLinesImageDecorations( + addedLinesInfo.addedLinesDecorationInfo, + addedLinesInfo.startLine, + addedLinesInfo.replacerCol + ) + return + } + this.renderAddedLinesDecorations( addedLinesInfo.addedLinesDecorationInfo, addedLinesInfo.startLine, @@ -161,20 +197,23 @@ export class DefaultDecorator implements AutoEditsDecorator { for (const modifiedLine of modifiedLines) { const changes = modifiedLine.changes - const addedRanges: [number, number][] = [] + const addedRanges: DiffedTextDecorationRange[] = [] for (const change of changes) { if (change.type === 'delete') { removedRanges.push(change.originalRange) } else if (change.type === 'insert') { - addedRanges.push([ - change.modifiedRange.start.character, - change.modifiedRange.end.character, - ]) + addedRanges.push({ + type: 'diff-added', + range: [ + change.modifiedRange.start.character, + change.modifiedRange.end.character, + ], + }) } } if (addedRanges.length > 0) { addedLinesInfo.push({ - ranges: addedRanges, + highlightedRanges: addedRanges, afterLine: modifiedLine.modifiedLineNumber, lineText: modifiedLine.newText, }) @@ -184,7 +223,7 @@ export class DefaultDecorator implements AutoEditsDecorator { // Handle fully added lines for (const addedLine of addedLines) { addedLinesInfo.push({ - ranges: [], + highlightedRanges: [{ type: 'diff-added', range: [0, addedLine.text.length] }], afterLine: addedLine.modifiedLineNumber, lineText: addedLine.text, }) @@ -202,7 +241,7 @@ export class DefaultDecorator implements AutoEditsDecorator { continue } addedLinesInfo.push({ - ranges: [], + highlightedRanges: [], afterLine: lineNumber, lineText: line.type === 'modified' ? line.newText : line.text, }) @@ -264,8 +303,8 @@ export class DefaultDecorator implements AutoEditsDecorator { ): void { // Blockify the added lines so they are suitable to be rendered together as a VS Code decoration const blockifiedAddedLines = blockify(this.editor.document, addedLinesInfo) - const replacerDecorations: vscode.DecorationOptions[] = [] + const replacerDecorations: vscode.DecorationOptions[] = [] for (let i = 0; i < blockifiedAddedLines.length; i++) { const j = i + startLine const line = this.editor.document.lineAt(j) @@ -317,14 +356,65 @@ export class DefaultDecorator implements AutoEditsDecorator { }) } } + } - const startLineLength = this.editor.document.lineAt(startLine).range.end.character + private renderAddedLinesImageDecorations( + addedLinesInfo: AddedLinesDecorationInfo[], + startLine: number, + replacerCol: number + ): void { + // Blockify the added lines so they are suitable to be rendered together as a VS Code decoration + const blockifiedAddedLines = blockify(this.editor.document, addedLinesInfo) + + const { dark, light } = generateSuggestionAsImage({ + decorations: blockifiedAddedLines, + lang: this.editor.document.languageId, + }) + const startLineEndColumn = this.getEndColumn(this.editor.document.lineAt(startLine)) + + // The padding in which to offset the decoration image away from neighbouring code + const decorationPadding = 4 + // The margin position where the decoration image should render. + // Ensuring it does not conflict with the visibility of existing code. + const decorationMargin = replacerCol - startLineEndColumn + decorationPadding + const decorationStyle = cssPropertiesToString({ + // Absolutely position the suggested code so that the cursor does not jump there + position: 'absolute', + // Make sure the decoration is rendered on top of other decorations + 'z-index': '9999', + // Scale to decoration to the correct size (upscaled to boost resolution) + scale: '0.5', + 'transform-origin': '0px 0px', + height: 'auto', + }) + + this.editor.setDecorations(this.addedLinesDecorationType, [ + { + range: new vscode.Range(startLine, startLineEndColumn, startLine, startLineEndColumn), + renderOptions: { + before: { + color: new vscode.ThemeColor('editorSuggestWidget.foreground'), + backgroundColor: new vscode.ThemeColor('editorSuggestWidget.background'), + border: '1px solid', + borderColor: new vscode.ThemeColor('editorSuggestWidget.border'), + textDecoration: `none;${decorationStyle}`, + margin: `0 0 0 ${decorationMargin}ch`, + }, + after: { + contentText: '\u00A0'.repeat(3) + '\u00A0'.repeat(startLineEndColumn), + margin: `0 0 0 ${decorationMargin}ch`, + }, + // Provide different highlighting for dark/light themes + dark: { before: { contentIconPath: vscode.Uri.parse(dark) } }, + light: { before: { contentIconPath: vscode.Uri.parse(light) } }, + }, + }, + ]) this.editor.setDecorations(this.insertMarkerDecorationType, [ { - range: new vscode.Range(startLine, 0, startLine, startLineLength), + range: new vscode.Range(startLine, 0, startLine, startLineEndColumn), }, ]) - this.editor.setDecorations(this.addedLinesDecorationType, replacerDecorations) } private renderInlineGhostTextDecorations(decorationLines: ModifiedLineInfo[]): void { diff --git a/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/highlighted-suggestion-dark.png b/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/highlighted-suggestion-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b340d9222d0e78c8fa86b723a285075fa0486097 GIT binary patch literal 18656 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 literal 0 HcmV?d00001 diff --git a/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/highlighted-suggestion-light.png b/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/highlighted-suggestion-light.png new file mode 100644 index 0000000000000000000000000000000000000000..3c11a5c5cc995120701d5f0d84558e48d32349e3 GIT binary patch literal 18294 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

^K*wOJetK9fFC=7PKdwpf4(WytB zE1xQ#FZbUgQ=ea1iy1#$)TOn%3YRrl{Hxet=@boFyt=akR{0N?X< AZU6uP literal 0 HcmV?d00001 diff --git a/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/unhighlighted-suggestion-dark.png b/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/unhighlighted-suggestion-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a376141e5e654a8686a94faafcdfda5ef9fe56 GIT binary patch literal 18409 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 literal 0 HcmV?d00001 diff --git a/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/unhighlighted-suggestion-light.png b/vscode/src/autoedits/renderer/image-gen/__image_snapshots__/unhighlighted-suggestion-light.png new file mode 100644 index 0000000000000000000000000000000000000000..bc83b96f146b12d482163b78c520ed17915a99d8 GIT binary patch literal 18077 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 Xt4=t^uabor^RTR>qC}y%(d+*M*8Bna literal 0 HcmV?d00001 diff --git a/vscode/src/autoedits/renderer/image-gen/canvas.ts b/vscode/src/autoedits/renderer/image-gen/canvas.ts new file mode 100644 index 000000000000..d1e5473a128b --- /dev/null +++ b/vscode/src/autoedits/renderer/image-gen/canvas.ts @@ -0,0 +1,222 @@ +import fs from 'node:fs/promises' +import path from 'node:path' +import CanvasKitInit, { type EmulatedCanvas2D } from 'canvaskit-wasm' +import type { + AddedLinesDecorationInfo, + DiffedTextDecorationRange, + SyntaxHighlightedTextDecorationRange, +} from '../decorators/default-decorator' +import type { SYNTAX_HIGHLIGHT_MODE } from './highlight' + +type CanvasKitType = Awaited> +type RenderContext = { + CanvasKit: CanvasKitType + font: ArrayBuffer +} + +type RenderConfig = { + fontSize: number + lineHeight: number + padding: { x: number; y: number } + maxWidth: number + pixelRatio: number + diffHighlightColor: string +} + +let canvasKit: CanvasKitType | null = null +let canvasKitInitPromise: Promise | null = null +let fontCache: ArrayBuffer | null = null + +export async function initCanvas(): Promise { + if (!fontCache) { + fontCache = await initFont() + } + + if (!canvasKitInitPromise) { + canvasKitInitPromise = (async () => { + canvasKit = await CanvasKitInit() + })() + } + + await canvasKitInitPromise +} + +/** + * Load the DejaVuSansMono font, suitable for rendering text onto the canvas. + * Note: This font was selected as it is available in the public domains and renders code clearly. + * It is also what the default system font for MacOS (Menlo) is based on, meaning should be familiar for many users. + * + * We can consider changing this, or allowing the user to provide their own font in the future. + */ +async function initFont(): Promise { + // Note: The font path will be slightly different in tests to production. + // Relative to the test file for our tests, but relative to the dist directory in production + const fontPath = + process.env.NODE_ENV === 'test' + ? path.join(__dirname, '../../../../resources/DejaVuSansMono.ttf') + : path.join(__dirname, 'DejaVuSansMono.ttf') + + const buffer = await fs.readFile(fontPath) + return new Uint8Array(buffer).buffer +} + +function createCanvas( + options: { + width: number + height: number + fontSize: number + scale?: number + }, + context: RenderContext +): { + canvas: EmulatedCanvas2D + ctx: CanvasRenderingContext2D +} { + const { width, height, fontSize, scale } = options + const canvas = context.CanvasKit.MakeCanvas(width, height) + canvas.loadFont(context.font, { family: 'DejaVuSansMono' }) + const ctx = canvas.getContext('2d') + if (!ctx) { + throw new Error('Failed to get 2D context') + } + ctx.font = `${fontSize}px DejaVuSansMono` + if (scale) { + ctx.scale(scale, scale) + } + return { canvas, ctx } +} + +function drawText( + ctx: CanvasRenderingContext2D, + line: AddedLinesDecorationInfo, + position: { x: number; y: number }, + mode: SYNTAX_HIGHLIGHT_MODE, + config: RenderConfig +): number { + const syntaxRanges = line.highlightedRanges.filter( + (range): range is SyntaxHighlightedTextDecorationRange => range.type === 'syntax-highlighted' + ) + + if (syntaxRanges.length === 0) { + // No syntax highlighting, we probably don't support this language via Shiki + // Default to white or black depending on the theme + ctx.fillStyle = mode === 'dark' ? '#ffffff' : '#000000' + ctx.fillText(line.lineText, position.x, position.y + config.fontSize) + return ctx.measureText(line.lineText).width + } + + let xPos = position.x + for (const token of syntaxRanges) { + const content = line.lineText.substring(token.range[0], token.range[1]) + ctx.fillStyle = token.color + ctx.fillText(content, xPos, position.y + config.fontSize) + xPos += ctx.measureText(content).width + } + + return xPos +} + +function drawDiffColors( + ctx: CanvasRenderingContext2D, + line: AddedLinesDecorationInfo, + position: { x: number; y: number }, + config: RenderConfig +): void { + const addedRanges = line.highlightedRanges.filter( + (range): range is DiffedTextDecorationRange => range.type === 'diff-added' + ) + + if (addedRanges.length === 0) { + return + } + + ctx.fillStyle = config.diffHighlightColor + + for (const range of addedRanges) { + // Calculate width of text before the highlight + const preHighlightWidth = ctx.measureText(line.lineText.slice(0, range.range[0])).width + // Calculate width of the highlighted section + const highlightWidth = ctx.measureText(line.lineText.slice(range.range[0], range.range[1])).width + + // Draw highlight at correct position + ctx.fillRect(position.x + preHighlightWidth, position.y, highlightWidth, config.lineHeight) + } +} + +export function drawDecorationsToCanvas( + decorations: AddedLinesDecorationInfo[], + mode: SYNTAX_HIGHLIGHT_MODE, + /** + * Specific configuration to determine how we render the canvas. + * Consider changing this, or supporting configuration from the user (e.g. font-size) + */ + renderConfig: RenderConfig = { + fontSize: 12, + lineHeight: 14, + padding: { x: 6, y: 2 }, + maxWidth: 600, + pixelRatio: 2, + diffHighlightColor: 'rgba(35, 134, 54, 0.2)', + } +): EmulatedCanvas2D { + if (!canvasKit || !fontCache) { + // TODO: Log these errors, useful to see if we run into issues where we're not correctly + // initializing the canvas + throw new Error('Canvas not initialized') + } + + const context: RenderContext = { + CanvasKit: canvasKit, + font: fontCache, + } + + // In order for us to draw to the canvas, we must first determine the correct + // dimensions for the canvas. We can do this with a temporary Canvas that uses the same font + const { ctx: tempCtx } = createCanvas({ height: 10, width: 10, fontSize: 12 }, context) + + // Iterate through each token line, and determine the required width of the canvas (maximum line length) + // and the required height of the canvas (number of lines determined by their line height) + let tempYPos = renderConfig.padding.y + let requiredWidth = 0 + for (const { lineText } of decorations) { + const measure = tempCtx.measureText(lineText) + requiredWidth = Math.max(requiredWidth, renderConfig.padding.x + measure.width) + tempYPos += renderConfig.lineHeight + } + + // Note: We limit the canvas width to avoid the image getting excessively large. + // We should consider possible strategies here, such as tweaking this value or refusing + // to show image decorations for such large images. This could possibly be an area where we would + // prefer an inline decorator. + const canvasWidth = Math.min(requiredWidth + renderConfig.padding.x, renderConfig.maxWidth) + const canvasHeight = tempYPos + renderConfig.padding.y + + // Now we create the actual canvas, ensuring we scale it accordingly to improve the output resolution. + const { canvas, ctx } = createCanvas( + { + height: canvasHeight * renderConfig.pixelRatio, + width: canvasWidth * renderConfig.pixelRatio, + fontSize: renderConfig.fontSize, + // We upscale the canvas to improve resolution, this will be brought back to the intended size + // using the `scale` CSS property when the decoration is rendered. + scale: renderConfig.pixelRatio, + }, + context + ) + + // Paint text and colors onto the canvas + let yPos = renderConfig.padding.y + for (const line of decorations) { + const position = { x: renderConfig.padding.x, y: yPos } + + // Paint any background diff colors first, we will render the text over the top + drawDiffColors(ctx, line, position, renderConfig) + + // Draw the text, this may or may not be syntax highlighted depending on language support + drawText(ctx, line, position, mode, renderConfig) + + yPos += renderConfig.lineHeight + } + + return canvas +} diff --git a/vscode/src/autoedits/renderer/image-gen/highlight.ts b/vscode/src/autoedits/renderer/image-gen/highlight.ts new file mode 100644 index 000000000000..d18a4f2c400a --- /dev/null +++ b/vscode/src/autoedits/renderer/image-gen/highlight.ts @@ -0,0 +1,80 @@ +import type { BundledLanguage, HighlighterGeneric } from 'shiki/types.mjs' + +import type { MultiLineSupportedLanguage } from '../../../completions/detect-multiline' +import type { AddedLinesDecorationInfo } from '../decorators/default-decorator' +import { SYNTAX_HIGHLIGHTING_LANGUAGES, SYNTAX_HIGHLIGHTING_THEMES, getShiki } from './shiki' + +let syntaxHighlighter: HighlighterGeneric | null = null + +export type SYNTAX_HIGHLIGHT_MODE = 'light' | 'dark' + +export async function initSyntaxHighlighter(): Promise { + if (!syntaxHighlighter) { + syntaxHighlighter = await getShiki() + } +} + +/** + * Given a list of added lines, rebuild the code snippet and apply syntax highlighting to it. + * Highlighting colors and themes are provided by Shiki. + * Ideally we could re-use the same syntax highlighting from the users' editor, but this is unfortunately not possible - at least in VS Code. + * See: https://github.com/microsoft/vscode/issues/32813 + */ +export function syntaxHighlightDecorations( + decorations: AddedLinesDecorationInfo[], + lang: string, + mode: SYNTAX_HIGHLIGHT_MODE +): AddedLinesDecorationInfo[] { + if (!syntaxHighlighter) { + throw new Error('Syntax highlighter not initialized') + } + + const highlightLang = SYNTAX_HIGHLIGHTING_LANGUAGES[lang as MultiLineSupportedLanguage]?.name + if (!highlightLang) { + // We have tried to highlight this language, but it is not supported. + // Return unhighlighted decorations, we can still render the diff decorations. + return decorations + } + + // Rebuild the codeblock ready for it to be highlighted + const code = decorations.map(({ lineText }) => lineText).join('\n') + + const { tokens } = syntaxHighlighter.codeToTokens(code, { + theme: SYNTAX_HIGHLIGHTING_THEMES[mode].name, + lang: highlightLang, + }) + + // It is not guaranteed we will have a color to paint the text, so we differentiate between + // white or black text depending on the theme + const defaultColour = mode === 'dark' ? '#ffffff' : '#000000' + + // Process each line's tokens and merge them into highlightedRanges + return decorations.map((decoration, lineIndex) => { + const lineTokens = tokens[lineIndex] || [] + const newHighlightedRanges: AddedLinesDecorationInfo['highlightedRanges'] = [ + ...decoration.highlightedRanges, + ] + + let currentPosition = 0 + for (const token of lineTokens) { + const tokenLength = token.content.length + const startPos = currentPosition + const endPos = currentPosition + tokenLength + + newHighlightedRanges.push({ + type: 'syntax-highlighted', + range: [startPos, endPos], + color: token.color || defaultColour, + }) + currentPosition += tokenLength + } + + // Sort merged ranges by start position + newHighlightedRanges.sort((a, b) => a.range[0] - b.range[0]) + + return { + ...decoration, + highlightedRanges: newHighlightedRanges, + } + }) +} diff --git a/vscode/src/autoedits/renderer/image-gen/index.test.ts b/vscode/src/autoedits/renderer/image-gen/index.test.ts new file mode 100644 index 000000000000..12a2a4918130 --- /dev/null +++ b/vscode/src/autoedits/renderer/image-gen/index.test.ts @@ -0,0 +1,85 @@ +import { toMatchImageSnapshot } from 'jest-image-snapshot' +import { describe, expect, it } from 'vitest' +import { generateSuggestionAsImage, initImageSuggestionService } from '.' +import type { + AddedLinesDecorationInfo, + DiffedTextDecorationRange, +} from '../decorators/default-decorator' + +const makeDiffHighlightedRange = (start: number, end: number): DiffedTextDecorationRange => ({ + type: 'diff-added', + range: [start, end], +}) + +const MOCK_DECORATIONS = [ + { + highlightedRanges: [makeDiffHighlightedRange(4, 55)], + afterLine: 63, + lineText: 'for (const remote of repository.state?.remotes || []) {', + }, + { + highlightedRanges: [makeDiffHighlightedRange(0, 26)], + afterLine: 64, + lineText: ' if (remote.fetchUrl) { ', + }, + { + highlightedRanges: [makeDiffHighlightedRange(0, 43)], + afterLine: 65, + lineText: ' seenRemoteUrls.add(remote.fetchUrl) ', + }, + { + highlightedRanges: [makeDiffHighlightedRange(0, 5)], + afterLine: 66, + lineText: ' } ', + }, + { + highlightedRanges: [makeDiffHighlightedRange(0, 1)], + afterLine: 67, + lineText: '} ', + }, +] as AddedLinesDecorationInfo[] + +expect.extend({ toMatchImageSnapshot }) + +async function generateImageForTest( + decorations: AddedLinesDecorationInfo[], + lang: string +): Promise<{ darkBuffer: Buffer; lightBuffer: Buffer }> { + await initImageSuggestionService() + + const { light, dark } = generateSuggestionAsImage({ + decorations, + lang, + }) + + return { + // These suggestions are generated as dataURLs, so let's convert them back to a useful Buffer for testing + darkBuffer: Buffer.from(dark.split(',')[1], 'base64'), + lightBuffer: Buffer.from(light.split(',')[1], 'base64'), + } +} + +describe('generateSuggestionAsImage', () => { + it('generates correct images, with correct highlighting applied, from a set of tokens', async () => { + const { darkBuffer, lightBuffer } = await generateImageForTest(MOCK_DECORATIONS, 'typescript') + expect(lightBuffer).toMatchImageSnapshot({ + customSnapshotIdentifier: 'highlighted-suggestion-light', + }) + expect(darkBuffer).toMatchImageSnapshot({ + customSnapshotIdentifier: 'highlighted-suggestion-dark', + }) + }) + + it('generates correct images, with correct highlighting applied, from a set of tokens in a language that does not have supported highlighting', async () => { + const { darkBuffer, lightBuffer } = await generateImageForTest( + MOCK_DECORATIONS, + 'non-existent-language' + ) + expect(lightBuffer).toMatchImageSnapshot({ + customSnapshotIdentifier: 'unhighlighted-suggestion-light', + }) + expect(darkBuffer).toMatchImageSnapshot({ + customSnapshotIdentifier: 'unhighlighted-suggestion-dark', + }) + }) +}) diff --git a/vscode/src/autoedits/renderer/image-gen/index.ts b/vscode/src/autoedits/renderer/image-gen/index.ts new file mode 100644 index 000000000000..1e9b7ecfe38a --- /dev/null +++ b/vscode/src/autoedits/renderer/image-gen/index.ts @@ -0,0 +1,24 @@ +import type { AddedLinesDecorationInfo } from '../decorators/default-decorator' +import { drawDecorationsToCanvas, initCanvas } from './canvas' +import { initSyntaxHighlighter, syntaxHighlightDecorations } from './highlight' + +export async function initImageSuggestionService() { + return Promise.all([initSyntaxHighlighter(), initCanvas()]) +} + +interface SuggestionOptions { + decorations: AddedLinesDecorationInfo[] + lang: string +} + +export function generateSuggestionAsImage(options: SuggestionOptions): { light: string; dark: string } { + const { decorations, lang } = options + + const darkDecorations = syntaxHighlightDecorations(decorations, lang, 'dark') + const lightDecorations = syntaxHighlightDecorations(decorations, lang, 'light') + + return { + dark: drawDecorationsToCanvas(darkDecorations, 'dark').toDataURL('image/png'), + light: drawDecorationsToCanvas(lightDecorations, 'light').toDataURL('image/png'), + } +} diff --git a/vscode/src/autoedits/renderer/image-gen/shiki.ts b/vscode/src/autoedits/renderer/image-gen/shiki.ts new file mode 100644 index 000000000000..f6232ac18a8b --- /dev/null +++ b/vscode/src/autoedits/renderer/image-gen/shiki.ts @@ -0,0 +1,60 @@ +import { createHighlighterCore } from 'shiki/core' +import { createOnigurumaEngine } from 'shiki/engine/oniguruma' +import type { BundledLanguage, BundledTheme, HighlighterGeneric } from 'shiki/types.mjs' +import getWasm from 'shiki/wasm' +import type { MultiLineSupportedLanguage } from '../../../completions/detect-multiline' +import type { SYNTAX_HIGHLIGHT_MODE } from './highlight' + +/** + * Mapping of highlight modes to supported themes. + * Note: We are unable to extract the exact syntax highlighting colors from the users' editor. + * These themes have been selected as they work well across most editor themes. + * We can consider changing this, or provide options for the user to select another theme. + */ +export const SYNTAX_HIGHLIGHTING_THEMES: Record< + SYNTAX_HIGHLIGHT_MODE, + { name: BundledTheme; module: Promise } +> = { + light: { name: 'vitesse-light', module: import('shiki/themes/vitesse-light.mjs') }, + dark: { name: 'vitesse-dark', module: import('shiki/themes/vitesse-dark.mjs') }, +} as const + +/** + * Mapping of support completion languages (referenced via vscode.languageId) to + * Shiki syntax highlighting languages + */ +export const SYNTAX_HIGHLIGHTING_LANGUAGES: Record< + MultiLineSupportedLanguage, + { name: BundledLanguage; module: Promise } +> = { + astro: { name: 'astro', module: import('shiki/langs/astro.mjs') }, + c: { name: 'c', module: import('shiki/langs/c.mjs') }, + cpp: { name: 'cpp', module: import('shiki/langs/cpp.mjs') }, + csharp: { name: 'csharp', module: import('shiki/langs/csharp.mjs') }, + css: { name: 'css', module: import('shiki/langs/css.mjs') }, + dart: { name: 'dart', module: import('shiki/langs/dart.mjs') }, + elixir: { name: 'elixir', module: import('shiki/langs/elixir.mjs') }, + go: { name: 'go', module: import('shiki/langs/go.mjs') }, + html: { name: 'html', module: import('shiki/langs/html.mjs') }, + java: { name: 'java', module: import('shiki/langs/java.mjs') }, + javascript: { name: 'javascript', module: import('shiki/langs/javascript.mjs') }, + javascriptreact: { name: 'jsx', module: import('shiki/langs/jsx.mjs') }, + kotlin: { name: 'kotlin', module: import('shiki/langs/kotlin.mjs') }, + php: { name: 'php', module: import('shiki/langs/php.mjs') }, + python: { name: 'python', module: import('shiki/langs/python.mjs') }, + rust: { name: 'rust', module: import('shiki/langs/rust.mjs') }, + svelte: { name: 'svelte', module: import('shiki/langs/svelte.mjs') }, + typescript: { name: 'typescript', module: import('shiki/langs/typescript.mjs') }, + typescriptreact: { name: 'tsx', module: import('shiki/langs/tsx.mjs') }, + vue: { name: 'vue', module: import('shiki/langs/vue.mjs') }, +} as const + +export const getShiki = async () => { + const highlighter = await createHighlighterCore({ + themes: Object.values(SYNTAX_HIGHLIGHTING_THEMES).map(theme => theme.module), + langs: Object.values(SYNTAX_HIGHLIGHTING_LANGUAGES).map(lang => lang.module), + engine: createOnigurumaEngine(getWasm), + }) + + return highlighter as HighlighterGeneric +} diff --git a/vscode/src/completions/detect-multiline.ts b/vscode/src/completions/detect-multiline.ts index 983d9d812083..d8fb32cae17e 100644 --- a/vscode/src/completions/detect-multiline.ts +++ b/vscode/src/completions/detect-multiline.ts @@ -31,7 +31,7 @@ export function endsWithBlockStart(text: string, languageId: string): string | n // Languages with more than 100 multiline completions in the last month and CAR > 20%: // https://sourcegraph.looker.com/explore/sourcegraph/cody?qid=JBItVt6VFMlCtMa9KOBmjh&origin_space=562 -const LANGUAGES_WITH_MULTILINE_SUPPORT = [ +export const LANGUAGES_WITH_MULTILINE_SUPPORT = [ 'astro', 'c', 'cpp', @@ -52,13 +52,17 @@ const LANGUAGES_WITH_MULTILINE_SUPPORT = [ 'typescript', 'typescriptreact', 'vue', -] +] as const + +export type MultiLineSupportedLanguage = (typeof LANGUAGES_WITH_MULTILINE_SUPPORT)[number] export function detectMultiline(params: DetectMultilineParams): DetectMultilineResult { const { docContext, languageId, position } = params const { prefix, prevNonEmptyLine, nextNonEmptyLine, currentLinePrefix, currentLineSuffix } = docContext - const isMultilineSupported = LANGUAGES_WITH_MULTILINE_SUPPORT.includes(languageId) + const isMultilineSupported = LANGUAGES_WITH_MULTILINE_SUPPORT.includes( + languageId as MultiLineSupportedLanguage + ) const blockStart = endsWithBlockStart(prefix, languageId) const isBlockStartActive = Boolean(blockStart)