Commit Graph

24 Commits

Author SHA1 Message Date
Alem Tuzlak 67df4e0137 fix(showcase): invert auth demo default to authenticated + guard against 401 crash
Starting the /demos/auth cell unauthenticated meant the initial `/info`
handshake from CopilotKit returned 401 before any React error handler
could attach, crashing the page on load. Flip the default so the demo
mounts already signed in — the chat is immediately usable — and expose
Sign out / Sign in as the toggle for exercising the 401 path.

- use-demo-auth: default state flipped from unauthed to authed so the
  page mounts with a valid Bearer header.
- page.tsx: add a ChatErrorBoundary around <CopilotChat /> that catches
  any render-time throw from chat internals after signing out and shows
  a friendly in-page message instead of white-screening. The boundary
  resets on auth transitions so signing back in restores a live chat.
- auth-banner: rename Authenticate -> Sign in; status copy updated to
  Signed in / Signed out to match the inverted default.
- tests/e2e/auth.spec.ts: flip assertions — page loads authenticated,
  sign out triggers 401 on next send with banner still mounted, and
  sign in clears the error and restores successful sends.
- qa/auth.md: refreshed checklist for the authenticated-default flow.
2026-04-24 15:55:45 +02:00
Alem Tuzlak 4ba79746ae Merge branch 'feat/wave4b-byoc-json-render-demo' into consolidation 2026-04-24 12:28:28 +02:00
Alem Tuzlak 4ef8df8028 Merge branch 'feat/wave4a-byoc-hashbrown-demo' into consolidation 2026-04-24 12:25:02 +02:00
Alem Tuzlak 102f680bc1 Merge branch 'feat/wave3b-agent-config-demo' into consolidation 2026-04-24 12:21:51 +02:00
Alem Tuzlak 1a78be938b Merge branch 'feat/wave3a-auth-demo' into consolidation 2026-04-24 12:19:14 +02:00
Alem Tuzlak 11da7248f0 Merge branch 'feat/wave2b-multimodal-demo' into consolidation 2026-04-24 12:17:14 +02:00
Alem Tuzlak 9bbc5eb62e Merge branch 'main' into feat/wave4b-byoc-json-render-demo
Resolves conflicts:
- manifest.yaml / constraints.yaml / docs-links.json: keep both byoc-json-render
  and main's re-wired open-gen-ui + open-gen-ui-advanced entries
- scripts/hooks/check-binaries.sh: keep both shell-docs and shell-dojo
  demo-content exclusions (identical lines, different ordering)
- pnpm-lock.yaml (langgraph-python): regenerated via pnpm install
- shell/shell-dojo/shell-docs data JSONs: accept main's deletion (now
  regenerated by nx targets), then regenerate via scripts/generate-registry.ts
  and scripts/bundle-demo-content.ts

Bump generate-registry.test expected feature/demo count 32 -> 33 to account
for the new byoc-json-render demo.
2026-04-24 10:53:56 +02:00
Alem Tuzlak 7c66420a9f Merge remote-tracking branch 'origin/main' into feat/wave2b-multimodal-demo
# Conflicts:
#	showcase/aimock/feature-parity.json
#	showcase/packages/langgraph-python/docs-links.json
#	showcase/packages/langgraph-python/manifest.yaml
#	showcase/shell-docs/src/data/demo-content.json
#	showcase/shell-docs/src/data/registry.json
#	showcase/shell-dojo/src/data/demo-content.json
#	showcase/shell-dojo/src/data/registry.json
#	showcase/shell/src/data/constraints.json
#	showcase/shell/src/data/demo-content.json
#	showcase/shell/src/data/docs-status.json
#	showcase/shell/src/data/registry.json
2026-04-24 10:51:23 +02:00
github-actions[bot] e0190fd25d style: auto-fix formatting 2026-04-24 08:47:16 +00:00
Alem Tuzlak 022db41164 chore: merge origin/main into feat/wave4a-byoc-hashbrown-demo
Resolves conflicts in:
- showcase/packages/langgraph-python/manifest.yaml (byoc-hashbrown + open-gen-ui demos/features coexist)
- showcase/packages/langgraph-python/docs-links.json (subagents path from main + byoc-hashbrown entry)
- showcase/shared/constraints.yaml (merge both feature additions)
- Regenerated shell/*/data JSONs now gitignored on main; deletions accepted.

Bumps generate-registry.test.ts langgraph counts 32 -> 33 (byoc-hashbrown added).
2026-04-24 10:45:53 +02:00
Alem Tuzlak c12426b69e chore: merge origin/main into feat/wave3b-agent-config-demo
Resolves textual conflicts in manifest.yaml and docs-links.json (keeps
both open-gen-ui* from main and agent-config from this branch). Accepts
main's deletion of generated shell*/src/data/*.json (now gitignored).
Bumps langgraph-python feature/demo count test from 32 to 33.
2026-04-24 10:45:17 +02:00
Alem Tuzlak c2db5e706f chore: merge origin/main into feat/wave3a-auth-demo
Resolved conflicts:
- showcase/packages/langgraph-python/manifest.yaml: kept auth (HEAD) +
  open-gen-ui / open-gen-ui-advanced (main) in both features and demos.
- showcase/packages/langgraph-python/docs-links.json: kept auth entry
  from HEAD alongside updated subagents shell_docs_path.
- showcase/shared/constraints.yaml: kept auth + open-gen-ui* entries.
- Deleted shell/shell-dojo/shell-docs generated JSONs per main (now
  generated at build, no longer committed).

Bumped langgraph-python feature/demo count 32 -> 33 in generate-registry
test to reflect the added auth demo.
2026-04-24 10:45:05 +02:00
Alem Tuzlak b51bd014b3 test(showcase/langgraph-python): QA checklist + E2E spec for agent-config demo 2026-04-23 22:28:58 +02:00
Alem Tuzlak f13532c44b feat(showcase): byoc-hashbrown demo for langgraph-python
Wave 4a. Port the starter's hashbrown renderer into a dedicated
single-mode langgraph-python demo at /demos/byoc-hashbrown so the
byoc-hashbrown row goes green on the dashboard.

- @hashbrownai/core + @hashbrownai/react + recharts deps added.
- Dedicated /api/copilotkit-byoc-hashbrown route with byoc_hashbrown
  graph (ChatOpenAI + CopilotKitMiddleware) and a catalog-aware
  system prompt coaching the LLM to emit a <ui>...</ui> envelope.
- Ported MetricCard + bar-chart + pie-chart + chart-config from
  showcase/starters/template/frontend with data-testid hooks on
  chart roots for E2E coverage.
- Ported hashbrown renderer with local RenderMessageProps /
  AssistantMessage types so @copilotkit/react-ui and @ag-ui/core
  do not become direct deps of this package.
- Updated hashbrown schema calls to @0.5.0-beta.4 surface:
  enumeration for SalesStage; description-first streaming.array +
  object; dropped the non-existent .optional() chain.
- v2 CopilotChat uses messageView.assistantMessage slot and
  useConfigureSuggestions for 3 canned prompts (sales dashboard /
  revenue by category / expense trend).
- QA checklist + Playwright E2E authored (not run pre-deploy).
- Manifest / constraints / docs-links updated and derived registry +
  demo-content + docs-status bundles regenerated.
- Extend scripts/hooks/check-binaries.sh whitelist to include the
  shell-docs and shell-dojo demo-content bundles so the pre-commit
  hook does not reject the regenerated 1.5 MB files it produced.
2026-04-23 22:17:18 +02:00
Alem Tuzlak 1d32b0f057 feat(showcase/langgraph-python): multimodal attachments demo (Wave 2b)
Wire CopilotChat AttachmentsConfig (image + PDF, inline base64) into a
dedicated /demos/multimodal cell backed by a vision-capable LangGraph
agent (gpt-4o). Scoped to its own runtime route so the vision cost
stays on this demo.

- Dedicated /api/copilotkit-multimodal route registering the new
  multimodal graph under the multimodal-demo slug
- src/agents/multimodal_agent.py with an AgentMiddleware that flattens
  PDF content parts to text server-side via pypdf
- Try with sample image / PDF buttons that drive CopilotChats own
  hidden file input via DataTransfer + change event, so the sample and
  paperclip paths exercise the same useAttachments pipeline
- public/demo-files/ placeholder — sample.png / sample.pdf binaries
  are produced by the user at the end of the Wave 2b rollout
- Manifest + registry + constraints + docs-links wired; normalized
  multi-modal -> multimodal in constraints to match the feature
  registry id
- QA checklist + Playwright E2E spec (not run yet — pending deploy)
- aimock fixtures for sample prompts so CI runs are deterministic
- Extend the check-binaries hook allowlist to cover the shell-docs and
  shell-dojo demo-content.json mirrors (same size as shell/src/data,
  already allowed) so regenerated derived data can be committed
2026-04-23 22:15:14 +02:00
Alem Tuzlak 5699f28045 Merge remote-tracking branch 'origin/main' into feat/wave2a-voice-demo 2026-04-23 22:15:06 +02:00
Alem Tuzlak 8027595ac6 feat(showcase/langgraph-python): byoc-json-render demo (Wave 4b)
Integrates @json-render/{core,react} as an alternative BYOC generative-UI
rendering technology in langgraph-python, paired with Wave 4a's hashbrown
demo. Both demos share the same sales-dashboard catalog (MetricCard +
BarChart + PieChart) so the dashboard rows are directly comparable.

- Adds @json-render/{core,react} @ 0.18.0 pinned.
- New /demos/byoc-json-render page using CopilotChat's messageView.assistantMessage
  slot to bridge CopilotKit output into @json-render/react Renderer.
- New /api/copilotkit-byoc-json-render route + byoc_json_render graph in
  langgraph.json.
- Zod-validated catalog reusing @json-render/react/schema's prebuilt spec shape.
- System prompt with 3 worked examples inlined so the agent emits valid
  { root, elements } JSON deterministically.
- QA checklist + Playwright spec authored (E2E run deferred to post-deploy
  stabilization).
- Adds shell-docs/shell-dojo demo-content.json to the check-binaries.sh
  allowlist (same 1MB-allowed rationale as shell/demo-content.json).
2026-04-23 22:13:11 +02:00
Alem Tuzlak 92688699f9 feat(showcase/langgraph-python): auth demo with onRequest gate (Wave 3a)
Framework-native request authentication demo for the langgraph-python
showcase. Demonstrates both the unauthenticated (401) failure path and
the authenticated success path via a shared bearer token.

- New /demos/auth page with sticky AuthBanner + in-memory React auth state
- Dedicated /api/copilotkit-auth runtime route using createCopilotRuntimeHandler
  from @copilotkit/runtime/v2 with an onRequest hook validating
  Authorization: Bearer demo-token-123
- Shared DEMO_TOKEN constant imported by both client and server to prevent drift
- <CopilotKit headers={...}> injects Authorization reactively when authenticated
- Page-level error surface captures 401s via onError and renders a stable
  data-testid=auth-demo-error for QA + E2E assertions
- QA checklist + Playwright E2E spec authored (E2E run deferred to post-deploy)
- Manifest, feature list, docs-links, constraints, and derived registry /
  demo-content / constraints / docs-status data regenerated
- Allowlist shell-docs / shell-dojo demo-content.json in the binary-size
  pre-commit hook (mirrors the Wave 2a voice commit; they are bundled
  fixtures already over 1 MB on main)
2026-04-23 22:11:19 +02:00
Alem Tuzlak 0923a6bdf6 feat(showcase/langgraph-python): voice demo (Wave 2a)
Wire @copilotkit/voice into a langgraph-python /demos/voice route via a
dedicated runtime (/api/copilotkit-voice) that mounts
TranscriptionServiceOpenAI. The mic button auto-appears in the CopilotChat
composer because the runtime advertises audioFileTranscriptionEnabled=true.

- Per-demo runtime route /api/copilotkit-voice with transcriptionService
- Demo page at /demos/voice with <CopilotChat /> + Play-sample button
- SampleAudioButton fetches /demo-audio/sample.wav and POSTs the
  single-route transcribe envelope to the runtime URL, then writes the
  transcribed text into the chat textarea via the native setter +
  synthetic input event so React state stays in sync
- Manifest, registry, constraints, docs-links wired; shell bundles regenerated
- QA checklist (qa/voice.md) + Playwright E2E spec (tests/e2e/voice.spec.ts)
- public/demo-audio/ placeholder committed; sample.wav to be added by user
- Allowlist shell-docs / shell-dojo demo-content.json in the binary-size
  pre-commit hook (they are bundled fixtures, already over 1 MB on main)
2026-04-23 22:00:47 +02:00
Alem Tuzlak d8ce477603 feat(showcase): author langgraph-python QA checklists
22 substantive primary checklists at the qa/agentic-chat.md quality
bar (specific testids, timeouts, expected results) plus 3 short stubs
for testing-kind demos (interrupt-headless, tool-rendering-reasoning-chain,
reasoning-default-render). 25 files total.
2026-04-23 12:46:03 -07:00
Jordan Ritter af35569d7d chore(showcase/packages): QA markdown parity + integration tooling
Rename hitl.md → hitl-in-chat.md across all 17 showcase packages,
add shared-state-read / shared-state-write / shared-state-streaming /
gen-ui-agent / subagents QA docs where missing, update demos/hitl
README cross-links. Refresh showcase/shell + shell-dojo registry +
demo-content JSON to match new QA shape. Update integration tooling
(audit, create-integration, bundle-demo-content, generate-registry,
validate-parity, capture-previews, manifest lib) + e2e tests to the
new parity contract.
2026-04-22 11:00:46 -07:00
Jordan Ritter 626b86c23b 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-14 16:06:58 -07:00
Jordan Ritter 204dd29a97 fix: standardize health checks on /health port 8000 2026-04-08 21:22:35 -07:00
Jordan Ritter 479e62cb7f feat: add unified showcase platform with CI, Docker starters, and 13 deployed integrations 2026-04-08 19:59:29 -07:00