Skip to content

Add attributes inspector and explicit dispatch support #144

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
May 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ blank_issues_enabled: false
contact_links:
- name: Slack Community Chat
url: https://livekit.io/join-slack
about: Ask questions and discuss with other LiveKit users in real time.
about: Ask questions and discuss with other LiveKit users in real time.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ body:
id: additional-context
attributes:
label: Additional Information
description: Add any other context or screenshots about the feature request here.
description: Add any other context or screenshots about the feature request here.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
# LiveKit Agents Playground

<!--BEGIN_DESCRIPTION-->

The Agents Playground is designed for quickly prototyping with server side agents built with [LiveKit Agents Framework](https://github.com/livekit/agents). Easily tap into LiveKit WebRTC sessions and process or generate audio, video, and data streams.
The playground includes components to fully interact with any LiveKit agent, through video, audio and chat.
The playground includes components to fully interact with any LiveKit agent, through video, audio and chat.

<!--END_DESCRIPTION-->

## Docs and references
Expand Down Expand Up @@ -69,7 +71,9 @@ NEXT_PUBLIC_LIVEKIT_URL=wss://<Your Cloud URL>
- Mobile device sizes not supported currently

<!--BEGIN_REPO_NAV-->

<br/><table>

<thead><tr><th colspan="2">LiveKit Ecosystem</th></tr></thead>
<tbody>
<tr><td>LiveKit SDKs</td><td><a href="https://github.com/livekit/client-sdk-js">Browser</a> · <a href="https://github.com/livekit/client-sdk-swift">iOS/macOS/visionOS</a> · <a href="https://github.com/livekit/client-sdk-android">Android</a> · <a href="https://github.com/livekit/client-sdk-flutter">Flutter</a> · <a href="https://github.com/livekit/client-sdk-react-native">React Native</a> · <a href="https://github.com/livekit/rust-sdks">Rust</a> · <a href="https://github.com/livekit/node-sdks">Node.js</a> · <a href="https://github.com/livekit/python-sdks">Python</a> · <a href="https://github.com/livekit/client-sdk-unity">Unity</a> · <a href="https://github.com/livekit/client-sdk-unity-web">Unity (WebGL)</a></td></tr><tr></tr>
Expand Down
623 changes: 327 additions & 296 deletions package-lock.json

Large diffs are not rendered by default.

42 changes: 22 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,37 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
"lint": "next lint",
"format": "prettier --write ."
},
"dependencies": {
"@livekit/components-react": "^2.9.3",
"@livekit/components-styles": "^1.1.1",
"@radix-ui/react-dropdown-menu": "^2.0.6",
"cookies-next": "^4.1.1",
"framer-motion": "^10.16.16",
"@livekit/components-styles": "^1.1.5",
"@radix-ui/react-dropdown-menu": "^2.1.2",
"cookies-next": "^4.3.0",
"framer-motion": "^10.18.0",
"js-yaml": "^4.1.0",
"livekit-client": "^2.5.1",
"livekit-server-sdk": "^2.6.1",
"livekit-client": "^2.9.5",
"livekit-server-sdk": "^2.13.0",
"lodash": "^4.17.21",
"next": "^14.0.4",
"next": "^14.2.20",
"next-plugin-preval": "^1.2.6",
"qrcode.react": "^4.0.0",
"react": "^18",
"react-dom": "^18"
"qrcode.react": "^4.1.0",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@types/js-yaml": "^4.0.9",
"@types/lodash": "^4.17.0",
"@types/node": "^20.10.4",
"@types/react": "^18.2.43",
"@types/react-dom": "^18",
"autoprefixer": "^10.4.16",
"eslint": "^8",
"@types/lodash": "^4.17.13",
"@types/node": "^20.17.9",
"@types/react": "^18.3.14",
"@types/react-dom": "^18.3.3",
"autoprefixer": "^10.4.20",
"eslint": "^8.57.1",
"eslint-config-next": "14.2.26",
"postcss": "^8.4.31",
"tailwindcss": "^3.3.5",
"typescript": "^5.3.3"
"postcss": "^8.4.49",
"tailwindcss": "^3.4.16",
"typescript": "^5.7.2",
"prettier": "^3.4.2"
}
}
2 changes: 1 addition & 1 deletion postcss.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ module.exports = {
tailwindcss: {},
autoprefixer: {},
},
}
};
Binary file modified public/favicon.ico
Binary file not shown.
1 change: 0 additions & 1 deletion public/next.svg

This file was deleted.

1 change: 0 additions & 1 deletion public/vercel.svg

This file was deleted.

2 changes: 1 addition & 1 deletion src/cloud/README.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Files in this `cloud/` directory can be ignored. They are mocks which we override in our private, hosted version of the agents-playground that supports LiveKit Cloud authentication.
Files in this `cloud/` directory can be ignored. They are mocks which we override in our private, hosted version of the agents-playground that supports LiveKit Cloud authentication.
2 changes: 1 addition & 1 deletion src/cloud/useCloud.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ export function useCloud() {
const wsUrl = "";

return { generateToken, wsUrl };
}
}
60 changes: 60 additions & 0 deletions src/components/config/AttributeRow.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import React from "react";
import { AttributeItem } from "@/lib/types";

interface AttributeRowProps {
attribute: AttributeItem;
onKeyChange: (id: string, newKey: string) => void;
onValueChange: (id: string, newValue: string) => void;
onRemove?: (id: string) => void;
disabled?: boolean;
}

export const AttributeRow: React.FC<AttributeRowProps> = ({
attribute,
onKeyChange,
onValueChange,
onRemove,
disabled = false,
}) => {
return (
<div className="flex items-center gap-2 mb-2">
<input
value={attribute.key}
onChange={(e) => onKeyChange(attribute.id, e.target.value)}
className="flex-1 min-w-0 text-gray-400 text-sm bg-transparent border border-gray-800 rounded-sm px-3 py-1 font-mono"
placeholder="Name"
disabled={disabled}
/>
<input
value={attribute.value}
onChange={(e) => onValueChange(attribute.id, e.target.value)}
className="flex-1 min-w-0 text-gray-400 text-sm bg-transparent border border-gray-800 rounded-sm px-3 py-1 font-mono"
placeholder="Value"
disabled={disabled}
/>
{onRemove && (
<button
onClick={() => onRemove(attribute.id)}
className="flex-shrink-0 w-6 h-6 flex items-center justify-center text-gray-400 hover:text-white"
disabled={disabled}
style={{ display: disabled ? "none" : "flex" }}
>
<svg
xmlns="http://www.w3.org/2000/svg"
className="h-4 w-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M6 18L18 6M6 6l12 12"
/>
</svg>
</button>
)}
</div>
);
};
93 changes: 0 additions & 93 deletions src/components/config/AttributesEditor.tsx

This file was deleted.

Loading