Commit Graph

663 Commits

Author SHA1 Message Date
Mike Ryan db09796809 fix: gate thread endpoints by runtime capability 2026-06-23 11:32:30 -07:00
Alem Tuzlak 5f2d7102d5 docs(bot): StateStore, persistence, and transcripts reference + guides 2026-06-23 18:38:47 +02:00
Ran Shemtov e0d6eeaebe Merge branch 'main' into claude/trusting-babbage-f4d48a 2026-06-23 09:21:35 +02:00
Tyler Slaton b77d2710aa feat(bot-whatsapp): WhatsApp Cloud API platform adapter + example + docs (#5449)
## What

Adds **`@copilotkit/bot-whatsapp`** — a WhatsApp Business **Cloud API**
`PlatformAdapter` for the platform-agnostic `@copilotkit/bot` engine —
plus a runnable **`examples/whatsapp`** app and docs. This brings
WhatsApp to the bots ecosystem alongside the existing Slack support,
reusing the engine, the `@copilotkit/bot-ui` IR, and the pluggable
`ActionStore` untouched.

## How it works

- **Ingress:** the adapter owns its own HTTP server — GET verification
handshake (`hub.challenge`) + POST intake validated by
`X-Hub-Signature-256` HMAC (timing-safe), acked `200` immediately then
processed async.
- **No streaming:** WhatsApp messages are immutable, so the run renderer
**buffers** text and sends once on `TEXT_MESSAGE_END`
(`supportsStreaming: false`; `update()` posts fresh, `delete()` no-ops).
- **Interactive mapping:** text/section → text; ≤3 buttons →
reply-button message; `Select` or 4–10 actions → list message; >10 →
numbered-text fallback. A control's `value` round-trips by encoding it
into the reply id (`ck:…::<json>`), since WhatsApp replies carry no
value field; oversized encodings fail loud rather than corrupt silently.
- **Memory:** WhatsApp exposes no readable history, so a pluggable
**`HistoryStore`** (default `InMemoryHistoryStore`) holds it and replays
it into `agent.messages` each turn (fresh threadId per turn, mirroring
`bot-slack`). Swap in a durable backend to persist across restarts.
- **Commands:** leading-keyword matching (`commandPrefix`, default `/`);
the command text is injected via the engine's `runAgent({ prompt })`
path (not persisted at ingress).
- **Inbound media** → AG-UI multimodal content parts; **HITL** via
interactive replies.

## Example

`examples/whatsapp` mirrors `examples/slack`: a CopilotKit
`BuiltInAgent` over MCP (Linear + Notion), with `issue_list`, an
interactive `show_incident`, and a `confirm_write` HITL gate.

## Tests & verification

- 62 unit tests across the package (render mapping, markdown→WhatsApp,
signature verification incl. wrong-but-equal-length, interaction
decode/round-trip, buffered renderer, webhook listener/server, stores,
media, adapter).
- `build` ✅, package `check-types` ✅, `publint`/`attw` (ESM-only) ✅,
example `check-types` ✅. Full `nx run-many -t test
--projects=packages/**` passes.
- Two rounds of code review (APPROVE) — fixed slash-command history
double-append and silent value-truncation; minors (HMAC over raw bytes,
conversationKey invariant, offset-correct Blob, unused-dep pruning,
added tests).

## Docs

Package `README.md` + `ARCHITECTURE.md`, example setup guide (Meta app +
webhook + tunnel), and a `shell-docs` WhatsApp guide page (registered in
`meta.json` + early-access gate).

## Notes / out of scope (v1)

- No template-send path for messaging outside WhatsApp's 24-hour
customer-service window (documented limitation).
- Pre-existing, unrelated `@copilotkit/core` `phoenix-observable.ts`
typecheck error exists on the branch base (missing `@types/phoenix`) —
not introduced here.
2026-06-22 20:34:54 -07:00
Sam Julien b9b08381ba docs: backport Threads guide to authored integrations (#5620)
## Summary

- Backports the generated/root Threads guide content into the shared
authored Threads snippet.
- Adds the CLI “Choose your starting point” path, manual path, thread
lock options, Enterprise Intelligence CTA, and corrected next-step links
to authored Threads docs.
- Standardizes authored integration Threads pages to explicitly import
the shared snippet with `components={props.components}` so authored
routes stay aligned.

## Authored routes covered

- AG2
- Agno
- AWS Strands
- Built-in Agent
- CrewAI Flows
- LangGraph
- LlamaIndex
- Mastra
- Microsoft Agent Framework
- PydanticAI

## Validation

- `npm run pretypecheck` in `showcase/shell-docs`
- `npm run lint` in `showcase/shell-docs` (passes with existing
warnings)
- `npm run test` in `showcase/shell-docs`
- `npm run typecheck` in `showcase/shell-docs`
- `npm run build` in `showcase/shell-docs` (passes with existing
Next/Turbopack warnings)
- `git diff --check`
- Manual MDX link sweep for changed docs links (`/premium/self-hosting`,
`/premium/threads-explained`, `/reference/hooks/useThreads`, and
`http://localhost:3000`)

## Formatter note

- `pnpm run check-format` currently fails on unrelated existing files
under `examples/showcases/arcade-tools/*`,
`examples/v2/react/demo/tsconfig.json`, `migrations.json`, and
`nx.json`.
- Scoped `oxfmt --check` does not treat the changed MDX files as target
files, so there is no formatter-owned MDX change to apply here.
2026-06-22 15:47:07 -07:00
Sam Julien 2fe292e4c7 docs(shell-docs): clarify tailored content selectors (#5621)
## Summary
- restyle TailoredContent selectors as native segmented path buttons
- add a selected check indicator plus hover/focus affordances
- add a rendering test for button semantics and selected state

## Verification
- pnpm exec oxfmt --check
showcase/shell-docs/src/components/react/tailored-content.tsx
showcase/shell-docs/src/components/react/__tests__/tailored-content.test.tsx
- npm run lint (showcase/shell-docs; existing warnings only)
- npm run typecheck (showcase/shell-docs)
- npm run test (showcase/shell-docs)
- npm run build (showcase/shell-docs; existing Turbopack NFT trace
warning)

## Notes
- Repo-wide pnpm check-format currently fails on unrelated pre-existing
files outside this PR; the touched files pass scoped oxfmt check.
2026-06-22 15:46:53 -07:00
Sam Julien 3910d24aab docs(shell-docs): clarify tailored content selectors 2026-06-22 13:52:31 -07:00
Sam Julien fae187b5db docs: backport threads guide to authored integrations 2026-06-22 13:46:32 -07:00
Sam Julien 477b1203c5 docs(shell-docs): correct intelligence docs links 2026-06-22 10:52:05 -07:00
Ran Shem Tov 8768c8a7e7 Merge remote-tracking branch 'origin/main' into claude/trusting-babbage-f4d48a 2026-06-22 16:11:21 +02:00
Alem Tuzlak b2c28a046c Merge branch 'main' into feat/bot-whatsapp 2026-06-22 11:12:54 +02:00
David McKay d351b0dfa1 docs(cookbook): use the official Google ADK logo (PNG via LFS)
Replace the placeholder logo with the official Agent Development Kit mark
from google/adk-python (assets/agent-development-kit.png), committed as an
LFS PNG like the other recipe logos (Daytona, Arcade). Point the card and
sidebar at /logos/google-adk.png and revert the unused google-adk.svg back
to its original state.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 19:31:29 -05:00
David McKay fc5c5b244f docs(cookbook): use the real ADK mark for the recipe logo
public/logos/google-adk.svg was a placeholder (a grey tile with the text
"Go"), like the other letter-stub SVGs in that directory. Replace it with
the real ADK glyph, reusing the vector paths from the `AdkIcon` component
(src/components/icons/framework-icons.tsx) on a light tile so it renders
on both light and dark surfaces. Only the new cookbook recipe references
this file, so no other page is affected. Monochrome for now; design can
recolor to official ADK colors at approval.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 19:27:54 -05:00
David McKay 1676e2b725 docs(cookbook): fix ADK user-scoping to use context/state, not forwardedProps
The ADK adapter (ag_ui_adk) builds session state from `dict(input.state)`
plus `input.context` (under `_ag_ui_context`); it does not mirror
`forwarded_props` into session state (it only reads it for the
`injectA2UITool` flag). So a user id sent via CopilotKit `properties`
(-> forwardedProps) never reaches `tool_context.state`, and the documented
scoping silently failed — the exact bug class the section warns about.

Carry the user id as agent context via `connectAgentContext` (or shared
agent state) instead, and read it from `tool_context.state["_ag_ui_context"]`
(or directly from state). Reconcile the contradictory forwardedProps/state
lines and fix the coding-agent prompt to match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 18:05:54 -05:00
David McKay 47ffd32976 docs(cookbook): add Angular + Google ADK production recipe
Add a cookbook recipe covering the non-obvious production gotchas when
wiring an Angular frontend to a Google ADK agent over AG-UI, with optional
CopilotKit Intelligence threads and memory: one agent store, run-body user
scoping (not a header), never reconfiguring the runtime mid-submit,
server-side governance, model selection, and graceful platform degradation.

- New recipe at cookbook/angular-adk-agentic-app.mdx
- Register in cookbook nav (meta.json) and add an index card
- Add a custom/google-adk sidebar icon entry
- Cross-link from frontends/angular
- Update the cookbook nav test for the new page

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 13:18:06 -05:00
Tyler Slaton 38b39fccfd docs: polish cookbook navigation and partner logos (#5594)
Adding logos and reworking the cookbook page.
2026-06-19 17:47:57 -07:00
github-actions[bot] 790dfd0a75 style: auto-fix formatting 2026-06-19 17:33:38 -07:00
Tyler Slaton e606bbb9a7 Update frontend docs for Copilot Runtime quickstarts 2026-06-19 17:02:50 -07:00
Tyler Slaton 8f1674a05a docs: polish cookbook navigation and partner logos 2026-06-19 16:23:18 -07:00
Tyler Slaton db2fd6539b fix: address merge conflicts and run formatter 2026-06-19 15:51:03 -07:00
Austin Merrick 4addf64583 fix(core): allow clearing headers via setHeaders with null/undefined (#5542)
## Summary

Fixes #5535.

`CopilotKitCore.setHeaders` was typed `Record<string, string>`, so there
was no type-safe way to clear a header like `Authorization` on logout.
`null` was a TS error, and an empty string leaves the header present
with a blank value.

## Change

- Widen `setHeaders` to `Record<string, string | null | undefined>` and
drop any `null`/`undefined` entry. A shared `normalizeHeaders` helper
enforces the same string-only invariant at both write paths (the
constructor and `setHeaders`).
- `setHeaders` stays a full overwrite, so clearing one header while
keeping the rest uses the spread pattern:
  ```ts
copilotkit.setHeaders({ ...copilotkit.headers, Authorization: token ?
`Bearer ${token}` : null });
  ```
- Update the `react-core` `AuthTokenSync` skill example to show the
logout/clear path, and warn that a header must not be managed via both
the `headers` prop and imperative `setHeaders` (the provider re-applies
its prop-derived headers as a full overwrite whenever its inputs
change).

## Tests

Added `packages/core` coverage: drop `null`/`undefined` keys,
empty-string preservation, overwrite-not-merge semantics, single-header
clear via spread, `onHeadersChanged` notification, and propagation to
local and remote (`ProxiedCopilotRuntimeAgent`) agents.

## Notes

- No API break: `Record<string, string>` is assignable to the widened
type, so existing callers are unaffected.
- The second commit syncs the plugin manifest version (`plugin.json` +
`marketplace.json` `plugins[0].version`) to `1.60.2` via `pnpm
sync:plugin-skills`. This drift pre-existed on `main` and surfaced in CI
only because this PR touches skill files; it is unrelated to the fix.
2026-06-19 15:05:46 -07:00
Austin Merrick c674288318 docs(angular): add @copilotkit/angular reference documentation (#5585)
Adds an **Angular** SDK section to the reference docs (closes OSS-251),
mirroring the React and Vue references. Documents every exported
function, service, directive, and component of `@copilotkit/angular`,
authored against the actual source.

**18 pages**, plus reference infra: registers `angular` and adds
`Services` + `Directives` categories for Angular's DI + signals model.

- **Functions:** `provideCopilotKit`, `injectCopilotKitConfig`,
`provideCopilotChatLabels`, `injectChatLabels`, `injectAgentStore`,
`connectAgentContext`, `registerFrontendTool`, `registerRenderToolCall`,
`registerHumanInTheLoop`
- **Services:** `CopilotKit` · **Directives:** `CopilotKitAgentContext`
- **Components:** `CopilotChat`, `CopilotChatView`, `CopilotChatInput`,
`CopilotChatMessageView`, `CopilotChatAssistantMessage`,
`CopilotChatUserMessage`

Verified: renders locally, all cross-links resolve, surfaces in
`llms.txt`/`llms-full.txt`, existing SDKs unaffected. Uses the correct
`@copilotkit/angular` name (top-level imports, no `/v2`). Companion to
the Angular quickstart (OSS-252, #5583).

### Screenshots

Reference overview, now with an Angular SDK card:

![Reference
overview](https://raw.githubusercontent.com/CopilotKit/CopilotKit/austin/oss-251-angular-reference-screenshots/pr-assets/oss-251/reference-overview.png)

Angular landing page (sidebar grouped into Components / Functions /
Services / Directives):

![Angular reference
index](https://raw.githubusercontent.com/CopilotKit/CopilotKit/austin/oss-251-angular-reference-screenshots/pr-assets/oss-251/angular-index.png)

`provideCopilotKit` (a representative function page):


![provideCopilotKit](https://raw.githubusercontent.com/CopilotKit/CopilotKit/austin/oss-251-angular-reference-screenshots/pr-assets/oss-251/provideCopilotKit.png)

<details>
<summary>More pages</summary>

`registerFrontendTool`:


![registerFrontendTool](https://raw.githubusercontent.com/CopilotKit/CopilotKit/austin/oss-251-angular-reference-screenshots/pr-assets/oss-251/registerFrontendTool.png)

`CopilotChat` component:


![CopilotChat](https://raw.githubusercontent.com/CopilotKit/CopilotKit/austin/oss-251-angular-reference-screenshots/pr-assets/oss-251/CopilotChat.png)

</details>

<sub>Screenshots live on branch
`austin/oss-251-angular-reference-screenshots` to keep this PR's diff
docs-only.</sub>
2026-06-19 14:55:12 -07:00
Austin Merrick 4c71ea1138 fix(core): allow clearing headers via setHeaders with null/undefined
setHeaders typed headers as Record<string, string>, so there was no
type-safe way to clear a header (e.g. Authorization on logout) — passing
an empty string left the header present with a blank value.

Widen the signature to Record<string, string | null | undefined> and drop
any entry whose value is null/undefined. setHeaders remains a full overwrite,
so clearing one header while keeping the rest is the spread pattern:
setHeaders({ ...copilotkit.headers, Authorization: null }). A shared
normalizeHeaders helper enforces the same string-only invariant at both
write paths (constructor and setHeaders).

Update the react-core AuthTokenSync skill example to show the logout/clear
path and warn that a header must not be managed via both the headers prop and
imperative setHeaders (the provider re-applies prop-derived headers as a full
overwrite when its inputs change). Also update the setHeaders reference
signature docs. Tests cover null/undefined stripping, empty-string
preservation, overwrite-not-merge semantics, single-header clear via spread,
subscriber notification, and propagation to local and remote
(ProxiedCopilotRuntimeAgent) agents.

Fixes #5535
2026-06-19 14:13:02 -07:00
Austin Merrick 43cb8a69a5 docs: add Angular quick-start guide
Add the Angular frontend quick-start at content/docs/frontends/angular.mdx
and wire it into the frontend picker (options, logo, page content, search
hrefs, search-index generation).
2026-06-19 14:05:19 -07:00
Tyler Slaton ad22f03be1 docs: update Enterprise Intelligence Platform docs (#5587)
## Summary

- Add a top-level Enterprise Intelligence Platform overview that
clarifies platform features, hosting options, plans/access, and the path
from cloud-hosted to self-hosted.
- Add Cloud-Hosted Enterprise Intelligence documentation covering
dashboard login, organization/workspace flow, projects, project API
keys, thread history/detail, and plan management.
- Refresh the Enterprise Intelligence Architecture and Threads &
Persistence Architecture pages so they are architecture-focused instead
of overlapping self-hosting/how-to content.
- Update self-hosting documentation to use the current product taxonomy,
call out Team self-hosted/custom Enterprise availability, and use a
tracked Enterprise-styled CTA for talking to an engineer.
- Add the CopilotKit CLI doc plus shared CLI content across root docs
and all visible authored/generated integration routes.
- Add CLI sidebar entries for authored framework docs and test that CLI
appears in both generated and authored framework nav.
- Add dashboard screenshots for ready, projects, thread list, API keys,
thread detail, and plan management/pricing.
- Update Threads, useThreads reference, multi-conversation tutorial,
architecture/concepts pages, and runtime snippets to point at the new
Enterprise Intelligence docs and remove early-access language from
Threads.
- Retire legacy Observability docs, remove observability references from
quickstarts/runtime docs/nav, and add SEO redirects from root,
troubleshooting, and framework observability URLs to the Intelligence
overview.
- Instrument Enterprise Intelligence CTAs with PostHog: signup CTAs fire
`try_for_free_clicked`, self-hosting engineer CTA fires
`talk_to_us_clicked`, and CLI command copying continues through
`cli_command_copied`.
- Rebase the PR branch onto current `origin/main` and fix the
integration docs doctest by adding LangGraph quickstart Python
dependencies plus clearer server-start diagnostics.

## Commits

- `docs(shell-docs): instrument intelligence ctas`
- `docs(shell-docs): add copilotkit cli docs`
- `docs(shell-docs): refresh intelligence platform docs`
- `docs(shell-docs): retire observability docs`
- `test(doc-tests): fix langgraph quickstart doctest`

## Validation

- `pnpm tsx scripts/doc-tests/extract.ts && pnpm tsx
scripts/doc-tests/run.ts`
- `pnpm exec vitest run scripts/doc-tests/__tests__/extract.test.ts`
- `pnpm exec oxfmt --check scripts/doc-tests/run.ts
showcase/shell-docs/src/content/docs/integrations/langgraph/doctest.json`
- `npm run test` in `showcase/shell-docs`
- `npm run typecheck` in `showcase/shell-docs`
- `npm run build` in `showcase/shell-docs`
- `pnpm run lint` at the repo root (0 errors; existing repo warnings
remain)
- `pnpm exec oxfmt --check` against PR-changed text files
- Local route checks for `/cli`, `/mastra/cli`, `/langgraph-python/cli`,
`/premium/managed-intelligence-platform`, `/premium/self-hosting`
- Local redirect checks for `/premium/observability`,
`/troubleshooting/observability-connectors`,
`/mastra/premium/observability`

Notes: build still reports the existing Next/Turbopack warnings about
deprecated middleware and NFT tracing in `next.config.ts`, but completes
successfully. Full repo `pnpm run check-format` currently fails on
pre-existing files outside this PR:
`examples/v2/react/demo/tsconfig.json`, `migrations.json`, and
`nx.json`; the PR-changed text files pass `oxfmt --check`.
2026-06-19 13:44:26 -07:00
Austin Merrick fb246ebbd7 docs(angular): add @copilotkit/angular reference documentation
Add an Angular SDK section to the reference docs (OSS-251), mirroring the
React and Vue references. Registers Angular in the reference infrastructure
(new Services and Directives categories, version selector label, subdir map,
overview card) and adds an index plus 17 pages covering provideCopilotKit and
the config/label functions, the CopilotKit service, injectAgentStore and
context APIs, tool registration (frontend, render, human-in-the-loop), the
CopilotKitAgentContext directive, and the prebuilt chat components.

All pages are written against the actual @copilotkit/angular source, use the
correct package name and top-level imports, and surface in llms.txt and
llms-full.txt.
2026-06-19 13:36:34 -07:00
Tyler Slaton 722000b58b docs(cookbook): add Oracle Agent Spec × Memory recipe (#5521)
## What

Adds the **"Build an Agentic Travel App with Oracle Agent Memory, Agent
Spec, and CopilotKit"** cookbook recipe, alongside `daytona.mdx` and
following the same section pattern (Try it live → Prerequisites → setup
→ Try it → key code → Going further → coding-agent prompt).

It wires together:
- **Oracle Agent Spec** — define the agent once as portable JSON
(`pyagentspec`)
- **LangGraph + AG-UI** — run that spec via the `ag_ui_agentspec`
adapter, served over AG-UI (SSE)
- **Oracle AI Database** — long-term memory (`oracleagentmemory`) so the
agent remembers across sessions
- **CopilotKit V2** — the chat frontend (generative UI +
human-in-the-loop), consuming the AG-UI endpoint with `HttpAgent`

The example is a travel concierge that recalls your preferences across
sessions, searches flights, and books them with a human-in-the-loop
confirmation card that stamps into a boarding pass.

## Try it live

Embeds the hosted demo as a live `<iframe>` — **cross-session recall
verified working end-to-end** (teach a preference in one thread, open a
new thread, it recalls from Oracle AI Database).

## Files
- `cookbook/oracle-agent-spec-memory.mdx` (new)
- `cookbook/meta.json` — sidebar entry
- `cookbook/index.mdx` — overview card

## Companion code
**#5563** adds the runnable demo at
`examples/showcases/oracle-agent-memory` (Python agent + Next.js
frontend + Oracle AI Database), beside `daytona-runcode`. The recipe's
"Get the code" links point there.

## No external asset dependencies
- "Try it live" is a live `<iframe>` — no CDN video to upload.
- The architecture diagram is an inline base64 data-URI SVG — no CDN
image to upload.

## Caveat kept honest in the doc
- **Recall is eventually consistent** — memory is
extracted/embedded/indexed asynchronously, so a just-taught fact becomes
recallable after a short delay.

## Verified
- `book_flight` is a CopilotKit **ClientTool** (`useHumanInTheLoop`) —
the confirm→book HITL resolves in a single agent run. Multi-turn
follow-ups work via a server-side full-history replace that sidesteps an
upstream Agent Spec × AG-UI `tool_call_id` correlation bug (documented
inline + in #5563's known-issues).
- Playwright E2E covers cross-session recall, flight search, and the
booking HITL (3/3 green).
- All CI green; ready for review.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-06-19 13:20:26 -07:00
Sam Julien c641f33d38 docs(shell-docs): retire observability docs 2026-06-19 13:11:05 -07:00
Sam Julien f34eb6e528 docs(shell-docs): refresh intelligence platform docs 2026-06-19 13:11:04 -07:00
Sam Julien 7bb3141024 docs(shell-docs): add copilotkit cli docs 2026-06-19 13:11:04 -07:00
Sam Julien b5c9b0d3c4 docs(shell-docs): instrument intelligence ctas 2026-06-19 13:11:03 -07:00
Tyler Slaton e2f742dd27 fix(docs): add langgraph doctest dependencies 2026-06-19 12:21:56 -07:00
Tyler Slaton d1fb02bcd6 fix(shell-docs): canonicalize react guidance redirects 2026-06-19 12:09:30 -07:00
github-actions[bot] 861148ff38 style: auto-fix formatting 2026-06-19 18:41:49 +00:00
Tyler Slaton eb000d034e Fix frontend picker and docs routing 2026-06-19 11:38:17 -07:00
Ran Shem Tov 0e5b2189e7 feat(showcase): add strands-typescript integration with base demos
Add a new node/TypeScript-backed AWS Strands showcase integration at
showcase/integrations/strands-typescript.

Backend: a node/TS agent server (src/agent/) built on @strands-agents/sdk
`Agent`/`tool` wrapped in @ag-ui/aws-strands `StrandsAgent` and served via
@ag-ui/aws-strands/server (`createStrandsApp`/`addStrandsExpressEndpoint`),
modeled on the upstream ag-ui aws-strands TS example server and the
langgraph-typescript infra. A single shared agent at "/" serves most demos
(tools, shared state via toolBehaviors/stateContextBuilder, HITL,
sub-agents), with tool-free specialized agents mounted at /voice,
/byoc-hashbrown, /byoc-json-render. model-factory targets OpenAI chat
completions and honors OPENAI_API_KEY / OPENAI_BASE_URL so it works behind
the showcase aimock proxy. Node-based Dockerfile + entrypoint run the agent
server (:8000) alongside the Next.js frontend.

Frontend mirrors the strands (Python) sibling's demo set and the
langgraph-typescript conventions, with HttpAgent routes proxying to the TS
agent server.

Scope: base integration + standard demos only. A2UI / declarative-gen-ui /
a2ui-fixed-schema is intentionally excluded (no A2UI agents, routes, demos,
or deps) and layered on later.

Platform wiring (mirrors langgraph-typescript): docker-compose local/dev
services on host port 3119, local-ports.json, packages.json, slug-map.ts
(born-in-showcase), showcase_build.yml matrix + path filter + metadata,
shell-docs/dashboard registries, and a logo asset. The python strands
integration is untouched.
2026-06-19 17:38:02 +02: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
Sam Julien 3ae761a966 chore(docs): remove retired docs app (#5548)
## Summary
- remove the retired top-level `docs/` Next app and the disabled
docs-sync workflow/script
- add `docs -> showcase/shell-docs` as a top-level symlink for `cd docs`
muscle memory without restoring the old docs tree
- move the docs model allowlist into `showcase/shell-docs/` and retarget
docs validation/doctest extraction to shell-docs content
- update docs/agent guidance and CI path filters so `docs/` is treated
as an alias, not an active separate docs surface
- tighten the pre-commit package check so non-package docs/tooling
changes do not fan out into the full package matrix

## Validation
- `pnpm exec tsx scripts/validate-doc-model-names.ts`
- `pnpm exec tsx scripts/doc-tests/extract.ts`
- `pnpm exec vitest run
scripts/__tests__/validate-doc-model-names.test.ts
scripts/doc-tests/__tests__/extract.test.ts
showcase/harness/src/cli/eval/scope.test.ts`
- `pnpm exec oxlint showcase/harness/src/cli/eval/scope.test.ts
scripts/doc-tests/extract.ts`
- `git diff --cached --check` before follow-up commit
- `test "$(readlink docs)" = "showcase/shell-docs"`
- `test -f docs/package.json`
- `pnpm exec oxfmt --check .claude/docs/documentation.md
.claude/docs/hooks.md AGENTS.md CLAUDE.md CONTRIBUTING.md
showcase/shell-docs/README.md`
- commit hooks passed

## Notes
- historical docs remain recoverable from
`archive/docs-save-do-not-prune` and `archive/docs-retired-2026-06-17`
- I intentionally left Vercel/project teardown out of this PR; this is
repo cleanup only
2026-06-19 07:33:51 -07:00
Nathan 🔶 Tarbert fc2acea6db docs(shell-docs): update useRenderToolCall reference + schema-free tool-render opt-out (#5504)
## What

Updates the v2 `useRenderToolCall` reference page and makes opting a
tool out of the default rendering a single, schema-free call.

## Why

The reference page had drifted out of sync with the hook implementation
(`packages/react-core/src/v2/hooks/use-render-tool-call.tsx`) — most
notably `toolCallId` in the render props, added after the doc was last
touched. While documenting how to opt out of rendering, the natural
example (`useRenderTool({ name: "...", render: () => <></> })`) only
type-checked for the wildcard `"*"`; a named tool required a
`parameters` schema, forcing a throwaway `z.any()`. This PR re-aligns
the doc and removes that rough edge.

## Changes

### Docs (`showcase/shell-docs`)
- `useRenderToolCall.mdx`:
- Document `toolCallId` in the render-prop shape (previously
undocumented).
- Describe agentId-scoped lookup priority: agent-specific → unscoped →
wildcard `"*"` → built-in `DefaultToolCallRenderer`.
- Note args are parsed with `partialJSONParse` (streaming), not strict
`JSON.parse`.
- Correct `toolCall` prop to `toolCall.function.name` /
`toolCall.function.arguments`.
- Rewrite the Status Resolution table to match real logic (`toolMessage`
presence + provider executing set).
- New **"Disable default tool rendering"** section, ordered least→most
specific: wildcard first (all tools), then a **"For specific tools"**
subsection. Both use a schema-free `useRenderTool` call; dropped the old
`useFrontendTool` handler/schema boilerplate.
- `useRenderTool.mdx`: document the render-only (no-schema) named
overload.

### react-core
- Make `parameters` optional on the named `useRenderTool` overload,
mirroring the existing wildcard path; `defineToolCallRenderer` defaults
the args schema to `z.any()` when none is given.
- This lets `useRenderTool({ name: "myTool", render: () => <></> }, [])`
type-check with no Zod schema. Typed `parameters` behavior is unchanged.
- Added a test for the named render-only registration.

## Verification

- `@copilotkit/react-core` tests pass (1280) including the new case;
`build` (tsc) passes.
- Opt-out snippets type-checked in-package (`tsc`): wildcard,
specific-name (no schema), and named-with-schema all compile.
- `oxlint` (shell-docs) passes — 0 errors.
- Previewed locally at `/reference/hooks/useRenderToolCall`.
2026-06-19 10:32:20 -04: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
Jerel Velarde 37466ecff5 docs(cookbook): inline memory-ownership diagram as data-URI (drops broken CDN image dependency) 2026-06-18 18:52:11 -07:00
Jerel Velarde 1df235d93d Merge branch 'main' into cookbook/oracle-agent-spec-memory 2026-06-19 08:00:07 +08:00
Austin Merrick 08a22f1124 docs: add @copilotkit/vue reference documentation (#5526)
Adds a **Vue** section to the reference docs at `/reference/vue`,
alongside the existing React, React Native, and Core references. Until
now there was no Vue reference, so users and agents had no way to
discover the API.

It mirrors the React v2 reference but documents the real
`@copilotkit/vue/v2` API, with Vue idioms throughout (composables return
refs, slots instead of render props, kebab-case props, Vue SFC
examples).

### What's included
- The Vue index page (install, styling, provider setup)
- 14 composables (useAgent, useFrontendTool, useHumanInTheLoop,
useThreads, and the rest)
- 9 components (CopilotKitProvider, CopilotChat, CopilotPopup,
CopilotSidebar, and the chat sub-components)
- Vue registered in the SDK picker and the reference landing page

### Screenshots

Landing page (SDK picker set to Vue, full sidebar):

![Vue reference
landing](https://raw.githubusercontent.com/CopilotKit/CopilotKit/vue-reference-pr-assets/pr-assets/vue-reference/vue-reference-landing.png)

A composable page (useAgent):

![useAgent
reference](https://raw.githubusercontent.com/CopilotKit/CopilotKit/vue-reference-pr-assets/pr-assets/vue-reference/vue-reference-useagent.png)

A component page (CopilotKitProvider):

![CopilotKitProvider
reference](https://raw.githubusercontent.com/CopilotKit/CopilotKit/vue-reference-pr-assets/pr-assets/vue-reference/vue-reference-provider.png)

### How it was verified
- All 24 pages render (HTTP 200) on the local docs server
- Content shows up in `llms.txt` and `llms-full.txt`
- Each page was written from the Vue source, not copied from React, and
spot-checked for accuracy

Guide content and new demos are out of scope.
2026-06-18 16:16:21 -07:00
Austin Merrick 5d035afaea fix(shell-docs): align callout accent colors to brand (#5559)
## What

Docs `<Callout>` accents (the icon + left bar) were rendering in
fumadocs' generic blue/amber/green instead of the CopilotKit palette.
Remap them to brand tokens:

- **info** → brand accent (purple)
- **warning** → the docs `--warning` orange
- **success** → brand mint (new `--success` token)
- **error** → unchanged (already `--destructive`)

Theme-aware across light and dark.

## Before / After

|  | Before | After |
|---|:---:|:---:|
| **Light** | ![before
light](https://raw.githubusercontent.com/CopilotKit/CopilotKit/callout-brand-screenshots/pr-assets/callout-brand/before-light.png)
| ![after
light](https://raw.githubusercontent.com/CopilotKit/CopilotKit/callout-brand-screenshots/pr-assets/callout-brand/after-light.png)
|
| **Dark** | ![before
dark](https://raw.githubusercontent.com/CopilotKit/CopilotKit/callout-brand-screenshots/pr-assets/callout-brand/before-dark.png)
| ![after
dark](https://raw.githubusercontent.com/CopilotKit/CopilotKit/callout-brand-screenshots/pr-assets/callout-brand/after-dark.png)
|

## Note

These must be plain `:root` custom properties, not `@theme` tokens:
Tailwind v4 tree-shakes theme variables that no utility class
references, and the Callout reads `--color-fd-info|warning|success` only
through inline `var()`.
2026-06-18 16:16:15 -07:00
Jerel Velarde 4d2b1584f4 docs(cookbook): flatten showcase paths to examples/showcases/oracle-agent-memory layout 2026-06-18 15:30:27 -07:00
Martha Kelly Schumann 7eb40b0524 docs(showcase): fix shared randomUUID imports (#5456)
## Summary
- fix Showcase docs snippets that import `randomUUID` from non-existent
`@copilotkit/shared/v2`
- use the published `@copilotkit/shared` entrypoint instead
- move the fix to the publishing Showcase docs source under
`showcase/shell-docs`

## Linear
- FAC-65

## Verification
- `rg -n "@copilotkit/shared/v2" showcase/shell-docs/src/content`
returns no matches
- `pnpm validate:model-names`
- `npm ci --ignore-scripts` in `showcase/shell-docs`
- `npm run build` in `showcase/shell-docs`
- `git diff --check`
- pre-commit passed after refreshing root dependencies with `pnpm
install`
2026-06-18 15:21:56 -07:00
Jerel Velarde 09c192ea37 docs(cookbook): live demo embed + point source links at examples/showcases/oracle-agent-memory 2026-06-18 15:09:06 -07:00
github-actions[bot] 20cd06f62e style: auto-fix formatting 2026-06-18 21:55:16 +00:00
Sam Julien 4c311ac3fb chore(docs): add shell-docs symlink 2026-06-18 14:54:25 -07:00
Martha Schumann 72007b1d6a docs(showcase): move shared import fix to shell docs 2026-06-18 14:49:58 -07:00