[pull] main from CopilotKit:main#285
Merged
Merged
Conversation
Adds two pieces to the self-hosting docs:
1. A short public Callout in `## What is this?` announcing that the
Intelligence Platform image includes an opt-in user memory
capability and pointing readers at the gated configuration section
below. No implementation details exposed.
2. A password-gated `### User memory (closed beta)` sub-section in
`## Configuration reference` that describes:
- The user-visible effect (recall of prior conversations with
example questions)
- Scope guarantees (per-user, per-org, per-project; read-only)
- The two flips required to enable it:
app-api: appApi.env: [{ name: SL_ENABLED, value: "true" }]
runtime: mcpServer: true on the CopilotKitIntelligence
constructor in @copilotkit/runtime/v2
- A runtime.ts code snippet
The gating uses the existing InsecurePasswordProtected component
already registered as an MDX component on both (home) and
integrations routes. The password is currently hardcoded as
cpki-mem-beta directly on the prop, which keeps the gate working
locally without env-var setup. Swap to an env-var-backed prop before
broader rollout if a different password than the existing LangGraph
Cloud beta is desired.
Scope of this change is the self-hosting snippet only; no
integration-specific docs, no new pages, no nav changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The if (agent.headers) guard in configureAgentForRequest silently skipped header forwarding when agent.headers was undefined (the default for LangGraphAgent). This meant x-aimock-context, x-test-id, and other x-* headers were never forwarded to agent backends. Also wires install_httpx_hook in the Python SDK middleware so forwarded headers propagate to outgoing LLM API calls. Closes the gap documented in PR #4773 spec as out-of-scope.
PR #4956 bumped @copilotkit/aimock in showcase/scripts/package.json from "latest" to "1.26.1" but did not regenerate package-lock.json (still pinned to 1.16.4). This broke the Showcase Docker builds for showcase-harness and shell-dashboard, since both run `npm ci` inside showcase/scripts/ and `npm ci` fails on out-of-sync lockfiles.
## Summary - PR #4956 bumped `@copilotkit/aimock` in `showcase/scripts/package.json` from `"latest"` to `"1.26.1"` but did not regenerate `package-lock.json` (still pinned to `1.16.4`). - The `npm ci` step inside `showcase/scripts/` fails on an out-of-sync lockfile (`EUSAGE` / "lock file's @copilotkit/aimock@1.16.4 does not satisfy @copilotkit/aimock@1.26.1"), which broke the **Showcase: Build & Push** workflow on `main` for the `showcase-harness` and `shell-dashboard` images. Failed run: https://github.com/CopilotKit/CopilotKit/actions/runs/26225644680 - Regenerated `showcase/scripts/package-lock.json` via `npm install --package-lock-only` so the lock now pins `@copilotkit/aimock@1.26.1`. ## Test plan - [x] `npm ci` succeeds in `showcase/scripts/` against the regenerated lockfile - [x] `node node_modules/tsx/dist/cli.mjs generate-registry.ts` runs cleanly (this is the next Dockerfile step that was masked by the silent `npm ci` failure) - [ ] CI: Showcase: Build & Push succeeds for `showcase-harness` and `shell-dashboard`
…nt URLs
The mcp-apps and voice-demo HttpAgent URLs had a trailing slash
(`${AGENT_URL}/mcp-apps/`, `${AGENT_URL}/voice/`), but the FastAPI
backend in agent_server.py mounts those agents at `/mcp-apps` and
`/voice` exactly. Posting to the trailing-slash URL triggers FastAPI's
default `redirect_slashes` 307, which drops the SSE streaming body and
surfaces in the runtime as
`RUN_ERROR: fetch failed (INCOMPLETE_STREAM)` for every pill click on
the deployed ms-agent-python showcase.
Reproduced live against showcase-ms-agent-python-production. Every
other ms-agent-python HttpAgent URL (`/hitl-in-app`,
`/headless-complete`, `/multimodal`, `/agent-config`, etc.) already
uses no trailing slash and works fine, confirming the trailing slash
is the only delta.
…nt URLs (#4959) ## Summary - The `mcp-apps` and `voice-demo` HttpAgent URLs had a trailing slash (`${AGENT_URL}/mcp-apps/`, `${AGENT_URL}/voice/`), but the FastAPI backend in `agent_server.py` mounts those agents at `/mcp-apps` and `/voice` exactly. - Posting to the trailing-slash URL triggers FastAPI's default `redirect_slashes` 307, which drops the SSE streaming body and surfaces in the Next.js runtime as `RUN_ERROR: fetch failed (INCOMPLETE_STREAM)` for every pill on the deployed showcase. - Removing the trailing slash from both `HttpAgent({ url })` constructors mirrors every other ms-agent-python subpath URL (`/hitl-in-app`, `/headless-complete`, `/multimodal`, `/agent-config`, …), all of which already work. ## Reproduction (live, against `showcase-ms-agent-python-production`) ``` $ curl -X POST -H 'Content-Type: application/json' -H 'Accept: text/event-stream' -d '{"method":"agent/run","params":{"agentId":"mcp-apps"},"body":{...}}' https://showcase-ms-agent-python-production.up.railway.app/api/copilotkit-mcp-apps data: {"type":"RUN_ERROR","message":"fetch failed","code":"INCOMPLETE_STREAM"} $ curl -X POST ... https://showcase-ms-agent-python-production.up.railway.app/api/copilotkit-voice/agent/voice-demo/run data: {"type":"RUN_ERROR","message":"fetch failed","code":"INCOMPLETE_STREAM"} ``` The same `/api/copilotkit-mcp-apps` runtime called with `agentId: "headless-complete"` (URL `/headless-complete`, no trailing slash) returns a clean `RUN_FINISHED` stream — proving the trailing slash is the only difference. ## Test plan - [x] Reproduced live against deployed `showcase-ms-agent-python-production` - [x] `headless-complete` (no trailing slash, same runtime as mcp-apps) confirmed working - [ ] After Railway redeploy: click "Draw a flowchart" and "Sketch a system diagram" pills on `/integrations/ms-agent-python/demos/mcp-apps` and the iframe renders - [ ] After Railway redeploy: voice demo sample-audio "What is the weather in Tokyo?" returns an assistant reply
…ing-custom
Surfaces the reasoning-default and reasoning-custom demos for the MS
Agent Python integration. The code, agent, UI, suggestions, e2e specs,
D5 probe mapping and aimock fixtures were already ported from the
langgraph-python north-star — only the manifest entries were missing,
which meant the cells never appeared in the showcase shell, weren't
counted as features, and weren't picked up by D5 routing.
Adds:
- `reasoning-custom` + `reasoning-default` to the features list
(between headless-complete and frontend-tools, matching LGP order).
- `demos:` entries for both, mirroring the LGP manifest verbatim.
After regeneration the shell catalog now reports the two cells with
`status: wired` and `max_depth: 4`, identical to LGP. validate-parity
goes 38 demos / 37 specs (the e2e specs were already present); the
ratchet validate-pins count stays at 93. The remaining `no qa/...`
warnings match the existing LGP/MAF pattern (LGP also has no
qa/reasoning-*.md), so no new QA docs are introduced here.
…g-custom (#4968) ## Summary - The MS Agent Python integration's `reasoning-default` and `reasoning-custom` demos were already fully ported from the langgraph-python north-star — code, agent (`src/agents/reasoning_agent.py` using the OpenAI Responses API for `REASONING_MESSAGE_*` event streaming), pages, suggestion pills, e2e specs (`tests/e2e/reasoning-default.spec.ts`, `tests/e2e/reasoning-custom.spec.ts`), aimock fixtures (`showcase/aimock/d5-all.json`, `showcase/harness/fixtures/d5/reasoning-display.json`) and D5 probe mapping all exist and are byte-identical to LGP. - The only missing piece was the `manifest.yaml` registration. Without it the cells never appeared in the showcase shell, weren't counted as features, and were skipped by D5 routing. - This PR adds: - `reasoning-custom` + `reasoning-default` to the `features:` list (between `headless-complete` and `frontend-tools`, matching LGP order). - `demos:` entries for both, mirroring the LGP manifest verbatim. ## Verification - `tsx showcase/scripts/generate-registry.ts` → catalog now lists both cells with `status: wired`, `max_depth: 4`, identical to LGP. - `tsx showcase/scripts/validate-parity.ts` → `ms-agent-python [PASS] 38 37 10 35 warn` (was 36/35; the 2 new e2e specs were already present). New warnings are the standard `no qa/...md` pattern that LGP also has for these two demos. - `tsx showcase/scripts/validate-pins.ts` → ratchet count stays at 93 (unchanged). ## Test plan - [x] generate-registry succeeds; catalog wired for both cells with max_depth 4 - [x] validate-parity passes - [x] validate-pins ratchet unchanged - [ ] Showcase shell renders `/integrations/ms-agent-python/demos/reasoning-default` and `reasoning-custom` after deploy - [ ] D5 `reasoning-display` probe passes for ms-agent-python in CI - [ ] e2e: `npm --prefix showcase/integrations/ms-agent-python run test:e2e -- tests/e2e/reasoning-default.spec.ts tests/e2e/reasoning-custom.spec.ts --project=chromium` (will run on next CI pipeline)
## Release monorepo v1.57.4 **Scope:** `monorepo` | **Bump:** `patch` --- ### 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.4` 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.4` - Creates git tag `monorepo/v1.57.4` - 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.
## Summary
Adds a closed-beta user memory section to the self-hosted Intelligence
docs (no new pages, no nav changes — inline addition to the existing
`self-hosting.mdx` snippet).
- A short public `<Callout>` in `## What is this?` announces the
capability and points readers at the gated configuration sub-section
below. No implementation details exposed publicly.
- A password-gated `### User memory (closed beta)` sub-section in `##
Configuration reference` describes the user-visible effect, the scope
guarantees (per-user, per-org, per-project, read-only), and the two
flips to enable it:
- `app-api`: `appApi.env: [{ name: SL_ENABLED, value: "true" }]` in
`values.yaml`
- runtime / BFF: `mcpServer: true` on the `CopilotKitIntelligence`
constructor in `@copilotkit/runtime/v2`
- Includes a `runtime.ts` code snippet.
Heading sits outside the gate so readers see "User memory (closed beta)"
in the TOC; only the body is behind the password.
## Implementation notes
- Uses the existing `<InsecurePasswordProtected>` MDX component already
registered on both `(home)` and `integrations` routes — no new
infrastructure.
- Password is hardcoded as `cpki-mem-beta` on the prop. Reviewer choice:
keep as-is, swap to a new `NEXT_PUBLIC_*` env var, or reuse the existing
`NEXT_PUBLIC_LGC_DOCS_PASSWORD` (which would share access with the
LangGraph Cloud beta group).
- Locally bypassable when the env-var default is empty, which is the
same posture as Threads' existing precedent.
## Test plan
- [ ] Open `/premium/self-hosting` — verify the public Callout renders
in "What is this?" and the section anchor link works.
- [ ] Scroll to Configuration reference → after "Realtime gateway
(additional keys)" — verify the gate panel shows.
- [ ] Enter `cpki-mem-beta` — verify the SL_ENABLED table + `runtime.ts`
snippet reveal.
- [ ] Confirm the heading "User memory (closed beta)" is visible to
non-authenticated readers (sits outside `<InsecurePasswordProtected>`).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )