Commit Graph

8572 Commits

Author SHA1 Message Date
Alem Tuzlak 4ae9324004 feat: wire gen-ui-tool-based and hitl-in-chat into ms-agent-python runtime
Mount /gen-ui-tool-based and /hitl-in-chat endpoints in agent_server.py,
register the corresponding agents in the Next.js runtime route, and add
the three new feature ids (gen-ui-tool-based, hitl-in-chat,
hitl-in-chat-booking) plus their demo entries to manifest.yaml.
2026-04-29 10:51:30 +02:00
Alem Tuzlak bfb207dd79 feat: add hitl-in-chat and hitl-in-chat-booking demos to ms-agent-python
Port the in-chat HITL pattern (useHumanInTheLoop) from langgraph-python.
The book_call tool is defined entirely on the frontend; the MS Agent
Framework agent has tools=[] and just calls it by name. The booking-flow
alias reuses the same backend agent and shares the time-picker component.
2026-04-29 10:51:19 +02:00
Alem Tuzlak 441af62350 feat(showcase-ms-agent-dotnet): add hitl-in-chat demo 2026-04-29 10:51:16 +02:00
Alem Tuzlak c74981245a feat: port gen-ui-tool-based to ms-agent-python
Replace haiku stub with bar/pie chart variant ported from langgraph-python.
Frontend registers render_bar_chart and render_pie_chart via useComponent;
the MS Agent Framework agent has tools=[] and routes the user's chart
intent to whichever frontend tool fits.
2026-04-29 10:51:10 +02:00
Alem Tuzlak cbee978b9e feat(showcase-ms-agent-dotnet): add gen-ui-tool-based demo 2026-04-29 10:50:47 +02:00
Alem Tuzlak aacc37b184 feat(llamaindex): add cli-start and mcp-apps to manifest 2026-04-29 10:49:34 +02:00
Alem Tuzlak 5e4024f4a0 feat(showcase-langgraph-ts): add cli-start, hitl-in-chat, hitl-in-chat-booking demos 2026-04-29 10:48:41 +02:00
Alem Tuzlak 8b9b9eb391 feat(showcase-langgraph-fastapi): add cli-start, hitl-in-chat, hitl-in-chat-booking demos
- cli-start: informational manifest entry with the framework init command
- hitl-in-chat: in-chat HITL via the high-level useHumanInTheLoop hook
  with a time-picker card; backend graph is tools=[] +
  CopilotKitMiddleware
- hitl-in-chat-booking: alias mapped to the same demo route + backend
  graph as hitl-in-chat, registered as a separate agent slot so the
  feature card resolves to the same booking surface

Wires the new hitl_in_chat graph into langgraph.json and registers both
agent slots in src/app/api/copilotkit/route.ts.
2026-04-29 10:48:33 +02:00
Jordan Ritter 26039c5b0a fix(showcase): docs overlay renders independently of health (#4416)
## Summary
- Removes the `!hasHealth` gate on DocsLayer, so toggling the Docs
overlay always shows/hides docs content in cells regardless of whether
Health is also active.

## Test plan
- Toggle Docs on/off with Health also active — docs should
appear/disappear independently.
2026-04-29 00:58:58 -07:00
Jordan Ritter bd17bc11e3 fix(showcase): docs overlay should render independently of health overlay 2026-04-29 00:58:36 -07:00
Jordan Ritter 67606eb9c1 fix(showcase): ref-depth column sticky offset (#4415)
## Summary
- Fixes the ref-depth (parity) column's sticky left offset from `260px`
to `160px` to match the reduced FEATURE column min-width. The stale
offset caused the parity column to float disconnected from the feature
column when scrolling horizontally.

## Test plan
- Enable Parity Review preset, scroll right — REF DEPTH column should
stay pinned flush against the FEATURE column.
2026-04-29 00:54:46 -07:00
Jordan Ritter 8029b372c0 fix(showcase): align ref-depth column sticky offset with reduced feature column width 2026-04-29 00:54:19 -07:00
Ran Shemtov effb7eed95 feat: add agentcore memory runner (#4107) 2026-04-29 09:50:13 +02:00
Ran Shemtov 89082e1d96 Merge branch 'main' into feat/agentcore-runner 2026-04-29 09:50:02 +02:00
Jordan Ritter f30691c5d4 fix(showcase): bottom padding for fixed legend bar (#4414)
## Summary
- Adds `pb-12` to the scroll container so the fixed-position legend bar
at the bottom doesn't obscure the last rows of the feature matrix table.

## Test plan
- Scroll to the bottom of the matrix — last row should be fully visible
above the legend bar.
2026-04-29 00:49:18 -07:00
Jordan Ritter 34aeab2ec8 fix(showcase): add bottom padding to scroll area for fixed legend bar 2026-04-29 00:48:53 -07:00
Jordan Ritter 2e5627fa02 fix(showcase): D5/D6 depth chips + dashboard UI polish (#4413)
## Summary
- Extend depth ladder from D4 cap to D6 — emerald-colored chips for
D5/D6, multi-key CATALOG_TO_D5_KEY resolution, proper short-circuit
gating
- Restructure dashboard to viewport-filling flex layout with sticky
table column headers (overlay toggle pinned, stats bar scrolls away)
- Halve cell padding, reduce column min-widths, center UWCT/health
badges and links across all cells
- Remove duplicate/useless health badges from CLI command cells (no
probes exist for `npx init`)

## Test plan
- [x] 8 new depth-utils tests (D5 green/red/missing, multi-key, D6,
unmapped fallback)
- [x] Depth chip tests extended to D5/D6 emerald cases
- [x] Overlay integration tests updated for D0-D6 range
- [x] Visual verification: sticky headers, centered badges, tighter
layout
- [x] Pre-existing test failures unchanged (docs-status.json,
docs-layer)
2026-04-29 00:43:31 -07:00
Jordan Ritter 1980dcc210 fix(showcase): suppress health badges on CLI command cells
Command demos (npx copilotkit init) have no E2E/D5/D6 probes, so
health badges were perpetual gray noise. Skip HealthLayer when the
demo declares a command instead of a route.
2026-04-29 00:42:18 -07:00
Jordan Ritter 0213dbdcfd fix(showcase): dashboard UI — sticky headers, tighter cells, centered badges
Restructure page to viewport-filling flex layout so table column
headers stick below the overlay toggle bar on scroll. Halve cell
padding, reduce column min-width, center UWCT/health badges and
links. Remove duplicate CellStatus from CommandCell (ComposedCell
HealthLayer handles it). Split stats bar out of sticky container
so it scrolls away naturally.
2026-04-29 00:42:17 -07:00
Jordan Ritter 616a45bb1d fix(showcase): extend depth ladder to D5/D6 with emerald chips
Depth system was capped at D4 — D5/D6 PocketBase rows existed but
the chip never advanced past D4. Extends deriveDepth() through D6
with proper short-circuit gating, adds isD5Green() for multi-key
CATALOG_TO_D5_KEY resolution, and colors D5/D6 chips emerald to
distinguish from D3/D4 blue.
2026-04-29 00:42:17 -07:00
Ran Shem Tov deb394d51e chore: align lockfile 2026-04-29 09:27:04 +02:00
github-actions[bot] b3522d4959 style: auto-fix formatting 2026-04-29 09:26:15 +02:00
Ran Shem Tov 50a2174c38 feat: add agentcore memory runner 2026-04-29 09:26:15 +02:00
Jordan Ritter 2310051aa8 fix(showcase): increase probe cadence for aimock-backed integrations (#4412)
## Summary

All 18 showcase integrations are aimock-backed — zero LLM cost per probe
tick. Tightened schedules to catch regressions faster:

| Probe | Before | After | What it does |
|-------|--------|-------|-------------|
| smoke | every 15 min | every 5 min | L1/L2 HTTP health checks |
| e2e-smoke | every 30 min | every 15 min | L3/L4 Playwright chat
round-trip |
| e2e-deep (D5) | hourly | every 15 min | Multi-turn conversation probes
|
| e2e-demos (D4) | every 6 hours | hourly | Per-demo structural coverage
|

Cron offsets preserved to avoid Chromium EAGAIN across concurrent
browser pools.

## Test plan

- [ ] Harness picks up new schedules after deploy
- [ ] No OOM or Chromium contention under tighter cadence
- [ ] Dashboard shows more frequent probe updates
2026-04-28 23:36:36 -07:00
Jordan Ritter e2956cb224 fix(showcase): increase probe cadence — all integrations aimock-backed
With aimock backing all 18 integrations, there is zero LLM cost per
probe tick. Tightened schedules to catch regressions faster:

  smoke:     */15 → */5  min  (L1/L2 HTTP health)
  e2e-smoke: */30 → */15 min  (L3/L4 Playwright chat round-trip)
  e2e-deep:  hourly → */15 min (D5 multi-turn conversations)
  e2e-demos: 6-hourly → hourly (per-demo structural coverage)

Offsets preserved to avoid Chromium contention across probes.
2026-04-28 23:34:11 -07:00
Jordan Ritter 9f5ec19228 fix(showcase): D5 chip display + CLI debugging commands (#4411)
## Summary

- **D5 dashboard chip fix**: `resolveCell()` looked up D5 PocketBase
rows by catalog feature ID (e.g. `d5:slug/hitl-in-chat`) but the harness
writes them keyed by D5 feature type (e.g. `d5:slug/hitl-text-input`).
Added `CATALOG_TO_D5_KEY` mapping so the dashboard resolves the correct
PB row for each cell — this is why D5 chips showed gray "?" instead of
green/red.

- **CLI deep-input fix**: `buildDeepInputs()` passed manifest registry
IDs as `features` but the D5 driver only maps through
`demosToFeatureTypes()` when they arrive as `demos`. Changed to pass
`demos` so `showcase test <slug> --d5` exercises all D5 feature types,
not just the ~5 whose registry ID happens to match a D5 feature type.

- **7 new CLI debugging commands**: `build`, `ports`, `recreate`,
`fixtures validate`, `doctor`, `aimock-rebuild`, `diff-logs` — all
referenced by DEBUGGING.md but previously unimplemented.

## Test plan

- [ ] Dashboard shows D5 chips (green/red) after next harness tick
- [ ] `showcase test langgraph-python --d5` runs all 11 D5 feature types
locally
- [ ] New CLI commands execute without errors
2026-04-28 23:32:55 -07:00
github-actions[bot] b6298ba916 style: auto-fix formatting 2026-04-29 06:32:34 +00:00
Jordan Ritter a7fdf0ee69 feat(showcase): add missing CLI debugging commands
Implements the 7 commands referenced by DEBUGGING.md:
  build, ports, recreate, fixtures validate, doctor,
  aimock-rebuild, diff-logs

Also adds .last-test-ts timestamp write to the test command
so diff-logs --since last-test works.
2026-04-28 23:30:58 -07:00
Jordan Ritter ea1caa4837 fix(showcase): D5 dashboard chip lookup + CLI deep-input mapping
Dashboard: resolveCell() looked up D5 rows by catalog feature ID
(e.g. d5:slug/hitl-in-chat) but the harness writes them keyed by D5
feature type (e.g. d5:slug/hitl-text-input). Added CATALOG_TO_D5_KEY
mapping so the dashboard resolves the correct PB row for each cell.

CLI: buildDeepInputs() passed manifest registry IDs as `features` but
the D5 driver only maps them through demosToFeatureTypes() when they
arrive as `demos`. Changed to pass `demos` so the driver's mapping
from registry IDs to D5 feature types activates correctly.
2026-04-28 23:30:57 -07:00
Jordan Ritter 797295fa3b fix(showcase): D5 probe fixes — preferences-card crash guard + missing manifest demos (#4409)
## Summary

- Guard `preferences-card.tsx` against undefined `value.interests`
across all 17 integrations — crash prevented D5 shared-state probes from
completing
- Add missing D5 demo entries (`shared-state-read-write`, `hitl-in-app`,
`hitl-in-chat`, etc.) and feature IDs to manifests across 14
integrations — D5 probes couldn't discover features without these
entries
- Bump `@copilotkit/aimock` to v1.16.1 (turnIndex/sequenceIndex support
required for D5 fixture matching)
- Update snapshot test assertions for langgraph-python (38→40
features/demos) and crewai-crews (30→32 wired)
- Fix `docker-compose.local.yml`: mount D5 fixture volumes, add `--host
0.0.0.0`, replace curl healthcheck with Node fetch
- Delete redundant `scripts/dev-local.sh` (superseded by `bin/showcase`
CLI)

## Why

D5 probes were failing across all integrations due to three root causes:
(1) preferences-card crash on undefined interests, (2) missing manifest
entries preventing D5 probe discovery, and (3) aimock pinned at v1.10.0
missing turnIndex support. Local D5 verified GREEN on langgraph-python
(all 11 feature types pass).

## Test plan

- [ ] CI Validate Showcase passes (snapshot counts updated)
- [ ] CI build passes (aimock version bump)
- [ ] Local D5 probes pass for langgraph-python
2026-04-28 23:14:10 -07:00
github-actions[bot] 4ac99af525 style: auto-fix formatting 2026-04-29 06:04:39 +00:00
Jordan Ritter 5bee392385 fix(showcase): fix docker-compose.local.yml aimock config + remove dev-local.sh
- Mount D5/smoke/feature-parity fixtures into aimock via volumes
- Add --host 0.0.0.0 so other containers can reach aimock
- Switch healthcheck from curl to node fetch (aimock image has no curl)
- Delete dev-local.sh (redundant with bin/showcase CLI)
2026-04-28 22:53:49 -07:00
Sam Julien 5299115241 feat(shell-docs): cloud CTA in brand nav + branded framework logos (#4392)
## Summary

Two small shell-docs nav polish changes that bring the showcase docs
visually closer to the upstream/canonical docs.

- **Free Developer Access CTA** — adds a cloud-icon link to
`cloud.copilotkit.ai` in the BrandNav, persistent across both the
CopilotKit and AG-UI tabs. Renders with label + external-arrow on
desktop (icon-only below 1100px) and as a row in the mobile slide-out
menu. Mirrors the upstream docs nav pattern.
- **Framework logos** — replaces the placeholder `/logos/<slug>.svg`
two-letter-initial gray boxes (LG, Ma, Py, Cl, Sp, etc.) with inline SVG
branded marks for the framework picker (sidebar pill + dropdown rows)
and the docs landing integration grid. Marks use `currentColor` so they
inherit theme text color and tint with hover/active states. Sourced from
upstream `docs/components/ui/icons/*` for the integrations that ship
there, and from simpleicons for `claude-sdk-*` (Anthropic mark) and
`spring-ai`. `built-in-agent` keeps its existing full-color CopilotKit
kite. `langroid` keeps its `La` initial placeholder until they ship a
brand mark.

No registry, manifest, or content changes — purely component-layer.

## Test plan
- [ ] Load `/` and verify the CopilotKit kite renders for Built-in Agent
and the framework picker shows real marks for langgraph, mastra,
pydantic-ai, crewai, agno, ag2, llamaindex, strands, google-adk,
ms-agent-*, claude-sdk-*, and spring-ai.
- [ ] Confirm `langroid` still falls back to the `La` placeholder.
- [ ] Verify the "Free Developer Access" link appears in the desktop top
nav and opens `cloud.copilotkit.ai` in a new tab.
- [ ] Resize below ~1100px: label hides, cloud icon stays.
- [ ] Mobile slide-out menu: confirm the cloud row appears with icon +
label + external arrow.
- [ ] Toggle dark/light: framework marks tint with the surrounding text
color (no hardcoded brand fill).
2026-04-28 22:45:17 -07:00
Jordan Ritter fa87e2744b feat(showcase): unified CLI for local debugging (#4410)
## Summary

- Adds `bin/showcase` CLI dispatcher with auto-discovered plugin
commands
- 7 new commands: `logs`, `test`, `recreate`, `aimock-rebuild`,
`diff-logs`, `doctor`, `fixtures validate`
- New `showcase/DEBUGGING.md` playbook: 6-phase debugging loop, workflow
recipes, gotchas reference
- Updates `showcase/README.md` to align with implemented CLI

## Why

Local debugging of showcase integrations required memorizing Docker
Compose incantations, Depot bypass flags, and timestamp juggling. This
wraps the entire edit-build-test cycle into composable CLI commands that
handle the sharp edges (Depot interception, restart-vs-recreate, fixture
baking, aimock health checks) automatically.

## Test plan

- [ ] `showcase --help` shows core + plugin commands
- [ ] `showcase doctor` runs all 10 diagnostic checks
- [ ] `showcase fixtures validate` catches malformed JSON, duplicate
turnIndex, gaps
- [ ] `showcase test <slug> --d5 --verbose --cycle` runs probes and
dumps aimock logs on failure
- [ ] `showcase aimock-rebuild --from ~/proj/cpk/aimock` completes full
rebuild cycle
- [ ] `showcase diff-logs aimock --since last-test` shows only logs from
the test window
2026-04-28 22:31:23 -07:00
Jordan Ritter 0d0f0a9dfa docs(showcase): add DEBUGGING.md playbook and update README CLI reference
DEBUGGING.md: 6-phase debugging loop (baseline, fixture trace, aimock
  rebuild, integration fix, fixture iteration, verify green), common
  gotchas (restart vs recreate, Depot interception, aimock statefulness),
  workflow recipes by use case, environment variable reference.

README.md: align command tables and diagram with implemented CLI,
  add ports/debugging commands, fix diagram labels.
2026-04-28 22:29:40 -07:00
Jordan Ritter 62724f2bd6 fix(showcase): update snapshot counts for new langgraph-python and crewai features
langgraph-python gained shared-state-read-write + hitl-in-app (38→40
features/demos, 37→39 wired, 2→0 unshipped). crewai-crews gained 2
wired features (30→32).
2026-04-28 22:29:36 -07:00
Jordan Ritter 2cb4e26469 feat(showcase): add aimock-rebuild, diff-logs, doctor, and fixtures CLI commands
cmd-aimock-rebuild: full rebuild-redeploy cycle with Depot bypass and
  health check timeout.
cmd-diff-logs: time-windowed container logs with --since last-test
  integration.
cmd-doctor: 10 diagnostic checks (Docker, Depot, ports, stale images,
  env vars, compose config, aimock health, disk, network, DNS).
cmd-fixtures: jq-based fixture validation (syntax, duplicates,
  turnIndex gaps, empty responses, orphaned sub-agent references).
2026-04-28 22:29:34 -07:00
Jordan Ritter 75504f900b feat(showcase): add logs, test, and recreate CLI commands
cmd-logs: container log tailing with --grep, --since, -n, --no-follow.
cmd-test: probe runner with --d5/--d6 filtering, --cycle for aimock log
  dump on failure, --timeout forwarding, .last-test-ts marker.
cmd-recreate: force-recreate with optional --build, routes aimock to
  its dedicated compose file.
2026-04-28 22:29:27 -07:00
Jordan Ritter 58b423d167 feat(showcase): add unified CLI dispatcher and shared utilities
bin/showcase auto-discovers cmd-*.sh plugins, routes built-in commands
(up/down/build/ps/ports), and provides stage_shared/restore_symlinks
for Docker Compose volume management.

_common.sh provides shared variables (SHOWCASE_ROOT, COMPOSE_CMD,
COMPOSE_FILE), output helpers (die/info/warn/success), and container
utilities (slug_to_container, slug_to_port, wait_healthy).
2026-04-28 22:29:21 -07:00
Jordan Ritter 8d7e850c22 chore: bump @copilotkit/aimock to latest (v1.16.1)
Needed for turnIndex/sequenceIndex fixture matching in D5 multi-turn
conversations. Updated in both packages/runtime (devDep) and
showcase/scripts (dep).
2026-04-28 22:21:02 -07:00
Jordan Ritter 17e7e0a406 fix(showcase): add missing D5 demo entries and feature IDs to manifests
Add demo entries for hitl, hitl-in-app, hitl-in-chat, tool-rendering,
shared-state-read-write, and gen-ui-tool-based across 14 integrations.
Ensure every demo ID also appears in the features list so the showcase
matrix and D5 probes discover them correctly.
2026-04-28 22:20:58 -07:00
Jordan Ritter 2fc196aa8b fix(showcase): guard preferences-card.tsx against undefined interests
STATE_SNAPSHOT can deliver a Preferences object with interests undefined,
crashing .includes(), .filter(), and spread at 4 sites per file. Add
(value.interests ?? []) guards across all 17 integrations.
2026-04-28 22:20:53 -07:00
Jordan Ritter 8286d70554 fix(showcase): correct Mastra createTool execute signatures across all tools (#4408)
## Summary

- Fix Mastra `createTool` execute callback signatures that incorrectly
destructured `{ context }` instead of the actual Zod schema fields
- `showcase/integrations/mastra/` — 8 tools (weatherTool,
stockPriceTool, queryDataTool, manageSalesTodosTool, getSalesTodosTool,
scheduleMeetingTool, searchFlightsTool, generateA2uiTool)
- `examples/canvas/mastra/` — 2 tools (setPlan, updatePlanProgress)
- `examples/canvas/mastra-pm/` — 1 tool (weatherTool)

Mastra's runtime calls `originalExecute(data, organizedContext)` where
`data` is the raw Zod-validated output. The `{ context }` pattern
silently received `undefined` for every field.

## Test plan

- [x] 7-agent CR round — converged to 0 findings
- [x] All field names verified against inputSchema definitions
2026-04-28 21:40:34 -07:00
github-actions[bot] aa2c727996 style: auto-fix formatting 2026-04-29 04:27:05 +00:00
Jordan Ritter 7a25435c8b fix(showcase): correct Mastra createTool execute signatures in packages/mastra 2026-04-28 21:17:55 -07:00
Jordan Ritter b709866c7d fix: correct Mastra createTool execute signatures in canvas examples 2026-04-28 21:17:52 -07:00
Jordan Ritter 7a3db2e0f0 fix: Mastra D5 subagents — execute signature + sub-agent fixtures (#4407)
## Summary

- **Fix Mastra `createTool` execute signature** in 4 tools
(`subagents.ts` × 3, `shared-state-read-write.ts` × 1): the first param
is raw validated input (`inputData`), not a destructured `{ context }`
wrapper. The old code silently passed `undefined` as the task/notes to
sub-agents.
- **Add 3 nested sub-agent fixtures** for the D5 mcp-subagents demo:
research, writing, and critique sub-agents each make independent LLM
calls that need their own fixture entries. Production masked this via
`--proxy-only` fallthrough to real OpenAI; local aimock correctly 404s
on unmatched requests.
- **Rebuild `d5-all.json`** bundled fixture file (24 → 27 fixtures).

## Test plan

- [ ] `bin/showcase test mastra --d5 --verbose` — all 3 probes green
(tool-rendering, subagents, agentic-chat)
- [ ] Verify fixture JSON is valid: `jq .
showcase/harness/fixtures/d5/mcp-subagents.json > /dev/null`
- [ ] Verify d5-all.json fixture count: `jq '.fixtures | length'
showcase/aimock/d5-all.json` → 27

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-28 20:50:59 -07:00
Jordan Ritter 15025c8012 Merge slot B2 into blitz/d5-mastra-fixes/integration 2026-04-28 20:45:43 -07:00
Jordan Ritter 6a4c25a24d fix: add nested sub-agent fixtures for D5 mcp-subagents demo
Add 3 fixtures for the independent LLM calls made by each sub-agent
tool (research_agent, writing_agent, critique_agent) so the demo works
without --proxy-only mode. Interleave them with supervisor fixtures for
readability. Rebuild d5-all.json bundle.
2026-04-28 20:45:00 -07:00
Jordan Ritter 2bbfa86747 fix: correct Mastra createTool execute callback signature
The first parameter of Mastra ToolAction.execute is the raw
Zod-validated input, not a destructured wrapper. Changed all 4
tools from ({ context }, executionContext) to (inputData,
executionContext) and updated field accesses accordingly.
2026-04-28 20:43:21 -07:00