8584 Commits

Author SHA1 Message Date
Martha Kelly Schumann 684ba7b263 chore: release monorepo v1.57.0 (#4636)
## Release monorepo v1.57.0

**Scope:** `monorepo` | **Bump:** `minor`

---

### How this release process works

1. **This PR was created automatically** by the "release / create-pr"
workflow.
   It bumped the `monorepo` packages to `1.57.0`
   and generated AI-enhanced release notes.

2. **CI runs on this PR** — the full test suite (unit tests, lint, type
checks, build)
   must pass before merging. This is the review gate.

3. **Review the release notes** in `release-notes.md` in this PR.
If a Notion draft was created, you can edit the release notes there
before merging.

4. **When this PR is merged**, the `release / publish` workflow
automatically:
   - Builds all packages
   - Publishes the `monorepo` packages to npm at version `1.57.0`
   - Creates git tag `monorepo/v1.57.0`
   - Creates a GitHub Release with the final release notes

### Before merging

- [ ] CI is green (tests, lint, types, build)
- [ ] Version bumps look correct
- [ ] Release notes are accurate (edit in Notion if a draft was created)

---

> **Do not merge until CI is fully green.** The full test suite runs
automatically on this PR.
v1.57.0
2026-05-05 05:07:36 -07:00
Martha Kelly Schumann d97b27c195 Merge branch 'main' into release/publish/monorepo/v1.57.0 2026-05-05 05:04:57 -07:00
Alem Tuzlak 0761801417 fix(showcase/dashboard): add maxPossible to parity-matrix DepthResult literals (#4662)
## Summary

- Two object literals in
`showcase/shell-dashboard/src/components/parity-matrix.tsx`
(`ParityCategorySection`) were missing the required `maxPossible` field
on `DepthResult`, causing `next build` to fail with TS2322 on every
shell-dashboard production build.
- This blocked rebuilding the deployed showcase shell-dashboard, which
currently ships with `NEXT_PUBLIC_SHELL_URL` unset — every Demo button
on the dashboard renders as
`about:blank#shell-url-missing/integrations/<slug>/<feature>/preview`
instead of the actual preview URL.
- Setting `maxPossible: 0` alongside `achieved: 0` for unwired cells is
the natural fallback (no probe → no ceiling) and matches how `DepthChip`
already renders an unshipped cell.

## Background

The fix is cherry-picked from commit `1db2fbc7b` on the
`fix/dashboard-polish` branch (Jordan Ritter) — that branch also has 8
other commits (D5 depth model rework, ops→harness rename) which together
form a larger polish pass that hasn't been opened as a PR yet. Landing
this 2-line slice standalone unblocks the showcase deploy without
waiting on review of the larger branch.

Once this lands, re-running `gh workflow run showcase_build.yml --ref
main -f service=shell-dashboard` will produce a working production image
with `NEXT_PUBLIC_SHELL_URL=https://showcase.copilotkit.ai` baked in.

## Test plan

- [ ] CI typecheck passes (was previously failing here)
- [ ] CI build of showcase-shell-dashboard image succeeds
- [ ] After merge: trigger \`showcase_build.yml\` for
\`shell-dashboard\` and verify deployed dashboard's Demo links resolve
to \`https://showcase.copilotkit.ai/integrations/...\` instead of the
\`about:blank#shell-url-missing\` sentinel
2026-05-05 12:19:47 +02:00
Alem Tuzlak 30666298da chore(shell-docs): sync upstream content (AgentCore + threads + misc) (#4514)
## Summary

Cleans up shell-docs after PR #4521 reintroduced content earlier PRs
intentionally retired, adds a Deploy section with an inlined AWS
AgentCore guide using a custom command-tabs component, and hardens the
sync script against future regressions of the same shape.

## Changes

### Deploy section + AgentCore page (custom UX)
- New `<AgentCoreCommandTabs />` component — framework-aware command
tabs with hljs highlighting and copy buttons, built on shell-docs's own
`<Tabs>`/`<Tab>` primitives. Upstream's version depends on fumadocs-ui,
which shell-docs doesn't install.
- Replaces main's `<Content />` stub at `/deploy/agentcore` with the
full inlined guide.
- Wires the Deploy section into the root sidebar via `deploy/meta.json`
+ a `---Deploy---` group in `meta.json`.
- Registers the component in `mdx-registry.tsx`.

### Remove duplicates reintroduced by the upstream sync
- Delete
`learn/{index,intelligence-platform,threads,tutorials/multi-conversation-chat}.mdx`.
Canonical homes are at `/premium/intelligence-platform`,
`/premium/threads-explained`, and `/tutorials/multi-conversation-chat`.
`next.config.ts` already redirects `/learn/*` to those destinations.
- Delete root `ag-ui-middleware.mdx`. Canonical home is
`/agentic-protocols/ag-ui-middleware`. `next.config.ts` already
redirects `/ag-ui-middleware`.

### Harden sync script
Add `PATH_EXCLUSIONS` regexes so next sync runs don't bring these paths
back:
- `docs/content/docs/learn/`
- `docs/content/docs/(root)/ag-ui-middleware.mdx`
- Orphan shared-state files:
`langgraph/shared-state/workflow-execution`,
`adk/shared-state/{workflow-execution,state-inputs-outputs}`,
`llamaindex/shared-state/state-inputs-outputs`
- AgentCore upstream sources (root shell, per-framework
`deploy-agentcore.mdx`, shared snippet) — shell-docs owns the canonical
inlined version

### Optional schema migrations Step
Adds an opt-in `(Optional) Enable schema migrations` Step to
`premium/self-hosting.mdx` covering `migrations.enabled: true` in the
Helm values + the verification behavior.

## Test plan
- [ ] `/deploy/agentcore` renders the inlined guide; both
`<AgentCoreCommandTabs />` blocks show framework tabs with highlighted
bash and a working copy button
- [ ] Deploy appears as a sidebar group between Premium and What's New
- [ ] `/learn/threads`, `/learn/intelligence-platform`,
`/learn/tutorials/multi-conversation-chat`, and `/learn` all redirect to
their canonical destinations (no longer 200 with duplicate content)
- [ ] `/ag-ui-middleware` redirects to
`/agentic-protocols/ag-ui-middleware`
- [ ] The optional schema migrations Step renders in
`/premium/self-hosting` between the secrets Step and the
install-the-chart Step
- [ ] Next dry-run of `sync-docs-from-main.ts` does not flag the
newly-excluded paths
2026-05-05 12:14:21 +02:00
Alem Tuzlak 85c6e678c1 showcase/sync: detect re-introduction of previously-deleted shell-docs paths (#4647)
## Summary

`PATH_EXCLUSIONS` keeps retired upstream paths out of shell-docs, but it
requires whoever retires a page to also add the regex — and that step
has been missed. PR #4521 brought back `/learn/*` and root
`/ag-ui-middleware.mdx` after earlier PRs intentionally removed them;
nothing in the sync flow caught it.

This PR adds a safety net to `sync-docs-from-main.ts`. Before writing
each upstream file, it checks whether the target shell-docs path exists
in git's deletion history and isn't currently on disk. If so, it
surfaces the file in the auto-PR's `review-items.txt` under a new "Files
re-introduced from shell-docs deletion history" section, and includes
the count in `hasReviewItems` so the PR is flagged needs-review (exit 3)
instead of going through the auto-merge path.

The detector is informational, not blocking — content still syncs as
usual, only the flag is added. The fix loop is: human reviews, decides
intent. If the re-introduction is unwanted, add a `PATH_EXCLUSIONS`
regex and delete the file; the detector picks it up again on the next
sync until the regex is in place.

## Verified locally

`tsx showcase/scripts/sync-docs-from-main.ts --dry-run` exits 3 and
flags 3 real findings against current main:

```
docs/content/docs/(root)/index.mdx
docs/content/docs/integrations/langgraph/index.mdx
docs/content/docs/integrations/microsoft-agent-framework/index.mdx
```

All three were previously deleted in favor of meta.json folder pages —
the detector correctly catches them as candidates for re-introduction
the next time the sync runs.

## Test plan
- [ ] `tsx showcase/scripts/sync-docs-from-main.ts --dry-run` exits 3
against current main
- [ ] Output includes a `Files re-introduced from shell-docs deletion
history` section in `review-items.txt`
- [ ] Files currently on disk are not flagged (only paths that exist in
deletion history but aren't in the working tree)
- [ ] Future docs-sync(needs-review) PRs that bring back retired paths
surface them in the same section
2026-05-05 12:14:08 +02:00
Alem Tuzlak 8bc2e531cd fix(showcase/dashboard): add maxPossible to parity-matrix DepthResult literals
Two object literals in parity-matrix.tsx ParityCategorySection were missing
the required maxPossible field on DepthResult, causing 'next build' to fail
with TS2322 and blocking the shell-dashboard production rebuild. Setting
maxPossible: 0 matches achieved: 0 for unwired cells (no probe → no ceiling),
which is consistent with how DepthChip renders an unshipped cell.

Cherry-picked from 1db2fbc7b on fix/dashboard-polish (Jordan Ritter); landing
standalone so the showcase deploy can rebuild from main without waiting on
the larger dashboard-polish branch.
2026-05-05 12:12:51 +02:00
Ben Taylor 23997fffc2 feat(docs): scope sidebar to /learn with header + Overview landing (#4653)
## What does this PR do?

Makes `/learn` behave like `/reference` in the docs site: when a user is
under `/learn`, the framework picker disappears and the sidebar shows
only learn content.

### Changes

- **Add `learn` to root `meta.json`** — the learn folder was missing
from the root navigation, so `ConditionalSidebar` couldn't find it in
the page tree and was falling through to the default sidebar (with the
framework picker still visible). Adding it to the pages list mirrors how
`reference` is wired up.
- **New `LearnHeader` component** — static header with a book icon and
"Learn" label, styled to match the Reference version selector. Wired in
via `Sidebar`'s existing `headerSlot` prop on `/learn` routes.
- **Rename learn index title to "Overview"** — the landing page that
shows when you click the Learn tab now reads "Overview" in both the page
heading and the sidebar.
- **Drop the redundant `h-6` spacer in `Sidebar`** — every header
component (`IntegrationSelector`, `VersionSelector`, `LearnHeader`)
already has its own `mb-3`. The extra spacer was producing a 24px
phantom gap on `/learn` while collapsing to 0 on `/reference` under flex
shrink, so the two sidebars looked inconsistent.

### Verification

Tested locally on the docs dev server:

| Route | Sidebar header | Sidebar contents | Framework picker |
|-------|---------------|------------------|------------------|
| `/`   | Integration selector | Full docs tree | shown |
| `/reference/v2` | API version selector | Reference v2 tree | hidden |
| `/learn` | New "Learn" header | Learn-only tree | hidden |
| `/learn/architecture` | New "Learn" header | Learn-only tree
(Architecture active) | hidden |

Spacing between the header and first sidebar item is now equal across
`/learn` and `/reference`.

## Related PRs and Issues

- N/A

## 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
- [x] "Allow edits by maintainers" is checked

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-04 23:05:07 -05:00
Tyler Slaton cb9326327c feat(inspector): remove invite-code gate on Threads (#4644)
## What does this PR do?

Removes the private-beta access gate on the Threads view in the web
inspector. Threads is now accessible directly without an invite code.

### Removed
- `renderThreadsGate()` — the gradient-backed gate container
- `_renderEarlyAccessCard()` — invite-code card with "Request Early
Access" CTA
- `_renderUnlockingCard()` — the "Welcome to Threads" transition card
- `_submitThreadsCode()` — code validation against `"earlyaccess"` and
cookie write
- `THREADS_REQUEST_URL` constant (Hubspot invite form)
- State: `_threadsUnlocked`, `_threadsUnlocking`, `_threadsGateError`,
`_threadsGateCodeInvalid`, and the two associated timers
- Cookie restore (`cpk_threads_access=1`) on page load
- Gate branch in `renderThreadsView()` — it now renders threads
unconditionally

Net: -401 lines in `packages/web-inspector/src/index.ts`. Existing
`cpk_threads_access` cookies on user browsers become a harmless no-op.

## Related PRs and Issues

- N/A

## 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
- [x] "Allow edits by maintainers" is checked

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-04 20:53:42 -07:00
Tyler Slaton 760fc65187 feat(docs): scope sidebar to /learn with header + Overview landing
Add a Learn-only sidebar mode that mirrors how /reference works: when a user
is under /learn, the framework picker is hidden and the sidebar shows only
learn content (What's New, Agentic Protocols, Generative UI, Specs,
Architecture, Tutorials).

- Add `learn` to the root meta.json so the learn folder is discoverable in
  the page tree (was missing, which is why ConditionalSidebar previously
  fell through to the default sidebar on /learn routes)
- Add a static LearnHeader (book icon + "Learn") visually matching the
  Reference version selector, wired in via Sidebar's headerSlot
- Rename the learn index page title to "Overview" so the landing page reads
  cleanly under the new header
- Drop the redundant `h-6` spacer in Sidebar — every header component
  (IntegrationSelector, VersionSelector, LearnHeader) already supplies its
  own `mb-3`, and the spacer was producing a 24px phantom gap on /learn
  while collapsing to 0 on /reference under flex shrink

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 20:49:48 -07:00
Ben Taylor 41334064d1 Track cli command copies in docs PostHog (#4643)
## Summary
- New \`docs/lib/track-command-copy.ts\` helper fires
\`cli_command_copied\` with \`{ command, install_type, location }\`.
\`install_type\` is inferred from the leading token (\`npx\`, \`pnpm\`,
\`pip\`, etc., falling back to \`code\`).
- New \`CopyTracker\` provider monkey-patches
\`navigator.clipboard.writeText\` once at app boot, so every
programmatic copy is tracked without per-component instrumentation.
Covers Fumadocs' built-in code-block copy button, \`CustomCodeBlock\`,
\`CodeShowcase\`, \`FrameworkOverview\`, and any future copy widget.
- Coexists cleanly with Reo's own \`writeText\` monkey-patch — the
wrappers chain rather than collide.

## Labeling
- \`command\` — the copied text (truncated to 240 chars).
- \`install_type\` — inferred from the first token.
- \`location\` — \`window.location.pathname\` (encodes product on docs
URLs like \`/langgraph/\...\`, \`/crewai/\...\`).

## Companion
Mirrors
[CopilotKit/website#feat/cli-copy-tracking](https://github.com/CopilotKit/website/tree/feat/cli-copy-tracking)
so a single PostHog funnel covers both sites.

## Test plan
- [ ] \`pnpm dev\`, copy from a Fumadocs code block,
\`CustomCodeBlock\`, \`CodeShowcase\`, and \`FrameworkOverview\`.
Confirm a \`cli_command_copied\` event lands in PostHog for each with
the right \`install_type\` and \`location\`.
- [ ] Confirm Reo's auto-tracked copy events still appear in Reo (no
regression from the writeText chaining).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-04 19:45:57 -05:00
Benjamin Taylor ccc16b3525 Merge remote-tracking branch 'origin/main' into feat/cli-copy-tracking
# Conflicts:
#	docs/lib/providers/providers-wrapper.tsx
2026-05-04 19:13:25 -05:00
Benjamin Taylor 0b7b3c77c8 refactor(docs): drop command body and unused product param from copy tracking
Address review feedback on #4643: install_type and location already answer
the funnel questions, so persisting raw clipboard contents adds privacy
surface without analytic value (the global writeText hook fires on every
programmatic copy, not just CLI buttons). Also remove the never-passed
product param.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 19:07:04 -05:00
Sam Julien 45f5cf711c showcase/sync: detect re-introduction of previously-deleted shell-docs paths
PATH_EXCLUSIONS is the durable mechanism for keeping retired upstream
paths out of shell-docs, but it requires the person retiring a page to
also add the regex — and that step has been missed (#4521 brought back
/learn/* and root /ag-ui-middleware.mdx after earlier PRs intentionally
removed them).

Add a safety net: before writing each upstream file, check if its target
shell-docs path exists in git's deletion history and isn't currently on
disk. If so, surface it in the auto-PR's review-items.txt under a new
'Files re-introduced from shell-docs deletion history' section and
include reintroduced.length in hasReviewItems so the PR is flagged
needs-review (exit 3) instead of auto-merged.

Doesn't block the write — content is still synced, the detector is
informational. The fix loop is: human reviews, decides intent. If
unwanted, add a PATH_EXCLUSIONS regex and delete the file; next sync
the detector picks it up again until the regex is in place.

Verified locally — current dry-run flags 3 real findings (root/index,
langgraph/index, microsoft-agent-framework/index) that were deleted in
favor of meta.json folder pages.
2026-05-04 16:32:57 -07:00
Jordan Ritter dac4f622c7 docs(showcase): add GOTCHAS.md — 133 edge cases from 17 debugging sessions (#4645)
## Summary

Comprehensive gotchas document extracted from 17 conversation sessions,
memory files, and handoffs. 133 deduplicated entries covering every edge
case discovered during the D5 blitz and ongoing showcase work.

Sections: General, CopilotKit Frontend (V1/V2), Agent Registration,
Aimock & Fixtures, Multimodal, Probe Infrastructure, Python-Specific,
Docker & Build, Framework-Specific (15 frameworks), Local Debugging
Quick Reference.

## Test plan

- Documentation only
2026-05-04 15:20:00 -07:00
Jordan Ritter d2d7224314 docs(showcase): add GOTCHAS.md — framework edge cases from D5 grind
What we learned getting 18 integrations to D5 green — and what was
still wrong even when green. Cross-framework patterns (V1/V2, testids,
runtime hoisting, agent naming, multimodal shims, Pydantic models),
per-framework edge cases for all 15 frameworks, aimock fixture gotchas,
and the 6 things that were "green but wrong."
2026-05-04 15:17:42 -07:00
Ben Taylor f98e65bf34 perf(docs): trim analytics surface for LCP (#4646)
- PostHog: capture_dead_clicks=false to skip dead-clicks-autocapture.js
- Drop duplicate reb2b loader (NEXT_PUBLIC_RB2B_ID); the <Script> in
app/layout.tsx using NEXT_PUBLIC_REB2B_KEY is the canonical one and
matches the website's reb2b key

<!--
Thank you for sending the PR! We appreciate you spending the time to
work on these changes.

Help us understand your motivation by explaining why you decided to make
this change.


**Please PLEASE reach out to us first before starting any significant
work on new or existing features.**

By the time you've gotten here, you're looking at creating a pull
request so hopefully we're not too late.

We love community contributions! That said, we want to make sure we're
all on the same page before you start.
Investing a lot of time and effort just to find out it doesn't align
with the upstream project feels awful, and we don't want that to happen.
It also helps to make sure the work you're planning isn't already in
progress.

As described in our contributing guide, please file an issue first:
https://github.com/ag-ui-protocol/ag-ui/issues
Or, reach out to us on Discord: https://discord.com/invite/6dffbvGU3D


You can learn more about contributing to copilotkit here:
https://github.com/copilotkit/copilotkit/blob/master/CONTRIBUTING.md

Happy contributing!

-->

## What does this PR do?

(Describe the changes introduced in this PR)

## Related PRs and Issues

- (Direct link to related PR or issue, if relevant)

## Checklist

- [ ] I have read the [Contribution
Guide](https://github.com/copilotkit/copilotkit/blob/master/CONTRIBUTING.md)
- [ ] If the PR changes or adds functionality, I have updated the
relevant documentation
- [ ] "Allow edits by maintainers" is checked (lets us help iterate on
your PR directly — faster turnaround for everyone)
2026-05-04 17:12:06 -05:00
Sam Julien e5faf92c94 shell-docs: document optional schema migrations Step in self-hosting
The Helm chart supports running schema migrations as a pre-install Job
(disabled by default). Document the opt-in path and the verification
behavior so operators can decide whether to enable it.
2026-05-04 15:09:49 -07:00
Sam Julien c5d2a06e14 showcase: harden sync exclusions to prevent retired paths from re-flowing
The previous sync brought back /learn/*, root /ag-ui-middleware.mdx, the
upstream AgentCore 3-shell + shared snippet, and several orphan
shared-state files that shell-docs deliberately doesn't carry. Add
matching PATH_EXCLUSIONS so future syncs don't reintroduce them.

Not bumping .docs-sync-sha — the previous sync's sha is still accurate
and the new exclusions take effect on the next run.
2026-05-04 15:09:04 -07:00
Benjamin Taylor 1a76f693f0 perf(docs): trim analytics surface for LCP
- PostHog: capture_dead_clicks=false to skip dead-clicks-autocapture.js
- Drop duplicate reb2b loader (NEXT_PUBLIC_RB2B_ID); the <Script>
  in app/layout.tsx using NEXT_PUBLIC_REB2B_KEY is the canonical one
  and matches the website's reb2b key

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 17:09:00 -05:00
Sam Julien 1891de6681 shell-docs: remove duplicate /learn and root ag-ui-middleware pages
These were re-introduced by an upstream docs sync. Canonical homes are
already in shell-docs at /premium/intelligence-platform,
/premium/threads-explained, /tutorials/multi-conversation-chat, and
/agentic-protocols/ag-ui-middleware. next.config.ts already redirects
the retired paths to the canonical destinations.
2026-05-04 15:08:36 -07:00
Sam Julien 7f875ea331 shell-docs: add Deploy section with inlined AgentCore content
Replaces the upstream-synced <Content /> stub at /deploy/agentcore with
the full inlined guide using the new <AgentCoreCommandTabs /> component
for the auth-mode-aware command examples. Wires the Deploy section into
the root nav.

- New component: agentcore-command-tabs.tsx
- New section meta: deploy/meta.json
- Root meta.json adds Deploy as a top-level group
- mdx-registry.tsx registers the component
2026-05-04 15:08:25 -07:00
Benjamin Taylor 68561c0cb8 feat(docs): track cli command copies via global writeText hook
CopyTracker monkey-patches navigator.clipboard.writeText once at app
boot to fire PostHog cli_command_copied for every programmatic copy —
covering Fumadocs' built-in code-block button, custom-code-block,
code-showcase, framework-overview, and any future copy widget without
per-component instrumentation. Reo's own writeText patch continues to
function alongside this one.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 16:26:17 -05:00
Tyler Slaton 102b5a9e1f feat(inspector): remove invite-code gate on Threads
Threads is no longer behind a private-beta access code — drop the gate UI
(early-access card, unlocking card, code submission, cookie persistence)
and render the threads view unconditionally.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 14:17:34 -07:00
Mike Ryan 7f997a9108 style: fix formatting failures on main (#4641)
## Summary
- Runs `oxfmt --write .` to fix 25 files failing the `check-format` CI
step on main
- All files are in `showcase/` (shell-dashboard, integrations, harness,
debugging docs)

## Test plan
- [x] `pnpm run check-format` passes locally

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-04 14:01:27 -07:00
Tyler Slaton 04f77586f3 style: fix formatting failures on main
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 13:46:32 -07:00
Tyler Slaton 2854869218 fix(inspector): polish announcement banner styles and move into scroll area (#4639)
## Summary
- Headers in the announcement banner now have proper hierarchy (h1/h2/h3
distinct sizes); body bumped to 13px / 1.55 line-height for readability.
- Code blocks get dark theme styling with horizontal scroll, a trailing
80px spacer so the end of long commands is fully readable, and a
brand-lavender copy button (with "Copied" confirmation in `#eee6fe` /
`#6430ab`).
- Announcement banner moved out of the non-scrollable drag-handle header
into the `#cpk-main-scroll` container so expanding it no longer squeezes
the resize handle and main content off-screen (folds in @claude's fix
from `tyler/funny-shtern-1a95ef`).
2026-05-04 13:39:42 -07:00
Tyler Slaton aa394bbc9d fix(inspector): restore production announcement URL again
The prior commit accidentally re-included a local-only flip of
ANNOUNCEMENT_URL to the draft endpoint while staging the unrelated
copy-button timeout fix. Restore the production URL.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:28:29 -07:00
Tyler Slaton ecc54cca9c fix(inspector): scope copy-button reset timeouts per button
The previous copyResetTimeout field was a single instance-level number,
shared across every code block in a multi-block announcement. Clicking
Copy on block A then block B cancelled block A's reset timer, leaving
block A stuck on "Copied" forever.

Switch to a WeakMap<HTMLButtonElement, number> so each button manages
its own pending reset and is naturally cleaned up when the announcement
re-renders. Also keep aria-label in sync with the visible text label so
screen-reader users hear "Code copied" while sighted users see "Copied".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:26:51 -07:00
Tyler Slaton 55b25629a4 fix(inspector): harden announcement copy-button helpers and renderer
CR-loop fixes from a 7-agent unbiased review on the announcement banner
work:

- Replace deprecated unescape/escape with TextEncoder/TextDecoder in
  encodeBase64/decodeBase64, dropping the half-decoded fallback path.
- Drop unsafe `as HTMLElement` and `as HTMLButtonElement` casts in
  handleAnnouncementContentClick; the .announcement-code__copy selector
  does not enforce HTMLButtonElement, so use instanceof guards.
- Coalesce overlapping copy-button resets via a class field timeout id
  and a constant "Copy" label; previously a rapid double-click captured
  "Copied" as the original label and pinned the button text.
- Pass async: false to marked.parse for a type-honest string return.
- Fold escapeHtmlAttr into the module-level escapeHtml helper.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:21:37 -07:00
Tyler Slaton d45b04b605 refactor(inspector): reuse module-level escapeHtml in announcement renderer
Replaces the duplicate escapeHtmlText method with the existing module-level
escapeHtml helper that has identical behavior.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:15:42 -07:00
Tyler Slaton c6f0fbe5dc fix(inspector): restore production announcement URL
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:05:39 -07:00
Tyler Slaton cbc1aa6ab8 fix(inspector): polish announcement banner styles and move into scroll area
- Differentiate h1/h2/h3 sizes and bump body type for readability
- Add code-block styling with horizontal scroll, trailing spacer, and a
  copy button (brand lavender on success)
- Move announcement banner from the non-scrollable header into the main
  scroll container so an expanded banner no longer pushes the resize
  handle and content off-screen

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 12:52:38 -07:00
Sam Julien a7e82eddbf docs-sync(needs-review): sync from main (330b4eb06) [NEEDS REVIEW] (#4521)
⚠️ **Docs sync — MANUAL REVIEW REQUIRED**

This PR was auto-opened because the docs-sync script detected
showcase-local modifications overlapping with upstream changes.

The script attempted a best-effort 3-way merge:

- Where `git merge-file` produced a clean merge, the merged content was
written.
- Where `git merge-file` produced conflict markers, **upstream content
was written as-is** and showcase-local modifications were overridden.
**Manual review required.**

### Review items

```
Files where 3-way merge FAILED — upstream content written as-is, local modifications overridden. Manual review REQUIRED before merging this PR:
  - docs/content/docs/(root)/inspector.mdx
  - docs/content/docs/integrations/agent-spec/quickstart.mdx
  - docs/content/docs/integrations/built-in-agent/server-tools.mdx
  - docs/content/docs/integrations/langgraph/deep-agents.mdx

Files auto-merged via 3-way merge (clean, no conflict markers — still worth a glance):
  - docs/content/docs/integrations/aws-strands/quickstart.mdx
  - docs/content/docs/integrations/langgraph/quickstart.mdx
```

### Source

- Upstream ref:
[`330b4eb06`](https://github.com/CopilotKit/CopilotKit/commit/330b4eb06)
- Workflow run:
https://github.com/CopilotKit/CopilotKit/actions/runs/25185454071

**Review before merging.** Auto-merge is intentionally disabled
for `needs-review` PRs — confirm the upstream-wins sections
preserve any intentional showcase-local divergence you want to
keep, then merge manually.
2026-05-04 12:21:28 -07:00
Sam Julien c845c777e0 shell-docs: keep useThreads lastRunAt PropertyReference
The auto-sync removed the lastRunAt entry from the useThreads API reference,
but the field is still present on the Thread type and drives sort behavior in
packages/core/src/threads.ts. Restoring the doc keeps the API reference
complete.
2026-05-04 14:20:26 -05:00
copilotkit-devops-bot[bot] ef3bafe249 chore: docs sync from main — needs review (2026-04-30) 2026-05-04 14:20:26 -05:00
Ben Taylor e723ef9b7f chore(docs): improve image alt text for a11y + SEO (#4637)
<!--
Thank you for sending the PR! We appreciate you spending the time to
work on these changes.

Help us understand your motivation by explaining why you decided to make
this change.


**Please PLEASE reach out to us first before starting any significant
work on new or existing features.**

By the time you've gotten here, you're looking at creating a pull
request so hopefully we're not too late.

We love community contributions! That said, we want to make sure we're
all on the same page before you start.
Investing a lot of time and effort just to find out it doesn't align
with the upstream project feels awful, and we don't want that to happen.
It also helps to make sure the work you're planning isn't already in
progress.

As described in our contributing guide, please file an issue first:
https://github.com/ag-ui-protocol/ag-ui/issues
Or, reach out to us on Discord: https://discord.com/invite/6dffbvGU3D


You can learn more about contributing to copilotkit here:
https://github.com/copilotkit/copilotkit/blob/master/CONTRIBUTING.md

Happy contributing!

-->

## What does this PR do?

(Describe the changes introduced in this PR)

- Logo component: "Logo" → "CopilotKit" (both light/dark variants)
- Examples carousel: empty alt → example.title
- Scarf tracking pixel: add aria-hidden so SR/audit tools skip it

## Related PRs and Issues

- (Direct link to related PR or issue, if relevant)

## Checklist

- [ ] I have read the [Contribution
Guide](https://github.com/copilotkit/copilotkit/blob/master/CONTRIBUTING.md)
- [ ] If the PR changes or adds functionality, I have updated the
relevant documentation
- [ ] "Allow edits by maintainers" is checked (lets us help iterate on
your PR directly — faster turnaround for everyone)
2026-05-04 14:19:11 -05:00
Benjamin Taylor 140cf65ead chore(docs): improve image alt text for a11y + SEO
- Logo component: "Logo" → "CopilotKit" (both light/dark variants)
- Examples carousel: empty alt → example.title
- Scarf tracking pixel: add aria-hidden so SR/audit tools skip it

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 14:06:54 -05:00
tylerslaton 490440a0e4 chore: release monorepo v1.57.0 2026-05-04 17:33:59 +00:00
Ben Taylor 53968731f8 docs: add sign-up CTAs and refresh framework CLI walkthrough (#4592)
## Summary

- Adds a reusable `OpsPlatformCTA` component with four visual variants
(card, info, inline, tile), PostHog `cta_clicked` instrumentation, and
UTM-tagged links to the dashboard
- Places sign-up CTAs across topical docs pages, integration overview
pages, manual-setup quickstarts, premium pages, and the shared
prebuilt-components snippet (covers all per-integration prebuilt pages)
- Repoints the navbar "Free Developer Access" link to the dashboard with
matching click tracking
- Adds an `afterFeatures` slot to `FrameworkOverview` so MDX can inject
content below the supported-features section
- Rewrites the CLI step on the eight framework quickstarts that have a
scaffold (ADK, Agno, AWS Strands, LangGraph, LlamaIndex, Mastra,
Microsoft Agent Framework, Pydantic AI) to use the interactive flow and
describe the prompts (project name, platform Yes/No with sign-up link,
framework picker)

Coverage: ~13% of docs pages, focused on the highest-traffic surfaces
and topical landing pages.

## Test plan

- [ ] `/`, `/quickstart`, `/prebuilt-components`, `/shared-state`,
`/inspector` show their CTAs in the expected position
- [ ] Integration overview pages (`/built-in-agent`, `/langgraph`,
`/adk`, `/aws-strands`, `/microsoft-agent-framework`) render the CTA
above the fold
- [ ] Each of the 13 per-integration `/{framework}/prebuilt-components`
pages renders the inline CTA via the shared snippet
- [ ] Each of the 8 framework quickstarts shows the new CLI walkthrough
(Yes-first prompt, dashboard sign-up link, correct framework label)
- [ ] Navbar still shows "Talk to Our Engineers" alongside the repointed
"Free Developer Access" link
- [ ] DevTools Network: clicking any CTA sends one `cta_clicked` PostHog
event with `{surface, variant, target, page_path}`
- [ ] Destination URL on every CTA ends with
`?utm_source=docs&utm_medium=cta&utm_campaign=intelligence&utm_content=<surface>`
2026-05-04 11:08:38 -05:00
Sam Julien fabaedc705 docs(cta): align analytics event with website naming scheme
Renames the docs CTA tracking event from `cta_clicked` to
`try_for_free_clicked` to match the per-event custom event names used
on the marketing website, and uses a single `location` string property
in place of the previous `surface` / `variant` / `target` / `page_path`
shape. Surface identifiers are normalized to underscored snake_case to
match the location values already used on the website.

Same change applies to the docs navbar handler that fires when a
visitor clicks the Free Developer Access link.
2026-05-04 08:27:02 -07:00
Sam Julien e03302df50 docs(cta): extend prebuilt-components and Built-in Agent placements
Adds a sign-up CTA to the shared `prebuilt-components` snippet so it
appears on all twelve per-integration `/{framework}/prebuilt-components`
pages that consume it, and adds a matching CTA to the LangGraph
prebuilt-components page (which uses custom content rather than the
shared snippet).

Moves the Built-in Agent overview CTA from below the features grid to
above the first H2 so it lands above the fold on standard viewports.
2026-05-04 10:00:44 -05:00
Sam Julien 4e98ba805d docs(quickstart): rewrite CLI walkthrough across framework starters
Replaces the framework-specific `npx copilotkit@latest create -f <fw>`
command with the interactive `npx copilotkit@latest create` flow on the
eight framework quickstarts that have a CLI scaffold (ADK, Agno, AWS
Strands, LangGraph, LlamaIndex, Mastra, Microsoft Agent Framework,
Pydantic AI).

Each quickstart's "Run our CLI" step now describes the three prompts
the CLI walks the user through — project name, the platform Yes/No
question (with a sign-up link to the dashboard), and the framework
choice. Framework labels match the strings rendered by the CLI's
interactive select-input so the docs stay aligned with the runtime
prompt.

Drops the per-language Tabs blocks on LangGraph and Microsoft Agent
Framework since the language variant is now picked through the CLI
prompt rather than encoded as a flag.
2026-05-04 10:00:44 -05:00
Sam Julien c0fa02703c docs: add sign-up CTAs across documentation
Places dashboard sign-up CTAs on topical pages, threads guides,
reference pages, and integration overview pages. Each CTA is tagged
with a stable surface identifier for PostHog attribution and routes to
the dashboard with matching UTM parameters.

Placements include:
- Home and quickstart landing pages
- Prebuilt-components, shared-state, and chat-related reference pages
- Threads how-to, tutorial, reference, and per-integration threads pages
  (via the shared snippet)
- Inspector, event-inspector, and learning explainer pages
- Premium overview, observability, headless-ui, and self-hosting pages
  (via the shared snippets)
- Integration overview pages — placed via the new afterFeatures slot on
  the four FrameworkOverview-based pages (LangGraph, ADK, AWS Strands,
  Microsoft Agent Framework) and below the features grid on Built-in
  Agent
- Manual-setup quickstart pages (a2a, ag2, agent-spec, built-in-agent,
  crewai-flows, deepagents)

Also normalizes platform copy across the affected pages.
2026-05-04 10:00:44 -05:00
Sam Julien 4d7965b802 feat(docs): support afterFeatures slot in FrameworkOverview
Adds an optional `afterFeatures` ReactNode prop to the FrameworkOverview
landing-page component, rendered as a section between the supported
features grid and the architecture section. Lets the hosting MDX page
inject contextual content (links, callouts, sign-up cards) below the
final feature without needing to modify the component for each
integration.
2026-05-04 10:00:44 -05:00
Sam Julien 25e0e3c8ad feat(docs): add sign-up CTA component and dashboard navbar link
Introduces a reusable OpsPlatformCTA component with four visual variants
(card, info, inline, tile) for placing dashboard sign-up calls-to-action
across the docs. Each click captures a `cta_clicked` PostHog event tagged
with surface, variant, and page path, and navigates to the dashboard with
UTM parameters identifying the source surface.

Registers the component in both MDX provider maps (home and integrations
slug routes) so it can be used in any MDX file.

Repoints the navbar "Free Developer Access" link to the dashboard and
wires the same PostHog tracking to its left and right placements.
2026-05-04 10:00:44 -05:00
Jordan Ritter db595f8d8b Security: fix template injection in CI workflow shell commands (#4623)
## Summary

Fixes GitHub Actions template injection (CWE-78) across three workflow
files. Untrusted PR event data (`title`, `head.ref`, `base.ref`, SHAs,
`user.login`) was interpolated directly into shell `run:` blocks via
`${{ }}`, allowing arbitrary code execution on the runner via a crafted
PR title or branch name.

**Fix:** Move all untrusted expressions to `env:` blocks and reference
them as shell variables (`${VAR}`) instead. This is the standard
mitigation recommended by GitHub's security hardening guide.

### Affected files

- **test_smoke-starter.yml** — PR title, user login, head SHA in the
"Capture failure cause" step
- **publish-release.yml** — PR head ref (branch name) in the "Extract
scope from branch" step
- **static_quality.yml** — PR base ref in the "Collect PR-changed files"
step; base/head SHAs in the "Validate PR commits with commitlint" step

All other workflow files were audited and already use safe patterns
(`env:`, `with:`, or `concurrency:` blocks).

## Test plan

- [ ] CI passes on this PR (the workflows themselves are exercised by PR
events)
- [ ] Grep confirms no remaining `${{ github.event.pull_request.*`
inside `run:` blocks
2026-05-03 13:35:44 -07:00
Jordan Ritter 385f412fba Fix GitHub Actions template injection (CWE-78) in workflow shell commands
Move untrusted PR event data (title, head ref, base ref, SHAs) from
inline ${{ }} interpolation in shell run: blocks to env: blocks,
referencing them as shell variables instead. This prevents arbitrary
code execution via crafted PR titles or branch names.

Affected workflows:
- test_smoke-starter.yml: PR title, user login, head SHA
- publish-release.yml: PR head ref (branch name)
- static_quality.yml: PR base ref, base SHA, head SHA
2026-05-03 13:27:35 -07:00
Jordan Ritter a7efb0291f fix: transparent background for showcase-dashboard favicon and og:image (#4619)
## Summary

- Removed the dark `#0a0a0f` background `<rect>` from `icon.svg` — the
favicon now shows only the shield+kite shape on a transparent background
- Converted `og-image.png` from RGB to RGBA and made all background
pixels (`#0a0a0f`) fully transparent, leaving the 17k content pixels
(shield+kite graphic) intact

## Test plan

- [ ] Open showcase-dashboard locally, verify the browser tab favicon
shows the shield without a dark square
- [ ] Check the og:image preview (e.g. via https://www.opengraph.xyz/)
to confirm the shield renders on transparent background
2026-05-01 23:30:18 -07:00
Jordan Ritter 22cef3b073 Remove outer black border from showcase-dashboard favicon
Keep the black fill inside the shield shape, only make the area
outside the shield transparent. Revert og-image.png to original.
2026-05-01 23:30:00 -07:00
Jordan Ritter b1b7bb5cb8 Add Baseline tab, Coverage perf + depth fixes, dark mode toggle
Baseline tab (new):
- 33-feature x 25-partner correctness matrix from Notion Partner Hub
- E3 cell treatment: status emoji + colored letter badges (C/A/I/▶/D/T/✱)
- View/Edit toggle with commit/cancel accumulator (batch saves to PB)
- PocketBase baseline collection with public read/write, SSE live updates
- Stats bar, collapsible categories, fixed legend, 200ms CSS tooltips
- Full-row hover highlight, zebra stripes matching Coverage tab

Coverage tab fixes:
- Depth chip: green = at max achievable (not hardcoded per level)
- maxPossible computed from probe existence (CATALOG_TO_D5_KEY)
- D5 false positives: removed shared key aliases
- Stats bar derives green/amber/red from same logic as depth chips
- Hide badges for non-existent tests (was strikethrough)
- Render perf: memoize featuresByCategory, React.memo CategorySection
- Load perf: getFullList single call (was 7 sequential round-trips)

Both tabs:
- Dark/light/system theme toggle (upper right)
- Column order: Coverage first (1-18), Baseline extras (19-25)
- LangGraph naming (orchestration layer, not model router)
- Row hover highlight including sticky column
2026-05-01 22:51:23 -07:00