Commit Graph

83 Commits

Author SHA1 Message Date
github-actions[bot] b624a987a3 style: auto-fix formatting 2026-06-24 19:30:30 +00:00
Atai Barkai 3226604990 chore(docs): drop unrelated formatting churn 2026-06-24 12:20:39 -07:00
Alem Tuzlak 5ecdee36b8 feat(bot): pluggable StateStore persistence + cross-platform transcripts
Adds a durable persistence layer for @copilotkit/bot, replacing the
in-memory-only ActionStore with a pluggable StateStore.

- StateStore interface (kv/list/lock/dedup/queue) with a shared
  conformance suite; MemoryStore default plus @copilotkit/bot-store-redis
  and @copilotkit/bot-store-postgres backends.
- createBot({ store }): typed per-thread state via Standard Schema,
  action snapshots persisted through the store, per-conversation turn
  lock (onLockConflict drop|force), and inbound-event dedup keyed on a
  stable eventId. ActionStore is kept as a deprecated alias.
- Cross-platform transcripts (bot.transcripts + identity resolver) with
  age-bounded retention (prune on append + filter on read), and
  runAgent({ transcript: true }) to auto-inject history and capture the
  reply.
- createBot({ components }) re-registers components so durable actions
  re-fire after a restart; restart-durability demo in examples/slack.
- Dedup is marked seen only after the turn lock is acquired, so a turn
  dropped on lock-conflict does not burn its eventId (no lost retries).
- Release lockstep: bot-store-redis/postgres version with bot + bot-ui.
2026-06-23 18:33:38 +02:00
github-actions[bot] 790dfd0a75 style: auto-fix formatting 2026-06-19 17:33:38 -07:00
Tyler Slaton db2fd6539b fix: address merge conflicts and run formatter 2026-06-19 15:51:03 -07:00
Jordan Ritter 9aac779c51 fix(generative-ui-playground): use valid model id and externalize @copilotkit/runtime
The opengenui route used the nonexistent model id "openai/gpt-5.2", causing
every chat turn to error. Switch to "openai/gpt-4o", the verified-real id used
by the sibling showcase/shell copilotkit route.

The example's API routes import @copilotkit/runtime/v2 (a server-only package),
but next.config.ts lacked serverExternalPackages, so Next.js attempted to bundle
it. Add serverExternalPackages: ["@copilotkit/runtime"] (base package name covers
the /v2 subpath), mirroring showcase/shell/next.config.ts.
2026-06-18 16:48:32 -07:00
Jordan Ritter 1398fe225c chore: migrate @copilotkitnext usages to @copilotkit/*/v2 entrypoints 2026-06-18 16:37:58 -07:00
Thierry Damiba 8143df4da8 docs(cookbook): add Arcade authenticated-tools recipe and showcase
Adds a cookbook recipe + runnable showcase that gives the Built-in Agent
OAuth-backed Arcade tools (Gmail, Google News) and renders Arcade's one-time
authorization step as a generative-UI "Connect" card in the chat.

- docs: showcase/shell-docs/src/content/docs/cookbook/arcade.mdx (+ meta.json, index card)
- app: examples/showcases/arcade-tools (Next.js App Router, single-route runtime)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 23:37:48 -07:00
Ran Shemtov ea66341238 feat(examples): add strands-crm showcase (TypeScript Strands + AG-UI) (#5265) 2026-06-05 19:11:31 +02:00
GeneralJerel e6c24f2e5e docs(examples/strands-crm): add demo video to README 2026-06-05 09:57:41 -07:00
Jerel Velarde b44b6da776 Merge branch 'main' into feat/strands-crm-showcase 2026-06-05 09:30:35 -07:00
Benjamin Taylor 1c92a69f58 fix(links): point cloud.copilotkit.ai web links at the Intelligence dashboard
New users were still discovering cloud.copilotkit.ai through docs pages,
the README, example READMEs, and in-app banners/console messages. Replace
all user-facing web links with dashboard.operations.copilotkit.ai (the
destination the marketing-site CTAs already use). Functional API endpoints
(api.cloud.copilotkit.ai) are deliberately untouched since existing cloud
customers depend on them.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 11:20:44 -05:00
GeneralJerel 01f5dbd1ee feat(examples): add strands-crm showcase (TypeScript Strands + AG-UI)
Northstar AI CRM — a full-featured agentic sales CRM for an enterprise
hardware seller, built with CopilotKit, the AG-UI protocol, and a
TypeScript Strands agent (@strands-agents/sdk + @ag-ui/aws-strands).
The first TypeScript Strands example under examples/.

Highlights:
- Agentic canvas: tool calls render on the workspace — quote approval
  opens a quote page; analyze_team and generate_weekly_report open
  dedicated report pages; frontend tools navigate the workspace.
- Generative UI cards, human-in-the-loop follow-up approval, and a live
  STATE_SNAPSHOT that syncs a SQLite CRM store with the board,
  dashboard, and report pages.
- Dashboard, pipeline (Kanban), products, team, and reports surfaces.

Self-contained under examples/showcases/strands-crm with an agent/ +
frontend/ split and a concurrently dev script; listed in
examples/README.md.
2026-06-05 05:44:30 -07:00
Alem Tuzlak e00836cb3b SaaS banking demo: customer-ready on CopilotKit v2 (FOR-138) (#5180)
## Summary

Makes the `examples/showcases/banking/` SaaS demo customer-ready by
migrating it to **CopilotKit v2** and polishing it into a credible,
reliable reference. Closes the non-memory gaps from FOR-133's assessment
(FOR-138).

- **v2 migration**: v2 Hono runtime route (`BuiltInAgent` +
`createCopilotHonoHandler` + `InMemoryAgentRunner`), `CopilotKit`
provider + `CopilotPopup`, hooks moved to `@copilotkit/react-core/v2`
(`useAgentContext`, `useHumanInTheLoop`, `useComponent`, Zod params), on
`workspace:*` packages.
- **File-backed data store**: domain data in `src/data/seed.json` behind
a typed `src/lib/store.ts` (in-memory, resets to seed on restart). Clean
seam left for the memory track (FOR-137).
- **Credible identity + data**: Northwind Finance / Alex Morgan /
`@northwind.example`, refreshed transaction dates + future card
expiries, `Intl` currency formatting.
- **Dropped** the SQL page + fake-MSA RAG feature (and committed
ServiceNow secret) — focused fintech story.
- **Framework/build**: Next 16 async route `params`, Tailwind v4 (so the
v2 stylesheet imports normally), correct `next`/`react` versions, single
lockfile, accurate v2 README.
- **Tests**: LLM-free Playwright smoke test (also fails on
hydration/uncaught errors).

## Verified live (real OpenAI key)

Full golden path works end-to-end: chat renders → "show transactions for
card 4242" renders the generative-UI list → "add a card" → HITL approval
card → Approve → new card appears in the grid. 0 console errors. Build +
typecheck + smoke test green; no committed secrets.

Three v2 chat-rendering bugs were found and fixed by running it live:
use the full `CopilotKit` provider (not the low-level
`CopilotKitProvider`, which omits `ThreadsProvider`); set
`useSingleEndpoint={false}` to match the multi-endpoint route; and use
`useComponent` with a `deps` array for display-only generative UI
(avoids a stale-closure empty render).

## Non-goals (deliberately out of scope)

- Real auth.
- Conversation threads + long-term/self-learning memory → FOR-137.
- Deleting the duplicate `enterprise-brex` demo + repointing its deploy.

## Test plan

- [ ] `pnpm --filter demo-saas-copilot build` succeeds
- [ ] `pnpm --filter demo-saas-copilot exec tsc --noEmit` clean
- [ ] `pnpm --filter demo-saas-copilot test:e2e` passes
- [ ] With `OPENAI_API_KEY` set: run the golden path (transactions
gen-UI, add-card HITL → approve → grid update)

## Known minor follow-ups

- Removing deprecated `showDevConsole` surfaces the v2 Web Inspector /
announcement banner.
- Newly-added cards get a near-term generated expiry.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-06-05 14:39:54 +02:00
Jordan Ritter e969793083 chore(format): fix ruff formatter drift on main
The static/quality format job runs in check mode on push and was failing
on main: `ruff format --check .` flagged 5 unformatted Python files under
examples/showcases/a2ui-pdf-analyst/agent (main.py, src/dynamic_agent.py,
src/fixed_agent.py, src/multimodal_middleware.py, src/pdf_tools.py). The
oxfmt JS/TS check already passes, so this is ruff-only drift. Applied
`ruff format` (pinned 0.15.13, matching CI); diff is formatting-only.
2026-06-03 11:57:00 -07:00
Maxim d5f11c1dfe fix(saas-demo): render showTransactions via useComponent with stable deps
Display-only generative UI must use useComponent (not useFrontendTool): its
render is unconditional so the card persists after the tool call completes.
Also pass [transactions, cards] as deps so the renderer re-registers when the
data loads -- otherwise the closure captures the initial empty transactions
and the list renders empty.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 15:25:17 +02:00
Maxim 6d455e71ca fix(saas-demo): use CopilotKit provider + REST transport so chat renders
The migration mounted the low-level CopilotKitProvider, which omits the
ThreadsProvider that holds the rendered message thread, so the agent ran but
the transcript stayed empty. Use the full CopilotKit provider, and set
useSingleEndpoint={false} to match the multi-endpoint Hono route (the default
single-endpoint transport 404s against it).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 15:25:13 +02:00
Maxim 982f9e5378 docs(saas-demo): correct README REST/team/store details
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 13:08:30 +02:00
Maxim 2859f12377 fix(saas-demo): minor reference-demo cleanups
- cards PUT handler: stop console.info'ing the request body, which
  included the plaintext PIN on every PIN-change request.
- wrapper.tsx: drop the duplicate ./globals.css import (already
  imported in app/layout.tsx, which is the canonical place).
- copilot-context.tsx: replace window.location.pathname read during
  render with usePathname() from next/navigation, matching how
  components/layout.tsx already derives the current route.
- next.config.mjs: remove the eslint.ignoreDuringBuilds block — Next 16
  no longer runs ESLint at build, and the key now produces an
  "Unrecognized key(s): 'eslint'" warning. Confirmed warning is gone.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 12:50:13 +02:00
Maxim 0a70125d86 build(saas-demo): align next/react versions with actual runtime + drop stale lockfile
package.json was pinning next@14 / react@18, but the root pnpm.overrides
were already forcing next@16 / react@19 at install time and the code uses
Next 16 async params. Bump the declared ranges to ^16.0.10 / ^19 (and
@types/react{,-dom} to ^19) so the manifest matches reality and matches
the v2 reference demos (mcp-apps, generative-ui-playground).

Also drop examples/showcases/banking/pnpm-lock.yaml: the demo is a
workspace package (listed in root pnpm-workspace.yaml and resolved in the
root pnpm-lock.yaml), so the per-demo lockfile was vestigial v1 cruft
that contradicted the v2 migration.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 12:49:53 +02:00
Maxim 1d2b5db575 docs(saas-demo): rewrite README for v2 architecture
Replace v1-era hooks/data references with the actual v2 surface:
useAgentContext / useFrontendTool / useHumanInTheLoop from
@copilotkit/react-core/v2, the Hono runtime route, the seed.json + store
data layer, and the Northwind identity. Drop mentions of removed
SQL/MSA/ServiceNow/RAG features.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 12:49:34 +02:00
Maxim 5263ac2e59 test(saas-demo): fail smoke test on hydration + uncaught errors
Remove the /Hydration/i pattern from the ignored-console-errors filter so
Next.js hydration mismatches surface as real failures, and add a
page.on("pageerror", ...) listener that records uncaught exceptions and
asserts none occurred. pageerrors are not filtered — any uncaught
exception fails the smoke test.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 11:54:02 +02:00
Maxim 8efd6ecb33 test(saas-demo): Playwright smoke test for golden path
Adds a CI-safe Playwright smoke test that verifies the banking showcase
boots and the CopilotKit v2 popup opens with its configured suggestion
pills, without invoking the agent (so it runs in CI without secrets).

Covers:
  - Document title shows the Northwind Finance brand
  - Credit-cards dashboard renders ("Credit Cards" heading)
  - CopilotPopup launcher opens the dialog (Northwind Copilot)
  - Three suggestion pills render: View transactions, Add a card,
    Assign a policy

The dev server gets a dummy OPENAI_API_KEY so the runtime route boots,
but the test never sends a chat message or clicks a suggestion.

.gitignore: ignore test-results/, playwright-report/, and
tsconfig.tsbuildinfo so they don't become clutter.
2026-06-03 11:27:25 +02:00
Maxim 77c96acc4f refactor(saas-demo): migrate to Tailwind v4 and import v2 styles normally
Banking was on Tailwind v3, which made the pre-compiled v2 stylesheet
(`@copilotkit/react-core/v2/styles.css`, built as Tailwind v4 output)
incompatible with the PostCSS pipeline. A temporary inline-CSS hack in
`layout.tsx` worked around this. Migrate to Tailwind v4 to match the
canonical v2 demos and remove the hack.

- package.json: tailwindcss ^4, add @tailwindcss/postcss ^4, replace
  tailwindcss-animate with tw-animate-css (v4 drop-in)
- postcss.config.mjs: switch plugin to @tailwindcss/postcss
- globals.css: use @import "tailwindcss" + @import "tw-animate-css";
  add @custom-variant dark for the existing .dark/.light class toggle;
  move shadcn color/radius mapping into @theme inline (preserves
  bg-background/text-foreground/rounded-{lg,md,sm} semantics)
- tailwind.config.ts: deleted; theme now lives in CSS
- components.json: clear stale tailwind.config reference
- layout.tsx: drop the readFileSync/dangerouslySetInnerHTML inline-CSS
  workaround; import "@copilotkit/react-core/v2/styles.css" the normal
  way alongside ./globals.css

Verified: tsc clean, next build clean, Playwright-rendered all four
pages (/, /dashboard, /cards, /team) with computed-style checks
(sidebar bg-gray-900 dark, rounded-lg=8px, .border=1px) and opened
the copilot popup which renders fully styled with the v2 stylesheet.
2026-06-03 11:10:28 +02:00
Maxim 78492cc1c5 fix(saas-demo): remove dead react-ui styles import and inline v2 css
The banking showcase was migrated to CopilotKit v2 but `src/app/layout.tsx`
still imported the removed `@copilotkit/react-ui/styles.css`, causing every
route to 500 with "Module not found". Drop the dead import.

Banking is still on Tailwind v3, while the v2 stylesheet
(`@copilotkit/react-core/v2/styles.css`) is pre-compiled Tailwind v4 output
containing bare `@layer base { ... }` rules. Tailwind v3's PostCSS plugin
rejects `@layer base` without a matching `@tailwind base` directive, so any
CSS import routed through the JS/TSX pipeline fails the build. Move the v2
stylesheet load to a server-side `fs.readFileSync` + inline `<style>` tag in
the root layout so the CSS reaches the browser without passing through
PostCSS / Tailwind v3. This avoids a full Tailwind v4 migration of the app.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 01:21:38 +02:00
Maxim 3edcab4759 fix(saas-demo): await dynamic route params for Next 16 compatibility 2026-06-03 00:39:59 +02:00
Maxim e1f12dcd4d feat(saas-demo): credible identity + consistent currency formatting
- Replace toy team names and @example.com emails with credible
  professional names and @northwind.example addresses (preserve ids,
  roles, team assignments). Default Admin is Alex Morgan.
- Set <title> metadata to IDENTITY.brand (Northwind Finance).
- Add formatCurrency helper in lib/utils.ts and route all money
  rendering (transactions list, credit-card details, dashboard +
  cards summary tiles) through it so amounts always render as
  $10,000.00 / -$1,000.00.
- Instruct the Northwind Copilot prompt to treat the rendered
  showTransactions list as the single source of truth so prose no
  longer restates counts/totals and contradicts the rendered list.
- Remove stray console.log and tighten == to === in components/layout.tsx.
2026-06-02 23:54:14 +02:00
Maxim 6bfac07de3 feat(saas-demo): file-backed JSON data store for tool state
Replace the in-memory `data` literal in `api/v1/data.ts` with a
file-seeded, module-singleton store:

- `src/data/seed.json` holds the seed (cards, team, policies,
  transactions) with refreshed dates (within ~60 days of 2026-06-02)
  and valid future card expiries.
- `src/lib/store.ts` deep-clones the seed at module init and exposes
  typed read accessors (cards/team/policies/transactions, findCard,
  findPolicy, findTransaction) plus the exact mutator set the routes
  use (addCard, updateCardPin, assignPolicyToCard, addPolicy,
  updateTransaction, addMember, updateMember, removeMember).
- All `src/app/api/v1/**/route.ts` files now read/write through the
  store. `data.ts` retains the shared interfaces/enums/CARD_COLORS/
  generateUniqueId and drops the literal `data` constant.
- Mutations persist for the running server process and reset to seed
  on restart (intentional demo behavior; no disk write-back).
- Domain-data only — conversation threads/memory live in a separate
  ticket (FOR-137).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 23:30:28 +02:00
Maxim 9373aa167c feat(saas-demo): v2 agent context in layout + actions
- Switch imports from @copilotkit/react-core to /v2 in layout.tsx and actions.ts
- Replace useCopilotReadable with useAgentContext
- Stringify the credit cards/policies/transactions context value to satisfy
  the JsonSerializable type
2026-06-02 23:06:07 +02:00
Maxim 5a97ebc2b3 feat(saas-demo): v2 hooks + useReducer fix in team page
- Switch imports from @copilotkit/react-core to /v2
- Replace useCopilotReadable with useAgentContext (stringify team)
- Convert removeMember, changeMemberRole, changeMemberTeam parameters
  to Zod schemas
- Fix React 19 useReducer typing by extracting dialogStateReducer and
  dropping explicit generics
2026-06-02 23:05:53 +02:00
Maxim e044a4c5b9 feat(saas-demo): v2 hooks + useReducer fix in cards page
- Switch imports from @copilotkit/react-core to /v2
- Replace useCopilotReadable with useAgentContext
- Convert all useHumanInTheLoop and useFrontendTool parameters to Zod schemas
  (addNewCard, assignPolicyToCard, addNoteToTransaction, showTransactions,
  setCardPin, showAndApproveTransactions)
- Convert v1 available: "enabled"/"disabled" to v2 boolean
- Fix React 19 useReducer typing by extracting changePinReducer and dropping
  explicit generics
2026-06-02 23:05:44 +02:00
Maxim 41ae4fab9c feat(saas-demo): v2 hooks in copilot-context
- Switch imports from @copilotkit/react-core to /v2
- Replace useCopilotReadable with useAgentContext (stringify object value)
- Convert navigateToPageAndPerform parameters array to a Zod object schema
2026-06-02 23:05:28 +02:00
Maxim 3966baa879 feat(saas-demo): migrate provider to v2 CopilotKitProvider + identity 2026-06-02 22:54:44 +02:00
Maxim b91e1710c5 feat(saas-demo): v2 Hono runtime endpoint with BuiltInAgent 2026-06-02 22:40:02 +02:00
Maxim 28167ef287 build(saas-demo): add @playwright/test devDependency for smoke tests 2026-06-02 22:29:00 +02:00
Maxim a39c559152 build(saas-demo): move banking demo onto CopilotKit v2 workspace packages 2026-06-02 22:09:05 +02:00
Maxim 6e1f955b2e docs(saas-demo): remove stale SQL/MSA references from README 2026-06-02 21:29:21 +02:00
Maxim d0faa1ea28 chore(saas-demo): drop SQL/MSA feature and dedupe lockfile 2026-06-02 21:17:41 +02:00
Anmol Baranwal 3e79fe0941 fix: add @ag-ui/core dep and fix pnpm scripts
- add @ag-ui/core as explicit dependency to fix production build
- replace npm run with pnpm run in dev and postinstall scripts
2026-06-02 16:04:33 +05:30
Anmol Baranwal 38d7c5720e Merge branch 'main' into showcase-a2ui-pdf-analyst 2026-06-02 15:07:32 +05:30
Mark Fogle 38ce421f85 feat(examples): trim demo chrome to fit embedded iframe viewport
The cookbook's 'Try it live' iframe is 600px tall, but the demo page
included its own h1/subtitle + ~32px main padding + the chat section had
minHeight:520, which pushed total content past 600px and forced a
scrollbar inside the iframe.

The shell-docs cookbook page already provides a header and surrounding
chrome; the demo's own h1 ('CopilotKit x Daytona') and subtitle are
redundant in the embedded context. Drop them and let the chat fill the
iframe viewport exactly:

- Remove the <header> (h1 + subtitle).
- Set <main> to height:100vh, padding:0, margin:0.
- Chat <section> uses flex:1 + minHeight:0 (no fixed minHeight) so it
  grows/shrinks to fill the available iframe height.

Side effect: the standalone Railway URL now also shows just the chat
(no h1/subtitle). Fine — the URL is a demo embedding target rather
than a polished standalone landing.

OSS-222
2026-05-29 19:56:30 +00:00
Mark Fogle 8dca50f422 chore(examples): rename next.config.mjs to .ts + allowlist
CI's check-config-allowlist failed on the new daytona-runcode showcase.
Rather than just adding an .mjs row, convert to .ts to match the
dominant pattern across examples/showcases/* (the .mjs predates the
Next 14 TS-config support and is only kept in a handful of older
showcases — banking, enterprise-brex, orca, presentation). New
showcases should follow the .ts convention.

- Replace examples/showcases/daytona-runcode/next.config.mjs with an
  equivalent next.config.ts (empty config, same behavior).
- Add the new path to .github/config-allowlist.txt in alphabetical
  position (between chatkit-studio/.../world and deep-agents-finance-erp).
- Verified locally: bash .github/scripts/check-config-allowlist.sh passes.

OSS-222
2026-05-29 19:38:46 +00:00
Mark Fogle a0183e02c9 feat(examples): drop blue gradient + literal-x header per review
Addresses PR #5087 review comment from @tylerslaton:
> Remove the blue padding around the chat, change the header to
> 'CopilotKit x Daytona'

- Drop the linear-gradient(160deg,#f8fafc,#eef2ff) background from
  <main>. The chat's own white card now stands on the default page
  background — no surrounding tint.
- Change the h1 from 'CopilotKit × Daytona' (× = U+00D7
  multiplication sign) to literal 'CopilotKit x Daytona' (ASCII x), per
  Tyler's literal request.

Mirrored byte-for-byte from the Railway demo source.

OSS-222
2026-05-29 19:32:22 +00:00
Mark Fogle bd83a9d108 feat(examples): polish daytona-runcode showcase
Reviewer asked to emphasize the runCode tool more, so:

- Replace CopilotSidebar with a centered CopilotChat (the chat is now the
  focal point of the page rather than a docked side panel).
- Increase the renderer's code pane to ~12 lines (was ~6) so multi-line
  generated code is visible without scrolling.
- Add 'Generated code:' label above the code pane to match the 'Result:'
  label below.
- Configure starter suggestion pills via useConfigureSuggestions with
  descriptive titles ('Python — Zoo animals', 'TypeScript — Fibonacci
  numbers', 'JavaScript — Current timestamp') and available: 'always' so
  they persist across iterations rather than disappearing after the first
  message.
- Wrap the chat in CopilotChatConfigurationProvider to replace the default
  'How can I help you today?' welcome text with something on-topic
  ('Ready to run code in a Daytona sandbox. Try a starter below, or
  describe what you'd like to execute.').
- Tighten the BuiltInAgent system prompt so the agent does not restate
  stdout in chat text — the renderer card already shows it.

OSS-222
2026-05-29 17:02:38 +00:00
github-actions[bot] db5ca601ab style: auto-fix formatting 2026-05-29 05:34:17 +00:00
Mark Fogle 580fe9bc58 feat(examples): add daytona-runcode showcase app
The deployable Next.js demo behind the new Daytona cookbook recipe. A minimal
CopilotKit Built-in Agent whose only added capability is the recipe's runCode
server tool — executes Python / TypeScript / JavaScript in an isolated Daytona
sandbox and streams the result back to the chat via a custom useRenderTool
card (fixed-height streaming code pane with react-syntax-highlighter +
vscDarkPlus, mirroring @copilotkit/react-ui's own CodeBlock, and a fixed-
height result pane with a 'Generated code:' / 'Result:' label pair). The
agent's system prompt instructs it not to restate stdout in chat text since
the renderer already shows it.

Standalone npm project — intentionally not in the monorepo's pnpm workspace
(matches the existing examples/showcases/* convention; only generative-ui-
playground is in the workspace globs). Validated end to end against published
@copilotkit/runtime@1.58.0 with both Python and JavaScript snippets round-
tripping through real Daytona sandboxes.

OSS-222
2026-05-29 05:33:34 +00:00
Anmol Baranwal ca114288e0 chore: add multimodal and dynamic flow details to readme 2026-05-28 19:51:11 +05:30
Anmol Baranwal 0ef47d90ad feat(showcase): add a2ui pdf analyst demo 2026-05-28 18:21:47 +05:30
Jordan Ritter 2482317ccc style: apply ruff format to Python codebase
320 files reformatted. One-time alignment to match the ruff format
check added to CI in #4812.
2026-05-13 23:10:35 -07:00
Jordan Ritter 21b832443d fix(showcase): run oxfmt on deep-agents-finance-erp use-request-approval hook 2026-05-06 16:35:49 -07:00