From 32c52a2e338941f9542ecd48d0449bfafd0a34cf Mon Sep 17 00:00:00 2001 From: rossirpaulo Date: Thu, 30 Jul 2026 13:03:52 -0700 Subject: [PATCH 1/5] Add icon and README to BAML extension --- .github/workflows/release-baml-language.yml | 6 ++-- typescript2/app-vscode-ext/README.md | 32 ++++++++++++++++++++ typescript2/app-vscode-ext/baml-logo.png | Bin 0 -> 39722 bytes typescript2/app-vscode-ext/package.json | 7 ++++- 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 typescript2/app-vscode-ext/README.md create mode 100644 typescript2/app-vscode-ext/baml-logo.png diff --git a/.github/workflows/release-baml-language.yml b/.github/workflows/release-baml-language.yml index 5723fe7485c..4dc6c00483d 100644 --- a/.github/workflows/release-baml-language.yml +++ b/.github/workflows/release-baml-language.yml @@ -414,11 +414,13 @@ jobs: if [[ "$vsix" != "$dest" ]]; then mv "$vsix" "$dest" fi - - name: Reject bundled native binaries + - name: Validate VSIX contents run: | set -euo pipefail vsix="typescript2/app-vscode-ext/baml-language-${{ needs.plan.outputs.version }}.vsix" - unzip -l "$vsix" | tee vsix-list.txt + unzip -Z1 "$vsix" | tee vsix-list.txt + grep -Fxq 'extension/readme.md' vsix-list.txt + grep -Fxq 'extension/baml-logo.png' vsix-list.txt ! grep -E 'dist/baml-cli|baml-cli|baml-pack-host' vsix-list.txt - uses: actions/upload-artifact@v4 with: diff --git a/typescript2/app-vscode-ext/README.md b/typescript2/app-vscode-ext/README.md new file mode 100644 index 00000000000..3c2472521ca --- /dev/null +++ b/typescript2/app-vscode-ext/README.md @@ -0,0 +1,32 @@ +# BAML + +BAML language support for Visual Studio Code and Cursor, including syntax +highlighting, hover information, completions, diagnostics, go-to-definition, +and the BAML playground. + +## Installation + +This extension is distributed with the BAML toolchain and installed from the +command line using `baml ide install`. Its version is matched to the active +BAML toolchain. + +## Updating + +If your machine's active toolchain tracks the `canary` or `nightly` channel, +update the toolchain and reinstall its matching extension: + +```bash +# Visual Studio Code +baml toolchain update && baml ide install --code + +# Cursor +baml toolchain update && baml ide install --cursor +``` + +An exact-version toolchain does not advance automatically. Select or install +the newer toolchain first, then run the appropriate `baml ide install` command +again. + +## Documentation + +See the [BAML documentation](https://docs.boundaryml.com). diff --git a/typescript2/app-vscode-ext/baml-logo.png b/typescript2/app-vscode-ext/baml-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ed480f93bde47c3adfbe597c6c3fd440cbf1b4e0 GIT binary patch literal 39722 zcmV)GK)%0;P)~V5G7KSbR_-Yk@oDa_UzH_5B=IdS|hV(B~mL=ORZ=?(1HepKzITe49sA>H{CPs z{p)AyRaM4DL}u2Dx^?f3s2(bM-c)A9jeBq0xF#|pGSd9|-?J8pz` zWT87Yjc2Y;a*|Qbl7rV^Q$eYP@qYz` z%I&pHl&8Fm#t7H>S|sG^#4s^W@ij+R6Ar}#0UxJ~T4zg+kX~!NXfT|z(frtXrVN3? z{$Q_&)bk);qx9bl0*l#~K+bhr@!m@+UhQdG=U3=S`K zNb#?fa^N&arR7QWxjHGFu>+CnXpSq_D5Z9AxH$fE`O}id1J#>UJq?DFuU40{N6o+~ zpGLt!+t#6-4TV`v_(rHhheLoIF+uQ3j!9EGI|pnGFA0ysLCdr}LukxvFh=+VgO}!| zXh??6wO``L&VireOc_R8#?>`Kc`gsgq?ZFX&q#pEPLgFRpDRN~S)7+#1)zje2q^|a-3D%SC*lj+m9R`dQFq)04#LRE)k`5Vi-<&IGQvs{!J+t=R_pjnu6O5-Z*-3 z-FZ7BhS8LrgXd_|w&Xa^n3mLDWbh%CaZ1hcl4H;*2ZjuOI6NF594)SYDNarAsh&`H zjW3B;39ikj_zQ}NBhDE)z%!qU2vTQ5smJjH$byP_HVRA&N0pPdm#dSLV*a#FHi`N% z9OYMYYEpEQ=y81s=uVM?=Xm3EKy$!ao@Tr$o>Pg7;3+=izR5A#xE|+hIj51*Ne(xy z$Mt^!rI1rx3d1E$_?l;o%W3^PQY&YP00XtWrPDr})6|sKL-gjWi`sns31y zx^yo&6q+brjy8qm@TGWf>stjThX*b{rw_EzQ;bh@3aOyU*?^>9(ue{Kj`q6X3OFV$ zxz;>&PSmA%rB0L_(>y6x8DmdQlN4z++;KgvBRD*g!!ru*YgP7?;pgCz@Y4R3%#$0yO(qI@c)q6U?jCVP6#m4U&ZDru``K7|V8MCm|AnmBA{%bnH;iP$~{-XLo`IC5( z@PNS=_dmM~C<#SVWJ*NBM?0s*s~J#=9?g@SjAl?898H{n<1#Hj$0$
GC*q%|Yp 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ⅆ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 O0000 Date: Fri, 31 Jul 2026 12:42:17 -0700 Subject: [PATCH 2/5] Update BAML extension copy --- typescript2/app-vscode-ext/README.md | 2 +- typescript2/app-vscode-ext/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript2/app-vscode-ext/README.md b/typescript2/app-vscode-ext/README.md index 3c2472521ca..895168548a7 100644 --- a/typescript2/app-vscode-ext/README.md +++ b/typescript2/app-vscode-ext/README.md @@ -29,4 +29,4 @@ again. ## Documentation -See the [BAML documentation](https://docs.boundaryml.com). +See the [BAML quickstart](https://boundaryml.com/quickstart). diff --git a/typescript2/app-vscode-ext/package.json b/typescript2/app-vscode-ext/package.json index bd230f126a8..91ff7135d70 100644 --- a/typescript2/app-vscode-ext/package.json +++ b/typescript2/app-vscode-ext/package.json @@ -1,7 +1,7 @@ { "name": "baml-language", "displayName": "BAML", - "description": "BAML language support — syntax highlighting, hover, completions, diagnostics, go-to-definition", + "description": "BAML, the Programming Language for AI.", "icon": "baml-logo.png", "version": "0.15.0", "publisher": "Boundary", From e5842c29eee7b6b4e29455d1c13f38d0419162de Mon Sep 17 00:00:00 2001 From: rossirpaulo Date: Fri, 31 Jul 2026 12:47:32 -0700 Subject: [PATCH 3/5] Format VS Code extension manifest --- typescript2/app-vscode-ext/package.json | 162 +++++++++++++----------- 1 file changed, 87 insertions(+), 75 deletions(-) diff --git a/typescript2/app-vscode-ext/package.json b/typescript2/app-vscode-ext/package.json index 91ff7135d70..4c55529115b 100644 --- a/typescript2/app-vscode-ext/package.json +++ b/typescript2/app-vscode-ext/package.json @@ -1,113 +1,103 @@ { - "name": "baml-language", - "displayName": "BAML", - "description": "BAML, the Programming Language for AI.", - "icon": "baml-logo.png", - "version": "0.15.0", - "publisher": "Boundary", - "private": true, - "type": "commonjs", - "engines": { - "vscode": ">=1.63.0" - }, - "categories": [ - "Programming Languages" - ], - "main": "./dist/extension.js", "activationEvents": [ "onLanguage:baml" ], + "categories": [ + "Programming Languages" + ], "contributes": { - "languages": [ - { - "id": "baml", - "aliases": ["BAML", "baml"], - "extensions": [".baml"], - "configuration": "./language-configuration.json", - "icon": { - "light": "./baml-logo.png", - "dark": "./baml-logo.png" - } - } - ], - "grammars": [ - { - "language": "baml", - "scopeName": "source.baml", - "path": "./syntaxes/baml.tmLanguage.json" - } - ], - "configurationDefaults": { - "[baml]": { - "editor.semanticHighlighting.enabled": true - }, - "editor.semanticTokenColorCustomizations": { - "rules": { - "namespace:baml": "#808080CC" - } - } - }, "commands": [ { + "category": "BAML", "command": "baml.openPlayground", - "title": "Open Playground", - "category": "BAML" + "title": "Open Playground" }, { + "category": "BAML", "command": "baml.openLogs", - "title": "Open Logs", - "category": "BAML" + "title": "Open Logs" }, { + "category": "BAML", "command": "baml.restartLanguageServer", - "title": "Restart Language Server", - "category": "BAML" + "title": "Restart Language Server" }, { + "category": "BAML", "command": "baml.stopLanguageServer", - "title": "Stop Language Server", - "category": "BAML" + "title": "Stop Language Server" }, { + "category": "BAML", "command": "baml.startLanguageServer", - "title": "Start Language Server", - "category": "BAML" + "title": "Start Language Server" } ], "configuration": { - "type": "object", - "title": "BAML", "properties": { "baml.cliPath": { - "type": ["string", "null"], "default": null, "description": "Path to the baml wrapper. If not set, uses 'baml' on PATH.", - "scope": "machine-overridable" + "scope": "machine-overridable", + "type": [ + "string", + "null" + ] }, "baml.trace.server": { - "scope": "window", - "type": "string", - "enum": ["off", "messages", "verbose"], "default": "off", - "description": "Logging level between the VS Code extension and the language server." + "description": "Logging level between the VS Code extension and the language server.", + "enum": [ + "off", + "messages", + "verbose" + ], + "scope": "window", + "type": "string" + } + }, + "title": "BAML", + "type": "object" + }, + "configurationDefaults": { + "[baml]": { + "editor.semanticHighlighting.enabled": true + }, + "editor.semanticTokenColorCustomizations": { + "rules": { + "namespace:baml": "#808080CC" } } - } - }, - "scripts": { - "sync:grammar": "pnpm --filter @b/pkg-grammar build", - "predev": "pnpm run sync:grammar", - "dev": "tsup --watch --sourcemap", - "prebuild": "pnpm run sync:grammar", - "build": "pnpm run typecheck && tsup", - "build:cli": "cargo build -p baml_cli --manifest-path ../../baml_language/Cargo.toml", - "typecheck": "tsc --noEmit", - "test": "vitest", - "test:run": "vitest run" + }, + "grammars": [ + { + "language": "baml", + "path": "./syntaxes/baml.tmLanguage.json", + "scopeName": "source.baml" + } + ], + "languages": [ + { + "aliases": [ + "BAML", + "baml" + ], + "configuration": "./language-configuration.json", + "extensions": [ + ".baml" + ], + "icon": { + "dark": "./baml-logo.png", + "light": "./baml-logo.png" + }, + "id": "baml" + } + ] }, "dependencies": { "vscode-languageclient": "^9.0.0" }, + "description": "BAML, the Programming Language for AI.", "devDependencies": { "@b/pkg-grammar": "workspace:*", "@types/node": "^22.0.0", @@ -115,5 +105,27 @@ "tsup": "^8.0.0", "typescript": "^5.7.0", "vitest": "^4.0.16" - } + }, + "displayName": "BAML", + "engines": { + "vscode": ">=1.63.0" + }, + "icon": "baml-logo.png", + "main": "./dist/extension.js", + "name": "baml-language", + "private": true, + "publisher": "Boundary", + "scripts": { + "build": "pnpm run typecheck && tsup", + "build:cli": "cargo build -p baml_cli --manifest-path ../../baml_language/Cargo.toml", + "dev": "tsup --watch --sourcemap", + "prebuild": "pnpm run sync:grammar", + "predev": "pnpm run sync:grammar", + "sync:grammar": "pnpm --filter @b/pkg-grammar build", + "test": "vitest", + "test:run": "vitest run", + "typecheck": "tsc --noEmit" + }, + "type": "commonjs", + "version": "0.15.0" } From 46e23f311491b04ccda1a2929d9ad37c0fe2264d Mon Sep 17 00:00:00 2001 From: rossirpaulo Date: Fri, 31 Jul 2026 12:52:54 -0700 Subject: [PATCH 4/5] Make JSON version stamping order-independent --- scripts/baml-language-version | 18 ++++++++++++++++-- scripts/tests/test_baml_language_version.py | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/scripts/baml-language-version b/scripts/baml-language-version index 1595176c834..dce4cf5716f 100755 --- a/scripts/baml-language-version +++ b/scripts/baml-language-version @@ -612,6 +612,20 @@ def replace_regex(path: Path, pattern: str, replacement: str) -> None: path.write_text(new_text, encoding="utf-8") +def replace_json_version(path: Path, version: str) -> None: + text = path.read_text(encoding="utf-8") + new_text, count = re.subn( + r'^(\s*"version"\s*:\s*)"[^"]*"(?P,?)$', + lambda match: f'{match.group(1)}"{version}"{match.group("comma")}', + text, + count=1, + flags=re.MULTILINE, + ) + if count != 1: + fail(f"could not update expected version surface in {path.relative_to(ROOT)}") + path.write_text(new_text, encoding="utf-8") + + def stamp(plan: ReleasePlan) -> None: BAML_VERSION_RS.parent.mkdir(parents=True, exist_ok=True) BAML_VERSION_RS.write_text( @@ -647,10 +661,10 @@ def stamp(plan: ReleasePlan) -> None: r'^version = ".*"$', f'version = "{plan.crates_io_version}"', ) - replace_regex(VSIX_PACKAGE, r'^ "version": ".*",$', f' "version": "{plan.canonical_version}",') + replace_json_version(VSIX_PACKAGE, plan.canonical_version) for package in NPM_PACKAGES: if package.exists(): - replace_regex(package, r'^ "version": ".*",$', f' "version": "{plan.canonical_version}",') + replace_json_version(package, plan.canonical_version) replace_regex( GO_RUNTIME_VERSION, r'^const DefaultRuntimeVersion = ".*"$', diff --git a/scripts/tests/test_baml_language_version.py b/scripts/tests/test_baml_language_version.py index 06cf2d83a49..bad4ad77946 100644 --- a/scripts/tests/test_baml_language_version.py +++ b/scripts/tests/test_baml_language_version.py @@ -96,7 +96,7 @@ def make_fixture(self, version: str) -> None: ): self.write( package, - json.dumps({"version": version, "name": "fixture"}, indent=2) + json.dumps({"name": "fixture", "version": version}, indent=2) + "\n", ) self.write( From 343ceccb3ad5c9322ce63a9aea185a6aa9c9c34f Mon Sep 17 00:00:00 2001 From: rossirpaulo Date: Fri, 31 Jul 2026 13:09:13 -0700 Subject: [PATCH 5/5] Test JSON version comma preservation --- scripts/tests/test_baml_language_version.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/tests/test_baml_language_version.py b/scripts/tests/test_baml_language_version.py index bad4ad77946..274f0b67cc7 100644 --- a/scripts/tests/test_baml_language_version.py +++ b/scripts/tests/test_baml_language_version.py @@ -265,6 +265,27 @@ def test_prerelease_plan_and_stamp_cover_every_shipping_sdk(self) -> None: self.run_tool("check") self.assertEqual(set(self.surface_versions().values()), {"1.2.3"}) + def test_replace_json_version_preserves_optional_comma(self) -> None: + package = self.write( + "package.json", + '{\n "name": "fixture",\n "version": "1.2.3",\n "private": true\n}\n', + ) + version_tool_module().replace_json_version(package, "2.3.4") + self.assertEqual( + package.read_text(encoding="utf-8"), + '{\n "name": "fixture",\n "version": "2.3.4",\n "private": true\n}\n', + ) + + package.write_text( + '{\n "name": "fixture",\n "version": "1.2.3"\n}\n', + encoding="utf-8", + ) + version_tool_module().replace_json_version(package, "2.3.4") + self.assertEqual( + package.read_text(encoding="utf-8"), + '{\n "name": "fixture",\n "version": "2.3.4"\n}\n', + ) + def test_exact_named_field_checks_reject_loose_version_text(self) -> None: rust_version = ( self.root