Commit Graph

12082 Commits

Author SHA1 Message Date
github-actions[bot] b624a987a3 style: auto-fix formatting 2026-06-24 19:30:30 +00:00
Atai Barkai 2d4cfb4846 test(showcase): reconcile default catch-all probe checks pr-5509-tour-2d4cfb4846 2026-06-24 12:26:42 -07:00
Atai Barkai 3c3b251a5b test(showcase): tighten PR tour recordings 2026-06-24 12:20:42 -07:00
Atai Barkai 8c361a95e5 docs(showcase): document thumbnail tour links 2026-06-24 12:20:41 -07:00
Atai Barkai f0f3b1f21f fix(showcase): assert interactive PR tour recordings 2026-06-24 12:20:41 -07:00
Atai Barkai 6a45b1e864 fix(showcase): require interactive PR tour recordings 2026-06-24 12:20:41 -07:00
Atai Barkai 79eba095fd docs(showcase): prefer embedded PR tour videos 2026-06-24 12:20:41 -07:00
Atai Barkai 2820f1fa65 docs(showcase): require PR tour videos in descriptions 2026-06-24 12:20:41 -07:00
Atai Barkai 3e463d4ef1 fix(showcase): tolerate noninteractive tour previews 2026-06-24 12:20:41 -07:00
Atai Barkai 45854c4cde chore(showcase): add PR tour video recorder 2026-06-24 12:20:40 -07:00
Atai Barkai c47269b1be chore(showcase): add PR tour row filtering 2026-06-24 12:20:40 -07:00
Atai Barkai 2fa1aa68ad fix(showcase): align langgraph fastapi tool rendering backend 2026-06-24 12:20:40 -07:00
github-actions[bot] eaa7265351 style: auto-fix formatting 2026-06-24 12:20:40 -07:00
Atai Barkai f82e1125ac fix(showcase): stabilize ag2 tool rendering demos 2026-06-24 12:20:40 -07:00
Atai Barkai f92c047ba9 test(showcase): disambiguate tool rendering fixtures 2026-06-24 12:20:39 -07:00
Atai Barkai 3226604990 chore(docs): drop unrelated formatting churn 2026-06-24 12:20:39 -07:00
Atai Barkai cee87e3eaa chore(docs): remove incidental formatting churn 2026-06-24 12:20:39 -07:00
github-actions[bot] 6d507c3957 style: auto-fix formatting 2026-06-24 12:20:39 -07:00
Atai Barkai bc18011da1 docs(shell-docs): fix catch-all highlight ranges 2026-06-24 12:20:39 -07:00
Atai Barkai 8b78ca2911 docs(showcase): cover catch-all renderer variants 2026-06-24 12:20:06 -07:00
Atai Barkai c20a2fcc57 test(showcase): clean default catchall probe tests 2026-06-24 12:19:03 -07:00
Atai Barkai e0b93a7adc test(showcase): harden default catchall D6 probe 2026-06-24 12:19:03 -07:00
Atai Barkai 2b3c54ac4e docs(showcase): label catch-all as default rendering 2026-06-24 12:18:11 -07:00
Atai Barkai 6fc2c3a73c docs(showcase): highlight catch-all renderer snippet 2026-06-24 12:18:11 -07:00
Atai Barkai dfa1b03064 docs(showcase): highlight catch-all opt-out APIs 2026-06-24 12:18:11 -07:00
Atai Barkai a0d7f1cc84 docs(showcase): use hook for catch-all opt-out 2026-06-24 12:18:11 -07:00
Atai Barkai 5243be84cb docs(showcase): inline catch-all suppress example 2026-06-24 12:18:11 -07:00
Atai Barkai 436a5ea610 docs(showcase): move suppress snippet out of live demo 2026-06-24 12:17:19 -07:00
Atai Barkai 75bc9fe300 docs(showcase): show full render opt-out signature 2026-06-24 12:17:19 -07:00
Atai Barkai a007c66f9a docs(showcase): trim catch-all opt-out snippet 2026-06-24 12:17:18 -07:00
Atai Barkai e56d5fbebe docs(showcase): source catch-all opt-out snippet 2026-06-24 12:17:18 -07:00
Atai Barkai 84b1aa9cf7 docs(shell-docs): trim catch-all tool rendering page 2026-06-24 12:17:18 -07:00
Atai Barkai 167e16e5c5 docs(shell-docs): restore tool rendering snippet highlighting 2026-06-24 12:17:18 -07:00
Atai Barkai 23eaeed648 docs(shell-docs): preserve tool rendering examples 2026-06-24 12:16:40 -07:00
Atai Barkai ff43adce6b docs(shell-docs): rename default rendering to catch-all 2026-06-24 12:15:16 -07:00
Atai Barkai f70658aaea docs(shell-docs): split tool rendering section 2026-06-24 12:14:24 -07:00
Atai Barkai 435c12c297 docs(shell-docs): clarify render opt-out status prop 2026-06-24 12:12:00 -07:00
Tyler Slaton 6d9a9ecffd fix: add configurable Slack response routing (#5684)
## Summary

- Add Slack `respondTo` routing options with mention-only channel thread
replies by default.
- Keep DMs and assistant pane conversational while allowing legacy
owned-thread continuation by config.
- Update the Slack example config, manifests, docs, and Discord README
trigger wording.

## Why

Slack bots should stay quiet in channel threads unless explicitly
mentioned or configured for continuation. This makes Kite-style bots
less noisy by default while preserving the old behavior for teams that
want it.

## How

- Resolve `respondTo` once in `SlackAdapter.start()` and pass the
resolved policy into the Slack listener.
- Gate `app_mention`, `message.im`, and non-DM thread replies against
that policy.
- Add listener coverage for defaults, disabled routes, in-channel
mention replies, and legacy thread continuation.

## Test Plan

- `pnpm exec nx run @copilotkit/bot-slack:test --
src/__tests__/slack-listener.test.ts`
- `pnpm exec nx run @copilotkit/bot-slack:test`
- `pnpm exec nx run @copilotkit/bot-slack:check-types`
- `pnpm exec nx run slack-example:test`
- `pnpm exec nx run slack-example:check-types`
- targeted `pnpm exec oxfmt --check ...`
- targeted `git diff --check ...`
2026-06-24 12:07:30 -07:00
Tyler Slaton 3afb050ebe feat(bot-slack): configure response routing 2026-06-24 11:53:55 -07:00
Sam Julien 93ce311cfb docs: move Threads into chat UI docs (#5653)
## Summary

- Moves the canonical `/threads` guide into the **Build Chat UIs** nav
group, immediately after prebuilt components
- Keeps `/premium/threads-explained` under **Intelligence Platform** as
the architecture/persistence explanation
- Adds contextual cross-links between the Threads guide, Threads
architecture page, and relevant prebuilt chat UI docs
- Shows `Threads` in the authored framework sidebars next to their chat
UI basics

## Why

Threads are primarily discovered by developers adding saved
conversations, history, and thread switching to a chat UI. The
implementation guide belongs with chat UI docs, while the platform page
remains the deeper explanation of persistence, realtime sync, and
Enterprise Intelligence Platform backing.

## Screenshots

**Root docs navigation: `/threads` now appears with the chat UI basics,
immediately after Prebuilt Components.**

![Root docs Threads
navigation](https://raw.githubusercontent.com/CopilotKit/CopilotKit/92e68e787ec0e137124460637549b0df33929389/pr-5653/root-threads-build-chat-uis-nav.png)

**Authored framework navigation: framework-specific docs now show
Threads next to Prebuilt Components too.**

![Authored framework Threads
navigation](https://raw.githubusercontent.com/CopilotKit/CopilotKit/92e68e787ec0e137124460637549b0df33929389/pr-5653/authored-langgraph-threads-nav.png)

**Intelligence Platform navigation: the architecture page stays in the
platform section.**

![Threads architecture in Intelligence Platform
navigation](https://raw.githubusercontent.com/CopilotKit/CopilotKit/92e68e787ec0e137124460637549b0df33929389/pr-5653/threads-architecture-intelligence-nav.png)

## Validation

- `git diff --check origin/main...HEAD`
- `git diff --check`
- `npm run typecheck` from `showcase/shell-docs`
- Local route smoke checks for `/threads`, `/premium/threads-explained`,
`/prebuilt-components`, and `/prebuilt-components/chat` returned 200
- Authored framework route smoke checks returned 200
2026-06-24 11:11:33 -07:00
Sam Julien 5507c75d2d docs: add framework-scoped Threads callouts (#5651)
## Summary

- Adds a `thread_persistence_pattern` manifest flag so shared docs can
render selected-framework Threads guidance.
- Marks LangGraph Python, LangGraph TypeScript, LangGraph FastAPI, and
Google ADK with the appropriate thread persistence pattern.
- Extends `WhenFrameworkHas` support so the shared Threads guide can
show LangGraph-only and ADK-only callouts.
- Clarifies that `useThreads` manages Enterprise Intelligence Platform
thread records, not native framework stores.
- Adds framework-selected callouts to the root/shared Threads guide
without adding a third setup path.

## Notes

The new callouts intentionally avoid claiming external store listing,
lifecycle sync, migration/import tooling, or durable ADK sessions by
default. Those remain product/runtime follow-ups tracked separately.

## Validation

- `git diff --check`
- `npm run pretypecheck` in `showcase/shell-docs`
- `npm run lint` in `showcase/shell-docs` (passes with existing
warnings)
- `npm run typecheck` in `showcase/shell-docs`
- `npm run build` in `showcase/shell-docs` (passes with existing
Turbopack/NFT warning)
- Local route smoke checks:
  - `/threads` hides framework callouts
  - `/langgraph-python/threads` shows LangGraph callout only
  - `/langgraph-typescript/threads` shows LangGraph callout only
  - `/langgraph-fastapi/threads` shows LangGraph callout only
  - `/google-adk/threads` shows ADK callout only
2026-06-24 11:11:22 -07:00
Sam Julien e745322ce8 Add Inspector Threads locked state for non-Intelligence installs (#5655)
## Summary
- Adds the Inspector Threads locked state for non-Intelligence installs
with a faded full-background thread mockup, updated headline, CTA
order/styling, and production Talk to an Engineer destination.
- Adds Threads telemetry events and metadata for tab click,
locked/enabled/empty views, and CTA clicks, including
package/runtime/status fields that can be derived safely.
- Hardens adjacent inspector paths found during review: telemetry
opt-out and serialization safety, preserved realtime wsUrl on header
refresh, unknown thread endpoint status handling, stale selected-thread
rendering, announcement HTML/link safety, RUN_ERROR styling, context
value rendering, and thread-detail URL joining for trailing-slash
runtime URLs.

## Telemetry notes
Implemented derivable/safe fields: package_name, package_version,
inspector_distinct_id, posthog_distinct_id for attributed CTA URLs,
intelligence_status, thread_service_status, runtime_url_type,
runtime_mode, license_status, telemetry_disabled, cta, cta_surface, and
thread_count.

Telemetry sink allowlist checked: `CopilotKit/oss-path-to-production`
already accepts the owned `oss.inspector.*` namespace via its prefix
gate, so no sink source allowlist change is required. Added
https://github.com/CopilotKit/oss-path-to-production/pull/173 to pin the
new Inspector Threads event names in ingest tests. The package/version
metadata now reads from `packages/web-inspector/package.json` instead of
a hardcoded version string.

Not implemented because they are not currently available from safe
public inspector state:
- has_public_license_key: no explicit public boolean is exposed;
deriving from headers/config could imply token state.
- cta_variant: current UI has no variant state to distinguish.

## Validation
- NX_TUI=false pnpm nx run @copilotkit/web-inspector:check-types
--skip-nx-cache
- NX_TUI=false pnpm nx run @copilotkit/web-inspector:test
--skip-nx-cache (43 tests passed)
- NX_TUI=false pnpm nx run @copilotkit/web-inspector:build
--skip-nx-cache
- NX_TUI=false pnpm nx run @copilotkit/core:check-types --skip-nx-cache
- git diff --check
- Telemetry sink validation in
https://github.com/CopilotKit/oss-path-to-production/pull/173: `pnpm
test -- telemetry-sink-ingest.test.ts` and `pnpm build`
- 7-agent code review pass, followed by 3-agent focused confirmation
pass with no remaining findings in scope
- Pre-commit package matrix hit an unrelated @copilotkit/react-core:test
timeout in `A2UIMessageRenderer.test.tsx` during amend; targeted
web-inspector checks above passed

## Screenshot
![Inspector Threads locked
state](https://gist.githubusercontent.com/samjulien/98d0569b33990b4cf740aa14e1790614/raw/b344397d6e326e9102c4e3d90ba1a9772710e42d/inspector-threads-locked-live.svg)
2026-06-24 11:09:10 -07:00
Jordan Ritter 6c55d7909c feat(showcase): deploy strands-typescript integration to staging (#5681)
## What

Wires the `strands-typescript` showcase integration for **staging**
deployment, mirroring how the Python `strands` integration is deployed.
Provisions the Railway service and adds all repo-side deploy wiring so
the integration appears in the staging integration switcher menu.

## Why

The `strands-typescript` integration code was complete and ran locally,
but was not deployed (`deployed: false`, no Railway service), so it was
absent from the staging integration menu.

## Changes

- **manifest**: `deployed: true` so the shell lists it in the
integration menu.
- **railway-envs.ts**: new `showcase-strands-typescript` SSOT entry.
**Staging-only for now**: the prod instance is not yet provisioned, so
the entry omits the prod env and is `gateIgnore`'d (like
`harness-workers`) until it is promoted dual-env. Regenerated
`railway-envs.generated.json`.
- **showcase_build.yml** + **showcase_build_check.yml**: build-matrix
entry, change-detection filter, and dispatch option. `railway_id` is the
new Railway service id.
- **golden fixture** + **image-ref-gate inventory tests**: updated for
the new service (count 40 → 41, gateIgnore allowlist).

## Railway provisioning (done via CLI/API)

- Service `showcase-strands-typescript` created in the **showcase**
project.
  - serviceId `d6f47c8c-a0a1-4dbe-991c-50f8463fd68d`
  - staging instanceId `3f917b9f-c3f0-4d8b-96ca-7f455e06b5ba`
- staging domain `showcase-strands-typescript-staging.up.railway.app`,
health `/api/health`, restart ON_FAILURE
- staging vars: `MODEL_PROVIDER=openai`, `MODEL_ID=gpt-4o`,
`OPENAI_BASE_URL=https://aimock-staging.up.railway.app/v1`,
`OPENAI_API_KEY` (placeholder; aimock-fronted), `NODE_ENV=production`,
`NEXT_PUBLIC_BASE_URL=https://showcase.staging.copilotkit.ai`
- No Bedrock/AgentCore creds needed: like the rest of the fleet, LLM
traffic routes through the env-local **aimock** (deterministic replay),
so no real provider key is required.

## Post-merge behavior

On merge to `main`, `showcase_build.yml` builds + pushes
`ghcr.io/copilotkit/showcase-strands-typescript:latest`, redeploys the
staging service, and rebuilds the shell (picking up `deployed: true`).
After that the service is healthy and strands-typescript appears in the
staging integration menu. The image does not exist in GHCR until that
first build, so the Railway service is expected to be unhealthy until
then.

## Prod (follow-up)

Prod is intentionally not provisioned here. It will be added (dual-env,
`gateValidated: true`, `gateIgnore` removed) when the service is
promoted to prod via `showcase_promote.yml`.

## Verification

- `emit-railway-envs-json --check`: up to date
- `sync-promote-service-options --check`: dropdown up to date
(staging-only correctly excluded)
- railway/promote/emit/gate/deploy/registry vitest: 137 passing
- `oxfmt --check`: clean
- `validate-constraints strands-typescript`: valid
2026-06-24 11:04:09 -07:00
Ran Shemtov 311c47f002 Merge branch 'main' into claude/reverent-black-6ba1b9 2026-06-24 20:04:00 +02:00
Sam Julien ced9846472 fix(web-inspector): read telemetry package version from metadata 2026-06-24 10:55:49 -07:00
Ran Shem Tov d6f618dc03 fix(showcase): make default redeploy scope env-aware for staging-only services
The strands-typescript SSOT entry is ciBuilt:true but staging-only (prod
instance not yet provisioned). redeploy-env.ts's default scope was the full
CI_BUILT_SERVICES set for BOTH envs, so a staging-only ciBuilt service would
wrongly enter the prod default scope and fail a manual `redeploy-env.ts prod`
(no prod instance). Filter the default scope by env declaration (explicit
--services stays unfiltered, preserving the contract-pin that an operator can
force a named service in an env it does not declare). imageOf expansion was
already env-aware; this extends the same invariant to the base scope.

Update the inventory-lock test counts for the new service (total 40->41,
CI_BUILT 38->39, staging default scope 39->40; prod default scope stays 38 as
the staging-only service is now correctly excluded).
2026-06-24 19:54:49 +02:00
Sam Julien 9dffd143f4 fix(web-inspector): type thread telemetry props 2026-06-24 10:52:18 -07:00
Sam Julien ca59098e3a add inspector Threads PLG state 2026-06-24 10:52:18 -07:00
Ran Shemtov a2666f6fe4 fix(showcase): green strands(+TS) D6 shared-state-read + multimodal (32→34/35) (#5673)
## Summary

Greens two of the three failing D6 (e2e-full) cells for **both** the
`strands` (Python) and `strands-typescript` integrations: **32/35 →
34/35** each.

## Fixes

- **shared-state-read** — the turn-2 fixture leg wrongly pinned
`turnIndex: 0`, so the aimock matcher skipped it on turn 2 ("candidate
fixture skipped by sequence/turn state") → 404 → turn-2 `sse-missing`.
Dropped `turnIndex` to mirror the langgraph-python gold-standard fixture
(whose turn-2 leg omits it).
- **multimodal** — `sample.png/pdf/wav` were committed as **git-LFS
pointers**, so deploy/test environments without `git lfs pull` served
the ~130-byte pointer text as the uploaded file → the agent run never
started (`runsFinished=0`). Now shipped as regular binaries via a
per-integration `.gitattributes` lfs-unset + real bytes, mirroring
langgraph-python's existing convention ("must stay as regular binaries
... so deploy environments without `git lfs pull` serve the actual
files").

Both fixes verified locally: `showcase/bin/showcase test
{strands,strands-typescript} --d6 --direct --rebuild --isolate` → 34/35
each, shared-state-read + multimodal green.

## Known remaining red (out of scope here)

**gen-ui-declarative** (A2UI dynamic) stays red on both. The A2UI
surface **paints correctly** (real dashboard data), but `generate_a2ui`
never completes, so the run hangs "Running" (`runsFinished=0`). This
reproduces on **real-LLM staging** too, so it is not a fixture/aimock
artifact — it is a Strands A2UI-dynamic run-completion issue. The
fixtures and frontend are byte-identical to langgraph-python's (which
passes), pointing at the Strands adapter's auto-inject completion path.
Tracked separately for an adapter-level fix.
2026-06-24 19:48:54 +02:00
Ran Shem Tov d779f71468 feat(showcase): deploy strands-typescript integration to staging
Wire the strands-typescript showcase integration for staging deployment,
mirroring how the Python strands integration is deployed.

- manifest: flip deployed: true so the shell lists it in the integration menu
- railway-envs.ts: add showcase-strands-typescript SSOT entry (staging-only
  for now: prod instance not yet provisioned, so it omits the prod env and is
  gateIgnore'd until promoted dual-env); regenerate railway-envs.generated.json
- showcase_build.yml + showcase_build_check.yml: add the strands-typescript
  build matrix entry, change-detection filter, and dispatch option (railway_id
  is the new Railway service id)
- golden fixture + image-ref-gate inventory tests updated for the new service

Railway staging service showcase-strands-typescript provisioned
(showcase-strands-typescript-staging.up.railway.app, health /api/health,
OpenAI-via-aimock env). Prod is added later via the promote pipeline.
2026-06-24 19:39:36 +02:00