@adia-ai/mcp 0.8.37 → 0.8.39
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/CHANGELOG.md +44 -27
- package/README.md +94 -29
- package/TOOLS.md +178 -16
- package/bin/adia-mcp +17 -8
- package/factory/public-surface.json +20 -0
- package/factory/resources/data-wiring.md +108 -0
- package/factory/resources/pattern-index.md +786 -0
- package/factory/resources/shell-selection.md +86 -0
- package/factory/resources/token-pairing-laws.md +68 -0
- package/factory/server.d.ts +12 -0
- package/factory/server.js +72 -0
- package/factory/tools/factory.js +277 -0
- package/factory/vendor/MANIFEST.json +29 -0
- package/factory/vendor/adia-contract-check.mjs +432 -0
- package/factory/vendor/adia-info +312 -0
- package/factory/vendor/adia-lint +396 -0
- package/factory/vendor/adia-probe.mjs +413 -0
- package/factory/vendor/adia-scaffold +801 -0
- package/factory/vendor/record-lint +278 -0
- package/gen-ui/server.d.ts +1 -1
- package/gen-ui/tools/corpus.js +1 -1
- package/gen-ui/tools/discovery.js +82 -0
- package/gen-ui/tools/feedback.js +1 -1
- package/package.json +13 -3
- package/protocol/server.d.ts +3 -2
- package/protocol/server.js +1 -1
- package/protocol/tools/protocol.js +123 -0
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,23 @@
|
|
|
9
9
|
> entire changelog was still `[Unreleased]` at fold time (minted at ADR-0048 P4,
|
|
10
10
|
> never released under its own name) and is merged into the section below.
|
|
11
11
|
|
|
12
|
+
## [0.8.39] — 2026-08-15
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- **`get_catalog_ladder` on the `protocol` server (ADR-0050, gh#1291 phase 3) — 4 → 5 tools there (all-server total 43: gen-ui 31 · protocol 5 · factory 7).** ADR-0050's serving map gives the protocol server L0+L1; phase 1 held it at four tools because an L0-only enumerate tool duplicates `get_registry_map`. With L1 populated (44 curated widgets) the tool earns its place: an L1 entry carries its A2UI `template`, so a chat agent can enumerate a widget and emit it with no generation system and no corpus. No arguments returns the ladder summary — all five rungs with unit/composesTier/status/count plus a `servedHere` flag and the serving map in prose, so a client learns where L2–L4 live; `tier` (a two-value enum, `L0`|`L1`, so an unserved rung is refused at the schema rather than answered emptily) lists that rung's entry names; `tier` + `name` returns one entry's full record. **Isolation is unchanged by construction** — the tier index is data inside the zero-dependency `@adia-ai/a2ui` (`./catalog/tiers`), so the P4 module-graph walk still proves zero reach into `@adia-ai/gen-ui`/`@adia-ai/llm`/`@adia-ai/agent`. Zero tool-name overlap across the three servers (the factory smoke's ADR-0051 §4 assertion). **Purely additive** — no existing tool's input or output shape changed, so no versioning event; `protocol_status` deliberately did not grow catalog counters, which would have been an output-contract change for cosmetic value. gen-ui's `get_catalog_tiers` (all five rungs, for retrieval) is unchanged.
|
|
16
|
+
|
|
17
|
+
### Maintenance
|
|
18
|
+
- **`bin/` touched in this release window** (1 file(s), e.g. `bin/adia-mcp`) — carried by the entries above.
|
|
19
|
+
|
|
20
|
+
## [0.8.38] — 2026-08-15
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- **Third server: `adia-mcp factory` (ADR-0051, gh#1241).** The adia-factory MCP server — the developer toolbox for building adia-ui apps from any MCP-speaking harness — joins `gen-ui` and `protocol` as the third subcommand of the one bin, per gh#1240's one-package ruling. MCP config key: `adia-factory` (reserved). Seven tools over stdio, each wrapping an existing gated factory-plugin script (ADR-0051 §2 — no new business logic): `orient_app` (adia-info + record-lint), `scaffold_app`/`scaffold_page`/`scaffold_component` (adia-scaffold), `audit_structure` (adia-lint / adia-contract-check / record-lint / adia-scaffold inventory), `verify_surface` (adia-probe; Playwright lazy-loads from the target project per §6 — never a dependency of this package), and `factory_status`. Four doctrine resources (`adia://factory/{shell-selection,data-wiring,token-pairing-laws,pattern-index}`) are GENERATED from the plugin's skill files at build time (§3, `npm run build:factory-mcp-assets`); the wrapped scripts are vendored verbatim into `factory/vendor/` with a sha256 manifest, same single-source rule. New smoke gate `mcp:factory:smoke` (rides `npm run check` and the publish workflow) proves: asset freshness, the 7-tool/4-resource surface with live round-trips, every wrapped script's own selftest, zero tool-name overlap across all three servers (§4), tool/resource parity against `factory/public-surface.json` (the `adia-factory-public` reconciliation target — the assertion ADR-0051 deferred to this build), and the entrypoint-boundary isolation walk (§5: `factory/server.js`'s runtime module graph reaches no `@adia-ai/gen-ui`, no `@adia-ai/llm`, no `@adia-ai/agent`). `exports` gains `./factory/server.js`; TOOLS.md gains the third generated section.
|
|
24
|
+
- **`get_catalog_tiers` on the `gen-ui` server (ADR-0050, gh#1243) — 30 → 31 tools on that server (all-server total 42: gen-ui 31 · protocol 4 · factory 7).** Enumerates the catalog's L0–L4 ladder from `@adia-ai/a2ui/catalog/tiers`: the summary by default (per rung: entry unit, the rung it composes, populated/reserved, count), one tier's entry names with `tier`, one entry's full record with `tier` + `name`. `composes` is the ladder edge a client follows to expand an entry into the rung below. ADR-0050's serving map puts retrieval across ALL tiers on this server; the protocol server keeps its four tools until L1 is curated (that is the tier a chat agent enumerates, and an L0-only tool there would duplicate `get_registry_map`). **Purely additive** — no existing tool's input or output shape changed.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- **Package directory moved `packages/mcp` → `packages/gen-ui/mcp` (ADR-0049, gh#1244).** Directory move only — the npm name, exports, and API are unchanged.
|
|
28
|
+
|
|
12
29
|
## [0.8.37] — 2026-08-14
|
|
13
30
|
|
|
14
31
|
### Added
|
|
@@ -896,7 +913,7 @@ Companion to `@adia-ai/a2ui-compose@[Unreleased]` §87 zettel `ensureBooted()` r
|
|
|
896
913
|
- **`mcp/scripts/smoke-engine-registry.mjs`** — retrieval-quality probes updated to match the post-§72 + §88 retrieval surface (composition-match strategy on canonical intents).
|
|
897
914
|
- **`mcp/scripts/smoke-register-engine.mjs`** — engine-registry coverage adjusted; still 11/11.
|
|
898
915
|
|
|
899
|
-
See root [CHANGELOG.md `[Unreleased]`](
|
|
916
|
+
See root [CHANGELOG.md `[Unreleased]`](../../../CHANGELOG.md) for the cross-cutting arc.
|
|
900
917
|
## [0.4.7] - 2026-05-12
|
|
901
918
|
|
|
902
919
|
### Changed — smoke + test scripts aligned to post-§72 retrieval surface
|
|
@@ -912,14 +929,14 @@ Companion to `@adia-ai/a2ui-compose@[Unreleased]` + `@adia-ai/a2ui-retrieval@[Un
|
|
|
912
929
|
- **`mcp/scripts/eval-fix.mjs`** — retired the pattern-surface fix-up logic (no longer reachable; compositions are the canonical retrieval shape).
|
|
913
930
|
- **`mcp/scripts/test-a2ui.mjs`** — assertions updated to reflect the post-§64 tool inventory.
|
|
914
931
|
|
|
915
|
-
See root [CHANGELOG.md `[Unreleased]`](
|
|
932
|
+
See root [CHANGELOG.md `[Unreleased]`](../../../CHANGELOG.md) for the cross-cutting §64 arc narrative.
|
|
916
933
|
## [0.4.5] - 2026-05-12
|
|
917
934
|
|
|
918
935
|
### Ride-along (no source changes)
|
|
919
936
|
|
|
920
937
|
Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.5` (§61 CSS subpath exports + CustomEvent.detail sweep across 17 form-bearing primitives + slider reactivity test lock-in + §52 design-tokens export module + UI), `@adia-ai/web-modules@0.4.5` (§61 CSS subpath exports — six cluster `*.css` exports), `@adia-ai/a2ui-compose@0.4.5` (§56 system-prompt CORPUS CONTEXT block in monolithic strategies), `@adia-ai/llm@0.4.5` (§54 doc-comment path refresh). Source byte-identical to v0.4.4.
|
|
921
938
|
|
|
922
|
-
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.5]`](
|
|
939
|
+
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.5]`](../../../CHANGELOG.md) for the cut narrative.
|
|
923
940
|
## [0.4.4] - 2026-05-12
|
|
924
941
|
|
|
925
942
|
### Changed — fragment-retirement follow-through (§37, 2026-05-12)
|
|
@@ -928,14 +945,14 @@ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4
|
|
|
928
945
|
- **`mcp/scripts/smoke-zettel.mjs` — retired (37 lines).** Smoke depended on the removed fragment library; replaced functionally by `mcp/scripts/smoke-engine-registry.mjs` (engine path) and `scripts/test-chunks.mjs` (zettel composition path).
|
|
929
946
|
- **`mcp/scripts/test-chunks.mjs` — 1-line tweak.** Threshold adjustment for the post-§40 annotated-chunk world.
|
|
930
947
|
|
|
931
|
-
See root [CHANGELOG.md `[Unreleased]`](
|
|
948
|
+
See root [CHANGELOG.md `[Unreleased]`](../../../CHANGELOG.md) for the cross-cutting arc narrative.
|
|
932
949
|
## [0.4.3] - 2026-05-11
|
|
933
950
|
|
|
934
951
|
### Ride-along (no source changes)
|
|
935
952
|
|
|
936
953
|
Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.3` (input-ui type=number locale + thousands grouping + hold-to-repeat) + `@adia-ai/a2ui-compose@0.4.3` + `@adia-ai/a2ui-retrieval@0.4.3` (process.env browser-compat fix) + `@adia-ai/a2ui-corpus@0.4.3` (catalog regen + chunks re-harvest with new settings-appearance pattern). Source byte-identical to v0.4.2.
|
|
937
954
|
|
|
938
|
-
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.3]`](
|
|
955
|
+
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.3]`](../../../CHANGELOG.md) for the cut narrative.
|
|
939
956
|
## [0.4.2] - 2026-05-11
|
|
940
957
|
|
|
941
958
|
### Added
|
|
@@ -946,39 +963,39 @@ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4
|
|
|
946
963
|
|
|
947
964
|
Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.2` (`<input-ui type="number">` rewrite drops native `<input type=number>` wrapping) + `@adia-ai/web-modules@0.4.2` (`<editor-sidebar>` grid-track width-mirror fix + new `<theme-panel>` module). Apart from the script above, source byte-identical to v0.4.1.
|
|
948
965
|
|
|
949
|
-
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.2]`](
|
|
966
|
+
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.2]`](../../../CHANGELOG.md) for the cut narrative.
|
|
950
967
|
## [0.4.1] - 2026-05-10
|
|
951
968
|
|
|
952
969
|
### Ride-along (no source changes)
|
|
953
970
|
|
|
954
971
|
Lockstep PATCH cut alongside `@adia-ai/web-modules@0.4.1` (simple cluster) + `@adia-ai/a2ui-validator@0.4.1` (Phase 3 foundation) + `@adia-ai/a2ui-corpus@0.4.1` (fragment metrics reconciliation). Source byte-identical to v0.4.0.
|
|
955
972
|
|
|
956
|
-
Internal `@adia-ai/*` dep ranges bumped from `^0.4.0` to `^0.4.1`. See root [CHANGELOG.md `## [0.4.1]`](
|
|
973
|
+
Internal `@adia-ai/*` dep ranges bumped from `^0.4.0` to `^0.4.1`. See root [CHANGELOG.md `## [0.4.1]`](../../../CHANGELOG.md) for the cut narrative.
|
|
957
974
|
## [0.4.0] - 2026-05-10
|
|
958
975
|
|
|
959
976
|
### Ride-along (no source changes)
|
|
960
977
|
|
|
961
978
|
Lockstep MINOR cut alongside `@adia-ai/web-modules@0.4.0` (ADR-0024 legacy shell shapes retired). Source byte-identical to v0.3.6.
|
|
962
979
|
|
|
963
|
-
Internal `@adia-ai/*` dep ranges bumped from `^0.3.0` to `^0.4.0`. See root [CHANGELOG.md `## [0.4.0]`](
|
|
980
|
+
Internal `@adia-ai/*` dep ranges bumped from `^0.3.0` to `^0.4.0`. See root [CHANGELOG.md `## [0.4.0]`](../../../CHANGELOG.md) for the cut narrative.
|
|
964
981
|
## [0.3.6] - 2026-05-10
|
|
965
982
|
|
|
966
983
|
### Ride-along (no source changes)
|
|
967
984
|
|
|
968
|
-
Lockstep version bump only — source byte-identical to v0.3.5. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.6]`](
|
|
985
|
+
Lockstep version bump only — source byte-identical to v0.3.5. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.6]`](../../../CHANGELOG.md) for the cut narrative.
|
|
969
986
|
## [0.3.5] - 2026-05-07
|
|
970
987
|
|
|
971
988
|
### Ride-along (no source changes)
|
|
972
989
|
|
|
973
|
-
Lockstep version bump only — source byte-identical to v0.3.4. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.5]`](
|
|
990
|
+
Lockstep version bump only — source byte-identical to v0.3.4. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.5]`](../../../CHANGELOG.md) for the cut narrative.
|
|
974
991
|
## [0.3.4] - 2026-05-07
|
|
975
992
|
|
|
976
993
|
### Ride-along (no source changes)
|
|
977
994
|
|
|
978
|
-
Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.4]`](
|
|
995
|
+
Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.4]`](../../../CHANGELOG.md) for the cut narrative.
|
|
979
996
|
## [0.3.3] - 2026-05-07
|
|
980
997
|
|
|
981
|
-
**Lockstep cut.** All 9 published `@adia-ai/*` packages now share version `0.3.3`, governed by [`.claude/docs/specs/package-architecture.md` § 15](
|
|
998
|
+
**Lockstep cut.** All 9 published `@adia-ai/*` packages now share version `0.3.3`, governed by [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` ranges stay at `^0.3.0` (patch-cut asymmetry — caret floats `0.3.x`).
|
|
982
999
|
|
|
983
1000
|
### Added
|
|
984
1001
|
|
|
@@ -1016,7 +1033,7 @@ Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-
|
|
|
1016
1033
|
## [0.3.2] - 2026-05-06
|
|
1017
1034
|
|
|
1018
1035
|
**9-package lockstep patch cut to v0.3.2.** All lockstep members share
|
|
1019
|
-
one version per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1036
|
+
one version per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1020
1037
|
Internal `@adia-ai/*` dep ranges unchanged at `^0.3.0`.
|
|
1021
1038
|
|
|
1022
1039
|
### Added
|
|
@@ -1040,7 +1057,7 @@ Internal `@adia-ai/*` dep ranges unchanged at `^0.3.0`.
|
|
|
1040
1057
|
- `version`: `0.3.1` → `0.3.2`.
|
|
1041
1058
|
## [0.3.1] - 2026-05-06
|
|
1042
1059
|
|
|
1043
|
-
**9-package lockstep patch cut.** All 9 published `@adia-ai/*` packages bump 0.3.0 → 0.3.1 per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1060
|
+
**9-package lockstep patch cut.** All 9 published `@adia-ai/*` packages bump 0.3.0 → 0.3.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
|
|
1044
1061
|
|
|
1045
1062
|
This package itself ships **no source changes** in v0.3.1. The cut bumps version only — substantive content lives in [`@adia-ai/web-components`](https://github.com/adiahealth/gen-ui-kit/releases/tag/web-components-v0.3.1) (folder-per-trait restructure; barrel API unchanged).
|
|
1046
1063
|
|
|
@@ -1050,7 +1067,7 @@ This package itself ships **no source changes** in v0.3.1. The cut bumps version
|
|
|
1050
1067
|
- Internal `@adia-ai/*` dep ranges: unchanged at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
|
|
1051
1068
|
## [0.3.0] - 2026-05-05
|
|
1052
1069
|
|
|
1053
|
-
**9-package lockstep cut + new `@adia-ai/llm` dep.** All 9 published `@adia-ai/*` packages bump 0.2.5 → 0.3.0 per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1070
|
+
**9-package lockstep cut + new `@adia-ai/llm` dep.** All 9 published `@adia-ai/*` packages bump 0.2.5 → 0.3.0 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges bump `^0.2.0` → `^0.3.0`.
|
|
1054
1071
|
|
|
1055
1072
|
The MCP synthesis tool now resolves `createLLMAdapter` from `@adia-ai/llm` (9th lockstep package, first publish in this cut) rather than `@adia-ai/a2ui-compose/llm` (subpath dropped). Behavior unchanged.
|
|
1056
1073
|
|
|
@@ -1075,7 +1092,7 @@ If you depend on `@adia-ai/a2ui-mcp` directly (typically as a CLI via `npx adiau
|
|
|
1075
1092
|
`@adia-ai/llm` is a transitive dep — npm install handles it.
|
|
1076
1093
|
## [0.2.5] - 2026-05-04
|
|
1077
1094
|
|
|
1078
|
-
**8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.4 → 0.2.5 per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1095
|
+
**8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.4 → 0.2.5 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.5 under semver — patch-cut asymmetry).
|
|
1079
1096
|
|
|
1080
1097
|
This is a **patch cut on top of v0.2.4, no BREAKING changes.** Substantive content lives in `web-components` (new `<fields-ui>` form-grid primitive + `draggable-list-item` last-item drop-zone fix, both surfaced by the Tasks UI Playground at `.claude/docs/projects/tasks-playground/`); `a2ui-corpus` ships a catalog regen for the new `<fields-ui>` yaml. `a2ui-mcp` rides along at version bump only — no source change.
|
|
1081
1098
|
|
|
@@ -1085,7 +1102,7 @@ This is a **patch cut on top of v0.2.4, no BREAKING changes.** Substantive conte
|
|
|
1085
1102
|
- Internal `@adia-ai/*` dep ranges: unchanged at `^0.2.0` (covers `0.2.5` under semver — patch-cut asymmetry).
|
|
1086
1103
|
## [0.2.4] - 2026-05-04
|
|
1087
1104
|
|
|
1088
|
-
**8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.3 → 0.2.4 per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1105
|
+
**8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.3 → 0.2.4 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.4 under semver — patch-cut asymmetry).
|
|
1089
1106
|
|
|
1090
1107
|
This is a **patch cut on top of v0.2.3, no BREAKING changes.** Substantive content lives in `web-components` (Tier 4 trait library lift, 11 new traits + 2 architectural rewrites, plus accumulated bug fixes); `a2ui-corpus` ships a catalog regen for the new `<demo-toggle-ui>` primitive. Six packages ride along at version + dep-range bump.
|
|
1091
1108
|
|
|
@@ -1105,7 +1122,7 @@ _Nothing yet._
|
|
|
1105
1122
|
|
|
1106
1123
|
**Lockstep cut.** All 8 published `@adia-ai/*` packages bump
|
|
1107
1124
|
0.2.2 → 0.2.3 per
|
|
1108
|
-
[`.claude/docs/specs/package-architecture.md` § 15](
|
|
1125
|
+
[`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1109
1126
|
Patch cut — no breaking changes.
|
|
1110
1127
|
|
|
1111
1128
|
### Changed
|
|
@@ -1120,7 +1137,7 @@ Patch cut — no breaking changes.
|
|
|
1120
1137
|
`@adia-ai/a2ui-mcp` source is byte-identical to `0.2.2`. The cut bumps version + the internal dep range entries only.
|
|
1121
1138
|
## [0.2.2] - 2026-05-02
|
|
1122
1139
|
|
|
1123
|
-
**Lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.1 → 0.2.2 per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1140
|
+
**Lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.1 → 0.2.2 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
|
|
1124
1141
|
|
|
1125
1142
|
### Changed
|
|
1126
1143
|
|
|
@@ -1138,7 +1155,7 @@ Patch cut — no breaking changes.
|
|
|
1138
1155
|
---
|
|
1139
1156
|
## [0.2.1] - 2026-05-02
|
|
1140
1157
|
|
|
1141
|
-
**Lockstep cut + `report_issue` trigger phrases + scope-drift auto-fire on canvas-drift detection.** All 8 published `@adia-ai/*` packages bump 0.2.0 → 0.2.1 per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1158
|
+
**Lockstep cut + `report_issue` trigger phrases + scope-drift auto-fire on canvas-drift detection.** All 8 published `@adia-ai/*` packages bump 0.2.0 → 0.2.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
|
|
1142
1159
|
|
|
1143
1160
|
### Changed
|
|
1144
1161
|
|
|
@@ -1170,7 +1187,7 @@ When the composer's scope-drift gate (a2ui-compose) flags `result.scopeDrift.dri
|
|
|
1170
1187
|
|
|
1171
1188
|
**Lockstep cut + corpus caret-lock fix.** All 8 published `@adia-ai/*`
|
|
1172
1189
|
packages now share one version, governed by
|
|
1173
|
-
[`.claude/docs/specs/package-architecture.md` § 15 (Versioning Policy)](
|
|
1190
|
+
[`.claude/docs/specs/package-architecture.md` § 15 (Versioning Policy)](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1174
1191
|
|
|
1175
1192
|
This release **fixes a live shipping bug** in 0.1.3: the `dependencies`
|
|
1176
1193
|
range `"@adia-ai/a2ui-corpus": "^0.0.6"` locked to *exactly* `0.0.6`
|
|
@@ -1211,7 +1228,7 @@ BREAKING changes.
|
|
|
1211
1228
|
|
|
1212
1229
|
- **`compose_from_chunks` eval runner + hold-out set**. Closes the
|
|
1213
1230
|
spec at
|
|
1214
|
-
[`.claude/docs/specs/compose-from-chunks-eval.md`](
|
|
1231
|
+
[`.claude/docs/specs/compose-from-chunks-eval.md`](../../../.claude/docs/specs/compose-from-chunks-eval.md):
|
|
1215
1232
|
- `evals/compose-from-chunks-holdout.jsonl` — 20 intents (10
|
|
1216
1233
|
single-turn compose + 10 multi-turn refine) across 9
|
|
1217
1234
|
categories (data-display, forms, layout, data, data-viz,
|
|
@@ -1241,7 +1258,7 @@ BREAKING changes.
|
|
|
1241
1258
|
---
|
|
1242
1259
|
## [0.1.2] - 2026-05-01
|
|
1243
1260
|
|
|
1244
|
-
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](
|
|
1261
|
+
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](../../../.claude/docs/specs/semantic-validator.md)
|
|
1245
1262
|
**promoted to default**. When `--semantic` is set, `eval-diff.mjs`
|
|
1246
1263
|
now gates on the combined score at threshold 80 by default, instead
|
|
1247
1264
|
of running in Phase 1 shadow-mode. **Behavior change** — see § Opt
|
|
@@ -1297,7 +1314,7 @@ Pass rate drops from 83 → 79 (4 percentage points), all justified.
|
|
|
1297
1314
|
|
|
1298
1315
|
### Updated baseline thresholds
|
|
1299
1316
|
|
|
1300
|
-
Per [`.claude/docs/specs/semantic-validator.md`](
|
|
1317
|
+
Per [`.claude/docs/specs/semantic-validator.md`](../../../.claude/docs/specs/semantic-validator.md)
|
|
1301
1318
|
§ Phase 2 status (2026-05-01):
|
|
1302
1319
|
|
|
1303
1320
|
- `avgScore ≥ 88` (structural — unchanged)
|
|
@@ -1315,7 +1332,7 @@ Per [`.claude/docs/specs/semantic-validator.md`](../../.claude/docs/specs/semant
|
|
|
1315
1332
|
threshold revalidation passes
|
|
1316
1333
|
## [0.1.1] - 2026-05-01
|
|
1317
1334
|
|
|
1318
|
-
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](
|
|
1335
|
+
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](../../../.claude/docs/specs/semantic-validator.md)
|
|
1319
1336
|
— opt-in combined-gating in `eval-diff.mjs` + new
|
|
1320
1337
|
`semantic-stats.mjs` companion script. **No breaking changes.**
|
|
1321
1338
|
Default `eval-diff` behavior unchanged — Phase 1 shadow-mode is
|
|
@@ -1386,7 +1403,7 @@ MCP tools that turn the chunk-composition pipeline from single-shot into a
|
|
|
1386
1403
|
multi-turn surface, plus extends `compose_from_chunks` to mint a `state_id`
|
|
1387
1404
|
for refinement chains.
|
|
1388
1405
|
|
|
1389
|
-
Spec: [`.claude/docs/specs/genui-multiturn-architecture.md`](
|
|
1406
|
+
Spec: [`.claude/docs/specs/genui-multiturn-architecture.md`](../../../.claude/docs/specs/genui-multiturn-architecture.md) (Active v0.1.0).
|
|
1390
1407
|
Plan: `.claude/docs/plans/genui-multiturn-rollout-2026-04-28.md` (Phase A scoped).
|
|
1391
1408
|
ADR: `0008-multiturn-genui-architecture.md`.
|
|
1392
1409
|
|
|
@@ -1624,7 +1641,7 @@ before HTML is materialized.
|
|
|
1624
1641
|
|
|
1625
1642
|
### Convention reference
|
|
1626
1643
|
|
|
1627
|
-
- Spec: [`.claude/docs/specs/genui-chunk-marker.md`](
|
|
1644
|
+
- Spec: [`.claude/docs/specs/genui-chunk-marker.md`](../../../.claude/docs/specs/genui-chunk-marker.md).
|
|
1628
1645
|
- Plan: `.claude/docs/plans/training-pipeline-chunk-harvest-2026-04-27.md`.
|
|
1629
1646
|
|
|
1630
1647
|
### Other
|
package/README.md
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
# @adia-ai/mcp
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Three MCP servers, one npm package, one bin.** ADR-0048 §3 ruled distinct
|
|
4
4
|
servers ("they do different things"); gh#1240 (operator ruling 2026-08-14)
|
|
5
5
|
unified only the *distribution* — before either predecessor name
|
|
6
6
|
(`@adia-ai/gen-ui-mcp`, `@adia-ai/a2ui-protocol-mcp`) ever published a 0.8.x —
|
|
7
|
-
into this one package.
|
|
7
|
+
into this one package. ADR-0051 (gh#1241) added the third server, `factory`,
|
|
8
|
+
as a third subcommand under the same one-package ruling.
|
|
8
9
|
|
|
9
10
|
| You want to… | Run |
|
|
10
11
|
|---|---|
|
|
11
12
|
| Generate UI from an intent, search the training corpus, run evals, catalog-aware validation + anti-pattern scoring | `adia-mcp gen-ui` |
|
|
12
13
|
| Check that an A2UI document is well-formed, whoever produced it; see which component types/wiring exist with no corpus and no model | `adia-mcp protocol` |
|
|
13
|
-
|
|
|
14
|
+
| Build adia-ui APPS from any MCP harness — orient, scaffold, structural audit, the surface-qa browser gate, doctrine resources | `adia-mcp factory` |
|
|
15
|
+
| See the three-server menu | `adia-mcp` (bare) |
|
|
14
16
|
|
|
15
17
|
**The protocol server's four tool names are distinct from the gen-ui
|
|
16
18
|
server's** (gh#1248 renamed them off their original same-named forms before
|
|
@@ -39,30 +41,38 @@ Claude Desktop / Cursor / any MCP host, `mcpServers` block:
|
|
|
39
41
|
"a2ui-protocol": {
|
|
40
42
|
"command": "npx",
|
|
41
43
|
"args": ["-y", "@adia-ai/mcp", "protocol"]
|
|
44
|
+
},
|
|
45
|
+
"adia-factory": {
|
|
46
|
+
"command": "npx",
|
|
47
|
+
"args": ["-y", "@adia-ai/mcp", "factory"]
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
51
|
```
|
|
46
52
|
|
|
53
|
+
(`adia-factory` is the reserved config key for the factory server —
|
|
54
|
+
ADR-0051's config-key ruling, 2026-08-14.)
|
|
55
|
+
|
|
47
56
|
From a local checkout:
|
|
48
57
|
|
|
49
58
|
```bash
|
|
50
|
-
node packages/mcp/bin/adia-mcp gen-ui # stdio, local IDE
|
|
51
|
-
node packages/mcp/bin/adia-mcp protocol # stdio, protocol-only
|
|
52
|
-
|
|
59
|
+
node packages/gen-ui/mcp/bin/adia-mcp gen-ui # stdio, local IDE
|
|
60
|
+
node packages/gen-ui/mcp/bin/adia-mcp protocol # stdio, protocol-only
|
|
61
|
+
node packages/gen-ui/mcp/bin/adia-mcp factory # stdio, factory toolbox
|
|
62
|
+
MCP_HTTP_PORT=3460 node packages/gen-ui/mcp/bin/adia-mcp gen-ui # HTTP transport (gen-ui only)
|
|
53
63
|
```
|
|
54
64
|
|
|
55
65
|
## `gen-ui` — the generation server
|
|
56
66
|
|
|
57
|
-
Wraps [`@adia-ai/gen-ui`](../
|
|
67
|
+
Wraps [`@adia-ai/gen-ui`](../engine/compose). Exposes the generation engine,
|
|
58
68
|
component catalog, pattern library, validator, and training feedback loop as
|
|
59
69
|
**30 MCP tools** for Claude Desktop, Claude Code, Cursor, Windsurf, and any
|
|
60
70
|
deployed MCP-capable host.
|
|
61
71
|
|
|
62
72
|
> Runtime only. Generation logic lives in `@adia-ai/gen-ui`; UI atoms in
|
|
63
|
-
> [`@adia-ai/web-components`](
|
|
73
|
+
> [`@adia-ai/web-components`](../../web-components); the A2UI protocol runtime
|
|
64
74
|
> (renderer, registry, streams, wiring) in [`@adia-ai/a2ui`](../a2ui); corpus
|
|
65
|
-
> in [`@adia-ai/gen-ui/corpus`](../
|
|
75
|
+
> in [`@adia-ai/gen-ui/corpus`](../engine/corpus).
|
|
66
76
|
|
|
67
77
|
### Two transports, one tool surface
|
|
68
78
|
|
|
@@ -93,13 +103,13 @@ re-`initialize` to continue. stdio has no sessions and is unaffected.
|
|
|
93
103
|
export ANTHROPIC_API_KEY=sk-ant-… # at least one provider key, for generate_ui
|
|
94
104
|
adia-mcp gen-ui # global install, stdio
|
|
95
105
|
npx @adia-ai/mcp gen-ui # via npx
|
|
96
|
-
node packages/mcp/gen-ui/server.js # from local checkout
|
|
97
|
-
MCP_HTTP_PORT=3460 node packages/mcp/gen-ui/server.js # HTTP → 0.0.0.0:3460/mcp
|
|
106
|
+
node packages/gen-ui/mcp/gen-ui/server.js # from local checkout
|
|
107
|
+
MCP_HTTP_PORT=3460 node packages/gen-ui/mcp/gen-ui/server.js # HTTP → 0.0.0.0:3460/mcp
|
|
98
108
|
```
|
|
99
109
|
|
|
100
110
|
### Tools
|
|
101
111
|
|
|
102
|
-
**See [`TOOLS.md`](./TOOLS.md) for the full reference** (
|
|
112
|
+
**See [`TOOLS.md`](./TOOLS.md) for the full reference** (all three servers,
|
|
103
113
|
sectioned) — tool names, descriptions, grouping, argument schemas. Quick map
|
|
104
114
|
for `gen-ui`:
|
|
105
115
|
|
|
@@ -142,13 +152,13 @@ Wraps [`@adia-ai/a2ui`](../a2ui) and nothing else. `@adia-ai/gen-ui` and
|
|
|
142
152
|
`@adia-ai/llm` are deliberate **non**-dependencies of this surface — see
|
|
143
153
|
[Why a separate server](#why-a-separate-server-not-just-a-shared-one).
|
|
144
154
|
|
|
145
|
-
|
|
155
|
+
Five tools, no API key, no `.env`, **stdio only** (no HTTP mode — express and
|
|
146
156
|
session-sweep belong to `gen-ui`): `validate_document` · `get_registry_map` ·
|
|
147
|
-
`get_wiring_registry` · `protocol_status`.
|
|
157
|
+
`get_wiring_registry` · `get_catalog_ladder` · `protocol_status`.
|
|
148
158
|
|
|
149
159
|
```bash
|
|
150
|
-
node packages/mcp/protocol/server.js # stdio only
|
|
151
|
-
npm run mcp:protocol:smoke # boot + exercise all
|
|
160
|
+
node packages/gen-ui/mcp/protocol/server.js # stdio only
|
|
161
|
+
npm run mcp:protocol:smoke # boot + exercise all 5 tools + isolation proof
|
|
152
162
|
```
|
|
153
163
|
|
|
154
164
|
### Tool name disambiguation
|
|
@@ -172,6 +182,56 @@ itself (any producer's document), `gen-ui` answers questions about this
|
|
|
172
182
|
producer's catalog. The rename only changed how a client asks; it changed
|
|
173
183
|
neither shape.
|
|
174
184
|
|
|
185
|
+
## `factory` — the adia-factory server
|
|
186
|
+
|
|
187
|
+
The developer toolbox (ADR-0051, gh#1241): build adia-ui **apps** from any
|
|
188
|
+
MCP-speaking harness (Claude Code, Hermes, Pi, …) — the adia-ui-factory
|
|
189
|
+
plugin's capabilities without Claude-Code-specific skills/commands/agents.
|
|
190
|
+
MCP config key: **`adia-factory`** (reserved).
|
|
191
|
+
|
|
192
|
+
Seven tools, no API key, no `.env`, **stdio only**: `orient_app` ·
|
|
193
|
+
`scaffold_app` · `scaffold_page` · `scaffold_component` · `audit_structure` ·
|
|
194
|
+
`verify_surface` · `factory_status`. See [`TOOLS.md`](./TOOLS.md) for the
|
|
195
|
+
full reference.
|
|
196
|
+
|
|
197
|
+
**Every tool wraps an existing gated script** (ADR-0051 §2 — the server adds
|
|
198
|
+
no business logic): the factory plugin's `adia-info`, `record-lint`,
|
|
199
|
+
`adia-lint`, `adia-scaffold`, `adia-contract-check`, and `adia-probe`,
|
|
200
|
+
vendored verbatim into `factory/vendor/` by
|
|
201
|
+
`npm run build:factory-mcp-assets` (the plugin's own files stay the single
|
|
202
|
+
source; the vendor manifest + `mcp:factory:smoke` keep the copies honest).
|
|
203
|
+
|
|
204
|
+
**Doctrine ships as MCP resources generated from the skill files at build
|
|
205
|
+
time** (ADR-0051 §3), never hand-copied:
|
|
206
|
+
`adia://factory/{shell-selection,data-wiring,token-pairing-laws,pattern-index}`.
|
|
207
|
+
|
|
208
|
+
Runtime needs:
|
|
209
|
+
|
|
210
|
+
- **python3** — four of the wrapped scripts are stdlib-only Python 3.8+.
|
|
211
|
+
Absent, the affected tools return an actionable install message.
|
|
212
|
+
- **Playwright is NOT a dependency** (ADR-0051 §6): `verify_surface`
|
|
213
|
+
lazy-loads it from the target project (`npm i -D playwright` there); every
|
|
214
|
+
other tool works without it. Keeps `npx -y @adia-ai/mcp` installs light.
|
|
215
|
+
|
|
216
|
+
Deliberate **non**-dependencies, same posture as `protocol` (ADR-0051 §5):
|
|
217
|
+
`@adia-ai/gen-ui` and `@adia-ai/llm` never appear in this server's runtime
|
|
218
|
+
module graph — a developer wanting generation talks to `adia-mcp gen-ui`.
|
|
219
|
+
`mcp:factory:smoke` walks the module graph from `factory/server.js` and
|
|
220
|
+
fails on any reach, proves zero tool-name overlap with both sibling servers
|
|
221
|
+
(ADR-0051 §4), and asserts tool-name/resource-URI conformance against
|
|
222
|
+
[`factory/public-surface.json`](./factory/public-surface.json) — the
|
|
223
|
+
checked-in surface definition minted for the `adia-factory-public` (remote
|
|
224
|
+
claude.ai connector) reconciliation. Scope, honestly: this is
|
|
225
|
+
**local-surface conformance** — the remote publishes no machine-readable
|
|
226
|
+
manifest yet, so remote divergence is not detectable until that export
|
|
227
|
+
exists (the file's `$comment` rules that its rosters then become an import
|
|
228
|
+
of it, never a fork).
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
node packages/gen-ui/mcp/factory/server.js # stdio only
|
|
232
|
+
npm run mcp:factory:smoke # boot + exercise tools + freshness, zero-overlap, parity, isolation proofs
|
|
233
|
+
```
|
|
234
|
+
|
|
175
235
|
### Why a separate server (not just a shared one)
|
|
176
236
|
|
|
177
237
|
ADR-0048 Decision §3 and `.claude/docs/specs/a2ui-gen-ui-split.md` ## Interfaces
|
|
@@ -184,25 +244,30 @@ manifest live, not that boundary.
|
|
|
184
244
|
|
|
185
245
|
## Package exports
|
|
186
246
|
|
|
187
|
-
`package.json`'s `exports` map declares
|
|
188
|
-
and `./
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
247
|
+
`package.json`'s `exports` map declares three subpaths — `./gen-ui/server.js`,
|
|
248
|
+
`./protocol/server.js`, and `./factory/server.js` (added by ADR-0051/gh#1241;
|
|
249
|
+
adding a subpath is the safe direction). The first two are the entry points the packed-boot probe (and
|
|
250
|
+
the published `@adia-ai/a2ui-mcp@0.8.37` bridge shim, frozen on the registry)
|
|
251
|
+
reach by deep import (`@adia-ai/mcp/gen-ui/server.js`). This is an explicit
|
|
252
|
+
**invariant**, not an accident of omission: without a declared `exports` map
|
|
253
|
+
every file in `files` is deep-importable by default, which is what let that
|
|
254
|
+
resolution work before this map existed. Adding ANY future subpath key here is
|
|
255
|
+
fine; removing or renarrowing either of the first two silently breaks the
|
|
256
|
+
published shim for anyone still on the retired, deprecated
|
|
257
|
+
`@adia-ai/a2ui-mcp` name. Re-run `npm run probe:packed-boot` after touching
|
|
258
|
+
this map.
|
|
197
259
|
|
|
198
260
|
## Local development
|
|
199
261
|
|
|
200
262
|
```bash
|
|
201
263
|
npm run build:mcp-server # gen-ui: server.ts + tools/*.ts -> .js (esbuild)
|
|
202
264
|
npm run build:protocol-mcp-server # protocol: server.ts + tools/*.ts -> .js (esbuild)
|
|
203
|
-
npm run mcp
|
|
204
|
-
npm run mcp
|
|
205
|
-
npm run
|
|
265
|
+
npm run build:factory-mcp-server # factory: server.ts + tools/*.ts -> .js (esbuild)
|
|
266
|
+
npm run build:factory-mcp-assets # factory: re-vendor scripts + re-derive doctrine resources from the plugin
|
|
267
|
+
npm run mcp:smoke # gen-ui: boot over stdio, exercise all 31 tools
|
|
268
|
+
npm run mcp:protocol:smoke # protocol: boot over stdio, exercise all 5 tools + isolation proof
|
|
269
|
+
npm run mcp:factory:smoke # factory: asset freshness + boot + tools + zero-overlap/parity/isolation proofs
|
|
270
|
+
npm run build:mcp-tools-md # regenerate TOOLS.md (all three servers, sectioned) from the live tool lists
|
|
206
271
|
```
|
|
207
272
|
|
|
208
273
|
## License
|