{"_id":"@openuidev/angular-lang","_rev":"5-b7d7d2f003a095109139b86607319090","name":"@openuidev/angular-lang","dist-tags":{"latest":"0.4.2"},"versions":{"0.3.0":{"name":"@openuidev/angular-lang","version":"0.3.0","keywords":["openui","generative-ui","angular","llm","streaming","renderer","parser","ai","components","prompt-generation","zod","ui-generation","model-driven-ui","openui-lang"],"author":{"name":"engineering@thesys.dev"},"license":"MIT","_id":"@openuidev/angular-lang@0.3.0","maintainers":[{"name":"abhithesys","email":"abhishek@thesys.dev"}],"homepage":"https://openui.com","bugs":{"url":"https://github.com/thesysdev/openui/issues"},"dist":{"shasum":"6c7d2a65585339a583d854fd5d3c1520e084202f","tarball":"https://registry.npmjs.org/@openuidev/angular-lang/-/angular-lang-0.3.0.tgz","fileCount":6,"integrity":"sha512-KbYuITnksiFZeXE0h7hjWG2vIoYbY43qFjxswKdapn9bSBiZ8rFSbfnVm72F0GH8nbitRoBTvI97b7VWVYAcVA==","signatures":[{"sig":"MEYCIQC+MLW9BL5QDNrBvc96dZ+YbEJSzjLoVWfTzbn6lQrnOQIhAKKXfchsYYbxhK8zkd9zUZ4RA2BK2Afa25C4gy17zr3Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127717},"main":"./dist/fesm2022/openuidev-angular-lang.mjs","type":"module","_from":"file:openuidev-angular-lang-0.3.0.tgz","types":"./dist/types/openuidev-angular-lang.d.ts","module":"./dist/fesm2022/openuidev-angular-lang.mjs","engines":{"node":"^22.22.3 || ^24.15.0 || ^26.0.0"},"exports":{".":{"types":"./dist/types/openuidev-angular-lang.d.ts","default":"./dist/fesm2022/openuidev-angular-lang.mjs"},"./package.json":"./package.json"},"scripts":{"ci":"pnpm run typecheck && tsc -p tsconfig.test.json --noEmit && pnpm run test && pnpm run lint:check && pnpm run format:check","test":"vitest run --passWithNoTests","build":"ng-packagr -p ng-package.json","watch":"ng-packagr -p ng-package.json -w","lint:fix":"eslint ./src --fix","typecheck":"tsc --project tsconfig.lib.json --noEmit","format:fix":"prettier --write ./src","lint:check":"eslint ./src","format:check":"prettier --check ./src"},"_npmUser":{"name":"abhithesys","email":"abhishek@thesys.dev"},"_resolved":"/private/var/folders/n0/k94j510n4slfvfdhf04dm50m0000gn/T/e454611d4539602c4fd753747101d1cf/openuidev-angular-lang-0.3.0.tgz","_integrity":"sha512-KbYuITnksiFZeXE0h7hjWG2vIoYbY43qFjxswKdapn9bSBiZ8rFSbfnVm72F0GH8nbitRoBTvI97b7VWVYAcVA==","devEngines":{"runtime":{"name":"node","onFail":"download","version":"24.15.0"}},"repository":{"url":"git+https://github.com/thesysdev/openui.git","type":"git","directory":"packages/angular-lang"},"_npmVersion":"10.9.4","description":"Angular bindings for OpenUI Lang. Define model-renderable Angular components, generate prompts from those definitions, and render OpenUI Lang in Angular applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"tslib":"^2.8.1","@openuidev/lang-core":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node":"runtime:24.15.0","rxjs":"^7.8.2","jsdom":"^26.1.0","vitest":"^4.1.0","ng-packagr":"^22.1.1","typescript":"^6.0.3","@angular/core":"^22.1.5","@angular/common":"^22.1.5","@angular/compiler":"^22.1.5","@angular/compiler-cli":"^22.1.5","@angular/platform-browser":"^22.1.5"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0","rxjs":"^7.8.2","@angular/core":"^22.1.5","@angular/common":"^22.1.5"},"_npmOperationalInternal":{"tmp":"tmp/angular-lang_0.3.0_1789988515207_0.9391951104637346","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@openuidev/angular-lang","version":"0.3.2","keywords":["openui","generative-ui","angular","llm","streaming","renderer","parser","ai","components","prompt-generation","zod","ui-generation","model-driven-ui","openui-lang"],"author":{"name":"engineering@thesys.dev"},"license":"MIT","_id":"@openuidev/angular-lang@0.3.2","maintainers":[{"name":"abhithesys","email":"abhishek@thesys.dev"}],"homepage":"https://openui.com","bugs":{"url":"https://github.com/thesysdev/openui/issues"},"dist":{"shasum":"fb4ec2cbe2d430febcb81988fa74fba66f83dd83","tarball":"https://registry.npmjs.org/@openuidev/angular-lang/-/angular-lang-0.3.2.tgz","fileCount":6,"integrity":"sha512-CqZ5k4nH544XZpH5SXIDv9i0NbLDHTz4f/eP3AnvLqLEXsPwkhpZUn103HVIqqdP8/VIW/480IYm69oHo/aE0w==","signatures":[{"sig":"MEUCIQDlGNYCVrejtFykZYElSB+3G41Og0/WgqDZ37Np0aHIggIgNNZ7bhUkiV/2YWapZYGfMrSemCVvvqEltqyywBe6TmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE4UOtG/1pO65MZX6rNbW7/CIym62iqVNcSyDMd8xSbAAiAccVqgG7OZs3gCQAx61LFBrTxo/+DZO7FwPqeIYZgmaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@openuidev%2fangular-lang@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127717},"main":"./dist/fesm2022/openuidev-angular-lang.mjs","type":"module","_from":"file:openuidev-angular-lang-0.3.2.tgz","types":"./dist/types/openuidev-angular-lang.d.ts","module":"./dist/fesm2022/openuidev-angular-lang.mjs","engines":{"node":"^22.22.3 || ^24.15.0 || ^26.0.0"},"exports":{".":{"types":"./dist/types/openuidev-angular-lang.d.ts","default":"./dist/fesm2022/openuidev-angular-lang.mjs"},"./package.json":"./package.json"},"scripts":{"ci":"pnpm run typecheck && tsc -p tsconfig.test.json --noEmit && pnpm run test && pnpm run lint:check && pnpm run format:check","test":"vitest run --passWithNoTests","build":"ng-packagr -p ng-package.json","watch":"ng-packagr -p ng-package.json -w","lint:fix":"eslint ./src --fix","typecheck":"tsc --project tsconfig.lib.json --noEmit","format:fix":"prettier --write ./src","lint:check":"eslint ./src","format:check":"prettier --check ./src"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"05735ad5-714d-4c02-b8eb-80732a2476ec"}},"_resolved":"/tmp/8d293084e7c9de69c2c9b7d8b7c2073e/openuidev-angular-lang-0.3.2.tgz","_integrity":"sha512-CqZ5k4nH544XZpH5SXIDv9i0NbLDHTz4f/eP3AnvLqLEXsPwkhpZUn103HVIqqdP8/VIW/480IYm69oHo/aE0w==","devEngines":{"runtime":{"name":"node","onFail":"download","version":"24.15.0"}},"repository":{"url":"git+https://github.com/thesysdev/openui.git","type":"git","directory":"packages/angular-lang"},"_npmVersion":"11.6.4","description":"Angular bindings for OpenUI Lang. Define model-renderable Angular components, generate prompts from those definitions, and render OpenUI Lang in Angular applications.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"tslib":"^2.8.1","@openuidev/lang-core":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node":"runtime:24.15.0","rxjs":"^7.8.2","jsdom":"^26.1.0","vitest":"^4.1.0","ng-packagr":"^22.1.1","typescript":"^6.0.3","@angular/core":"^22.1.5","@angular/common":"^22.1.5","@angular/compiler":"^22.1.5","@angular/compiler-cli":"^22.1.5","@angular/platform-browser":"^22.1.5"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0","rxjs":"^7.8.2","@angular/core":"^22.1.5","@angular/common":"^22.1.5"},"_npmOperationalInternal":{"tmp":"tmp/angular-lang_0.3.2_1791464669618_0.6793880930363387","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@openuidev/angular-lang","version":"0.4.0","keywords":["openui","generative-ui","angular","llm","streaming","renderer","parser","ai","components","prompt-generation","zod","ui-generation","model-driven-ui","openui-lang"],"author":{"name":"engineering@thesys.dev"},"license":"MIT","_id":"@openuidev/angular-lang@0.4.0","maintainers":[{"name":"abhithesys","email":"abhishek@thesys.dev"}],"homepage":"https://openui.com","bugs":{"url":"https://github.com/thesysdev/openui/issues"},"dist":{"shasum":"3b4af796348570e603c116bbbd0649e97c6ebfba","tarball":"https://registry.npmjs.org/@openuidev/angular-lang/-/angular-lang-0.4.0.tgz","fileCount":6,"integrity":"sha512-vNWaDFDGQmCPEYwKxTo9V12lIOXturk1QO2NxOOu6MHK+rH5dpGiGy2CIOcppah2ubdFj6EoKz7P9zhrOZI0RA==","signatures":[{"sig":"MEQCIHNY3B1NA4b86hGjvWUAr8MPimtH+TtOdLRuSr2jnfbSAiBcLFt/xDdhwXcgWohyUEc0/8Ruo09tKDW8eOw033iN+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDdgYKnD8R8h7S33VbpqAr9SrX+AOj9ABmlf5PNPAO/uAiAv9EDnS9QTBHQVxb9RYzELi1WmKaAK3RaYY9QBYRIR7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@openuidev%2fangular-lang@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127717},"main":"./dist/fesm2022/openuidev-angular-lang.mjs","type":"module","_from":"file:openuidev-angular-lang-0.4.0.tgz","types":"./dist/types/openuidev-angular-lang.d.ts","module":"./dist/fesm2022/openuidev-angular-lang.mjs","engines":{"node":"^22.22.3 || ^24.15.0 || ^26.0.0"},"exports":{".":{"types":"./dist/types/openuidev-angular-lang.d.ts","default":"./dist/fesm2022/openuidev-angular-lang.mjs"},"./package.json":"./package.json"},"scripts":{"ci":"pnpm run typecheck && tsc -p tsconfig.test.json --noEmit && pnpm run test && pnpm run lint:check && pnpm run format:check","test":"vitest run --passWithNoTests","build":"ng-packagr -p ng-package.json","watch":"ng-packagr -p ng-package.json -w","lint:fix":"eslint ./src --fix","typecheck":"tsc --project tsconfig.lib.json --noEmit","format:fix":"prettier --write ./src","lint:check":"eslint ./src","format:check":"prettier --check ./src"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"05735ad5-714d-4c02-b8eb-80732a2476ec"}},"_resolved":"/tmp/a4f6337dba747689bc6d45f35e231777/openuidev-angular-lang-0.4.0.tgz","_integrity":"sha512-vNWaDFDGQmCPEYwKxTo9V12lIOXturk1QO2NxOOu6MHK+rH5dpGiGy2CIOcppah2ubdFj6EoKz7P9zhrOZI0RA==","devEngines":{"runtime":{"name":"node","onFail":"download","version":"24.15.0"}},"repository":{"url":"git+https://github.com/thesysdev/openui.git","type":"git","directory":"packages/angular-lang"},"_npmVersion":"11.6.4","description":"Angular bindings for OpenUI Lang. Define model-renderable Angular components, generate prompts from those definitions, and render OpenUI Lang in Angular applications.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"tslib":"^2.8.1","@openuidev/lang-core":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node":"runtime:24.15.0","rxjs":"^7.8.2","jsdom":"^26.1.0","vitest":"^4.1.0","ng-packagr":"^22.1.1","typescript":"^6.0.3","@angular/core":"^22.1.5","@angular/common":"^22.1.5","@angular/compiler":"^22.1.5","@angular/compiler-cli":"^22.1.5","@angular/platform-browser":"^22.1.5"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0","rxjs":"^7.8.2","@angular/core":"^22.1.5","@angular/common":"^22.1.5"},"_npmOperationalInternal":{"tmp":"tmp/angular-lang_0.4.0_1791643010375_0.6837689760040138","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@openuidev/angular-lang","version":"0.4.1","keywords":["openui","generative-ui","angular","llm","streaming","renderer","parser","ai","components","prompt-generation","zod","ui-generation","model-driven-ui","openui-lang"],"author":{"name":"engineering@thesys.dev"},"license":"MIT","_id":"@openuidev/angular-lang@0.4.1","maintainers":[{"name":"abhithesys","email":"abhishek@thesys.dev"}],"homepage":"https://openui.com","bugs":{"url":"https://github.com/thesysdev/openui/issues"},"dist":{"shasum":"c4bca81b20999bd742389b79afdf1393132a2eef","tarball":"https://registry.npmjs.org/@openuidev/angular-lang/-/angular-lang-0.4.1.tgz","fileCount":6,"integrity":"sha512-TsxCV4S46vGlSU9MN1qDvD5MJgEbhCp5le9utz8Gniw2FXDlacq8G7UCHTNNOuKAenMsSPm4pbsQHwHblksY2A==","signatures":[{"sig":"MEQCIENv4YqWOu+Oajfut+yBB6gcuJrlev4FHXKmxwGeZx43AiB0US2dw3yAdLzpMpd2kEdqRaXZ8n/t5/eAVh+lo8JKTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGfetRAj9hNMPviT/vc4bRt5HbmcTSlcVWgMbXXIyoqTAiEAsG48+Xd7vb5hgZflAOrX9iWXfHMXed+4tqlfLLMKXeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@openuidev%2fangular-lang@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127717},"main":"./dist/fesm2022/openuidev-angular-lang.mjs","type":"module","_from":"file:openuidev-angular-lang-0.4.1.tgz","types":"./dist/types/openuidev-angular-lang.d.ts","module":"./dist/fesm2022/openuidev-angular-lang.mjs","engines":{"node":"^22.22.3 || ^24.15.0 || ^26.0.0"},"exports":{".":{"types":"./dist/types/openuidev-angular-lang.d.ts","default":"./dist/fesm2022/openuidev-angular-lang.mjs"},"./package.json":"./package.json"},"scripts":{"ci":"pnpm run typecheck && tsc -p tsconfig.test.json --noEmit && pnpm run test && pnpm run lint:check && pnpm run format:check","test":"vitest run --passWithNoTests","build":"ng-packagr -p ng-package.json","watch":"ng-packagr -p ng-package.json -w","lint:fix":"eslint ./src --fix","typecheck":"tsc --project tsconfig.lib.json --noEmit","format:fix":"prettier --write ./src","lint:check":"eslint ./src","format:check":"prettier --check ./src"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"05735ad5-714d-4c02-b8eb-80732a2476ec"}},"_resolved":"/tmp/40b6bc5916ed46560823244f8afe8210/openuidev-angular-lang-0.4.1.tgz","_integrity":"sha512-TsxCV4S46vGlSU9MN1qDvD5MJgEbhCp5le9utz8Gniw2FXDlacq8G7UCHTNNOuKAenMsSPm4pbsQHwHblksY2A==","devEngines":{"runtime":{"name":"node","onFail":"download","version":"24.15.0"}},"repository":{"url":"git+https://github.com/thesysdev/openui.git","type":"git","directory":"packages/angular-lang"},"_npmVersion":"11.6.4","description":"Angular bindings for OpenUI Lang. Define model-renderable Angular components, generate prompts from those definitions, and render OpenUI Lang in Angular applications.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"tslib":"^2.8.1","@openuidev/lang-core":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node":"runtime:24.15.0","rxjs":"^7.8.2","jsdom":"^26.1.0","vitest":"^4.1.0","ng-packagr":"^22.1.1","typescript":"^6.0.3","@angular/core":"^22.1.5","@angular/common":"^22.1.5","@angular/compiler":"^22.1.5","@angular/compiler-cli":"^22.1.5","@angular/platform-browser":"^22.1.5"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0","rxjs":"^7.8.2","@angular/core":"^22.1.5","@angular/common":"^22.1.5"},"_npmOperationalInternal":{"tmp":"tmp/angular-lang_0.4.1_1791664315074_0.9062042294278261","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"_id":"@openuidev/angular-lang@0.4.2","bugs":{"url":"https://github.com/thesysdev/openui/issues"},"dist":{"shasum":"6679625b27c4c867a3d44cbfabfdfea8affb82ab","tarball":"https://registry.npmjs.org/@openuidev/angular-lang/-/angular-lang-0.4.2.tgz","fileCount":6,"integrity":"sha512-DTEraLa6hP4YUcZgHKFNyije+C9OOwTRYyA2hp8K/jxHllzLXtrOEjsc7s3Vgn7yDEubzRA7zneODGgpmlY7yg==","signatures":[{"sig":"MEQCID4uVJpBV9QCVaosYzTMuNWMpEw5U85/1TQGSC/5KU97AiAntum8/NxelUzD5k+C5+9WwL/Z9s4vsn+Ypwg6SJKYAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAGk9YalR9Mw/MEkbK1b/bluTvp9GJvj86Om4RDjYSHuAiAF6NFs4lf761zg2bVu+zJLKp7UpKr/wTkD02xcNlTihw=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@openuidev%2fangular-lang@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127882},"main":"./dist/fesm2022/openuidev-angular-lang.mjs","name":"@openuidev/angular-lang","type":"module","_from":"file:openuidev-angular-lang-0.4.2.tgz","types":"./dist/types/openuidev-angular-lang.d.ts","author":{"name":"engineering@thesys.dev"},"module":"./dist/fesm2022/openuidev-angular-lang.mjs","engines":{"node":"^22.22.3 || ^24.15.0 || ^26.0.0"},"exports":{".":{"types":"./dist/types/openuidev-angular-lang.d.ts","default":"./dist/fesm2022/openuidev-angular-lang.mjs"},"./package.json":"./package.json"},"license":"MIT","scripts":{"ci":"pnpm run typecheck && tsc -p tsconfig.test.json --noEmit && pnpm run test && pnpm run lint:check && pnpm run format:check","test":"vitest run --passWithNoTests","build":"ng-packagr -p ng-package.json","watch":"ng-packagr -p ng-package.json -w","lint:fix":"eslint ./src --fix","typecheck":"tsc --project tsconfig.lib.json --noEmit","format:fix":"prettier --write ./src","lint:check":"eslint ./src","format:check":"prettier --check ./src"},"version":"0.4.2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"05735ad5-714d-4c02-b8eb-80732a2476ec"}},"homepage":"https://openui.com","keywords":["openui","generative-ui","angular","llm","streaming","renderer","parser","ai","components","prompt-generation","zod","ui-generation","model-driven-ui","openui-lang"],"_resolved":"/tmp/3583f5d4a0e606983c0478e17c4a337b/openuidev-angular-lang-0.4.2.tgz","_integrity":"sha512-DTEraLa6hP4YUcZgHKFNyije+C9OOwTRYyA2hp8K/jxHllzLXtrOEjsc7s3Vgn7yDEubzRA7zneODGgpmlY7yg==","devEngines":{"runtime":{"name":"node","onFail":"download","version":"24.15.0"}},"repository":{"url":"git+https://github.com/thesysdev/openui.git","type":"git","directory":"packages/angular-lang"},"_npmVersion":"11.6.4","description":"Angular bindings for OpenUI Lang. Define model-renderable Angular components, generate prompts from those definitions, and render OpenUI Lang in Angular applications.","directories":{},"maintainers":[{"name":"abhithesys","email":"abhishek@thesys.dev"}],"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"tslib":"^2.8.1","@openuidev/lang-core":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node":"runtime:24.15.0","rxjs":"^7.8.2","jsdom":"^26.1.0","vitest":"^4.1.0","ng-packagr":"^22.1.1","typescript":"^6.0.3","@angular/core":"^22.1.5","@angular/common":"^22.1.5","@angular/compiler":"^22.1.5","@angular/compiler-cli":"^22.1.5","@angular/platform-browser":"^22.1.5"},"peerDependencies":{"zod":"^3.25.0 || ^4.0.0","rxjs":"^7.8.2","@angular/core":"^22.1.5","@angular/common":"^22.1.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/angular-lang_0.4.2_1792038375050_0.508478452091411"}}},"time":{"created":"2026-09-21T11:01:55.037Z","modified":"2026-10-15T04:26:15.600Z","0.3.0":"2026-09-21T11:01:55.350Z","0.3.2":"2026-10-08T13:04:29.720Z","0.4.0":"2026-10-10T14:36:50.496Z","0.4.1":"2026-10-10T20:31:55.157Z","0.4.2":"2026-10-15T04:26:15.133Z"},"bugs":{"url":"https://github.com/thesysdev/openui/issues"},"author":{"name":"engineering@thesys.dev"},"license":"MIT","homepage":"https://openui.com","keywords":["openui","generative-ui","angular","llm","streaming","renderer","parser","ai","components","prompt-generation","zod","ui-generation","model-driven-ui","openui-lang"],"repository":{"url":"git+https://github.com/thesysdev/openui.git","type":"git","directory":"packages/angular-lang"},"description":"Angular bindings for OpenUI Lang. Define model-renderable Angular components, generate prompts from those definitions, and render OpenUI Lang in Angular applications.","maintainers":[{"name":"abhithesys","email":"abhishek@thesys.dev"}],"readme":"# @openuidev/angular-lang\n\nAngular bindings for OpenUI Lang. Define model-renderable Angular components, generate prompts from those definitions, and render streamed OpenUI Lang in an Angular app.\n\n[![npm version](https://img.shields.io/npm/v/@openuidev/angular-lang)](https://www.npmjs.com/package/@openuidev/angular-lang)\n[![monthly downloads](https://img.shields.io/npm/dm/@openuidev/angular-lang)](https://www.npmjs.com/package/@openuidev/angular-lang)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/thesysdev/openui/blob/main/LICENSE)\n\n**Links:** [OpenUI Lang docs](https://openui.com/docs/openui-lang) | [GitHub repo](https://github.com/thesysdev/openui)\n\n## Install\n\n```bash\nnpm install @openuidev/angular-lang\n# or\npnpm add @openuidev/angular-lang\n```\n\n**Peer dependencies:** `@angular/core`, `@angular/common`, `rxjs`, `zod`\n\nThis package works with `@openuidev/lang-core` ^0.4 (OpenUI Lang 0.5). OpenUI Lang 1.0 features need the React renderer, `@openuidev/react-lang` 1.x, for now.\n\n## Overview\n\n`@openuidev/angular-lang` brings the OpenUI Lang runtime to Angular:\n\n1. **Define Angular components** that a model is allowed to call, with Zod schemas for props.\n2. **Generate prompts** from the component library.\n3. **Render streamed output** with `Renderer` / `<openui-renderer>` as OpenUI Lang arrives.\n\n## Quick Start\n\n### 1. Define a component\n\n```ts\nimport { Component, Input } from \"@angular/core\";\nimport { defineComponent } from \"@openuidev/angular-lang\";\nimport { z } from \"zod/v4\";\n\n@Component({\n  selector: \"demo-greeting\",\n  standalone: true,\n  template: `<div>Hello, {{ props?.name }}!</div>`,\n})\nexport class DemoGreetingComponent {\n  @Input() props: { name: string; mood?: \"happy\" | \"excited\" } | null = null;\n  @Input() renderNode: ((value: unknown) => unknown) | null = null;\n  @Input() statementId: string | undefined = undefined;\n}\n\nexport const Greeting = defineComponent({\n  name: \"Greeting\",\n  description: \"Displays a greeting message\",\n  props: z.object({\n    name: z.string().describe(\"The person's name\"),\n    mood: z.enum([\"happy\", \"excited\"]).optional().describe(\"Tone of the greeting\"),\n  }),\n  component: DemoGreetingComponent,\n});\n```\n\n### 2. Create a library\n\n```ts\nimport { createLibrary } from \"@openuidev/angular-lang\";\n\nexport const library = createLibrary({\n  components: [Greeting],\n  root: \"Greeting\",\n});\n```\n\n### 3. Generate a system prompt\n\n```ts\nconst systemPrompt = library.prompt({\n  preamble: \"You are a helpful assistant.\",\n  additionalRules: [\"Always greet the user by name.\"],\n  examples: ['root = Greeting(\"Alice\", \"happy\")'],\n});\n```\n\n### 4. Render streamed output\n\n```ts\nimport { Component } from \"@angular/core\";\nimport { Renderer } from \"@openuidev/angular-lang\";\n\n@Component({\n  selector: \"assistant-message\",\n  standalone: true,\n  imports: [Renderer],\n  template: `\n    <openui-renderer\n      [response]=\"response\"\n      [library]=\"library\"\n      [isStreaming]=\"isStreaming\"\n      (action)=\"handleAction($event)\"\n    />\n  `,\n})\nexport class AssistantMessageComponent {\n  response: string | null = null;\n  isStreaming = false;\n  library = library;\n\n  handleAction(event: unknown) {\n    console.log(\"Action:\", event);\n  }\n}\n```\n\n## API Reference\n\n### Component Definition\n\n| Export | Description |\n| :--- | :--- |\n| `defineComponent(config)` | Define a single component with a name, Zod props schema, description, and Angular renderer |\n| `createLibrary(definition)` | Create a library from an array of defined components |\n\n### Rendering\n\n| Export | Description |\n| :--- | :--- |\n| `Renderer` | Standalone Angular component class for OpenUI Lang rendering |\n| `OpenUiRendererComponent` | Named Angular component export for the same renderer |\n| `<openui-renderer>` | Renderer selector used in templates |\n\n**`RendererProps`:**\n\n| Prop | Type | Description |\n| :--- | :--- | :--- |\n| `response` | `string \\| null` | Raw OpenUI Lang text from the model |\n| `library` | `Library` | Component library from `createLibrary()` |\n| `isStreaming` | `boolean` | Whether the model is still streaming |\n| `onAction` / `(action)` | `(event: ActionEvent) => void` | Callback or output when a component triggers an action |\n| `onStateUpdate` / `(stateUpdate)` | `(state: Record<string, unknown>) => void` | Callback or output when form field values change |\n| `initialState` | `Record<string, unknown>` | Initial form state for hydration |\n| `onParseResult` / `(parseResult)` | `(result: ParseResult \\| null) => void` | Callback or output when the parse result changes |\n| `toolProvider` | `Record<string, Function> \\| McpClientLike \\| null` | Tool provider for executing `Query()` and `Mutation()` calls |\n| `queryLoader` | `Type<unknown> \\| null` | Custom Angular loading component shown during query loading |\n| `onError` / `(error)` | `(errors: OpenUIError[]) => void` | Callback or output for structured parser, query, and render errors |\n\n#### Errors\n\n`ParseResult.meta.errors` contains structured `OpenUIError` objects. Each error has a `code` for consumer-side filtering:\n\n| Code | Meaning |\n| :--- | :--- |\n| `missing-required` | Required prop absent with no default |\n| `null-required` | Required prop explicitly null with no default |\n| `unknown-component` | Component name not found in the library schema |\n| `excess-args` | More positional args passed than the schema defines |\n| `tool-not-found` | A `Query()` or `Mutation()` tool was not registered |\n| `tool-error` | A registered query tool threw an error |\n| `mcp-error` | An MCP tool call returned an MCP error envelope |\n| `render-error` | An Angular component threw during render and the last good subtree was preserved |\n\nErrors stay structured so host apps can log them, surface them, or feed them back into an automated correction loop.\n\n### Parser, Prompt, and Server-Side Utilities\n\n| Export | Description |\n| :--- | :--- |\n| `createParser(library)` | Create a one-shot parser for complete OpenUI Lang text |\n| `createStreamingParser(library)` | Create an incremental parser for streaming input |\n| `generatePrompt(spec)` | Generate OpenUI prompt text from a prompt spec |\n| `generateSystemPrompt(spec)` | Generate a complete system prompt |\n| `mergeStatements(...)` | Merge statement fragments into stable OpenUI Lang output |\n| `parse(source)` | Parse a full OpenUI Lang source string |\n\n### Context Helpers\n\nUse these inside Angular component renderers to interact with the OpenUI runtime.\nCall injection helpers in a constructor or field initializer. In lifecycle hooks\nsuch as `ngOnChanges`, pass an already-injected context to\n`setDefaultValue(options, this.openUi)`; hooks are not injection contexts.\n\n| Helper | Description |\n| :--- | :--- |\n| `injectOpenUiContext()` | Access the full OpenUI runtime context |\n| `injectRenderNode()` | Get the recursive child renderer |\n| `injectTriggerAction()` | Trigger an action event |\n| `injectIsStreaming()` | Return a `Signal<boolean>` that tracks whether the model is streaming |\n| `injectIsQueryLoading()` | Return a `Signal<boolean>` that tracks whether any query is loading |\n| `injectGetFieldValue()` | Read a form field's current value |\n| `injectSetFieldValue()` | Set a form field's value |\n| `injectFormName()` | Get the current form name |\n| `injectStore()` | Access the underlying store |\n| `injectEvaluationContext()` | Access the runtime evaluation context |\n| `setDefaultValue(options, context?)` | Persist a default field value once streaming finishes |\n\nCapture the streaming/loading signals once during component construction, then\ncall them in templates or event handlers:\n\n```ts\nreadonly isStreaming = injectIsStreaming();\nreadonly isQueryLoading = injectIsQueryLoading();\n// Template: <button [disabled]=\"isStreaming() || isQueryLoading()\">Submit</button>\n```\n\nThe full context's `isStreaming` and `isQueryLoading` properties remain boolean\ngetters backed by those reactive values. Reading them in a template also tracks\nupdates. `getFieldValue(formName, name)` tracks store changes when called from a\ntemplate or `computed()`, including components whose OpenUI props never change.\nRead the field inside that reactive consumer instead of saving its initial value.\n\n### Form Validation\n\n| Export | Description |\n| :--- | :--- |\n| `injectFormValidation()` | Access form validation state |\n| `createFormValidation()` | Create a validation context |\n| `provideFormValidation()` | Provide validation state to Angular subtrees |\n| `validate(value, rules)` | Run validation rules against a value |\n| `builtInValidators` | Built-in validators such as required, email, min, and max |\n\n### Types\n\n```ts\nimport type {\n  Library,\n  LibraryDefinition,\n  DefinedComponent,\n  ComponentRenderer,\n  ComponentRenderProps,\n  ComponentGroup,\n  PromptOptions,\n  RendererProps,\n  ActionEvent,\n  ActionPlan,\n  ElementNode,\n  ParseResult,\n  OpenUIError,\n  LibraryJSONSchema,\n  McpClientLike,\n  ToolProvider,\n  ValidationErrorCode,\n} from \"@openuidev/angular-lang\";\n```\n\n## Tool Provider Support\n\nOpenUI Lang connects to your backend through tools. You can register a `toolProvider` to handle data fetching (`Query()`) and updates (`Mutation()`) natively in Angular:\n\n```ts\ntoolProvider = {\n  async get_server_health() {\n    const res = await fetch(\"/api/health\");\n    return res.json();\n  },\n  async create_ticket(args: Record<string, unknown>) {\n    const res = await fetch(\"/api/tickets\", {\n      method: \"POST\",\n      body: JSON.stringify(args),\n      headers: { \"Content-Type\": \"application/json\" },\n    });\n    return res.json();\n  },\n};\n```\n\nThe renderer accepts either:\n\n- a plain async function map\n- an MCP-like client with `callTool({ name, arguments })`\n\n## Component Authoring Contract\n\nAngular components registered with `defineComponent()` should accept these inputs:\n\n- `props`\n- `renderNode`\n- `statementId`\n\nNested rendering, state access, query loading state, and action dispatch all flow through the injected OpenUI context.\n\n## Testing Locally\n\nFrom the workspace root:\n\n```bash\npnpm --filter @openuidev/angular-lang test\npnpm --filter @openuidev/angular-lang typecheck\npnpm --filter @openuidev/angular-lang build\npnpm --filter @openuidev/angular-lang lint:check\npnpm --filter @openuidev/angular-lang format:check\npnpm --filter @openuidev/angular-lang pack\n```\n\nThis package declares its development Node.js runtime through\n`devEngines.runtime`. With the repository's pinned pnpm version, installation\nprovisions Node.js 24.15.0 and package scripts use it without changing the Node.js\nversion used by other workspace packages.\n\n`ng-packagr` builds the library into this package's `dist/` folder. The package\nmanifest declares the runtime and type entry points directly, and `pnpm pack`\nresolves workspace and catalog dependencies when creating the archive. It does\nnot publish to npm.\n\nSuggested manual smoke-test flow:\n\n1. Register a tiny standalone library with two or three demo components.\n2. Render a static response.\n3. Render nested child references through `renderNode`.\n4. Hydrate `initialState` and confirm field reads.\n5. Trigger `setFieldValue()` and verify `(stateUpdate)`.\n6. Execute a `Query()` through a mock `toolProvider`.\n7. Execute a `Mutation()` through a `run` action step.\n8. Confirm custom `queryLoader` behavior during an in-flight query.\n9. Confirm `(error)` receives structured parser, tool, and render errors.\n\n## JSON Schema Output\n\nLibraries can also produce a JSON Schema representation of their components:\n\n```ts\nconst schema = library.toJSONSchema();\n// schema.$defs[\"Greeting\"] -> { properties: {...}, required: [...] }\n```\n\n## Documentation\n\n- [OpenUI Lang guide](https://openui.com/docs/openui-lang)\n- [Language specification 0.5](https://openui.com/docs/openui-lang/specification/v0.5)\n- [Source on GitHub](https://github.com/thesysdev/openui/tree/main/packages/angular-lang)\n\n## License\n\n[MIT](https://github.com/thesysdev/openui/blob/main/LICENSE)\n","readmeFilename":"README.md"}