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 +65 -4
- package/dist/assets/index-C8rx24F1.js +530 -0
- package/dist/assets/index-CwmIj-f2.css +32 -0
- package/dist/index.html +2 -2
- package/dist/testid-inventory.json +3924 -0
- package/package.json +2 -1
- package/dist/assets/index-8p8uwCxG.js +0 -530
- package/dist/assets/index-D6S9zUtO.css +0 -32
package/README.md
CHANGED
|
@@ -1,12 +1,50 @@
|
|
|
1
1
|
# wicked-studio
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> [](https://www.npmjs.com/package/wicked-studio) · [](https://github.com/mikeparcewski/wicked-studio/actions/workflows/ci.yml) · [](./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
|
|
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.
|
|
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
|
|