New tool search_flights_streaming: schema is registered on the middleware
config and emitted at TOOL_CALL_START. As the LLM streams flight data
as tool args, the middleware partial-parses and emits dataModelUpdate
progressively — flight cards appear one by one.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Card schema's data paths (/flightNumber, /origin, etc.) need a
List root with dataBinding: /flights to scope each card's data context.
Without it, paths resolve at the root where data lives under /flights/0/.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
local-install now copies locally built a2ui-middleware into the monorepo
node_modules so the runtime resolves the version with a2ui_operations
container support. Flight schema now wraps cards in a List with
dataBinding: /flights for proper data context scoping.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restores a2ui.render() usage in search_flights. The constant
"a2ui_operations" is now defined in all three layers: Python SDK,
ag-ui middleware, and A2UIMessageRenderer.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pyproject.toml [tool.uv.sources] points copilotkit at the local
sdk-python directory. Survives uv sync / LangGraph CLI restarts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Schema is now a plain .json file — paste-able directly from a schema
builder. load_schema() reads it, a2ui_surface() does the rest.
Updated Flight TypedDict to match new schema's data bindings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tool file is now just the TypedDict + one a2ui_surface() call.
Schema lives in a2ui_flight_schema.py.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
a2ui.py handles operations assembly, data typing, and normalization.
search_flights is now just schema + one a2ui_surface() call.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Make it explicit in code that the tool emits three separate A2UI
messages: schema (surfaceUpdate), data (dataModelUpdate), and
render trigger (beginRendering). The schema is fixed; only data
changes per invocation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a data-bound declarative UI tool (search_flights) demonstrating the
full A2UI lifecycle: surfaceUpdate → dataModelUpdate → beginRendering.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extends .pnpmfile.cjs and local-install script to also build and link
AG-UI packages from a sibling ag-ui/ repo, enabling local development
across both CopilotKit and AG-UI.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The CSS transition on stroke-dasharray/dashoffset looked jarring
during streaming. Just render slices instantly instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adjust revenue figures so no single category exceeds ~35%, producing
a more visually balanced pie chart during demos.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Custom SVG donut chart with CSS-transitioned streaming animations,
animated bar chart with slide-in entrance for new bars, polished
meeting time picker with Lucide icons and larger touch targets,
and refined tool rendering with monospace names and styled arg blocks.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use the new inspectorDefaultAnchor prop to place the inspector button
in the top-left corner, avoiding overlap with the Chat/App toggle.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add .pnpmfile.cjs hook and `pnpm run local-install` script that builds
CopilotKit packages from the monorepo and symlinks them into the example
app via COPILOTKIT_LOCAL env var. Default `pnpm install` still pulls from
npm, preserving the template experience.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Run prettier on ~1,865 files across examples/ to match the monorepo's
formatting standards. These files were imported as-is from standalone
repos that used different prettier configs.
- gemini/stack_agent.py: initialize tool_calls/tool_msg before try
block, guard usage with null check to prevent NameError on failure
- gemini/posts_generator_agent.py: use async generate_content to avoid
blocking event loop, guard grounding_metadata access, replace bare
except with explicit bounds check, remove dead router_function and
redundant static edges
- gemini/app/api/chat/route.ts: remove dead OpenAI route from Gemini
example (mislabeled as Gemini-powered, no frontend references it)
- gemini/package.json: remove unused @ai-sdk/openai, ai, zod deps
- langgraph-python/agent.py: remove debug print(state), move docstring
to first position so chat_node.__doc__ works
- textarea tutorial: fix StackBlitz URLs pointing to use-tasks.tsx
instead of use-emails.tsx
SVG files are text-based XML averaging ~218 bytes each. LFS tracking
adds per-file HTTP fetch overhead with no storage benefit, suppresses
git diff output, and breaks tutorial clone instructions that use
GIT_LFS_SKIP_SMUDGE=1 (users get LFS pointers instead of icons).