Commit Graph

1306 Commits

Author SHA1 Message Date
Tyler Slaton 35abf430f2 example(shadcn): rename project and add asset link in README 2026-06-26 17:40:41 -07:00
Tyler Slaton 5ebda711f3 example(shadcn): add example using new components and shadcn primatives (#5739) 2026-06-26 17:39:55 -07:00
Tyler Slaton 0759f63aae example(shadcn): add example using new components and shadcn primatives
Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2026-06-26 17:37:06 -07:00
Alem Tuzlak e0307facc8 refactor(bot): drop bot-store-redis/postgres adapters (never published)
The StateStore interface and the in-memory MemoryStore default remain;
durable backends can be reintroduced as a follow-up. Both adapter packages
were merged in #5613 but never published to npm, so removal is a clean
delete with no consumer impact.

- Delete packages/bot-store-redis and packages/bot-store-postgres.
- Revert the bot release scope and drift guard to bot + bot-ui.
- Strip the Redis dep, demo:restart script, restart demo, docker-compose,
  and REDIS_URL env from examples/slack.
- Rewrite the bot persistence/transcripts docs around "MemoryStore default
  + implement the StateStore interface yourself for durability".
2026-06-26 14:40:10 -07:00
GeneralJerel 54920c65be fix(showcase/oracle-agent-memory): background-persist lag + inline client-side booking
Sync the three travel-concierge UX fixes from the source repo
(jerelvelarde/oracle-cookbook#3) into the showcase:

- agent/concierge/server.py: persist memory in a serialized background task so
  the SSE stream closes at RUN_FINISHED instead of blocking ~2-13s on memory
  extraction + reconciliation (the post-generation loading lag). Adds a FastAPI
  lifespan drain + background-task failure surfacing.
- frontend/.../FlightOptions.tsx: "Select this flight" now drives confirm -> book
  entirely client-side, so the booking confirm card renders inline in view
  instead of off-screen via a fresh agent turn. The conversational book_flight
  HITL path is unchanged.
- frontend/e2e: add a covering test for the inline booking flow; rename
  sendAndPersist -> sendAndAwaitRun (stream-close is no longer a "memory written"
  signal now that persistence is backgrounded).

oxfmt --check + tsc --noEmit clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 15:53:32 -07:00
Tyler Slaton 5f9c2404d1 chore: format banking showcase 2026-06-25 15:35:45 -07:00
Austin Merrick 1aa40c7994 feat(examples): Microsoft Teams bot example with CSV→chart, file uploads, and HITL
Adds examples/teams: a runnable Teams bot built on @copilotkit/bot-teams.
Demonstrates rendering charts from uploaded CSV files, inbound file
handling over the Graph API, and human-in-the-loop confirmation flows,
plus the Teams app manifest and packaging scripts.
2026-06-25 12:56:04 -07:00
Alem Tuzlak cd11583884 fix(examples): keep slack agent running when an MCP server is unreachable
The triage runtime connected its MCP clients with Promise.all, so a single
unreachable/misconfigured server (bad key, sidecar down, hang) rejected the
whole run and surfaced as a fatal "⚠️ Agent error: Failed to connect to
MCP server" — the bot was dead for every request, even ones needing no MCP.

Connect each server independently (Promise.allSettled) with an 8s timeout,
drop the ones that fail, and let the agent run with whatever's left (web search,
rendering, thread reading, and any MCP that did connect). A per-turn system note
lists any down sources so the model only tells the user a source is unreachable
if they actually ask for it, and never invents data. Connections are retried
each turn, so a transient outage self-heals.
2026-06-25 16:11:44 +02:00
GeneralJerel 7d645af274 fix: restore upstream files unintentionally rewritten by lint-fix during merge 2026-06-24 18:42:01 -07:00
GeneralJerel 9ae901ed0a Merge remote-tracking branch 'upstream/main' into jerel/saas-banking-demo
# Conflicts:
#	pnpm-lock.yaml
2026-06-24 18:23:24 -07:00
Tyler Slaton edc8a55b9e fix(slack-example): stop reactions from triggering agent 2026-06-24 13:09:53 -07:00
Tyler Slaton 3afb050ebe feat(bot-slack): configure response routing 2026-06-24 11:53:55 -07:00
Jerel Velarde 670bb17591 Merge branch 'main' into showcase/oracle-agent-memory 2026-06-24 23:03:09 +08:00
Alem Tuzlak c52985889e Merge branch 'main' into feat/bot-surface-parity 2026-06-24 12:38:39 +02:00
Tyler Slaton a2f936ec61 style: format config files 2026-06-23 20:52:56 -07:00
Tyler Slaton a13c3ee663 chore: merge main into PR 5480 2026-06-23 20:50:16 -07:00
Tyler Slaton 75611b272c chore: merge main into PR 5480 2026-06-23 15:32:09 -07:00
Austin Merrick 4ba201b5c4 fix: repair check-types across all packages and gate it in CI
Repairs TypeScript check-types across the monorepo and adds a CI gate so
regressions are caught going forward:

- core: bundler module resolution and strict-mode fixes
- sdk-js: bundler module resolution; keep codegen, formatter, packaging working
- react-core: fixes across components, hooks, and tests
- react-native: restore catch binding referenced by TypeError cause
- runtime: repair check-types and bound AI SDK schema inference
- web-inspector: nodenext import extensions, export Anchor
- remaining packages and node example: assorted check-types repairs
- deps: add missing type-only devDependencies
- license context driven from /info licenseStatus
- ci: run check-types in the static quality workflow

Squashed from 12 commits for a single, easily-revertable change.
2026-06-23 15:26:47 -07:00
Mark f7cddc7651 fix(examples): route stack analyzer through end node (#5634)
## What does this PR do?

Routes the Gemini canvas stack analyzer through its registered `end`
node instead of directly to LangGraph's `END` sentinel.

This keeps the workflow wiring consistent with
`workflow.set_finish_point("end")` and ensures the cleanup/final state
emission in `end_node` is reachable.

## Related PRs and Issues

- Fixes #5605

## Tests

- `python3.12 -m py_compile examples/canvas/gemini/agent/stack_agent.py`
- `python3.12 - <<'PY' ... PY` (AST check that
`workflow.add_edge("analyze", "end")` exists and
`workflow.add_edge("analyze", END)` does not)
- `. /tmp/oss-pr-pipeline/langgraph-venv/bin/activate && python - <<'PY'
... PY` (LangGraph topology reproduction asserts `analyze -> end ->
__end__` and that `end_node` runs)
- `. /tmp/oss-pr-pipeline/langgraph-venv/bin/activate && python - <<'PY'
... PY` (imports `stack_agent.py` with CopilotKit/Gemini stubs and
asserts compiled `stack_analysis_graph` edges include `analyze -> end`
and not `analyze -> __end__`)
- `git diff --check`

## Checklist

- [x] I have read the [Contribution
Guide](https://github.com/copilotkit/copilotkit/blob/master/CONTRIBUTING.md)
- [x] If the PR changes or adds functionality, I have updated the
relevant documentation (not applicable: example graph wiring bug fix)
- [x] "Allow edits by maintainers" is checked (lets us help iterate on
your PR directly — faster turnaround for everyone)
2026-06-23 13:41:29 -07:00
Alem Tuzlak 107cdad5af feat(slack-example): reaction/ephemeral/modal feature demos
Add per-feature demos to examples/slack that narrate per-platform degradation
explicitly rather than failing silently:
- emoji triage — 🐛/🔥/✅ reactions file/escalate/ack via the agent
- /preview — ephemeral draft issue (native only-you on Slack, DM fallback on
  Discord/Telegram)
- /file-issue — modal form (Slack rich, Discord text-only, Telegram
  conversational fallback)

Also updates the Slack frontend guide (slack.mdx) with the capability matrix.
2026-06-23 20:49:38 +02:00
Alem Tuzlak 8c2493f35c feat(example): demonstrate native interrupts in the react-router example
The aisdk + tanstack agents expose a needsApproval bookFlight tool; /interrupts renders interrupts in-chat via useInterrupt(renderInChat) with a reusable InterruptCard and single/multiple suggestion pills. Requires OPENAI_API_KEY.
2026-06-23 20:26:20 +02: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
cyphercodes beb5485c0d fix(examples): route stack analyzer through end node 2026-06-23 18:25:52 +03:00
Alem Tuzlak b2c28a046c Merge branch 'main' into feat/bot-whatsapp 2026-06-22 11:12:54 +02:00
Jeel Gor f2e69a80b7 fix(build): replace Unix-only commands in package.json scripts with Node.js equivalents 2026-06-21 21:33:51 +05:30
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
GeneralJerel 9023efb266 chore(oracle-agent-memory): drop committed package-lock.json
The standalone showcase installs with `npm install` (Nixpacks does this
automatically when there's no lockfile; the README already uses npm install).
Removing the 16.6k-line lockfile also clears the fork-pr-monitor security
alert, which flagged it as a "large added file." Verified: a fresh
`npm install` + `next build` succeeds with no committed lockfile.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 13:25:48 -07:00
Alem Tuzlak f91f5d6968 Merge remote-tracking branch 'origin/main' into feat/bot-whatsapp
# Conflicts:
#	docs/model-allowlist.json
#	docs~origin_main
#	examples/slack/package.json
2026-06-19 17:26:54 +02:00
Alem Tuzlak a4c57b9911 fix(examples/slack): build all bot adapters via glob, not a hardcoded list
The build script enumerated bot-slack/bot-discord/runtime, so it silently
omitted bot-telegram and bot-whatsapp — deploying with TELEGRAM_*/WHATSAPP_*
secrets would fail at runtime because those adapters' dist/ was never built
(start runs via tsx against the workspace packages' compiled output).

Use the nx project glob '@copilotkit/bot*' (+ runtime) so every bot adapter,
including any added later, is built without editing this script.
2026-06-19 17:19:24 +02:00
Alem Tuzlak 59773505eb feat(bot-slack): modernize native streaming (task chunks, feedback, single-message) (#5532)
## What

Brings `@copilotkit/bot-slack` up to the **current** Slack native
streaming API surface (`chat.startStream` / `appendStream` /
`stopStream`, GA Oct 2025; structured chunks + AI feedback elements) and
removes the type-erasure workarounds. Result of an audit
cross-referencing the live `@slack/web-api@7.16.0` /
`@slack/types@2.21.1` types and Vercel's `vercel/chat` Slack adapter.

## Changes

- **No more `as unknown as Parameters<…>` casts** — every
streaming/post/update call uses the SDK's typed args.
- **One streamed message per turn** — dropped the per-message
continuation splitting (Slack documents only a 12k-per-append limit, no
cumulative cap; matches `vercel/chat`), keeping ≤12k per-append
chunking.
- **Native `task_update` tool-progress chunks** (`task_display_mode:
"timeline"`) interleaved into the streamed reply, replacing the separate
`🔧` status messages — with automatic degradation back to
`🔧` rows where structured chunks aren't supported.
- **Opt-in AI feedback buttons** via `slack({ feedback })` — a typed
`context_actions` + `feedback_buttons` row attached at `stopStream`;
clicks are routed adapter-locally (bypassing the engine's interaction
dispatch). No handler ⇒ no buttons.
- **Recipient scoping** — `recipient_user_id` / `recipient_team_id` only
for channel targets.
- **Cadence** — native flush floor lowered to ~600ms (appendStream
Tier-4); legacy `chat.update` stays 800ms.

### Engine (`@copilotkit/bot`)
One small, backward-compatible addition: optional
`RunRenderer.finish?()`, called after `runAgentLoop` resolves, so a
turn-scoped renderer can finalize its single stream. No-op for existing
adapters.

## Verification

- `bot-slack`: type-check (both tsconfigs) clean, **208 tests pass**,
oxfmt + oxlint clean.
- `bot`: type-check clean, **33 tests pass** (incl. a new `finish()`
test).
- Reviewed for correctness (stream lifecycle, finish/interrupt
interaction, delta tracking, degradation) — no high-confidence bugs;
feedback-on-interrupt and missing-ref-logging were tightened.

### Not verifiable without a live workspace (flagged in-code)
- That a >12k reply truly streams into one message (the
no-cumulative-cap assumption).
- `startStream` with no initial content.
2026-06-19 16:50:03 +02:00
Mike Ryan dba73fa407 chore(examples): remove live-consumed _intelligence overlay (ENT-834) (#5525)
## What

Removes the live-consumed local Intelligence overlay and the dead
references the deletion would leave behind.

- Deletes `examples/integrations/_intelligence/` (`docker-compose.yml`,
`.env.intelligence`, `README.md`) — the overlay the currently-shipped
CLI clones at runtime.
- Strips the now-dangling `# see
examples/integrations/_intelligence/.env.intelligence for the seed
value` pointer from 8 integration `.env.example` files (adk, agno,
langgraph-fastapi, langgraph-js, langgraph-python,
ms-agent-framework-{dotnet,python}, strands-python).

Closes ENT-834.

## ⚠️ DO NOT MERGE until launch

The **currently-shipped** CLI clones
`CopilotKit/CopilotKit@main:examples/integrations/_intelligence` at
runtime via `fetchIntelligenceOverlay` (hardcoded to `main`). Deleting
this dir from `main` **immediately breaks** the shipped CLI's
threads-framework `init` — the overlay fetch 404s.

**Merge gate (verify at merge time):**
- [ ] The managed-only CLI build has **dropped
`fetchIntelligenceOverlay`** (Intelligence-repo removal ticket)
- [ ] That managed-only CLI has been **released**
- [ ] Merge in lockstep with launch

## Scope

- ✅ **Included:** the `_intelligence/` overlay dir + the 8 dead
`.env.example` pointers it leaves behind.
- ✅ **Already done elsewhere:**
`examples/integrations/langgraph-python-threads/` (the ticket's "maybe"
scope) was already removed via ENT-800 — it is no longer on
`origin/main`.
- ⏭️ **Deferred to a launch-coordinated follow-up:** the local-stack
`INTELLIGENCE_API_URL`/`GATEWAY_WS_URL` defaults (`localhost:4201` /
`ws://localhost:4401`) baked into ~18 `copilotkit:intelligence` route
blocks + `agentcore/docker/docker-compose.yml`, and the matching
local-dev block in each `.env.example`. These depend on the managed
CLI's hosted env contract (Intelligence repo) and shouldn't be guessed
at now. The `copilotkit license` locked-state copy is owned by ENT-804.

## Not affected

The `docker-compose.test.yml` + `docker/Dockerfile.{agent,app}` files
across the integrations are the **e2e/CI test harness** for the example
apps, unrelated to the Intelligence pivot. The Threads feature, the
activation-gated `copilotkit:intelligence` block, and the themed
threads-drawer UI are the product and work against hosted Intelligence —
only the local-stack scaffolding is being removed.

## Notes

Branched off fresh `origin/main` (`c540734143`). No in-repo code
references the overlay dir (the `_intelligence` matches under
`packages/` are an unrelated private field on the agent registry).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-06-19 07:23:57 -07:00
Alem Tuzlak d92959e68d Merge remote-tracking branch 'origin/main' into feat/bot-whatsapp
# Conflicts:
#	.github/workflows/canary.yml
#	.github/workflows/publish-release.yml
#	.github/workflows/stable-release.yml
#	examples/slack/README.md
#	examples/slack/app/index.ts
#	examples/slack/app/sender-context.ts
#	release.config.json
2026-06-19 16:17:16 +02:00
Alem Tuzlak 699bc9a5c0 fix(examples/slack): build all imported bot packages for deploy
The build script only built bot-slack, bot-discord, and runtime, so
@copilotkit/bot-telegram (plus bot and bot-ui) were never compiled — the
Railway deploy then crashed on `import { telegram } from @copilotkit/bot-telegram`.
Build every workspace package the app imports.
2026-06-19 16:15:25 +02:00
Alem Tuzlak c55dad5cc5 Merge branch 'main' into feat/bot-slack-native-streaming
Resolve event-renderer.ts onRunFinishedEvent: keep the native turn stream open
(finalized in finish()) AND retain the legacy per-message stream drain from main
(#5573) as a no-op-in-native safety net. app/index.ts (telegram adapter from
#5520 + showToolStatus:false) and create-bot.test.ts auto-merged.
2026-06-19 15:57:20 +02:00
Alem Tuzlak ed95058e92 chore(examples/slack): adopt released TanStack openai-base strict-schema fix
Bump @tanstack/ai-openai 0.14.4 → 0.15.2 (pins @tanstack/openai-base 0.8.7,
TanStack/ai#790) and @tanstack/ai → 0.32.0. 0.8.7 emits strict:false for tool
schemas outside OpenAI's strict subset in the provider-path function-tool
converter, so MCP tools (e.g. Notion's API-post-search) no longer 400 — no
local patch needed. Verified end-to-end against the live Slack bot.
2026-06-19 15:01:17 +02:00
Alem Tuzlak 319d0ec78a feat(examples/slack): wire frontend tools into the TanStack agent + tidy render output
- runtime.ts: pass the bridge's forwarded client tools (convertInputToTanStackAI's
  tools) into chat() alongside web_search + MCP, so generative-UI cards and the
  confirm_write HITL gate work; drop the prompt line that made the model narrate
  charts with a trailing "Charting …" sentence (it landed after the image).
- render-chart / render-diagram: post the caption as a header BEFORE the image
  (a file upload's message lands a beat after postFile resolves, so caption-first
  keeps a stable caption → image order) and drop the false "rendered above" wording.

Depends on the @copilotkit/runtime factory tool-lifecycle fix (#5572) and the
bot-slack HITL/render-order fix (#5573).
2026-06-19 14:05:01 +02:00
Alem Tuzlak d4d6e204f1 feat(examples/slack): add web search via a TanStack AI factory agent
The example's runtime agent needed OpenAI's hosted `web_search` tool, but
BuiltInAgent's classic `tools` only accepts handler-based `ToolDefinition[]`
(needs `execute`) — it can't carry a provider/hosted tool. So switch the
agent to BuiltInAgent **factory mode** (`type: "tanstack"`) and drive it with
TanStack AI's `chat()`:

- `openaiText(model)` adapter (OpenAI Responses API; gpt-5.5 default)
- `webSearchTool({ type: "web_search" })` provider tool (`@tanstack/ai-openai/tools`)
- Linear/Notion MCP via `@tanstack/ai-mcp` `createMCPClient` (HTTP + bearer),
  created per-run; `chat()` discovers their tools and closes the connections
- `convertInputToTanStackAI(ctx.input)` bridges AG-UI input → `chat()`;
  BuiltInAgent converts `chat()`'s stream back to AG-UI events

OpenAI-only now (web search is OpenAI-specific); AGENT_MODEL accepts a bare
OpenAI id or an "openai/<id>" form. Adds @tanstack/ai, @tanstack/ai-openai,
@tanstack/ai-mcp to the example.
2026-06-19 14:02:43 +02:00
Alem Tuzlak 340722f597 Merge remote-tracking branch 'origin/main' into feat/bot-whatsapp
# Conflicts:
#	examples/slack/package.json
#	pnpm-lock.yaml
#	showcase/shell-docs/src/content/docs/meta.json
2026-06-19 11:22:56 +02:00
Alem Tuzlak 7fe12d6d3c Merge remote-tracking branch 'origin/main' into feat/bot-telegram-adapter
# Conflicts:
#	examples/slack/README.md
#	examples/slack/package.json
#	pnpm-lock.yaml
2026-06-19 11:04:18 +02:00
Mike Ryan d5b804698d fix(examples): suppress browser-extension hydration warning on <body> across integration demos (#5568)
## What

1. Add `suppressHydrationWarning` to `<body>` across **all 14
integration demo templates**
(`examples/integrations/*/src/app/layout.tsx`).
2. Fix a pre-existing **double-escaped Windows path** bug in the parity
manifest's `packageJsonOverrides`.

## Why (hydration)

**Mike Ryan hit a hydration error on first load of a fresh
`langgraph-python` init — caused by his Grammarly browser extension.**

Grammarly (and similar extensions) inject attributes onto `<body>`
*before* React hydrates:

```
data-new-gr-c-s-check-loaded="9.98.0"
data-gr-ext-installed=""
```

Those attributes are in the client DOM but absent from the server HTML,
so Next.js reports:

> A tree hydrated but some attributes of the server rendered HTML didn't
match the client properties.

It's a **false positive** — the app works, and end users (without dev
extensions) never see it — but it's a red console error on the first
load of our flagship eval/showcase templates, which is a poor first
impression.

## Fix (hydration)

`suppressHydrationWarning` on `<body>` is the React/Next.js-recommended
escape hatch for this. It is **scoped and one level deep**: it only
relaxes the check for `<body>`'s *own* attributes/text — **everything
rendered inside `<body>` (the whole app) is still fully
hydration-checked** — and `<body>`'s only attribute here is a static
`className`, so none of our own markup is masked. An inline comment
documents this so a future maintainer who adds dynamic `<body>`
attributes knows the check is relaxed.

`agent-spec` already had `suppressHydrationWarning` on `<html>`; the
Grammarly attributes land on `<body>`, so it needed the body-level
relaxation too (the `<html>` one is a level up and doesn't cover
`<body>`'s attributes).

## Commits

1. `b1fa482a7` — north-star (`langgraph-python`) + parity instances
(`langgraph-js`, `langgraph-fastapi`, `strands-python`) via `pnpm
parity:sync`.
2. `9f9c415d9` — the non-parity templates (not tracked by
`_parity/manifest.json`): `adk`, `agno`, `crewai-crews`, `crewai-flows`,
`llamaindex`, `mastra`, `ms-agent-framework-dotnet`,
`ms-agent-framework-python`, `pydantic-ai`, `agent-spec`. *(The repo's
`oxfmt` pre-commit hook also collapsed some multiline `<CopilotKit …>`
JSX in these files — standard auto-format on touched files; the only
semantic change is the suppression.)*
3. `7d60e49de` — parity manifest path-escaping fix (see below).

## The manifest bug (commit 3)

While syncing I found the `langgraph-js` and `strands-python`
`packageJsonOverrides` double-escaped the Windows `.bat` fallback,
producing `scripts\\run-agent.bat` (two backslashes) instead of
`scripts\run-agent.bat`:

- `langgraph-js/package.json` had already been synced with the broken
value.
- `strands-python/package.json` was still correct — and `parity:sync`
would have **corrupted** it on the next run (which is what surfaced
this).

Fixed the three overrides and re-ran `parity:sync`, which corrects
`langgraph-js/package.json` and leaves `strands-python`'s correct value
intact.

## Test plan

- [x] `pnpm parity:verify` → 0 errors
- [x] lefthook pre-commit green on all 3 commits (lint + `packages/**`
tests + commitlint)
- [x] All 14 templates confirmed to have body-level
`suppressHydrationWarning`
- [ ] Reviewer with Grammarly installed: run/`init` a template and
confirm no hydration error on first load
2026-06-18 20:02:31 -07:00
GeneralJerel be7d674964 chore(oracle-agent-memory): genericize db image namespace
build-and-push.sh defaulted IMAGE to a personal GHCR namespace; use an
OWNER placeholder (still IMAGE-overridable) so the showcase ships no
personal/private registry path. Resolves the pre-merge follow-up.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:52:04 -07:00
GeneralJerel 1b9ab035ce fix(oracle-agent-memory): ASSM tablespace (ORA-43853) + thread auto-titling
Synced from the cookbook dev repo (verified live on Railway + Playwright):

- db/init/01-create-user.sql: create the `cookbook` user on a dedicated
  ASSM tablespace (cookbook_ts) as its DEFAULT, instead of inheriting
  SYSTEM/MSSM (FREEPDB1's default on the Free :latest-lite image). JSON and
  VECTOR columns are SecureFile-backed and cannot live in an MSSM
  tablespace, so the old user failed schema creation with ORA-43853 and
  memory never persisted. Self-heals a user stranded on SYSTEM
  (drop+recreate); leaves a working ASSM user (local :latest USERS) alone.

- frontend: a new thread is named from its OWN first message, not the
  previous thread's. ThreadTitler now titles off the agent's message/run
  events gated on agent.threadId === activeThreadId, replacing a useEffect
  keyed on activeThreadId that read the shared, agentId-scoped transcript
  while it still held the prior thread's messages during a switch. Adds a
  Playwright regression test (e2e/thread-title.spec.ts).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 17:50:12 -07:00
Maximiliano Korp 7d60e49de0 fix(examples): correct double-escaped Windows agent path in parity overrides
The langgraph-js and strands-python packageJsonOverrides in
_parity/manifest.json double-escaped the Windows .bat fallback, so the
synced value became `scripts\\run-agent.bat` (two backslashes) instead of
the intended `scripts\run-agent.bat`. langgraph-js's package.json had
already been synced with the broken value; strands-python's was still
correct (and parity:sync would have corrupted it on the next run).

Fix the three overrides and re-run parity:sync, which corrects
langgraph-js/package.json and leaves strands-python's correct value intact.
2026-06-18 17:16:01 -07:00
Maximiliano Korp 9f9c415d98 fix(examples): suppress browser-extension hydration warning on <body> (non-parity templates)
Extend the same `<body suppressHydrationWarning>` fix to the integration
templates that are not tracked by examples/integrations/_parity/manifest.json,
so they don't surface a Grammarly-style hydration mismatch on first load:
adk, agno, crewai-crews, crewai-flows, llamaindex, mastra,
ms-agent-framework-dotnet, ms-agent-framework-python, pydantic-ai, agent-spec.

agent-spec already had suppressHydrationWarning on <html>; the Grammarly
attributes land on <body>, so it needs the body-level relaxation too (the
<html> one is one level up and does not cover <body>'s attributes).
2026-06-18 17:12:28 -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
Maximiliano Korp b1fa482a77 fix(examples): suppress browser-extension hydration warning on <body>
Browser extensions such as Grammarly inject attributes onto <body>
(data-gr-ext-installed, data-new-gr-c-s-check-loaded) before React
hydrates, which surfaces as a hydration mismatch error on first load of
the generated Next.js app.

Add suppressHydrationWarning to <body> in the langgraph-python north-star
and propagate to the parity instances (langgraph-js, langgraph-fastapi,
strands-python) via parity:sync. This only relaxes the check for <body>'s
own attributes (one level deep); everything rendered inside <body> is
still fully hydration-checked, and <body>'s className is static so none of
our own markup is masked.
2026-06-18 16:43:25 -07:00
Jordan Ritter 1398fe225c chore: migrate @copilotkitnext usages to @copilotkit/*/v2 entrypoints 2026-06-18 16:37:58 -07:00
Mike Ryan ab47e6b132 fix(examples): update threads license command (#5564)
## Summary
- Update locked Threads drawer copy in integration examples to use `npx
copilotkit@latest license`
- Keep the command consistent across the example variants that render
the licensed feature panel

## Validation
- Pre-commit hooks ran lint/check package hooks successfully
- Verified integration examples no longer render the stale `copilotkit
license` command
2026-06-18 16:11:41 -07:00
Mike Ryan 469070e501 fix(examples): update threads license command 2026-06-18 16:10:09 -07:00