Files
boocode/packages/contracts/package.json
indifferentketchup d6d246c15b feat(web,coder): arena pane — compare 2-6 AI competitors on same prompt
Arena is a new pane kind for competitive AI evaluation. A Battle runs
the same prompt against 2-6 Contestants across two concurrent lanes:
local lane (llama-swap models, serial) and cloud lane (parallel).

Added to all three registries: @boocode/contracts WsFrameSchema,
server InferenceFrame, and web WsFrame.

Backend (apps/coder):
- arena-runner: battle scheduler, lane classifier, benchmark, results
  writer, resume, user winner override
- arena-analyzer: two-stage digest→judge analysis on DEFAULT_MODEL
- arena-decisions: status transitions and resume logic (unit-tested)
- arena-analyzer-helpers: pure helper functions (unit-tested)
- arena-model-call: model call utility for analysis
- arena routes: create/get/list/stop/analyze/cross-examine/winner/diff
- schema: battles, contestants, cross_examinations tables (idempotent)
- remove old /api/arena* routes and tasks.arena_id column

Frontend (apps/web):
- ArenaLauncherDialog: battle type, prompt, contestant selection
- ArenaPane: live roster, streaming output, analysis, cross-exam
- DiffView: unified diff with line-by-line color for coding contests
- Winner override per-row dropdown (Trophy icon)
- battle_updated WS handler for live winner/analysis updates
- arena pane kind in Workspace, ChatTabBar, useSidebar

Cross-app:
- ArenaState and ArenaContestantShape/WsFrame types (contracts)
- battle_* frames in WsFrameSchema, InferenceFrame, and web WsFrame
- manifest.json written per battle results folder
- /Arena added to .gitignore

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 23:25:29 +00:00

51 lines
1.2 KiB
JSON

{
"name": "@boocode/contracts",
"version": "0.0.0",
"private": true,
"type": "module",
"main": "dist/index.js",
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
},
"./ws-frames": {
"types": "./dist/ws-frames.d.ts",
"default": "./dist/ws-frames.js"
},
"./provider-snapshot": {
"types": "./dist/provider-snapshot.d.ts",
"default": "./dist/provider-snapshot.js"
},
"./provider-config": {
"types": "./dist/provider-config.d.ts",
"default": "./dist/provider-config.js"
},
"./message-metadata": {
"types": "./dist/message-metadata.d.ts",
"default": "./dist/message-metadata.js"
},
"./worktree-risk": {
"types": "./dist/worktree-risk.d.ts",
"default": "./dist/worktree-risk.js"
},
"./arena": {
"types": "./dist/arena.d.ts",
"default": "./dist/arena.js"
}
},
"scripts": {
"build": "tsc",
"typecheck": "tsc --noEmit",
"test": "vitest run"
},
"dependencies": {
"zod": "^3.23.8"
},
"devDependencies": {
"typescript": "^5.5.0",
"vitest": "^3.2.4"
},
"license": "MIT"
}