{"id":50443858,"url":"https://github.com/sichengchen/wasser-ui","last_synced_at":"2026-05-31T20:02:46.964Z","repository":{"id":357278101,"uuid":"1235806630","full_name":"sichengchen/wasser-ui","owner":"sichengchen","description":"Generative UI infrastructure for agent-driven applications. Bring your own components and stack.","archived":false,"fork":false,"pushed_at":"2026-05-12T19:54:55.000Z","size":525,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T21:30:00.866Z","etag":null,"topics":["gen-ui","generative-ui","generative-user-interface"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sichengchen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-11T17:12:45.000Z","updated_at":"2026-05-12T19:55:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sichengchen/wasser-ui","commit_stats":null,"previous_names":["sichengchen/water-ui","sichengchen/wasser-ui"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/sichengchen/wasser-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sichengchen%2Fwasser-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sichengchen%2Fwasser-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sichengchen%2Fwasser-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sichengchen%2Fwasser-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sichengchen","download_url":"https://codeload.github.com/sichengchen/wasser-ui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sichengchen%2Fwasser-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33746528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gen-ui","generative-ui","generative-user-interface"],"created_at":"2026-05-31T20:02:44.175Z","updated_at":"2026-05-31T20:02:46.955Z","avatar_url":"https://github.com/sichengchen.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wasser UI\n\n[![npm](https://img.shields.io/npm/v/@wasser-ui/core)](https://www.npmjs.com/package/@wasser-ui/core)\n\nWasser UI is a generative UI toolkit for agent-driven applications.\n\nApplications expose their own components through a Wasser UI registry. Wasser UI\nuses that registry to compile prompts, parse model output, verify Schema UI,\nrender verified UI, apply patches, and consume streaming UI updates.\n\n## Packages\n\nInstall the framework\nrenderer your application uses:\n\n```sh\nnpm install @wasser-ui/core@alpha @wasser-ui/runtime@alpha @wasser-ui/prompt@alpha @wasser-ui/react@alpha\n```\n\nOptional packages:\n\n```sh\nnpm install @wasser-ui/vue@alpha\nnpm install @wasser-ui/svelte@alpha\nnpm install @wasser-ui/angular@alpha\nnpm install @wasser-ui/adapter-shadcn@alpha\nnpm install @wasser-ui/devtools@alpha\n```\n\n- `@wasser-ui/core`: registries, Schema UI protocol parsing, verification,\n  semantic patches, stream state, and diagnostics.\n- `@wasser-ui/react`: React rendering for `VerifiedSchemaUI`, runtime binding,\n  safe fallbacks, and stream rendering.\n- `@wasser-ui/vue`: Vue rendering for `VerifiedSchemaUI`, runtime binding, safe\n  fallbacks, and stream rendering.\n- `@wasser-ui/svelte`: Svelte snippet and HTML rendering for\n  `VerifiedSchemaUI`, runtime binding, safe fallbacks, and stream rendering.\n- `@wasser-ui/angular`: Angular rendering for `VerifiedSchemaUI`, runtime\n  binding, safe fallbacks, and stream rendering.\n- `@wasser-ui/runtime`: state, query, action, mutation, permission, and runtime\n  event registries.\n- `@wasser-ui/prompt`: prompt compilers for document, patch, stream, and repair\n  flows.\n- `@wasser-ui/adapter-shadcn`: (optional) shadcn registry entries and render\n  bindings.\n- `@wasser-ui/devtools`: serializable inspection models for registries, Schema\n  UI, verification, patches, streams, runtime events, prompts, and render\n  bindings.\n\n## How It Works\n\n1. Define a registry of user-owned components.\n2. Register runtime capabilities for data, actions, mutations, and state.\n3. Compile prompts from the same registry and runtime capabilities.\n4. Parse model output as a Wasser document, patch, or JSONL stream.\n5. Verify the output against the registry and runtime description.\n6. Render `VerifiedSchemaUI` with React, Vue, Svelte, Angular, or inspect it with\n   DevTools.\n\nRaw model output is always untrusted. Rendering starts only after verification\nreturns a `VerifiedSchemaUI`.\n\n## Basic Usage\n\n```ts\nimport { createWasserRegistry, defineWasserComponent, verifyDocument } from \"@wasser-ui/core\";\nimport { createWasserRuntime } from \"@wasser-ui/runtime\";\nimport { compileDocumentPrompt } from \"@wasser-ui/prompt\";\nimport { z } from \"zod\";\n\nconst CustomerTable = defineWasserComponent({\n  description: \"Displays customers with status, revenue, and owner.\",\n  propsSchema: z\n    .object({\n      dataRef: z.literal(\"queries.customers.data\"),\n    })\n    .strict(),\n  children: \"none\",\n  prompt: {\n    props: [\n      {\n        name: \"dataRef\",\n        description: \"Registered customer query data reference.\",\n        required: true,\n        allowedValues: [\"queries.customers.data\"],\n      },\n    ],\n  },\n});\n\nconst registry = createWasserRegistry({\n  components: {\n    CustomerTable,\n  },\n});\n\nconst runtime = createWasserRuntime();\n\nruntime.queries.register({\n  id: \"customers\",\n  dataRef: \"queries.customers.data\",\n  handler: async () =\u003e api.customers.list(),\n});\n\nconst prompt = compileDocumentPrompt({\n  registry,\n  runtime: runtime.describe(),\n  userIntent: \"Show the customer list.\",\n});\n\nconst result = verifyDocument(modelOutput, {\n  registry,\n  runtime: runtime.describe(),\n});\n\nif (result.ok) {\n  render(result.ui);\n} else {\n  showDiagnostics(result.diagnostics);\n}\n```\n\nReact rendering consumes verified UI:\n\n```tsx\nimport { WasserRenderer, WasserRuntimeProvider } from \"@wasser-ui/react\";\n\n\u003cWasserRuntimeProvider runtime={runtime} registry={registry}\u003e\n  \u003cWasserRenderer ui={verifiedUi} /\u003e\n\u003c/WasserRuntimeProvider\u003e;\n```\n\nVue rendering consumes the same verified UI contract:\n\n```ts\nimport { h } from \"vue\";\nimport { WasserRenderer, WasserRuntimeProvider } from \"@wasser-ui/vue\";\n\nh(WasserRuntimeProvider, { runtime, registry }, () =\u003e h(WasserRenderer, { ui: verifiedUi }));\n```\n\nSvelte rendering exposes snippets and server HTML helpers:\n\n```svelte\n\u003cscript lang=\"ts\"\u003e\n  import { createWasserRenderer } from \"@wasser-ui/svelte\";\n\n  const renderer = createWasserRenderer({ ui: verifiedUi, runtime, registry });\n\u003c/script\u003e\n\n{@render renderer()}\n```\n\nAngular rendering consumes the same verified UI contract:\n\n```ts\nimport { provideWasserRuntime } from \"@wasser-ui/angular\";\n\nbootstrapApplication(AppComponent, {\n  providers: [provideWasserRuntime({ runtime, registry })],\n});\n```\n\n```html\n\u003cwasser-renderer [ui]=\"verifiedUi\" /\u003e\n```\n\n## Documentation\n\n- [Guides](./docs/guides/README.md): task-focused usage guides.\n- [Reference](./docs/reference/README.md): public API and protocol references.\n\n## Development\n\n```bash\nvp install\nvp check\nvp test\nvp run -r build\n```\n\nThe root `ready` script runs check, tests, and builds:\n\n```bash\nvp run ready\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsichengchen%2Fwasser-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsichengchen%2Fwasser-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsichengchen%2Fwasser-ui/lists"}