Force-directed graph visualization for agent teams. Package: @claude-teams/agent-graph (isolated workspace package) - Space theme: bloom, particles, hex grid, depth stars - Members as hexagonal nodes with breathing glow - Tasks as pill cards in kanban columns (todo/wip/done/review/approved) per owner - Message particles along edges (real-time only) - Deterministic layout, Figma-style pan, scroll/pinch zoom - Clean Architecture: ports/adapters/strategies, ES #private classes Integration: features/agent-graph/ (adapter + overlay + tab) - Full-screen overlay (Cmd+Shift+G) + Pin as Tab - Graph button in Team section header - Frustum culling, zero per-frame allocations, adaptive fps - Performance overlay via ?perf query param Also: CI runs on all PR branches, features/CLAUDE.md architecture guide
94 lines
2.1 KiB
YAML
94 lines
2.1 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main, dev]
|
|
paths:
|
|
- 'src/**'
|
|
- 'agent-teams-controller/**'
|
|
- 'mcp-server/**'
|
|
- 'packages/**'
|
|
- 'test/**'
|
|
- '.github/workflows/**'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'tsconfig*.json'
|
|
- 'vite*.config.*'
|
|
- 'vitest*.config.*'
|
|
- 'tailwind.config.*'
|
|
- 'eslint.config.*'
|
|
pull_request:
|
|
paths:
|
|
- 'src/**'
|
|
- 'agent-teams-controller/**'
|
|
- 'mcp-server/**'
|
|
- 'packages/**'
|
|
- 'test/**'
|
|
- '.github/workflows/**'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'tsconfig*.json'
|
|
- 'vite*.config.*'
|
|
- 'vitest*.config.*'
|
|
- 'tailwind.config.*'
|
|
- 'eslint.config.*'
|
|
|
|
jobs:
|
|
validate:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: pnpm
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --no-frozen-lockfile
|
|
|
|
- name: Restore ESLint cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: .eslintcache
|
|
key: eslint-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'eslint.config.*', 'src/**/*.ts', 'src/**/*.tsx') }}
|
|
|
|
- name: Auto-fix import sort (Node version parity)
|
|
run: npx eslint src/ --fix --no-cache || true
|
|
|
|
- name: Validate workspace truth gate
|
|
run: pnpm check
|
|
|
|
test:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: pnpm
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --no-frozen-lockfile
|
|
|
|
- name: Test
|
|
run: pnpm test:workspace
|