Add reusable multi-session skill and five-page project workbench
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# Agent Workbench dashboard template
|
||||
|
||||
A reusable React + TypeScript dashboard using Vite, Tailwind CSS and official
|
||||
shadcn/ui components. All project data comes from the same-origin API. No
|
||||
production fixtures, accounts, host inventories, credentials or screenshots are
|
||||
included.
|
||||
|
||||
## Build and serve
|
||||
|
||||
Use Node.js 22.12 or newer (validated with Node.js 24) and npm:
|
||||
|
||||
```sh
|
||||
npm ci
|
||||
npm run build
|
||||
```
|
||||
|
||||
Serve `dist/index.html` at `/` and `dist/assets/*` with the coordination API at
|
||||
`/api/*`. Route selection lives in the URL hash, so the static server does not
|
||||
need an SPA path fallback. Do not serve source files or `node_modules`.
|
||||
`npm run preview` only previews static assets; an authenticated API is still
|
||||
required. `npm run lint` checks the source; upstream shadcn sources can emit
|
||||
React development/fast-refresh warnings without affecting a production build.
|
||||
|
||||
The official Radix/sidebar components use inline styles for dimensions and
|
||||
positioning. A compatible CSP keeps scripts and connections at `'self'` while
|
||||
allowing inline styles. No remote fonts, CDN scripts or external runtime assets
|
||||
are required. Retain the server's authentication, Host/Origin and CSRF checks.
|
||||
|
||||
## Pages and data
|
||||
|
||||
- `#/overview`: summary, current phase, blockers, important reports and decisions.
|
||||
- `#/tasks`: work packages, phase, ETA range and evidence.
|
||||
- `#/cluster`: node memory/load, storage and scheduler queues; unknown is not zero.
|
||||
- `#/communication`: the configured current/dedicated conversation and other sessions.
|
||||
- `#/decisions`: pending task decisions and proposal/decision events.
|
||||
|
||||
`GET /api/state` provides the title from `config.title` (or `title`), falling back
|
||||
to `Agent Workbench`. `primary_session_id` selects the current or dedicated session and
|
||||
falls back to `wp4-progress` for compatibility. The UI never assumes the bound
|
||||
conversation is WP4. An optional backend-provided `session.thread_url` matching
|
||||
`codex://threads/<UUID>` enables the local original-session link; the client never
|
||||
fabricates a URI from an unverified ID. An absent primary record disables sending; it never
|
||||
silently redirects to a different session. History messages with
|
||||
`origin: session_history` are labeled as synchronized source text.
|
||||
|
||||
The client reads `GET /api/messages?session_id=...` and writes
|
||||
`POST /api/messages` and `POST /api/session-requests`. It sends a Bearer token
|
||||
and `X-CSRF-Token: 1`. The token remains in React memory, never URL, localStorage
|
||||
or sessionStorage. Refresh requires re-login while preserving route and selected
|
||||
session. Polling is every three seconds, with cancellation and session scoping.
|
||||
A send retry reuses its idempotency key. History synchronization and AI execution
|
||||
are backend/worker responsibilities; the template never generates model replies.
|
||||
|
||||
## Fixed design system and upstream sources
|
||||
|
||||
`src/index.css` is the only palette definition: official zinc base plus official
|
||||
blue primary, with named semantic success/danger/active state colors. Pages use
|
||||
semantic tokens, not randomly selected per-project palettes.
|
||||
|
||||
The official `sidebar-07` and `login-01` blocks were installed using the official
|
||||
`shadcn@4.22.1` CLI. Their project-specific adapters are `app-sidebar.tsx`,
|
||||
`nav-main.tsx` and `login-form.tsx`. Underlying UI components are retained in
|
||||
`src/components/ui`. Normal builds use the committed source snapshot and exact
|
||||
npm lockfile; they do not fetch a registry or run the generator.
|
||||
|
||||
See `THIRD_PARTY_NOTICES.md`, `THIRD_PARTY_LICENSES.txt` and
|
||||
`registry-provenance.json` for sources, licenses and content hashes.
|
||||
Reference in New Issue
Block a user