5561 Commits

Author SHA1 Message Date
Alem Tuzlak 32fb2635ed chore: release monorepo v1.56.0 (#3936)
## Release monorepo v1.56.0

**Scope:** `monorepo` | **Bump:** `minor`

---

### How this release process works

1. **This PR was created automatically** by the "release / create-pr"
workflow.
   It bumped the `monorepo` packages to `1.56.0`
   and generated AI-enhanced release notes.

2. **CI runs on this PR** — the full test suite (unit tests, lint, type
checks, build)
   must pass before merging. This is the review gate.

3. **Review the release notes** in `release-notes.md` in this PR.
If a Notion draft was created, you can edit the release notes there
before merging.

4. **When this PR is merged**, the `release / publish` workflow
automatically:
   - Builds all packages
   - Publishes the `monorepo` packages to npm at version `1.56.0`
   - Creates git tag `monorepo/v1.56.0`
   - Creates a GitHub Release with the final release notes

### Before merging

- [ ] CI is green (tests, lint, types, build)
- [ ] Version bumps look correct
- [ ] Release notes are accurate (edit in Notion if a draft was created)

---

> **Do not merge until CI is fully green.** The full test suite runs
automatically on this PR.
v1.56.0
2026-04-15 20:07:47 +02:00
Ran Shemtov 4da0999d89 Merge branch 'main' into release/publish/monorepo/v1.56.0 2026-04-15 19:39:10 +02:00
Ran Shemtov f4955ad5fd chore: example state streamin (#3934) 2026-04-15 19:24:38 +02:00
Ran Shemtov d74e32c824 Merge branch 'main' into chore/example-state-streamin 2026-04-15 19:24:23 +02:00
ranst91 cfb5921108 chore: release monorepo v1.56.0 2026-04-15 17:22:27 +00:00
Max Korp 7b9cad5643 feat: add intelligence to langgraph python example (#3649) 2026-04-15 09:53:16 -07:00
Max Korp 246448120a feat: add langgraph-python-threads example 2026-04-15 09:50:03 -07:00
Ran Shemtov e85313521b Merge branch 'main' into chore/example-state-streamin 2026-04-15 18:37:44 +02:00
Ran Shemtov 742318fb94 fix: use latest agui langgraph packages (#3932) 2026-04-15 18:37:14 +02:00
Ran Shemtov 8d45984d17 Merge branch 'main' into fix/use-latest-agui-langgraph 2026-04-15 18:36:16 +02:00
Ran Shem Tov 65500c5fb8 chore: fix state streaming on langgraph prebuilt agents in demos 2026-04-15 18:35:55 +02:00
Jordan Ritter ea9b43efb4 fix: resolve 3 starter crash root causes crashing 7/17 Railway starters (#3933)
## Summary

7 out of 17 Railway-deployed starters are returning 502 (CRASHED). Three
distinct root causes:

1. **EACCES `/home/app`** (langgraph-typescript, claude-sdk-typescript,
mastra) — `npx` at runtime needs a home dir for its cache, but the
non-root `app` user was created with `--no-create-home`. Fix: `mkdir -p
/home/app && chown app:app /home/app` in all 4 Dockerfile templates.

2. **IndexError `Path.parents[4]`** (agno, claude-sdk-python,
ms-agent-python) — `search_flights.py` schema fallback accesses
`parents[4]` but Docker path `/app/agent/tools/search_flights.py` only
has 4 parents (0-3). Fix: wrap in try/except IndexError in shared source
+ regenerate.

3. **Wrong import path** (langroid, crewai-crews) — `from agents.X
import` but starters use `agent/` (singular). `rewritePythonImports()`
in generate-starters.ts now converts these to relative imports.

All fixes applied to upstream sources (templates, shared python,
generation script) so drift check passes.

## Test plan

- [x] 251 generate-starters tests pass
- [x] Drift check passes (`--check`)
- [x] Pre-commit hooks pass (lint, format, unit tests)
- [ ] Deploy to Railway and verify all 17 starters return 200
2026-04-15 09:33:38 -07:00
Jordan Ritter cffecf1fc1 fix: resolve 3 starter crash root causes — Docker home dir, path depth, import rewriting
1. EACCES on /home/app: Dockerfile templates now create home dir for
   non-root user before USER app (langgraph-ts, claude-sdk-ts, mastra)
2. IndexError Path.parents[4]: search_flights.py schema fallback now
   guards against shallow Docker paths (agno, claude-sdk-py, ms-agent-py)
3. Wrong import path: rewritePythonImports() now converts
   from agents.X to relative imports in starter agent dirs (langroid, crewai)
2026-04-15 09:27:08 -07:00
Ran Shem Tov 6986a1c120 fix: use latest agui langgraph packages 2026-04-15 18:11:17 +02:00
Ran Shem Tov c8d4b273aa chore: add state streaming to langgraph example 2026-04-15 17:54:05 +02:00
copilotkit-devops-bot[bot] 699f9313e9 chore: auto-sync docs from main (a00950787) (#3931)
Automated docs sync. Clean transforms only.
2026-04-15 15:32:48 +00:00
copilotkit-devops-bot[bot] 068521d0ec chore: auto-sync docs from main (2026-04-15) 2026-04-15 15:32:42 +00:00
Alem Tuzlak a009507873 feat: add debug mode to runtime and client (#3562)
## Summary
- Add `debug` option to `CopilotRuntime` constructor and `<CopilotKit>`
provider for detailed event pipeline logging
- Server-side uses Pino structured logger; client-side uses
`console.debug` at each AG-UI pipeline stage
- Accepts `true` for full output or a granular config: `{ events,
lifecycle, verbose }`
- The two toggles are independent — enabling debug on the client does
not affect the server

## Changes

**`@copilotkit/shared`**
- New `DebugConfig` type, `ResolvedDebugConfig` interface,
`resolveDebugConfig()` normalizer

**`@copilotkit/runtime`**
- `debug` option on `CopilotRuntime({ debug: true })`
- Lifecycle logging: agent run started, SSE stream
opened/completed/errored
- Event logging: every emitted event (verbose = full payload, otherwise
key fields summary)

**`@copilotkit/react-core` + `@copilotkit/core`**
- `debug` prop on `<CopilotKit debug={true}>`
- Threads config through `CopilotKitCore` → `AgentRegistry` →
`ProxiedCopilotRuntimeAgent`

**Companion PR:** ag-ui-protocol/ag-ui#1398 (AG-UI client-side debug
logging)

## Test plan
- [x] All 647 runtime tests pass
- [x] All 352 AG-UI client tests pass
- [x] Lint clean (0 errors)
- [x] All affected packages build successfully
- [ ] Manual: set `debug: true` on runtime and provider, verify
structured logs on server and console output on client

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-15 17:31:02 +02:00
Alem Tuzlak b7e009c56b fix: correct verbose default in docs and remove stray vscode-extension README
The docs table and prose claimed `debug: true` sets `verbose: true`,
but the implementation intentionally defaults verbose to false (PII
safety). Fixed the table and explanatory text to match.

Also removed packages/vscode-extension/README.md which was committed
on this branch by mistake — it describes an unrelated VS Code extension
and has nothing to do with debug mode.
2026-04-15 17:18:09 +02:00
Alem Tuzlak 9953b8a264 Merge branch 'main' into worktree-lucky-popping-wren 2026-04-15 17:12:55 +02:00
Markus Ecker e5daf8deff fix: align A2UI schema with v0.9 spec, improve path binding prompts (#3929)
## Summary
- Replace custom `{ name, props }` schema format with A2UI v0.9
spec-aligned inline catalog format (`allOf` + `properties`) — eliminates
LLM "props" nesting confusion
- Restructure generation prompts: inline literal values are the default,
path binding is a narrow schema-driven exception
- Bump `@ag-ui/a2ui-middleware` to `0.0.5` in runtime

## Context
LLMs generating dynamic A2UI sometimes produced invalid output:
1. Nesting properties under a `"props"` key (because our schema used
`props` as a key)
2. Using `{ "path": "..." }` bindings on properties that only accept
literal values (e.g. chart `data`, metric `value`)

Both issues caused silent render failures or runtime crashes.

## Test plan
- [x] Tested with ag-ui dojo — A2UI dynamic schema demo works
- [x] Tested with CopilotKit langgraph-starter — sales dashboard renders
correctly
- [x] `@ag-ui/a2ui-middleware@0.0.5` published to npm

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-15 16:48:17 +02:00
Markus Ecker c61ebc5d15 chore: use pkg-pr-new preview packages in langgraph starter 2026-04-15 16:13:47 +02:00
Markus Ecker cfeb1c68c4 chore: update lockfile for @ag-ui/a2ui-middleware 0.0.5 2026-04-15 15:57:34 +02:00
Markus Ecker d51140ebbc chore: bump @ag-ui/a2ui-middleware to 0.0.5 2026-04-15 14:56:51 +02:00
Alem Tuzlak 6589cf2e73 Merge branch 'main' into worktree-lucky-popping-wren 2026-04-15 13:22:46 +02:00
github-actions[bot] 4abb9af1b2 style: auto-fix formatting 2026-04-15 11:12:37 +00:00
Jordan Ritter d2a8eca4c6 fix: restructure spring-ai starter to use Maven standard directory layout
The generate-starters script was flattening src/main/{java,resources} into
agent/{java,resources}, breaking Maven builds. Add a post-copy step that
moves them to agent/src/main/{java,resources} as Maven expects.
2026-04-15 13:10:57 +02:00
Jordan Ritter a1d5fd87b0 feat: fill QA checklists with real test steps, add test coverage matrix
Replace TODO placeholders in all 73 QA checklist files across 17 showcase
packages with specific, actionable test steps derived from reading the
actual demo page source code. Each checklist now references real
data-testid selectors, hook names, expected UI states, and interaction
flows.

Add showcase/QA-COVERAGE.md with a comprehensive matrix showing coverage
across manual QA, Vitest unit tests, Playwright E2E (smoke and interaction),
per-package E2E, aimock fixtures, and CI automation for all 9 demos plus
the Sales Dashboard starter hero.
2026-04-15 13:10:57 +02:00
Jordan Ritter a7d4e6d9a0 fix: prevent langgraph-python agent from looping on query_data
The agent's system prompt didn't mention pieChart/barChart frontend
tools, so gpt-4o-mini would call query_data repeatedly instead of
rendering charts. Updated the system prompt to explicitly instruct
the agent to call query_data once then use pieChart/barChart, and
updated the query_data tool description to reinforce single-call
semantics.
2026-04-15 13:10:56 +02:00
github-actions[bot] 6fbf78bd26 style: auto-fix formatting 2026-04-15 13:10:55 +02:00
Jordan Ritter 1332183ea9 fix: langgraph-python starter agent — permissions, imports, and tools.py naming collision
Root causes (verified locally with docker build + run):
1. PermissionError: non-root user can't write .langgraph_api dir — fix: chown -R app:app /app
2. ImportError: relative imports fail in langgraph_cli context — fix: absolute imports
3. ValueError: tools.py and tools/ directory collision — fix: rename to tool_wrappers.py

Tested: docker run returns {"status":"ok","agent":"ok"}
2026-04-15 13:10:55 +02:00
Jordan Ritter 8a127dd2b6 chore: update CODEOWNERS default reviewers 2026-04-15 13:10:54 +02:00
Jordan Ritter 2749a6792f fix: pin langgraph versions to prevent breaking API changes 2026-04-15 13:10:54 +02:00
Jordan Ritter 7ba69350fd fix: update test expectations for agent_server:app devScripts 2026-04-15 13:10:53 +02:00
Jordan Ritter ae38d93909 fix: remove invalid secrets reference in deploy workflow step conditions 2026-04-15 13:10:52 +02:00
Jordan Ritter a8774171d5 fix: add agent_server.py to all Python starters, matching demo packages
Python starters were trying to run uvicorn with agent.<module>:app but
those modules don't export a FastAPI app. The demo packages use
agent_server.py as the FastAPI wrapper, so starters need it too.

Changes:
- Copy agent_server.py from each demo package into starter root,
  rewriting "from agents." to "from agent." for the starter layout
- Update all non-langgraph Python devScripts to use agent_server:app
- Update Dockerfile.python to COPY agent_server.py for non-langgraph
- Update getEntrypointBlock() generic Python to use agent_server:app
- Make langgraph-fastapi use langgraph_cli dev like langgraph-python
  (it was incorrectly configured as a uvicorn-based starter)
- Regenerate all starters
2026-04-15 13:10:52 +02:00
Jordan Ritter eac1161628 fix: clean Slack alert formatting across showcase workflows
Use jq to build JSON payloads safely and payload-file-path to avoid
inline multiline content. Limits error context to 3 lines, strips ANSI
codes, and caps field length at 200 chars.

- drift-detection: split payload build from post, sanitize playwright output
- starter-smoke: replace toJSON(format(...)) double-encoding with jq
- showcase_deploy: replace 300-char inline ternary with readable shell conditional
2026-04-15 13:10:51 +02:00
Jordan Ritter add2251e16 fix: remove test-integration-tmp from starter-smoke matrix (lost in #3899 merge) 2026-04-15 13:10:50 +02:00
Jordan Ritter 8a66424a33 fix: align langgraph-python starter with working demo package layout
The langgraph-python starter crashes on Railway because of a directory
structure mismatch: agents were in agent/ with langgraph.json inside
agent/, causing langgraph_cli to fail resolving module paths.

Match the demo package's working layout:
- Move agents from agent/ to src/agents/ (same as demo)
- Put langgraph.json at project root (same as demo)
- Point entrypoint at root langgraph.json instead of agent/langgraph.json
- Templatize Dockerfile.python with AGENT_DIR and DOCKER_EXTRA_COPY vars
- Skip langgraph.json path rewriting when agentDir matches agentSourceDir
- Update tests to use framework agentDir instead of hardcoding "agent"

Regenerate all 17 starters.
2026-04-15 13:10:50 +02:00
Jordan Ritter b5b27ca248 fix: wider starter hero section, sticky renderer selector above sidebar 2026-04-15 13:10:49 +02:00
Jordan Ritter 96f248b5e5 fix: format 2026-04-15 13:10:48 +02:00
Jordan Ritter fb6b518362 fix: mock navigator in clipboard test for Node 20 compatibility 2026-04-15 13:10:48 +02:00
Jordan Ritter 73cb72abfc fix: harden deploy pipeline — independent concurrency, post-deploy health checks 2026-04-15 13:10:47 +02:00
Jordan Ritter 93511a0753 fix: responsive iframe height and scrollable starter content 2026-04-15 13:10:47 +02:00
Jordan Ritter 1f14ee4b48 fix: format showcase_deploy.yml 2026-04-15 13:10:46 +02:00
Jordan Ritter f4887a763e test: add userToggledRef behavior tests for reasoning message
Two new test cases covering the core behavioral fix:
- User collapses during streaming → panel stays collapsed after stream ends
- User collapses then re-expands during streaming → panel stays open after stream ends
2026-04-15 13:10:45 +02:00
Jordan Ritter 921b02ab57 test: wrap fireEvent.click in act() for deterministic reasoning toggle test
Without act(), React 18 defers the state update through its scheduler,
which can race with waitFor polling on slow CI runners (Node 20.x/22.x).
Wrapping in act() forces synchronous flush.
2026-04-15 13:10:45 +02:00
Jordan Ritter adbd38b5e5 fix: respect user expand/collapse intent in reasoning message
The auto-collapse useEffect unconditionally called setIsOpen(false) when
streaming ended, overriding any manual expand/collapse the user had
performed.  Add a userToggledRef that tracks explicit clicks so the
effect only auto-collapses when the user hasn't interacted.
2026-04-15 13:10:44 +02:00
Jordan Ritter a21c021e88 fix: make adduser idempotent in all Dockerfile templates, regenerate starters 2026-04-15 13:10:43 +02:00
Jordan Ritter d45620c1e7 fix: propagate copyToClipboard success result to CopyButton UI state
The CopyButton in react-core was showing the "copied" checkmark based on
an independent clipboard availability check rather than the actual copy
result. This meant a failed copy (e.g. permission denied) would still
show the success indicator. Now the onClick handler returns the boolean
from copyToClipboard, and handleClick uses that to drive the UI state.
Also removes unsafe type casts of onClick to Promise<void>.
2026-04-15 13:10:43 +02:00