wicked-garden 12.53.3 → 12.55.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +34 -1
- package/install.mjs +2 -1
- package/package.json +1 -1
- package/packs/README.md +29 -0
- package/packs/garden-mcp-inspector/README.md +35 -0
- package/packs/garden-mcp-inspector/editors/garden-mcp-inspector/index.html +663 -0
- package/packs/garden-mcp-inspector/wicked-pack.json +81 -0
- package/schemas/wicked-pack.schema.json +99 -1
- package/scripts/demo/package-lock.json +7 -7
- package/scripts/demo/palette.mjs +39 -0
- package/scripts/demo/record.mjs +8 -3
- package/scripts/demo/stage.mjs +32 -27
- package/scripts/demo/walkthrough.mjs +6 -1
- package/scripts/editor/_pack.py +7 -0
- package/scripts/editor/_surfaces.py +323 -0
- package/scripts/editor/conformance.py +458 -25
- package/scripts/editor/install.py +93 -12
- package/scripts/editor/scaffold.py +56 -9
- package/scripts/pack/check.py +12 -1
- package/skills/archetype/refs/build.md +9 -3
- package/skills/archetype/refs/review.md +8 -1
- package/skills/demo/refs/stage-design.md +6 -3
- package/skills/demo/refs/storyline-api.md +9 -1
- package/skills/editor-scaffold/SKILL.md +60 -14
- package/skills/editor-scaffold/assets/pack/README.md +6 -3
- package/skills/editor-scaffold/assets/pack/editors/__EDITOR_ID__/index.html +142 -27
- package/skills/editor-scaffold/refs/mcp-server.md +88 -0
- package/skills/editor-scaffold/refs/surfaces.md +69 -0
- package/skills/engineering/SKILL.md +9 -3
- package/skills/engineering/refs/plan.md +7 -0
- package/skills/engineering/refs/review.md +18 -0
- package/skills/governed-worker/SKILL.md +25 -3
- package/skills/mcp-scaffold/SKILL.md +7 -0
- package/skills/qe/SKILL.md +3 -2
- package/skills/qe/refs/accept.md +109 -42
- package/skills/qe/refs/campaign-grading.md +9 -13
- package/skills/qe/refs/review.md +7 -6
- package/skills/qe-acceptance-test-executor/SKILL.md +4 -0
- package/skills/qe-acceptance-test-reviewer/SKILL.md +11 -6
- package/skills/qe-acceptance-test-writer/SKILL.md +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "wicked-garden", "owner": {"name": "Mike Parcewski"}, "plugins": [{"name": "wicked-garden", "source": "./", "description": "Your coding agent already plans and swarms \u2014 Wicked Garden is the curated toolkit for what it can't: proof-not-claims gates, code links grep can't see, deterministic refactor, cross-session memory, multi-model second opinions (fallback seats labelled). Don't fight the harness; fill its gaps. The gate needs wicked-vault (a self-contained infra peer, installed directly) and re-derives through garden's built-in engine; estate/bus are opt-in layers (wicked-testing and wicked-brain are retired \u2014 QE ships in-catalog as the qe domain, memory lives in wicked-estate).", "version": "12.
|
|
1
|
+
{"name": "wicked-garden", "owner": {"name": "Mike Parcewski"}, "plugins": [{"name": "wicked-garden", "source": "./", "description": "Your coding agent already plans and swarms \u2014 Wicked Garden is the curated toolkit for what it can't: proof-not-claims gates, code links grep can't see, deterministic refactor, cross-session memory, multi-model second opinions (fallback seats labelled). Don't fight the harness; fill its gaps. The gate needs wicked-vault (a self-contained infra peer, installed directly) and re-derives through garden's built-in engine; estate/bus are opt-in layers (wicked-testing and wicked-brain are retired \u2014 QE ships in-catalog as the qe domain, memory lives in wicked-estate).", "version": "12.55.0"}], "version": "12.55.0"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wicked-garden",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.55.0",
|
|
4
4
|
"description": "Your coding agent's harness already plans and swarms; Wicked Garden is the curated toolkit for what it can't do alone. Proof, not claims \u2014 gates re-derive 'done' through the internal loom engine (fail-closed, independently attested via wicked-vault), so a self-asserted pass can't lie its way green. Relationships grep can't see \u2014 the wicked-estate code graph + injected bus/dispatch/capability/archetype edges power blast-radius & lineage. Plus deterministic multi-file refactor (wicked-patch), cross-session memory + knowledge (the mem domain over wicked-estate), multi-model second opinions (fallback seats labelled) (jam:council), portable expertise as on-demand skill-refs, and evidence-gated testing (the in-catalog qe domain). It reads the shape of your work to apply the right rigor \u2014 steering, not a pipeline \u2014 then gets out of the way. The compiler stamps a self-contained evidence gate into any repo that runs with no wicked-garden installed. Don't fight the harness; fill its gaps. The evidence gate requires wicked-vault, a self-contained infra peer wicked-garden installs directly; wicked-bus is an opt-in layer \u2014 install what you'll use, the toolkit works without the rest.",
|
|
5
5
|
"wicked_vault_version": "^0.5.0",
|
|
6
6
|
"wicked_ledger_version": "^0.6.0",
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [12.55.0] — 2026-10-14
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **The editor-plugin builder speaks wicked.editor/2 (PR #1303, DES-EDITOR-PLUGIN-CONTRACT-001).** A protocol-2 editor declares its surfaces: the card in the run's thread, options tabs in the host panel (plugin-rendered, or host-drawn controls), and full screen with Simple/Advanced. The host renders all three from that declaration. The pack schema and `pack check` (new code PK069) require `surfaces` when `protocol` lists 2 and refuse it otherwise, using the same rules as studio's host. `scaffold.py` writes a protocol-[1,2] plugin with all three surfaces (`--surfaces <file>` for your own declaration), and the template implements every part of it while still speaking protocol 1 to an older host. Conformance adds cases 13-16 (surfaces, card, options, full screen) and 17 (a protocol-1 plugin under a protocol-2 host). Cases 13-16 need a studio whose conformance page reads `surface`, `tab` and `mode` and reports options values. On a conformance host that speaks protocol 1 only, cases 13-16 are not run and are reported as a gap, so the 12-case base suite can pass. That report does not certify protocol 2, and crew still requires 13-16 to install a protocol-2 editor. New editor permission: `artifact.theme`.
|
|
9
|
+
- **The MCP inspector ships as an editor plugin pack: `packs/garden-mcp-inspector` (PR #1307, DES-EDITOR-PLUGIN-CONTRACT-001 slice 5).** The editor-plugin scaffold made it (kind `mcp-server`, protocol [1,2], sizes inline/pane/full, permissions `artifact.read`, `mcp.session`, `ui.fullscreen`). The card holds the tools, the argument form, Call and the result. The options tabs are Resources, Prompts and the JSON-RPC Log. Full screen shows the whole inspector, and Advanced adds the last call's raw exchange. It follows list pages, shows a list the server refuses as its error, and starts the log over on Restart. Arguments come from the tool's schema, with a JSON box for anything the fields can't express. A tool call is sent only from a click on Call. Install it with `install.py --dir "$(wicked-garden path packs/garden-mcp-inspector)"`. A test re-runs the scaffold and holds the pack to its output.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- **Editor conformance tolerates a slow host and checks the options mount (PR #1307).** Each page load and each read proxied to the daemon may take `--timeout` seconds (else `$WG_EDITOR_CONFORMANCE_TIMEOUT`, default 120; it was Playwright's 30 s). No load waits for "network idle", which never comes while studio holds its live socket. The host page's own files are fetched once per run. Case 15 now reads the `host.hello` the editor's frame received: each plugin tab must be mounted as an options instance told that tab, and `host.tab` must switch it to the other tabs and back without a reload. Case 14 checks the card is told `surface: card`. Before, a host page that ignored `tab` passed case 15.
|
|
13
|
+
- **Demo videos follow the studio skin by default (PR #1304).** The recorder's stage, title and chapter cards, captions, progress and callouts take their colours and typeface from the operator's studio Theme. It reads them from wicked-crew's `GET /api/v1/appearance/video-palette` (`$WICKED_CREW_URL`), replacing the fixed grey palette and its red accent (`#ee0000`). A storyline's `brand.accent` still overrides the accent. With no daemon, the stage uses a neutral grey-and-slate look.
|
|
14
|
+
- **deps:** Playwright 1.64.1 (PR #1305) and motion 14.2.0 (PR #1302).
|
|
15
|
+
|
|
16
|
+
## [12.54.0] — 2026-10-12
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **QE acceptance needs an isolated reviewer; a seat without one records FAIL (PR #1296, #1290).** `qe accept` runs the writer, executor and reviewer as separate workers (a fresh context per step, whose reply returns to the pipeline), so a claude QE seat no longer ends its turn on the writer's test plan. The reviewer is never run inline. **QE seat change:** with wicked-core-ts 0.9.9 or later (wicked-core#917), QE acceptance works on every seat: the engine runs the reviewer as its own isolated reviewer turn, and when no reviewer is possible the operator's approve at the `qe_reviewer_unavailable` gate is the judgment, labelled "judged by operator". On an older engine (core-ts 0.9.8 or earlier) a seat that cannot run an isolated sub-agent (for example pi or codex) records FAIL `inconclusive — no isolated reviewer`: it fails closed, never a false PASS.
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- **Engine-run reviewer phases for accept (PR #1299).** `accept --phase evidence` and `accept --phase review --evidence <dir>`: inside a governed run the engine can run the isolated reviewer as its own fresh session on any seat; the verdict carries `review_session`. `--phase all` (direct use) is unchanged. Takes effect once a wicked-core release with the engine side ships.
|
|
23
|
+
- **`mcp.session` editor permission (PR #1298).** Granted per editor build by its install consent, with no global allow; the install plan lists the grant; a consent choice is bound to the plan it showed; the editor-scaffold skill documents the `mcp-server` kind (`refs/mcp-server.md`). Needs wicked-core-ts 0.9.8+ and a wicked-crew release that accepts `mcp.session`; older crews refuse it (fail closed).
|
|
24
|
+
- **Check the chosen stack's built-ins first (PR #1297, POL-2101).** Governed workers, engineering plan/review, archetype build/review and mcp-scaffold check what the chosen stack already provides before writing code, record the check, and justify duplicates; reviewers flag every duplicate of a built-in.
|
|
25
|
+
|
|
5
26
|
## [12.53.3] — 2026-10-11
|
|
6
27
|
|
|
7
28
|
### Reverted
|
|
@@ -1108,7 +1129,19 @@ through `v9.2.18`. Major themes across that span:
|
|
|
1108
1129
|
|
|
1109
1130
|
For each of those releases, see the corresponding tag in git history.
|
|
1110
1131
|
|
|
1111
|
-
[Unreleased]: https://github.com/mikeparcewski/wicked-garden/compare/v12.
|
|
1132
|
+
[Unreleased]: https://github.com/mikeparcewski/wicked-garden/compare/v12.55.0...HEAD
|
|
1133
|
+
[12.55.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.54.0...v12.55.0
|
|
1134
|
+
[12.54.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.53.3...v12.54.0
|
|
1135
|
+
[12.53.3]: https://github.com/mikeparcewski/wicked-garden/compare/v12.53.2...v12.53.3
|
|
1136
|
+
[12.53.2]: https://github.com/mikeparcewski/wicked-garden/compare/v12.53.1...v12.53.2
|
|
1137
|
+
[12.53.1]: https://github.com/mikeparcewski/wicked-garden/compare/v12.53.0...v12.53.1
|
|
1138
|
+
[12.53.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.52.1...v12.53.0
|
|
1139
|
+
[12.52.1]: https://github.com/mikeparcewski/wicked-garden/compare/v12.52.0...v12.52.1
|
|
1140
|
+
[12.52.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.51.1...v12.52.0
|
|
1141
|
+
[12.51.1]: https://github.com/mikeparcewski/wicked-garden/compare/v12.51.0...v12.51.1
|
|
1142
|
+
[12.51.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.50.0...v12.51.0
|
|
1143
|
+
[12.50.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.49.0...v12.50.0
|
|
1144
|
+
[12.49.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.48.0...v12.49.0
|
|
1112
1145
|
[12.48.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.47.0...v12.48.0
|
|
1113
1146
|
[12.47.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.46.0...v12.47.0
|
|
1114
1147
|
[12.46.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.45.0...v12.46.0
|
package/install.mjs
CHANGED
|
@@ -61,7 +61,8 @@ import { execSync, spawnSync } from "node:child_process";
|
|
|
61
61
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
62
62
|
const pkg = JSON.parse(readFileSync(join(__dirname, "package.json"), "utf8"));
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
// packs/ = the editor plugin packs garden ships (`wicked-garden path packs/<name>` resolves inside the copy).
|
|
65
|
+
const PLUGIN_DIRS = [".claude-plugin", "hooks", "scripts", "skills", "schemas", "packs"];
|
|
65
66
|
// uv.lock rides along so the copy's `uv sync` (and the launcher's `uv run --frozen`) resolve
|
|
66
67
|
// the same pins the release was tested with.
|
|
67
68
|
const PLUGIN_FILES = ["ETHOS.md", "CHANGELOG.md", "README.md", "WICKED_GARDEN_BUS_EVENTS.md", "pyproject.toml", "uv.lock"];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wicked-garden",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.55.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Curated toolkit for what AI coding agents can't do alone: evidence-gated work, codegraph relationships, deterministic multi-file refactor, multi-model second opinions, and cross-session memory. Installs as a Claude Code plugin.",
|
|
6
6
|
"keywords": [
|
package/packs/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Editor plugin packs that ship with wicked-garden
|
|
2
|
+
|
|
3
|
+
Each directory is a `wicked-pack.json` spec-2 pack built with the editor-plugin builder
|
|
4
|
+
(the `wicked-garden-editor-scaffold` skill), the same way the `editor-plugin` workflow builds any plugin.
|
|
5
|
+
None of them uses the reserved `wicked` vendor: that prefix belongs to the editors bundled inside studio.
|
|
6
|
+
|
|
7
|
+
| Pack | Opens | What it is |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `garden-mcp-inspector` | `mcp-server` | The MCP inspector: list a server's tools, resources and prompts, call them, and read the JSON-RPC log. The host connects the server and draws Connect, Restart and the call line. |
|
|
10
|
+
|
|
11
|
+
## How it was made
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
wicked-garden run scripts/editor/scaffold.py --vendor garden --id garden-mcp-inspector --title "MCP inspector" \
|
|
15
|
+
--kinds mcp-server --permissions artifact.read,mcp.session,ui.fullscreen --surfaces <its surfaces JSON> \
|
|
16
|
+
--out packs/garden-mcp-inspector
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Then the inspector went into the entry's YOUR EDITOR part, and `pin.py` re-pinned the hash. `tests/editor/test_garden_packs.py`
|
|
20
|
+
re-runs that scaffold with the pack's own declaration and requires everything but the entry's hash to match.
|
|
21
|
+
|
|
22
|
+
## Install one
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
wicked-garden run scripts/editor/install.py --dir "$(wicked-garden path packs/garden-mcp-inspector)" --crew-url <the daemon URL>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The daemon re-runs `pack check` and the conformance cases before it lists the editor. Installing grants
|
|
29
|
+
`mcp.session` for this build only, and studio's MCP inspector page then opens it.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# MCP inspector
|
|
2
|
+
|
|
3
|
+
An artifact editor plugin for wicked-studio (`garden-mcp-inspector` 0.1.0), packaged as a
|
|
4
|
+
`wicked-pack.json` spec-2 pack. It opens: mcp-server.
|
|
5
|
+
|
|
6
|
+
- `wicked-pack.json` declares the editor: its id, the artifact kinds it opens, its sizes, every
|
|
7
|
+
permission it asks for and why, and the sha256 of its one entry file.
|
|
8
|
+
- `editors/garden-mcp-inspector/index.html` is the whole editor: one self-contained HTML file speaking the
|
|
9
|
+
`wicked.editor/2` protocol (and /1 to an older host) to studio's plugin host over a MessagePort. It
|
|
10
|
+
runs in sandboxed frames with no network: the card in the run's thread, the options tabs in the host
|
|
11
|
+
panel and full screen, all drawn from the `surfaces` its manifest declares.
|
|
12
|
+
|
|
13
|
+
## Check it
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
wicked-garden run scripts/editor/pin.py . # re-pin the entry's sha256 after an edit
|
|
17
|
+
npx wicked-garden pack check . # the manifest and the entry
|
|
18
|
+
wicked-garden run scripts/editor/conformance.py --pack . --host-url <a wicked-crew daemon URL> --json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The conformance run drives studio's conformance host page in headless Chromium against this
|
|
22
|
+
editor: handshake, sizes, no network, permissions, typing never acts, key forwarding, strict
|
|
23
|
+
input, liveness, keyboard reach, theme, the pinned hash, and the three surfaces (the card, each
|
|
24
|
+
options tab, full screen and its modes). On a slow host, give it longer to load the page with
|
|
25
|
+
`--timeout <seconds>` (default 120).
|
|
26
|
+
|
|
27
|
+
## Install it
|
|
28
|
+
|
|
29
|
+
Through the `editor-plugin` workflow's install step, or by hand:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
wicked-garden run scripts/editor/install.py --dir . --crew-url <the daemon URL>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
It then shows in studio under Settings → Developer → Editor plugins, and opens in the editor dev host.
|