wicked-studio 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,12 +1,50 @@
1
1
  # wicked-studio
2
2
 
3
- > **v0.1.0** · [![CI](https://github.com/mikeparcewski/wicked-studio/actions/workflows/ci.yml/badge.svg)](https://github.com/mikeparcewski/wicked-studio/actions/workflows/ci.yml) · [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
3
+ > [![npm](https://img.shields.io/npm/v/wicked-studio)](https://www.npmjs.com/package/wicked-studio) · [![CI](https://github.com/mikeparcewski/wicked-studio/actions/workflows/ci.yml/badge.svg)](https://github.com/mikeparcewski/wicked-studio/actions/workflows/ci.yml) · [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
4
4
 
5
5
  **The coder-facing skin of the wicked experience plane.** A React SPA that is a *pure HTTP/WS
6
6
  client* of the [wicked-crew](https://github.com/mikeparcewski/wicked-crew) daemon: launch and
7
7
  steer governed agent runs, answer human gates, watch live CoreEvent streams, browse projects,
8
- evidence, coverage, and the decisions ledger — everything the daemon exposes on `/api/v1` and
9
- `/ws`, and nothing else.
8
+ repo intelligence, evidence, coverage, and the decisions ledger — everything the daemon exposes
9
+ on `/api/v1` and `/ws`, and nothing else.
10
+
11
+ ## What the skin surfaces (0.4.x)
12
+
13
+ Every capability below is a real `/api/v1` or `/ws` wire — no invented routes — verified by a
14
+ 21-scenario functional campaign against an isolated daemon (21/21 PASS, evidence-graded;
15
+ `estate-review/STUDIO-CAMPAIGN.md`). Legs the campaign could only prove over the wire rather
16
+ than through the UI are marked as such below.
17
+
18
+ - **Projects** — create/rename/archive/restore, attach and detach members (repos, runs, chats,
19
+ docs), a merged activity feed with a prompt inbox, a per-project dashboard, and a four-mode
20
+ project shell (chat / build / document / video) with deep-linkable routes (`/p/:id/…`).
21
+ - **Repo intelligence** — register a local path or clone from a URL; either launches a governed
22
+ onboarding run (`index` → `annotate`, two tool units) that builds the repo's code graph. Then:
23
+ graph view with ego-focus navigation, **blast radius** for any symbol, hotspots, the domain
24
+ graph + coverage view, and a requirements browser with operator overrides (PATCH
25
+ title/notes/status/risk).
26
+ - **Governed runs** — the composer (Ask / Balanced / Autonomous, seat selection, repo binding,
27
+ PR delivery), run list/detail/timeline with event backfill on reload, **HITL steering gates**
28
+ (approve / approve-with-steer / reject, plus keyboard batch triage), elicitation prompts,
29
+ durable pre-gate guidance notes, and the lifecycle verbs the UI wires today: cancel, inject
30
+ a message, unarchive, retry lineage. (Resume and archive exist as typed client wires,
31
+ campaign-verified over the API — the UI affordances are a filed gap, not yet shipped.)
32
+ - **Evidence** — per-unit transcripts, the worktree file & diff viewer, and one-click
33
+ **evidence bundle download** for any run. The skin surfaces the gates; it never grades.
34
+ - **Group chat** — fan one question out to your whole warm CLI roster and watch each seat
35
+ answer side by side.
36
+ - **Governed PTY terminals** — real terminals (xterm over `/ws/terminals/:id`), including the
37
+ seat sign-in flow from settings.
38
+ - **Workflow builder** — inspect and create WorkflowDefs (phases, gates, validation) and their
39
+ inline tool scripts, then launch runs against them.
40
+ - **Governance** — policies, conformance rules (with facet preview), the decisions/claims
41
+ ledger, and the audit view.
42
+ - **Settings** — daemon settings plus `studio.*` namespaced keys: appearance/theme (including
43
+ brand-learn), notifications, composer preferences.
44
+ - **Document & Video modes** — the merged creator surface, riding crew's proxied interactive
45
+ bridge under `/api/v1/projects/:id/interactive/*`.
46
+ - **Command palette + deep links** — Cmd+K verbs (open terminal, answer prompts), bookmarkable
47
+ routes throughout, desktop gate notifications.
10
48
 
11
49
  ```
12
50
  ┌─────────────────────┐ HTTP /api/v1 + WS /ws ┌──────────────────────┐
@@ -42,6 +80,13 @@ The connection surface is deliberately small (`src/api/client.ts`):
42
80
  The daemon's loopback CORS admits any `http://localhost:*` / `http://127.0.0.1:*` origin, so a
43
81
  standalone studio on its own port can drive a local daemon out of the box.
44
82
 
83
+ ## Install
84
+
85
+ You rarely install studio directly: **`npx wicked-crew serve` ships this UI bundled**,
86
+ same-origin on one port. Or use the family installer — [`npx wicked-installer`](https://www.npmjs.com/package/wicked-installer)
87
+ installs/updates the whole wicked-\* family (wicked-crew, which serves this skin, included).
88
+ For a studio you build and host yourself, see [Standalone build](#standalone-build).
89
+
45
90
  ## Develop
46
91
 
47
92
  ```sh
@@ -78,6 +123,18 @@ absent). Installs from git get a fresh `dist/` via the `prepare` hook
78
123
  (`scripts/prepare-dist.mjs`); publishers run `npm run build && npm publish` so the tarball is
79
124
  built from the tagged source.
80
125
 
126
+ ### The data-testid contract (`testid-inventory.json`)
127
+
128
+ `testid-inventory.json` (repo root, committed; emitted into `dist/testid-inventory.json` by the
129
+ build) is the machine-readable inventory of every `data-testid` the UI declares — the selector
130
+ contract that test generators and the model-free campaign runner build against, versioned with
131
+ this package. `tests/testidInventory.test.ts` re-scans `src/` and fails CI on any drift, so a
132
+ testid change (or a `package.json` version bump — the artifact carries `studioVersion`) ships
133
+ only together with a reviewed `npm run manifest:testids` regeneration. The drift-handling
134
+ doctrine downstream is embedded in the file's `$doc` header: a selector miss fails the
135
+ deterministic run; the authoring agent re-authors against the live DOM; the runner re-records;
136
+ the substitution lands in the spec diff. No agentic fallback inside the runner.
137
+
81
138
  ## Provenance
82
139
 
83
140
  Extracted from the wicked-crew monorepo (`packages/studio`) as its own product — the carve kept
@@ -89,7 +146,11 @@ the code as-is and preserved the package's full in-monorepo history via `git sub
89
146
 
90
147
  - Node.js ≥ 22.0.0
91
148
  - npm ≥ 10 (for workspaces and `prepare` hooks)
92
- - A running [wicked-crew](https://github.com/mikeparcewski/wicked-crew) daemon (v0.4.0+) for the SPA to connect to
149
+ - A running [wicked-crew](https://github.com/mikeparcewski/wicked-crew) daemon (**v0.7.0+**) for
150
+ the SPA to connect to. The floor is real, not ceremonial: the UI calls routes that first
151
+ shipped in crew 0.7.0 — `PUT /runs/:id/guidance` (the durable pre-gate note) exists only
152
+ there, and the projects surface, `/audit`, and run archiving need ≥ 0.6.0 — so an older
153
+ daemon 404s on surfaces the skin treats as present.
93
154
  - A modern browser (Chrome, Edge, Firefox, Safari)
94
155
  - macOS, Linux, or Windows
95
156