@adia-ai/mcp 0.8.37 → 0.8.38
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 +36 -27
- package/README.md +90 -25
- package/TOOLS.md +157 -13
- package/bin/adia-mcp +15 -6
- 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/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,15 @@
|
|
|
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.38] — 2026-08-15
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- **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.
|
|
16
|
+
- **`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.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **Package directory moved `packages/mcp` → `packages/gen-ui/mcp` (ADR-0049, gh#1244).** Directory move only — the npm name, exports, and API are unchanged.
|
|
20
|
+
|
|
12
21
|
## [0.8.37] — 2026-08-14
|
|
13
22
|
|
|
14
23
|
### Added
|
|
@@ -896,7 +905,7 @@ Companion to `@adia-ai/a2ui-compose@[Unreleased]` §87 zettel `ensureBooted()` r
|
|
|
896
905
|
- **`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
906
|
- **`mcp/scripts/smoke-register-engine.mjs`** — engine-registry coverage adjusted; still 11/11.
|
|
898
907
|
|
|
899
|
-
See root [CHANGELOG.md `[Unreleased]`](
|
|
908
|
+
See root [CHANGELOG.md `[Unreleased]`](../../../CHANGELOG.md) for the cross-cutting arc.
|
|
900
909
|
## [0.4.7] - 2026-05-12
|
|
901
910
|
|
|
902
911
|
### Changed — smoke + test scripts aligned to post-§72 retrieval surface
|
|
@@ -912,14 +921,14 @@ Companion to `@adia-ai/a2ui-compose@[Unreleased]` + `@adia-ai/a2ui-retrieval@[Un
|
|
|
912
921
|
- **`mcp/scripts/eval-fix.mjs`** — retired the pattern-surface fix-up logic (no longer reachable; compositions are the canonical retrieval shape).
|
|
913
922
|
- **`mcp/scripts/test-a2ui.mjs`** — assertions updated to reflect the post-§64 tool inventory.
|
|
914
923
|
|
|
915
|
-
See root [CHANGELOG.md `[Unreleased]`](
|
|
924
|
+
See root [CHANGELOG.md `[Unreleased]`](../../../CHANGELOG.md) for the cross-cutting §64 arc narrative.
|
|
916
925
|
## [0.4.5] - 2026-05-12
|
|
917
926
|
|
|
918
927
|
### Ride-along (no source changes)
|
|
919
928
|
|
|
920
929
|
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
930
|
|
|
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]`](
|
|
931
|
+
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
932
|
## [0.4.4] - 2026-05-12
|
|
924
933
|
|
|
925
934
|
### Changed — fragment-retirement follow-through (§37, 2026-05-12)
|
|
@@ -928,14 +937,14 @@ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4
|
|
|
928
937
|
- **`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
938
|
- **`mcp/scripts/test-chunks.mjs` — 1-line tweak.** Threshold adjustment for the post-§40 annotated-chunk world.
|
|
930
939
|
|
|
931
|
-
See root [CHANGELOG.md `[Unreleased]`](
|
|
940
|
+
See root [CHANGELOG.md `[Unreleased]`](../../../CHANGELOG.md) for the cross-cutting arc narrative.
|
|
932
941
|
## [0.4.3] - 2026-05-11
|
|
933
942
|
|
|
934
943
|
### Ride-along (no source changes)
|
|
935
944
|
|
|
936
945
|
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
946
|
|
|
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]`](
|
|
947
|
+
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
948
|
## [0.4.2] - 2026-05-11
|
|
940
949
|
|
|
941
950
|
### Added
|
|
@@ -946,39 +955,39 @@ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4
|
|
|
946
955
|
|
|
947
956
|
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
957
|
|
|
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]`](
|
|
958
|
+
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
959
|
## [0.4.1] - 2026-05-10
|
|
951
960
|
|
|
952
961
|
### Ride-along (no source changes)
|
|
953
962
|
|
|
954
963
|
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
964
|
|
|
956
|
-
Internal `@adia-ai/*` dep ranges bumped from `^0.4.0` to `^0.4.1`. See root [CHANGELOG.md `## [0.4.1]`](
|
|
965
|
+
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
966
|
## [0.4.0] - 2026-05-10
|
|
958
967
|
|
|
959
968
|
### Ride-along (no source changes)
|
|
960
969
|
|
|
961
970
|
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
971
|
|
|
963
|
-
Internal `@adia-ai/*` dep ranges bumped from `^0.3.0` to `^0.4.0`. See root [CHANGELOG.md `## [0.4.0]`](
|
|
972
|
+
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
973
|
## [0.3.6] - 2026-05-10
|
|
965
974
|
|
|
966
975
|
### Ride-along (no source changes)
|
|
967
976
|
|
|
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]`](
|
|
977
|
+
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
978
|
## [0.3.5] - 2026-05-07
|
|
970
979
|
|
|
971
980
|
### Ride-along (no source changes)
|
|
972
981
|
|
|
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]`](
|
|
982
|
+
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
983
|
## [0.3.4] - 2026-05-07
|
|
975
984
|
|
|
976
985
|
### Ride-along (no source changes)
|
|
977
986
|
|
|
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]`](
|
|
987
|
+
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
988
|
## [0.3.3] - 2026-05-07
|
|
980
989
|
|
|
981
|
-
**Lockstep cut.** All 9 published `@adia-ai/*` packages now share version `0.3.3`, governed by [`.claude/docs/specs/package-architecture.md` § 15](
|
|
990
|
+
**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
991
|
|
|
983
992
|
### Added
|
|
984
993
|
|
|
@@ -1016,7 +1025,7 @@ Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-
|
|
|
1016
1025
|
## [0.3.2] - 2026-05-06
|
|
1017
1026
|
|
|
1018
1027
|
**9-package lockstep patch cut to v0.3.2.** All lockstep members share
|
|
1019
|
-
one version per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1028
|
+
one version per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1020
1029
|
Internal `@adia-ai/*` dep ranges unchanged at `^0.3.0`.
|
|
1021
1030
|
|
|
1022
1031
|
### Added
|
|
@@ -1040,7 +1049,7 @@ Internal `@adia-ai/*` dep ranges unchanged at `^0.3.0`.
|
|
|
1040
1049
|
- `version`: `0.3.1` → `0.3.2`.
|
|
1041
1050
|
## [0.3.1] - 2026-05-06
|
|
1042
1051
|
|
|
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](
|
|
1052
|
+
**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
1053
|
|
|
1045
1054
|
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
1055
|
|
|
@@ -1050,7 +1059,7 @@ This package itself ships **no source changes** in v0.3.1. The cut bumps version
|
|
|
1050
1059
|
- Internal `@adia-ai/*` dep ranges: unchanged at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
|
|
1051
1060
|
## [0.3.0] - 2026-05-05
|
|
1052
1061
|
|
|
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](
|
|
1062
|
+
**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
1063
|
|
|
1055
1064
|
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
1065
|
|
|
@@ -1075,7 +1084,7 @@ If you depend on `@adia-ai/a2ui-mcp` directly (typically as a CLI via `npx adiau
|
|
|
1075
1084
|
`@adia-ai/llm` is a transitive dep — npm install handles it.
|
|
1076
1085
|
## [0.2.5] - 2026-05-04
|
|
1077
1086
|
|
|
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](
|
|
1087
|
+
**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
1088
|
|
|
1080
1089
|
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
1090
|
|
|
@@ -1085,7 +1094,7 @@ This is a **patch cut on top of v0.2.4, no BREAKING changes.** Substantive conte
|
|
|
1085
1094
|
- Internal `@adia-ai/*` dep ranges: unchanged at `^0.2.0` (covers `0.2.5` under semver — patch-cut asymmetry).
|
|
1086
1095
|
## [0.2.4] - 2026-05-04
|
|
1087
1096
|
|
|
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](
|
|
1097
|
+
**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
1098
|
|
|
1090
1099
|
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
1100
|
|
|
@@ -1105,7 +1114,7 @@ _Nothing yet._
|
|
|
1105
1114
|
|
|
1106
1115
|
**Lockstep cut.** All 8 published `@adia-ai/*` packages bump
|
|
1107
1116
|
0.2.2 → 0.2.3 per
|
|
1108
|
-
[`.claude/docs/specs/package-architecture.md` § 15](
|
|
1117
|
+
[`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1109
1118
|
Patch cut — no breaking changes.
|
|
1110
1119
|
|
|
1111
1120
|
### Changed
|
|
@@ -1120,7 +1129,7 @@ Patch cut — no breaking changes.
|
|
|
1120
1129
|
`@adia-ai/a2ui-mcp` source is byte-identical to `0.2.2`. The cut bumps version + the internal dep range entries only.
|
|
1121
1130
|
## [0.2.2] - 2026-05-02
|
|
1122
1131
|
|
|
1123
|
-
**Lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.1 → 0.2.2 per [`.claude/docs/specs/package-architecture.md` § 15](
|
|
1132
|
+
**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
1133
|
|
|
1125
1134
|
### Changed
|
|
1126
1135
|
|
|
@@ -1138,7 +1147,7 @@ Patch cut — no breaking changes.
|
|
|
1138
1147
|
---
|
|
1139
1148
|
## [0.2.1] - 2026-05-02
|
|
1140
1149
|
|
|
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](
|
|
1150
|
+
**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
1151
|
|
|
1143
1152
|
### Changed
|
|
1144
1153
|
|
|
@@ -1170,7 +1179,7 @@ When the composer's scope-drift gate (a2ui-compose) flags `result.scopeDrift.dri
|
|
|
1170
1179
|
|
|
1171
1180
|
**Lockstep cut + corpus caret-lock fix.** All 8 published `@adia-ai/*`
|
|
1172
1181
|
packages now share one version, governed by
|
|
1173
|
-
[`.claude/docs/specs/package-architecture.md` § 15 (Versioning Policy)](
|
|
1182
|
+
[`.claude/docs/specs/package-architecture.md` § 15 (Versioning Policy)](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1174
1183
|
|
|
1175
1184
|
This release **fixes a live shipping bug** in 0.1.3: the `dependencies`
|
|
1176
1185
|
range `"@adia-ai/a2ui-corpus": "^0.0.6"` locked to *exactly* `0.0.6`
|
|
@@ -1211,7 +1220,7 @@ BREAKING changes.
|
|
|
1211
1220
|
|
|
1212
1221
|
- **`compose_from_chunks` eval runner + hold-out set**. Closes the
|
|
1213
1222
|
spec at
|
|
1214
|
-
[`.claude/docs/specs/compose-from-chunks-eval.md`](
|
|
1223
|
+
[`.claude/docs/specs/compose-from-chunks-eval.md`](../../../.claude/docs/specs/compose-from-chunks-eval.md):
|
|
1215
1224
|
- `evals/compose-from-chunks-holdout.jsonl` — 20 intents (10
|
|
1216
1225
|
single-turn compose + 10 multi-turn refine) across 9
|
|
1217
1226
|
categories (data-display, forms, layout, data, data-viz,
|
|
@@ -1241,7 +1250,7 @@ BREAKING changes.
|
|
|
1241
1250
|
---
|
|
1242
1251
|
## [0.1.2] - 2026-05-01
|
|
1243
1252
|
|
|
1244
|
-
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](
|
|
1253
|
+
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](../../../.claude/docs/specs/semantic-validator.md)
|
|
1245
1254
|
**promoted to default**. When `--semantic` is set, `eval-diff.mjs`
|
|
1246
1255
|
now gates on the combined score at threshold 80 by default, instead
|
|
1247
1256
|
of running in Phase 1 shadow-mode. **Behavior change** — see § Opt
|
|
@@ -1297,7 +1306,7 @@ Pass rate drops from 83 → 79 (4 percentage points), all justified.
|
|
|
1297
1306
|
|
|
1298
1307
|
### Updated baseline thresholds
|
|
1299
1308
|
|
|
1300
|
-
Per [`.claude/docs/specs/semantic-validator.md`](
|
|
1309
|
+
Per [`.claude/docs/specs/semantic-validator.md`](../../../.claude/docs/specs/semantic-validator.md)
|
|
1301
1310
|
§ Phase 2 status (2026-05-01):
|
|
1302
1311
|
|
|
1303
1312
|
- `avgScore ≥ 88` (structural — unchanged)
|
|
@@ -1315,7 +1324,7 @@ Per [`.claude/docs/specs/semantic-validator.md`](../../.claude/docs/specs/semant
|
|
|
1315
1324
|
threshold revalidation passes
|
|
1316
1325
|
## [0.1.1] - 2026-05-01
|
|
1317
1326
|
|
|
1318
|
-
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](
|
|
1327
|
+
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](../../../.claude/docs/specs/semantic-validator.md)
|
|
1319
1328
|
— opt-in combined-gating in `eval-diff.mjs` + new
|
|
1320
1329
|
`semantic-stats.mjs` companion script. **No breaking changes.**
|
|
1321
1330
|
Default `eval-diff` behavior unchanged — Phase 1 shadow-mode is
|
|
@@ -1386,7 +1395,7 @@ MCP tools that turn the chunk-composition pipeline from single-shot into a
|
|
|
1386
1395
|
multi-turn surface, plus extends `compose_from_chunks` to mint a `state_id`
|
|
1387
1396
|
for refinement chains.
|
|
1388
1397
|
|
|
1389
|
-
Spec: [`.claude/docs/specs/genui-multiturn-architecture.md`](
|
|
1398
|
+
Spec: [`.claude/docs/specs/genui-multiturn-architecture.md`](../../../.claude/docs/specs/genui-multiturn-architecture.md) (Active v0.1.0).
|
|
1390
1399
|
Plan: `.claude/docs/plans/genui-multiturn-rollout-2026-04-28.md` (Phase A scoped).
|
|
1391
1400
|
ADR: `0008-multiturn-genui-architecture.md`.
|
|
1392
1401
|
|
|
@@ -1624,7 +1633,7 @@ before HTML is materialized.
|
|
|
1624
1633
|
|
|
1625
1634
|
### Convention reference
|
|
1626
1635
|
|
|
1627
|
-
- Spec: [`.claude/docs/specs/genui-chunk-marker.md`](
|
|
1636
|
+
- Spec: [`.claude/docs/specs/genui-chunk-marker.md`](../../../.claude/docs/specs/genui-chunk-marker.md).
|
|
1628
1637
|
- Plan: `.claude/docs/plans/training-pipeline-chunk-harvest-2026-04-27.md`.
|
|
1629
1638
|
|
|
1630
1639
|
### 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
|
|
|
@@ -147,7 +157,7 @@ session-sweep belong to `gen-ui`): `validate_document` · `get_registry_map` ·
|
|
|
147
157
|
`get_wiring_registry` · `protocol_status`.
|
|
148
158
|
|
|
149
159
|
```bash
|
|
150
|
-
node packages/mcp/protocol/server.js # stdio only
|
|
160
|
+
node packages/gen-ui/mcp/protocol/server.js # stdio only
|
|
151
161
|
npm run mcp:protocol:smoke # boot + exercise all 4 tools + isolation proof
|
|
152
162
|
```
|
|
153
163
|
|
|
@@ -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
|
|
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
|
|
204
268
|
npm run mcp:protocol:smoke # protocol: boot over stdio, exercise all 4 tools + isolation proof
|
|
205
|
-
npm run
|
|
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
|