wicked-studio 0.13.0 → 0.14.0
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 +105 -45
- package/dist/assets/WickedSans-Regular-fb698rcD.woff2 +0 -0
- package/dist/assets/WickedSans-SemiBold-CD53n1AC.woff2 +0 -0
- package/dist/assets/WickedScript-Regular-CY5juO6I.woff2 +0 -0
- package/dist/assets/WickedSerif-Regular-mdPEjaVZ.woff2 +0 -0
- package/dist/assets/index-BUZ_-Syk.css +32 -0
- package/dist/assets/index-C_UIgTiy.js +986 -0
- package/dist/editors/wicked-deck/editor.json +6 -1
- package/dist/editors/wicked-deck/icon.svg +1 -0
- package/dist/editors/wicked-deck/index.html +1 -1
- package/dist/editors/wicked-doc/editor.json +6 -1
- package/dist/editors/wicked-doc/icon.svg +1 -0
- package/dist/editors/wicked-doc/index.html +1 -1
- package/dist/editors/wicked-insights/editor.json +6 -1
- package/dist/editors/wicked-insights/icon.svg +1 -0
- package/dist/editors/wicked-insights/index.html +1 -1
- package/dist/editors/wicked-page/editor.json +6 -1
- package/dist/editors/wicked-page/icon.svg +1 -0
- package/dist/editors/wicked-page/index.html +1 -1
- package/dist/editors/wicked-video/editor.json +6 -1
- package/dist/editors/wicked-video/icon.svg +1 -0
- package/dist/editors/wicked-video/index.html +1 -1
- package/dist/index.html +2 -2
- package/dist/testid-inventory.json +5155 -2707
- package/package.json +4 -3
- package/dist/assets/index-B-f_VEL2.css +0 -32
- package/dist/assets/index-DhkxIK-0.js +0 -845
package/README.md
CHANGED
|
@@ -2,14 +2,19 @@
|
|
|
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
|
-
**
|
|
6
|
-
it against your rules. You get the evidence.*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
**The IDE for running a team of coding agents.** *Your coding agents do the work. A different agent
|
|
6
|
+
checks it against your rules. You get the evidence.* By default a different agent reviews the work.
|
|
7
|
+
When none can, the job stops unless you launch it as "reduced assurance", which is labelled on the
|
|
8
|
+
job, every gate and the delivery. A saved workflow may require fewer checks; its requirements are
|
|
9
|
+
listed in the receipts.
|
|
10
|
+
|
|
11
|
+
wicked-studio is the browser app where you run Claude Code, Codex, GitHub Copilot, OpenCode and Pi
|
|
12
|
+
as a team. Start a job with a chat: it proposes a plan, and once you confirm it the agents work in
|
|
13
|
+
sandboxes while you watch. With whisper.cpp installed, you can ask questions out loud and steer jobs
|
|
14
|
+
already running, each instruction confirmed on screen first. Gate decisions come to you as one
|
|
15
|
+
card, and each job's evidence is a click away. Learn suggests rules and memories from how your team
|
|
16
|
+
works, for you to accept, and jobs can propose what they learned for your approval.
|
|
17
|
+
The [wicked-crew](https://github.com/mikeparcewski/wicked-crew) daemon runs the jobs and bundles studio.
|
|
13
18
|
|
|
14
19
|
---
|
|
15
20
|
|
|
@@ -21,16 +26,28 @@ reasoning in a scrollback you'll never read. wicked-studio flips that:
|
|
|
21
26
|
- **Start with a chat.** **New job → Start with chat**: describe what you want, the chat proposes a
|
|
22
27
|
plan, and nothing starts until you confirm it. (Tick "Don't show this again" to go straight to
|
|
23
28
|
chat next time.)
|
|
24
|
-
- **Sign your agents in once.** The **Agents**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
- **Sign your agents in once.** The **Agents** page signs each agent in: Claude Code and GitHub
|
|
30
|
+
Copilot through a login container; Codex, Pi and OpenCode with their host CLIs and a temporary
|
|
31
|
+
home (wicked-core `src/seat_login.rs`). Jobs run every agent in a hardened sandbox (crew needs a
|
|
32
|
+
container runtime: Rancher Desktop, Docker, Podman, Colima or OrbStack). Credentials stay in a broker and the sandbox sees placeholders,
|
|
33
|
+
except a Claude Code seat on a Claude subscription, which receives its sign-in token (if a step writes it
|
|
34
|
+
into the work, the step fails and its delivery is blocked).
|
|
35
|
+
- **Rules and memory, kept apart.** **Steering** holds your rules, each with an explicit reach
|
|
36
|
+
(every repository or one project; a rule can also target a language, a layer or a framework).
|
|
37
|
+
**Memory** is its own page: what happened and what you told
|
|
38
|
+
it, with your own memories applying across projects. Agents suggest both; you approve. A finished
|
|
39
|
+
job says what it learned ("3 learnings proposed · 2 waiting for you"), and each proposal in
|
|
40
|
+
Memory's queue names the job it came from.
|
|
41
|
+
- **Teach it how you work.** **Learn** (marked "Start here" in the sidebar until you use it) reads
|
|
42
|
+
your team docs, showcase repos and writing into suggested rules and memories, offers starter
|
|
43
|
+
rules, sets the orchestrator's **Personality** (tone only; never rigor, gates or checks; one for
|
|
44
|
+
you, overridable per project) and learns your brand colours. Suggested rules and memories become active only when you accept
|
|
45
|
+
them (the sources you supply and the pending suggestions are stored so you can review them).
|
|
30
46
|
- **Direct, don't babysit.** Launch runs across many repos and projects at once, then let them
|
|
31
47
|
work. Attention comes to *you* when a run hits a gate — you don't sit watching one terminal.
|
|
32
|
-
- **Approve what matters.** Human-in-the-loop gates surface the real decisions
|
|
33
|
-
|
|
48
|
+
- **Approve what matters.** Human-in-the-loop gates surface the real decisions as one guided card:
|
|
49
|
+
every choice the gate offers, the recommended one marked when there is one and, when supplied,
|
|
50
|
+
what each choice would do, then one button and a 10 s undo. Keyboard batch triage helps when several pile up.
|
|
34
51
|
- **"Done" is proven, not claimed — and the gate says how.** By default a run requires a distinct
|
|
35
52
|
evaluator and a judge: review goes to a seat other than the creator's. When no such seat exists, the
|
|
36
53
|
run stops at a gate that says why. You can then sign a second seat in, or relaunch with **reduced
|
|
@@ -48,8 +65,8 @@ reasoning in a scrollback you'll never read. wicked-studio flips that:
|
|
|
48
65
|
that nothing re-verified is labelled "Unverified delivery", along with whether its tree moved, and
|
|
49
66
|
the delivery shows the QE acceptance check when the run requires one.
|
|
50
67
|
|
|
51
|
-
A
|
|
52
|
-
acceptance before it delivers. The session header, every gate and the delivery say where that
|
|
68
|
+
A built-in workflow that changes the application (`feature`, `bug`, `migration`, `mcp-server`,
|
|
69
|
+
`editor-plugin`) requires QE acceptance before it delivers. The session header, every gate and the delivery say where that
|
|
53
70
|
stands: "QE acceptance: required", "waived (score N)" when the run's change scored in the lowest
|
|
54
71
|
band on every dimension, or "skipped by operator (reason)". The launch form offers **Skip QE
|
|
55
72
|
acceptance**, which needs a reason before it can be sent, and **Force QE acceptance**, which keeps
|
|
@@ -57,37 +74,78 @@ reasoning in a scrollback you'll never read. wicked-studio flips that:
|
|
|
57
74
|
transcripts, diffs, and a downloadable evidence bundle. Studio shows you the gate outcomes; it never
|
|
58
75
|
grades the work itself.
|
|
59
76
|
- **Understand the code first.** Onboard a repo and studio builds its graph — then blast-radius
|
|
60
|
-
for any symbol, hotspots,
|
|
77
|
+
for any symbol, hotspots, a searchable map of what calls what, and the requirements view. Ask
|
|
78
|
+
**Understand** a question and it runs a read-only analysis over the repositories you choose, with
|
|
79
|
+
a cited answer.
|
|
61
80
|
|
|
62
81
|
## What you can do
|
|
63
82
|
|
|
64
83
|
- **Run governed agents on your repos** — register a local path or clone a URL; studio builds the
|
|
65
84
|
code graph, then you launch runs (ask / balanced / autonomous), pick which agent seats join, and
|
|
66
|
-
bind a repo with optional PR delivery.
|
|
85
|
+
bind a repo with optional PR delivery. On a crew with **power mode**, it is on by default when you
|
|
86
|
+
launch a preset or a composed plan on a repository, unless Settings says otherwise (a switch on
|
|
87
|
+
New job and beside the job's name); a chat's own run and a phase-based workflow run phased. The
|
|
88
|
+
code-writing build step then runs as one orchestrator's checkpointed turns (other required steps
|
|
89
|
+
can run separately): the job page shows its rigor (with ↑ when it rose since intake), its
|
|
90
|
+
checkpoints, and, when the change grows past its plan, a pause that offers to split it into lanes,
|
|
91
|
+
switch to phased, continue at high rigor or stop.
|
|
67
92
|
- **Steer runs live** — the Desk (the one shell) puts what needs you first; every run or chat
|
|
68
|
-
opens as a **session** (`/s/:id`): one thread with the live record, gate
|
|
69
|
-
|
|
70
|
-
|
|
93
|
+
opens as a **session** (`/s/:id`): one thread with the live record, gate cards you answer in place,
|
|
94
|
+
elicitation prompts, pre-gate guidance notes, and lifecycle controls (cancel, inject a message,
|
|
95
|
+
retry). While a step works, the thread lists what it is doing (tool calls, edits, the seat's
|
|
96
|
+
meter) and folds to one summary line when it ends; every message shows when it was said, when that
|
|
97
|
+
was recorded. A step that runs long offers **Check on it?**: an eligible seat that is not the
|
|
98
|
+
step's own reads its record and recommends letting it run, steering or stopping; when none can
|
|
99
|
+
run or finish, crew gives its own reading, labelled as such. Neither acts on any of it. The job's Details panel
|
|
100
|
+
holds a **Phase report** (a plugin section; one per phase in a power build, one for the whole job
|
|
101
|
+
otherwise), and the thread keeps one slim row per update with "Show in Details". The pre-session addresses (`/runs/:id`, `/work`, `/p/:id/…`,
|
|
71
102
|
`/chat/…`) were retired and show the not-found page.
|
|
72
103
|
- **See the evidence** — per-step transcripts, a worktree file + diff viewer, and one-click
|
|
73
104
|
evidence-bundle download for any run.
|
|
74
105
|
- **Explore your codebase** — graph view with focus navigation, blast radius, hotspots, and the
|
|
75
|
-
domain graph
|
|
76
|
-
- **
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
106
|
+
domain graph.
|
|
107
|
+
- **See how much of the code is mapped to requirements** — Repositories → a repo → Requirements
|
|
108
|
+
heads the list with "80% real requirements · minimum 80%" and its parts (real, placeholders,
|
|
109
|
+
unmapped, not product code). A placeholder is never counted toward the share and never shows as
|
|
110
|
+
validated; a real one with corroboration data carries **validated** (with its count of
|
|
111
|
+
independent sources) or **unconfirmed** with why (rows from an older build, or outside the
|
|
112
|
+
count, may carry no verdict). A row the share does not count (a type shape, code that is not
|
|
113
|
+
product code, or a file the code index skipped) carries a **not counted** mark with why, and a line
|
|
114
|
+
under the coverage says how many stated rules and placeholders sit on type shapes. The Config &
|
|
115
|
+
data filter is hidden when crew reports no config and data rows. When the list is an older graph build than the header's numbers, it says
|
|
116
|
+
so. A repo with no requirements graph yet offers **Generate it** (or **Keep mapping** once some real
|
|
117
|
+
requirements are mapped), which opens New job filled in with the generating workflow; while a mapping job
|
|
118
|
+
runs, the view shows its progress with **Open the job** instead. The minimum is a setting (Settings → General → Code graph,
|
|
119
|
+
default 80%).
|
|
120
|
+
- **Plan the product** — a project's page has a Requirements section (its count across the
|
|
121
|
+
project's repositories) and a full list at `/projects/:id/requirements`, grouped by repo and
|
|
122
|
+
searchable. Choose up to 40 requirements and **Draft epics** opens New job on the Draft epics
|
|
123
|
+
workflow with them. The old Product address (`/product?project=<id>`) opens that project's page
|
|
124
|
+
at its Requirements section. Publishing the drafted epics is not offered yet.
|
|
83
125
|
- **Ask several seats at once** — a chat can hold more than one warm CLI seat; each answers in the
|
|
84
126
|
thread, and the daemon checks every path, `path:line` and commit a reply cites against the repo.
|
|
85
|
-
- **Govern the work** — author steering rules and policies
|
|
86
|
-
|
|
127
|
+
- **Govern the work** — author steering rules and policies (or import a markdown rule doc; a
|
|
128
|
+
refused entry shows crew's reason), browse the decisions ledger, and review what the platform has
|
|
129
|
+
learned about your repos. **Evaluate** runs your rules against example behaviours: it recommends
|
|
130
|
+
what to run and why, takes your own behaviours (a file, a pasted transcript, or past jobs' steps),
|
|
131
|
+
and lists every past run with what it caught, what slipped through and its false alarms, plus
|
|
132
|
+
**Analyze this run**.
|
|
133
|
+
- **Chat with any page** — the icon beside the title of Report, Nerve Center, Evaluate, Steering,
|
|
134
|
+
Memory, Learn, Agents, Repositories and Jobs opens that page's own chat, drawn in the page with the
|
|
135
|
+
page's data; on Understand, the question box is the chat. Click a number or chart on Report to ask about it.
|
|
136
|
+
- **Talk to it** — when crew has voice, a mic sits beside Send in every composer (and beside Start on
|
|
137
|
+
Home); ⌥V opens voice mode from anywhere. Speech is transcribed by crew on your machine
|
|
138
|
+
(whisper.cpp; the model downloads only when you say so). Ask questions, say "show me this job" for
|
|
139
|
+
a live tile, or "tell it to …" to steer, stop, raise rigor or answer its decision; every action is
|
|
140
|
+
confirmed on screen before it is sent, and the thread marks it "You (by voice)". The voice
|
|
141
|
+
dashboard's widgets can be removed, added and made from any system number.
|
|
87
142
|
- **Work in projects** — group repos, runs, chats, and docs; "See everything" (`/everything`) lists
|
|
88
|
-
them, filterable by project, and a project's
|
|
89
|
-
|
|
90
|
-
|
|
143
|
+
them, filterable by project, and a project's page is `/projects/:id`; deep-linkable routes
|
|
144
|
+
throughout.
|
|
145
|
+
- **Make it yours** — three themes (Wicked Light, Wicked Dark, and **Ambient**, a quiet
|
|
146
|
+
mood on your chosen ground that follows the work: a tint while jobs run, warm when something needs
|
|
147
|
+
you, red when something failed). Text is set in Wicked Sans; the plugins page shows every plugin
|
|
148
|
+
as a card (job-detail sections and editors) with what it may do.
|
|
91
149
|
- **Plus** governed terminals, a Cmd+K command palette, document & video creation modes, and
|
|
92
150
|
desktop notifications when a run needs you.
|
|
93
151
|
|
|
@@ -157,7 +215,7 @@ npm run dev # vite on http://127.0.0.1:4200, pointed at :7701
|
|
|
157
215
|
```
|
|
158
216
|
|
|
159
217
|
`npm test` (vitest + testing-library), `npm run typecheck`, `npm run lint`, `npm run build`
|
|
160
|
-
(tsc + vite → `dist/`). CI runs all four on ubuntu
|
|
218
|
+
(tsc + vite → `dist/`). CI runs all four on ubuntu for every PR, and the e2e journeys in two shards.
|
|
161
219
|
|
|
162
220
|
### Standalone build
|
|
163
221
|
|
|
@@ -174,15 +232,17 @@ uses `VITE_API_HOST` (host:port, no scheme) fixed at build time. The daemon's lo
|
|
|
174
232
|
any `localhost` / `127.0.0.1` origin, so a standalone studio drives a local daemon out of the box.
|
|
175
233
|
`e2e/studio_standalone_test.py` is the scripted proof of this mode.
|
|
176
234
|
|
|
177
|
-
###
|
|
235
|
+
### Plugins
|
|
178
236
|
|
|
179
237
|
Artifact editors are plugins: one self-contained HTML file per editor, run in a sandboxed frame with no network
|
|
180
|
-
and talking to studio's plugin host over one MessagePort (`wicked.editor
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
238
|
+
and talking to studio's plugin host over one MessagePort (the `wicked.editor` envelope, protocols 1 to 3,
|
|
239
|
+
`src/editors/`). A **run plugin** uses the same sandbox on protocol 3: the host sends it the job's events on the
|
|
240
|
+
topics it was granted (`events.batch`), and it draws a section of the job's Details panel; the built-in Phase
|
|
241
|
+
report is one. The **Plugins** page (`/plugins`, under Build & settings) shows every plugin as a card with what
|
|
242
|
+
it hears and may do, and links to the **editor test page** (`/editors/dev`), which opens an editor in the real
|
|
243
|
+
host over a sample page. **Create a plugin** opens New job on the `editor-plugin` workflow. That workflow
|
|
244
|
+
scaffolds the editor with the `wicked-garden-editor-scaffold` skill, runs its conformance cases, and installs it
|
|
245
|
+
after a consent gate. It also opens a pull request. `/editors/conformance` is the conformance host that `e2e/editor_conformance_test.py` drives
|
|
186
246
|
in CI; it has no nav or ⌘K entry.
|
|
187
247
|
|
|
188
248
|
### How crew ships this UI
|
|
@@ -201,7 +261,7 @@ The repo also carries a `data-testid` selector contract (`testid-inventory.json`
|
|
|
201
261
|
1. Fork and branch.
|
|
202
262
|
2. `npm install && npm run dev` — SPA on `:4200`, daemon on `:7701`.
|
|
203
263
|
3. `npm test && npm run typecheck && npm run lint` before committing.
|
|
204
|
-
4. Open a PR; CI runs
|
|
264
|
+
4. Open a PR; CI runs the four gates and the e2e journeys.
|
|
205
265
|
|
|
206
266
|
Keep the wire-contract boundary intact: all crew interaction goes through `/api/v1` and `/ws`, never
|
|
207
267
|
a crew-source import — if a type is missing, it lands in `wicked-crew-api-types` first.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|