Commit Graph

1227 Commits

Author SHA1 Message Date
AlemTuzlak 9d00b01ccd chore: release monorepo v1.56.2 2026-04-16 16:04:38 +00:00
Alem Tuzlak 8182470f35 fix: remove unused @langchain/community peer dep from sdk-js (#3960)
## Summary

- Remove `@langchain/community` from `@copilotkit/sdk-js`
peerDependencies — it's declared as `^0.3.58` but never imported
anywhere in the package
- This was the only constraint blocking `@langchain/core@1.x` resolution
for consumers using the LangGraph JS starter

## Context

`@copilotkit/sdk-js` has zero imports from `@langchain/community`. The
`^0.3.58` peer dep forced npm to resolve `@langchain/community@0.3.x`,
which transitively pulled in `@getzep/zep-cloud` → `langchain@0.3.x`,
conflicting with `sdk-js`'s own `langchain@>=1.0.0` peer requirement.

Removing the unused peer dep eliminates this resolution conflict
entirely.

## Test plan

- [ ] `npm install` in a fresh project using `@copilotkit/sdk-js`
resolves without peer dep warnings for `@langchain/community`
- [ ] Existing LangGraph JS starter installs cleanly
- [ ] No runtime behavior change (nothing imported from the removed dep)
2026-04-16 18:02:53 +02:00
AlemTuzlak a6e8a48189 chore: release monorepo v1.56.1 2026-04-16 15:38:24 +00:00
Alem Tuzlak dbb89e3ff8 fix: remove unused @langchain/community peer dep from sdk-js
@copilotkit/sdk-js declares @langchain/community as a peer dependency
but never imports from it. The ^0.3.58 constraint was the only thing
blocking @langchain/core@1.x resolution for consumers. Remove it
entirely since it serves no purpose.
2026-04-16 17:21:05 +02:00
github-actions[bot] 0fe4d87edf style: auto-fix formatting 2026-04-16 14:43:21 +00:00
Alem Tuzlak 0e38bb6bc9 fix(ci): rename package to copilotkit-vscode-extension for vsce compatibility 2026-04-16 16:41:11 +02:00
Alem Tuzlak acb6ade4da fix(ci): fix vscode-extension type check — add es2022 target, fix missing error prop in tests, run tsc directly 2026-04-16 16:36:02 +02:00
github-actions[bot] 0ee8f18462 style: auto-fix formatting 2026-04-16 14:24:32 +00:00
Alem Tuzlak 1eb4a154ad Merge origin/main into feature branch: resolve 7 conflicts 2026-04-16 16:16:48 +02:00
Alem Tuzlak 73a64327ef fix: CR round 2 — add MESSAGES_SNAPSHOT/CUSTOM to allCategories, store unsubscribers in InspectorViewProvider 2026-04-16 15:09:25 +02:00
Alem Tuzlak a8fdf8de0b fix: CR round 1 — leaked listeners, silent errors, missing menu entries, test for SSE comment 2026-04-16 15:02:55 +02:00
Alem Tuzlak 9292e9a5fa fix: address CR round 1 findings — leaked listeners, silent errors, missing menu entries 2026-04-16 15:01:11 +02:00
Alem Tuzlak e1d3cee377 feat(vscode-extension): buffer events persistently in InspectorViewProvider for cross-tab survival 2026-04-16 14:48:20 +02:00
Alem Tuzlak f98ddb6c70 feat(vscode-extension): move inspector above component preview, rename to A2UI Catalog Components Preview 2026-04-16 14:44:51 +02:00
Alem Tuzlak f41a8d4f61 feat(vscode-extension): add AG-UI Inspector as sidebar webview view with shared DebugStream 2026-04-16 14:39:54 +02:00
Alem Tuzlak 7fc82c6061 fix(runtime): send SSE comment on connect to flush response headers immediately 2026-04-16 14:23:54 +02:00
Alem Tuzlak 646ea99086 fix(vscode-extension): fix debug-events URL construction, add error display, update default URL 2026-04-16 14:16:06 +02:00
Alem Tuzlak 0813cc390a test(runtime): add debug-events integration tests across all adapters
Tests the /debug-events SSE endpoint across Express, Hono, Node, and
Fetch Direct adapters. Verifies SSE response format, event flow through
the DebugEventBus, envelope structure (timestamp, agentId, threadId,
runId, event), full event sequence, HTTP method validation (405 for
POST), and NODE_ENV=production guard (404).

Key implementation detail: reader.cancel() must NOT be awaited on
tee'd ReadableStreams (created by response.clone() in the fetch
handler) because Node.js blocks until the other tee branch is also
consumed/cancelled.
2026-04-16 13:57:53 +02:00
Alem Tuzlak b89e95af3a docs: add AG-UI Event Inspector guide 2026-04-16 13:07:40 +02:00
Alem Tuzlak 8acfeed9c7 test(vscode-extension): add DebugStream SSE client tests 2026-04-16 13:04:07 +02:00
Alem Tuzlak 7bde34a856 test(runtime): add handleDebugEvents endpoint tests 2026-04-16 13:03:32 +02:00
Alem Tuzlak 1848a161ee test(runtime): add DebugEventBus and debug-events route tests 2026-04-16 13:00:09 +02:00
Alem Tuzlak 417b58569c refactor(vscode-extension): consolidate types, fix any casts, extract getNonce, add useMemo 2026-04-16 12:41:34 +02:00
Alem Tuzlak 6259ef4705 fix(vscode-extension): use node: prefix for http imports, fix inspector build output name 2026-04-16 12:33:44 +02:00
Alem Tuzlak 84d5c1676f fix: duck-type Request check for Hono polyfill compat (#3790)
## Summary
- Fixes #2986
- `reqOrRequest instanceof Request` fails when `@hono/node-server`
polyfills the Request class with a different prototype
- Replaced with a duck-type check (`isRequestLike`) that verifies `url`,
`method`, and `headers` properties exist
- The `!res` guard ensures IncomingMessage objects (which always come
with a ServerResponse) are still routed correctly

## Test plan
- [x] Added `request-duck-type.test.ts` covering native Request,
polyfilled Request, null/undefined, and missing properties
- [x] All 1225 existing runtime tests pass
- [x] Build passes
2026-04-16 12:32:38 +02:00
Alem Tuzlak 1ab373c776 fix: increase LangGraph agent pagination limit from 10 to 100 (#2056) (#3812)
Fixes #2056

Red-green tested locally.
2026-04-16 12:31:55 +02:00
Alem Tuzlak a7c2e32d06 feat(vscode-extension): add FilterBar, EventList, and EventDetail inspector components
Three React components for the AG-UI event inspector webview:
- FilterBar: category toggles, text search, agent/run dropdowns
- EventList: scrollable event stream with sticky auto-scroll and event summaries
- EventDetail: side panel with metadata display and collapsible JSON tree viewer
2026-04-16 12:30:13 +02:00
Alem Tuzlak 3621d26918 fix: handle void return from sendFunction in usePushToTalk (#3783)
## Summary
- `sendMessage` returns `Promise<void>` but `usePushToTalk` accessed
`.id` on the result, causing a `TypeError` crash during push-to-talk
transcription
- Added guard to check if `sendFunction` returns a message before
accessing `.id`
- Updated `SendFunction` type to accept `Promise<Message | void>`

Fixes #3011

## Test plan
- [x] Added unit tests verifying void return handling
- [x] Added unit tests verifying message-with-id return handling
- [x] All react-ui tests pass
2026-04-16 12:27:57 +02:00
Alem Tuzlak 97d413d0af fix: replace hardcoded width 97% with 100% on messages footer (#3786)
## Summary
- `.copilotKitMessagesFooter` used `width: 97%` which caused horizontal
overflow in constrained containers
- Changed to `width: 100%` with `box-sizing: border-box` so padding is
included in the width calculation

Fixes #2325

## Test plan
- [x] All react-ui tests pass
- [ ] Visual verification: render CopilotKit chat in a constrained
container (e.g. 300px sidebar) and confirm no horizontal scrollbar
appears
2026-04-16 12:27:38 +02:00
Alem Tuzlak 51bfcf85b9 feat(vscode-extension): add inspector webview entry point, App shell, and ConnectionBar 2026-04-16 12:27:31 +02:00
Alem Tuzlak 0726b99621 fix: configurable audio mediaType and release mic tracks on stop (#2049, #2050) (#3811)
Fixes #2049
Fixes #2050

Red-green tested locally.
2026-04-16 12:27:04 +02:00
Alem Tuzlak d4aca6664b fix: export CopilotModal and CopilotModalProps from react-ui (#2194) (#3817)
## Summary

Fixes #2194

`CopilotModal` and `CopilotModalProps` were not exported from
`@copilotkit/react-ui`, making them inaccessible to consumers. Adds both
exports to the chat barrel file.

## Test plan

- [ ] Verify `CopilotModal` and `CopilotModalProps` are importable from
`@copilotkit/react-ui`
2026-04-16 12:26:08 +02:00
Alem Tuzlak f896cb0e54 feat(vscode-extension): add InspectorPanel host, register command, update build config 2026-04-16 12:25:08 +02:00
Alem Tuzlak b8ff382fe3 fix: wrap Button with forwardRef for Radix DropdownMenuTrigger (#3830)
## Summary

- `Button` component wrapped with `React.forwardRef` to fix ref warning
from Radix UI's `DropdownMenuTrigger asChild` pattern

Closes #2947

## Test plan

- [x] All affected packages build successfully

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-16 12:23:35 +02:00
Alem Tuzlak e9148b6e92 fix: show loading indicator during tool execution (#3833)
## Summary
- The loading spinner only appeared when the last message had role
"user"
- During tool execution the last message can have role "tool", hiding
the indicator
- Now also show it when the trailing message is a tool result

Closes #3055
2026-04-16 12:22:41 +02:00
Alem Tuzlak 2c56e8a8ec feat(vscode-extension): add SSE debug stream client with auto-reconnect 2026-04-16 12:22:19 +02:00
Alem Tuzlak c3e5582d11 fix: add IME composition guard in CopilotChatInput (#3835)
## Summary
- Skips keydown handling during IME composition (e.g. CJK input) by
checking `isComposing`/`keyCode 229`
- Guards textarea measurement from resetting value mid-composition,
which would break the composition session

Closes #3318
2026-04-16 12:22:12 +02:00
Alem Tuzlak 5add12346b fix: call onChange("") after send in controlled input mode (#3836)
## Summary
- Always calls `onChange("")` after send in controlled mode so the
parent component is notified to clear its state
- Previously `onChange` was only called inside the `!isControlled`
branch, leaving controlled parents unaware the input was submitted

Closes #3593
2026-04-16 12:20:51 +02:00
Alem Tuzlak 0ac05e1373 feat(vscode-extension): add inspector message types and event color mapping 2026-04-16 12:20:48 +02:00
Alem Tuzlak a7e7fbeef6 fix: pass urlTransform prop through to ReactMarkdown (#3845)
Closes #1921

The Markdown component accepted `components` but not `urlTransform`,
preventing users from customizing URL sanitization. Added `urlTransform`
as an optional prop with passthrough to `MemoizedReactMarkdown`.

Split from #3838.
2026-04-16 12:20:18 +02:00
Alem Tuzlak 0bc0405043 fix: exclude tools with available:"disabled" from buildFrontendTools (#3020) (#3793)
## Summary
- `buildFrontendTools` only checked `tool.available !== false` but the
`available` field can also be the string `"disabled"`, which is truthy
- Added `tool.available !== "disabled"` to the filter so disabled tools
are properly excluded
- Added test verifying tools with `available: "disabled"` are filtered
out

## Test plan
- [x] New test: tool with `available: "disabled"` is excluded from
`buildFrontendTools`
- [x] All existing available-filtering tests still pass
- [x] Full core test suite passes (338 tests)
2026-04-16 12:19:44 +02:00
Alem Tuzlak 38c6642a97 feat(runtime): add GET /debug-events SSE endpoint for live event inspection 2026-04-16 12:18:34 +02:00
Alem Tuzlak dc96155d77 feat(runtime): broadcast AG-UI events to DebugEventBus from SSE handlers 2026-04-16 12:15:16 +02:00
Alem Tuzlak 70cb4d002a feat(runtime): wire DebugEventBus into BaseCopilotRuntime 2026-04-16 12:12:14 +02:00
Alem Tuzlak ada147ef84 feat(runtime): add DebugEventBus and DebugEventEnvelope type 2026-04-16 12:09:25 +02:00
Alem Tuzlak f624ee1fb7 fix: pass AssistantMessage to onThumbsUp/Down callbacks (#3457) (#3796)
## Summary
- onThumbsUp/onThumbsDown/onReadAloud/onRegenerate callbacks on
CopilotChatAssistantMessage were receiving the browser SyntheticEvent
instead of the AssistantMessage object
- Wrapped the onClick handlers to pass the message explicitly:
`onClick={() => onThumbsUp(message)}`
- Same fix applied to onReadAloud and onRegenerate for consistency

## Test plan
- [x] Red-green verified: test confirms callback arg has `id`, `role`,
`content` and NOT `nativeEvent`/`target`
- [x] Full react-core test suite passes (1071 tests)
- [x] Build passes

Closes #3457
2026-04-16 12:07:26 +02:00
Alem Tuzlak c38d0db229 fix: return null instead of throwing in useRenderCustomMessages (#3497) (#3797)
## Summary
- useRenderCustomMessages threw "Agent not found" when the agent was
undefined during the connecting state
- Changed the throw to return null, allowing the component to render
gracefully while the agent is being resolved

## Test plan
- [x] Red-green verified: test calls hook with nonexistent agent,
asserts returns null not throws
- [x] Full react-core test suite passes (1071 tests)
- [x] Build passes

Closes #3497
2026-04-16 12:03:39 +02:00
Alem Tuzlak 3bda9d28bc fix: guard CopilotListeners against empty agents map (#3249) (#3798)
## Summary
- CopilotListeners called useAgent() unconditionally, which throws when
no agents are registered and no runtimeUrl is configured
- Split into CopilotListeners (outer, handles error subscription) and
CopilotListenersAgentSubscription (inner, uses useAgent)
- Inner component only renders when agents exist or a runtime is
configured

## Test plan
- [x] Red-green verified: render CopilotListeners with no agents, assert
no throw
- [x] Full react-core test suite passes (1071 tests)
- [x] Build passes

Closes #3249
2026-04-16 12:02:54 +02:00
Alem Tuzlak 057f159db0 fix: skip version check when showDevConsole is false (#3827)
## Summary

- `checkForUpdates()` in dev console is now gated on `showDevConsole`,
preventing unnecessary network requests when the console is disabled

Closes #2751

## Test plan

- [x] `@copilotkit/react-core` tests pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-16 12:00:23 +02:00
Alem Tuzlak c38f8d3477 fix: always generate unique message IDs in LangChain adapter (#3829)
## Summary

- LangChain adapter now always uses `randomId()` for message stream IDs
instead of relying on `lc_kwargs.id` (which GoogleGenerativeAI sets to
`"0"` for all messages)

Closes #2929

## Test plan

- [x] `@copilotkit/runtime` tests pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-16 11:59:22 +02:00