Frontend and full-stack engineer working on AI agents: how they get context, how their changes get verified, and how people work with them in the browser.
Building
- delivery-verifier:
dv provechecks regression tests against old and new commits in separate Git worktrees, with pytest, unittest, Node and Vitest 3.2/4.1 support and a GitHub Action for pull requests. v0.4.0, proven on a real merged fix in Arize Phoenix - OwnContext: self-hosted personal context for AI clients over MCP (preview)
Merged upstream: AI agent UIs and SDKs
- assistant-ui (11): runtime adapters for the AI SDK, AG-UI, LangChain, LangGraph, Google ADK, OpenCode and Pi keep what the agent produced: uploaded filenames, files and artifacts in tool results, tool state metadata, provider metadata and file handles, stable part identities; LangGraph shows OpenAI reasoning once
- Arize Phoenix (9): LLM tracing and evals clients decode Anthropic and AI SDK tool inputs, keep
strictresponse schemas,extra_body, Anthropic system instructions, fields besideanyOfschemas, evaluatormetadata, failed task span status and JSON-string span filters; the dataset view refreshes its example count - Effect (7):
@effect/aireplays Anthropic web fetch and code execution results as server tool results, accepts web fetch documents without citations and sends OpenAI shell tool results in the expected shape;Stream.groupAdjacentByemits buffered groups before an upstream failure;DateTimerounding keeps the offset inside a repeated DST hour;Iterable.unfoldandfilterMapWhilestay exhausted - AnythingLLM (6): agents keep images after prompt-based tool calls and reject failed Responses API streams; compressed chat history keeps images and provider formatting; KoboldCPP agents honour max response tokens; GitHub re-sync encodes file paths
- Vercel AI SDK: decode base64 and data-URL documents before sending them to Cohere
Merged upstream: frontend and tooling
- knip (14): new Lingui, kysely-codegen and PurgeCSS plugins; Babel and Stylelint configs are followed through
extends; Babel, CSpell, SVGR, Relay, SWC, Storybook, Eleventy and npm-package-json-lint plugins read every config location and format their tools support - React Hook Form (4) and resolvers (3):
triggerkeeps nested field-array root errors and touches nested fields withshouldTouch; a Controller reads the currentshouldUnregisteron unmount; empty-string checkbox options; the io-ts resolver honoursraw; TypeBox and fluentvalidation-ts error paths - TanStack Virtual (3): Svelte and Vue adapters keep options and callbacks across updates and detach observers when the scroll element goes away
- Rollup: keep line terminators in module ids
- SvelteKit: use the UTF-8 byte length when reading inline assets
- Solid: sync array length when reconciling server-side stores
- Lexical: round-trip link titles and destinations through Markdown
- Mantine, UnoCSS, Starlight: zero alpha in
hslacolors, preset-wind4 containment utilities, sidebar autogeneration from the docs root - Earlier: Ant Design (test suite migration to Testing Library), screenshot-to-code (stop button, live code editing, image-comparison debugging), LlamaIndexTS
Writing: clean99.github.io




