Skip to content

Commit af48201

Browse files
committed
Initial public release — RoundTable: Multi-AI Consensus Playground
0 parents  commit af48201

50 files changed

Lines changed: 11875 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# ──────────────────────────────────────────────
2+
# RoundTable — Environment Configuration
3+
# ──────────────────────────────────────────────
4+
5+
# Individual API keys referenced by providers
6+
GROK_API_KEY=xai-your-key-here
7+
ANTHROPIC_API_KEY=sk-ant-your-key-here
8+
OPENAI_API_KEY=sk-your-key-here
9+
10+
# Model listing behavior:
11+
# STRICT_MODELS=true → Only show the exact models listed below
12+
# STRICT_MODELS=false → Fetch all chat models from each provider API;
13+
# listed models appear first as "preferred" (default)
14+
STRICT_MODELS=false
15+
16+
# Provider configuration (JSON array)
17+
# Each provider: id, name, baseUrl, apiKey, models (optional — preferred models)
18+
# If models is omitted or empty, all chat models from the API are listed.
19+
AI_PROVIDERS='[{"id":"grok","name":"Grok","baseUrl":"https://api.x.ai/v1","apiKey":"env:GROK_API_KEY","models":["grok-4-fast-reasoning"]},{"id":"claude","name":"Claude","baseUrl":"https://api.anthropic.com/v1","apiKey":"env:ANTHROPIC_API_KEY","models":["claude-sonnet-4-20250514"]},{"id":"openai","name":"OpenAI","baseUrl":"https://api.openai.com/v1","apiKey":"env:OPENAI_API_KEY","models":["gpt-4o"]}]'

.github/workflows/ci.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
lint:
15+
name: Lint
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- uses: pnpm/action-setup@v4
21+
22+
- uses: actions/setup-node@v4
23+
with:
24+
node-version: 22
25+
cache: pnpm
26+
27+
- run: pnpm install --frozen-lockfile
28+
29+
- name: ESLint
30+
run: pnpm lint
31+
32+
- name: Prettier
33+
run: pnpm format:check
34+
35+
test:
36+
name: Test
37+
runs-on: ubuntu-latest
38+
steps:
39+
- uses: actions/checkout@v4
40+
41+
- uses: pnpm/action-setup@v4
42+
43+
- uses: actions/setup-node@v4
44+
with:
45+
node-version: 22
46+
cache: pnpm
47+
48+
- run: pnpm install --frozen-lockfile
49+
50+
- name: Run tests
51+
run: pnpm test
52+
53+
build:
54+
name: Build
55+
runs-on: ubuntu-latest
56+
needs: [lint, test]
57+
steps:
58+
- uses: actions/checkout@v4
59+
60+
- uses: pnpm/action-setup@v4
61+
62+
- uses: actions/setup-node@v4
63+
with:
64+
node-version: 22
65+
cache: pnpm
66+
67+
- run: pnpm install --frozen-lockfile
68+
69+
- name: Build
70+
run: pnpm build
71+
env:
72+
AI_PROVIDERS: "[]"

.gitignore

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
node_modules/
2+
.next/
3+
.env
4+
.env.local
5+
.next/
6+
coverage/
7+
.env.*.local
8+
*.tsbuildinfo
9+
next-env.d.ts
10+
coverage/
11+
.DS_Store
12+
*.log
13+
.pnpm-store/
14+
.devcontainer/

.prettierignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules
2+
.next
3+
out
4+
coverage
5+
pnpm-lock.yaml

.prettierrc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"semi": true,
3+
"singleQuote": false,
4+
"tabWidth": 2,
5+
"trailingComma": "all",
6+
"printWidth": 100,
7+
"bracketSpacing": true,
8+
"arrowParens": "always",
9+
"endOfLine": "lf"
10+
}

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Marcelo Ceccon
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)