@kywi-software/mcp 0.12.1 → 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/AGENT-PATTERNS.md +54 -39
- package/dist/module-types.d.ts +9 -1
- package/dist/module-types.d.ts.map +1 -1
- package/dist/module-types.js +10 -2
- package/dist/module-types.js.map +1 -1
- package/dist/site/tools/layout.d.ts +90 -2
- package/dist/site/tools/layout.d.ts.map +1 -1
- package/dist/site/tools/layout.js +147 -15
- package/dist/site/tools/layout.js.map +1 -1
- package/package.json +3 -3
package/AGENT-PATTERNS.md
CHANGED
|
@@ -356,7 +356,7 @@ authored elsewhere in the admin).
|
|
|
356
356
|
|
|
357
357
|
| `name` | Purpose |
|
|
358
358
|
|---|---|
|
|
359
|
-
|
|
|
359
|
+
| ~~`variantContainer`~~ | **Retired in 0.13.0** — the raw-HTML module. Use the `moduleVariantContainer` NODE (§8) or `personalize_module`. Existing placements still render |
|
|
360
360
|
| `personalizationBadge` | Optional inline status pill that opens the global transparency panel — not needed on ordinary pages (§8) |
|
|
361
361
|
| `socialShare` | Share links for a URL/title across networks |
|
|
362
362
|
| `map` | Embedded map at a lat/lng or address |
|
|
@@ -517,47 +517,62 @@ If no, skip it — the machinery is there when they grow into it.
|
|
|
517
517
|
|
|
518
518
|
### Variant containers: pick the right shape
|
|
519
519
|
|
|
520
|
-
|
|
521
|
-
interchangeable.
|
|
522
|
-
|
|
523
|
-
- **Section-level
|
|
524
|
-
`variants[].sections`). Resolved **on the server** from
|
|
525
|
-
or experiment arm, so the first paint is already
|
|
526
|
-
page is complete with JavaScript off.
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
520
|
+
Three different things have been called `variantContainer`, and they are not
|
|
521
|
+
interchangeable. Two of them are current.
|
|
522
|
+
|
|
523
|
+
- **Section-level `variantContainer`** — a *region* node, sibling of sections
|
|
524
|
+
(`defaultSections` + `variants[].sections`). Resolved **on the server** from
|
|
525
|
+
the visitor's audience or experiment arm, so the first paint is already
|
|
526
|
+
correct: no flash, and the page is complete with JavaScript off. Reach for it
|
|
527
|
+
when a whole band varies. Since kywi-cms#119 the owner does not need an agent
|
|
528
|
+
to author it: the section chrome — in the admin layout editor and the
|
|
529
|
+
front-of-site overlay alike — offers **Personalize** / **A/B test** actions
|
|
530
|
+
that wrap the section on the spot, seeding the default variant from its
|
|
531
|
+
current content and opening straight into its config.
|
|
532
|
+
- **Module-level `moduleVariantContainer`** (kywi-cms#161) — a *column* node,
|
|
533
|
+
sibling of modules (`defaultModule` + `variants[].module`, exactly one
|
|
534
|
+
module per arm; arm module types may differ, so an image arm can face a
|
|
535
|
+
text arm). Also resolved **entirely on the server** — same no-flash,
|
|
536
|
+
JS-off-complete guarantee. Reach for it when ONE element varies inside a
|
|
537
|
+
section that otherwise stays put: a headline, a CTA, a pricing card. The
|
|
538
|
+
owner reaches it from the module's own hover chrome or its props rail (the
|
|
539
|
+
same two actions), and an agent reaches it with **`personalize_module`**
|
|
540
|
+
(kywi-cms#162), which does the read-modify-write wrap and hands back the
|
|
541
|
+
container and arm ids. It always seeds one variant arm — a detached copy of
|
|
542
|
+
the module's current content — whether or not `audienceId` is passed: pass
|
|
543
|
+
it to bind the arm immediately, or omit it and the arm starts unbound
|
|
544
|
+
(`''`, serving nobody) until something binds it later.
|
|
545
|
+
- **The legacy `variantContainer` MODULE** — retired in 0.13.0 (kywi-cms#163).
|
|
546
|
+
Its arms were raw HTML strings revealed client-side by `@kywi-software/js`.
|
|
547
|
+
It is gone from the palette and from `list_module_types`, and
|
|
548
|
+
`personalize_module` is what you want instead. **Existing placements keep
|
|
549
|
+
rendering and stay editable** — nothing was deleted and no migration is
|
|
550
|
+
forced — so a page that already has one is not broken, it is simply not the
|
|
551
|
+
shape to add more of.
|
|
552
|
+
|
|
553
|
+
**Neither container ever nests.** Not one inside the other, not one inside
|
|
554
|
+
itself. A module already sitting in a personalized section's arm cannot be
|
|
555
|
+
promoted — the editor withholds the action, `personalize_module` returns a
|
|
556
|
+
structured error saying why, and `update_layout` rejects the shape outright.
|
|
557
|
+
|
|
558
|
+
**`ab_test` mode needs its own `experimentId`, and it must be FRESH.** Both
|
|
559
|
+
container kinds refuse to validate without one, and both the editors and
|
|
560
|
+
`personalize_module` mint a new id per container. Copying an experiment id
|
|
561
|
+
between pages silently enrols a second page's container in the first page's run.
|
|
548
562
|
|
|
549
563
|
Four traps, each of which fails silently:
|
|
550
564
|
|
|
551
|
-
1. **
|
|
552
|
-
(`core/src/components/personalization/`)
|
|
553
|
-
the skeleton and nothing else — a JS-off
|
|
554
|
-
and its `ab_test` path draws a fresh
|
|
555
|
-
visitor sees a different arm on
|
|
556
|
-
(`VariantContainerModule`) always renders
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
565
|
+
1. **Don't reach for the retired `variantContainer` module, or the React
|
|
566
|
+
component.** `VariantContainer.tsx` (`core/src/components/personalization/`)
|
|
567
|
+
has a loading branch that renders the skeleton and nothing else — a JS-off
|
|
568
|
+
visitor gets an empty container — and its `ab_test` path draws a fresh
|
|
569
|
+
`Math.random()` per render, so the same visitor sees a different arm on
|
|
570
|
+
every refresh. The layout module (`VariantContainerModule`) always renders
|
|
571
|
+
the default arm.
|
|
572
|
+
2. (Legacy module only.) **Leave `skeleton` off.** With `skeleton: true` the
|
|
573
|
+
container ships `aria-busy="true"` and only the client runtime clears it —
|
|
574
|
+
a JS-off visitor sits in a loading state forever.
|
|
575
|
+
3. **An audience match beats the experiment.** `selectVariantArm` returns the
|
|
561
576
|
audience arm first, so a visitor who matches an audience never enters the
|
|
562
577
|
split. Don't run an experiment and an audience variant on the same container.
|
|
563
578
|
4. **The client runtime needs `/kywi.js`.** Self-ID, behavioral re-evaluation
|
package/dist/module-types.d.ts
CHANGED
|
@@ -34,7 +34,15 @@ export interface ModuleTypeCategory {
|
|
|
34
34
|
category: string;
|
|
35
35
|
modules: ModuleTypeSummary[];
|
|
36
36
|
}
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Flat list of every built-in module an agent may still place, summarized.
|
|
39
|
+
*
|
|
40
|
+
* Deprecated entries are excluded (kywi-cms#163): the legacy
|
|
41
|
+
* `variantContainer` module is superseded by the real `moduleVariantContainer`
|
|
42
|
+
* node, and an agent told about both would reach for the wrong one. It is only
|
|
43
|
+
* hidden — existing placements still render, and `update_layout` still accepts
|
|
44
|
+
* the type.
|
|
45
|
+
*/
|
|
38
46
|
export declare function listModuleTypeSummaries(): ModuleTypeSummary[];
|
|
39
47
|
/** Same list, grouped by category (registry declaration order within each group). */
|
|
40
48
|
export declare function listModuleTypesByCategory(): ModuleTypeCategory[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-types.d.ts","sourceRoot":"","sources":["../src/module-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAIxE;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAkBD
|
|
1
|
+
{"version":3,"file":"module-types.d.ts","sourceRoot":"","sources":["../src/module-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAIxE;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,EAAE,CAE7D;AAED,qFAAqF;AACrF,wBAAgB,yBAAyB,IAAI,kBAAkB,EAAE,CAQhE;AAWD,wBAAgB,qBAAqB,IAAI;IACvC,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC1C,CAIA;AAQD,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAM/D"}
|
package/dist/module-types.js
CHANGED
|
@@ -14,9 +14,17 @@ function summarizeModule(mod) {
|
|
|
14
14
|
}
|
|
15
15
|
return { name: mod.name, label: mod.label, category: mod.category ?? 'Other', props };
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Flat list of every built-in module an agent may still place, summarized.
|
|
19
|
+
*
|
|
20
|
+
* Deprecated entries are excluded (kywi-cms#163): the legacy
|
|
21
|
+
* `variantContainer` module is superseded by the real `moduleVariantContainer`
|
|
22
|
+
* node, and an agent told about both would reach for the wrong one. It is only
|
|
23
|
+
* hidden — existing placements still render, and `update_layout` still accepts
|
|
24
|
+
* the type.
|
|
25
|
+
*/
|
|
18
26
|
export function listModuleTypeSummaries() {
|
|
19
|
-
return BUILT_IN_MODULES.map(summarizeModule);
|
|
27
|
+
return BUILT_IN_MODULES.filter(mod => !mod.deprecated).map(summarizeModule);
|
|
20
28
|
}
|
|
21
29
|
/** Same list, grouped by category (registry declaration order within each group). */
|
|
22
30
|
export function listModuleTypesByCategory() {
|
package/dist/module-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-types.js","sourceRoot":"","sources":["../src/module-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAwCxC,gFAAgF;AAEhF,SAAS,eAAe,CAAC,GAAsC;IAC7D,MAAM,KAAK,GAAmC,EAAE,CAAA;IAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3C,CAAA;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,EAAE,KAAK,EAAE,CAAA;AACvF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"module-types.js","sourceRoot":"","sources":["../src/module-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,36 @@ interface ModuleNode {
|
|
|
6
6
|
instanceId: string;
|
|
7
7
|
props: Record<string, unknown>;
|
|
8
8
|
style: Record<string, string>;
|
|
9
|
+
componentId?: string;
|
|
9
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* One arm of a MODULE-level variant container (kywi-cms#162).
|
|
13
|
+
*
|
|
14
|
+
* `audienceId` is REQUIRED, matching the core `ModuleVariantEntry` (owner
|
|
15
|
+
* amendment, kywi-cms#161): `''` is the single legal spelling of "unbound
|
|
16
|
+
* draft arm," never an absent field.
|
|
17
|
+
*/
|
|
18
|
+
interface ModuleVariantEntryNode {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
audienceId: string;
|
|
22
|
+
weight?: number;
|
|
23
|
+
module: ModuleNode;
|
|
24
|
+
}
|
|
25
|
+
interface ModuleVariantContainerNode {
|
|
26
|
+
id: string;
|
|
27
|
+
type: 'moduleVariantContainer';
|
|
28
|
+
mode: 'personalization' | 'ab_test';
|
|
29
|
+
experimentId?: string;
|
|
30
|
+
winnerId?: string;
|
|
31
|
+
defaultModule: ModuleNode;
|
|
32
|
+
variants: ModuleVariantEntryNode[];
|
|
33
|
+
}
|
|
34
|
+
type ColumnNode = ModuleNode | ModuleVariantContainerNode;
|
|
10
35
|
interface LayoutColumn {
|
|
11
36
|
id: string;
|
|
12
37
|
width: number;
|
|
13
|
-
nodes:
|
|
38
|
+
nodes: ColumnNode[];
|
|
14
39
|
}
|
|
15
40
|
interface LayoutSection {
|
|
16
41
|
id: string;
|
|
@@ -18,8 +43,18 @@ interface LayoutSection {
|
|
|
18
43
|
style: Record<string, string>;
|
|
19
44
|
columns: LayoutColumn[];
|
|
20
45
|
}
|
|
46
|
+
/** A SECTION-level variantContainer (sibling of sections in a region). */
|
|
47
|
+
interface SectionVariantContainerLike {
|
|
48
|
+
id: string;
|
|
49
|
+
type: 'variantContainer';
|
|
50
|
+
defaultSections?: LayoutSection[];
|
|
51
|
+
variants?: Array<{
|
|
52
|
+
sections?: LayoutSection[];
|
|
53
|
+
}>;
|
|
54
|
+
}
|
|
55
|
+
type RegionNodeLike = LayoutSection | SectionVariantContainerLike;
|
|
21
56
|
interface LayoutDocument {
|
|
22
|
-
regions: Record<string,
|
|
57
|
+
regions: Record<string, RegionNodeLike[]>;
|
|
23
58
|
}
|
|
24
59
|
declare function findSection(layout: LayoutDocument, region: string, rowId: string): LayoutSection | undefined;
|
|
25
60
|
declare function findColumn(section: LayoutSection, colId: string): LayoutColumn | undefined;
|
|
@@ -158,6 +193,59 @@ export declare function handleRemoveRow(sdk: KywiSdkScope, args: {
|
|
|
158
193
|
}];
|
|
159
194
|
isError: true;
|
|
160
195
|
}>;
|
|
196
|
+
/** Where a module sits in a page's REGION-LEVEL sections (never inside a personalized band). */
|
|
197
|
+
export interface ModuleSlot {
|
|
198
|
+
section: LayoutSection;
|
|
199
|
+
column: LayoutColumn;
|
|
200
|
+
index: number;
|
|
201
|
+
module: ModuleNode;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Find a module by id in a region's own sections only.
|
|
205
|
+
*
|
|
206
|
+
* Deliberately NOT arm-aware: a module inside a section-level variantContainer
|
|
207
|
+
* arm may not be promoted (containers never nest), so "not found here" and
|
|
208
|
+
* "found, but ineligible" are answered separately below — an agent that gets a
|
|
209
|
+
* bare "not found" for a module it can see in `get_layout` will keep retrying.
|
|
210
|
+
*/
|
|
211
|
+
export declare function findModuleSlot(layout: LayoutDocument, moduleId: string): ModuleSlot | null;
|
|
212
|
+
/**
|
|
213
|
+
* Promote one module to a module-level variant container, in place.
|
|
214
|
+
*
|
|
215
|
+
* The read-modify-write counterpart of the editor's
|
|
216
|
+
* `WRAP_MODULE_IN_VARIANT_CONTAINER`: the original module becomes the Default
|
|
217
|
+
* arm — so the page renders identically until it's bound — and this ALWAYS
|
|
218
|
+
* seeds exactly one variant arm from a DETACHED copy of it (fresh ids, no
|
|
219
|
+
* `componentId`, so editing the challenger never rewrites a shared component).
|
|
220
|
+
* Matches the editor's `ADD_MODULE_VARIANT_ARM` contract: an `audienceId`
|
|
221
|
+
* binds the seeded arm immediately; omitting it leaves the arm UNBOUND
|
|
222
|
+
* (`audienceId: ''`) — a draft that serves nobody until it's bound — never
|
|
223
|
+
* an empty `variants: []`.
|
|
224
|
+
*
|
|
225
|
+
* `ab_test` mints a FRESH `experimentId` and never carries a winner: an
|
|
226
|
+
* experiment id copied between pages silently enrols a second page's container
|
|
227
|
+
* in the first page's run.
|
|
228
|
+
*/
|
|
229
|
+
export declare function handlePersonalizeModule(sdk: KywiSdkScope, args: {
|
|
230
|
+
type: string;
|
|
231
|
+
id: string;
|
|
232
|
+
moduleId: string;
|
|
233
|
+
mode: 'personalization' | 'ab_test';
|
|
234
|
+
audienceId?: string | undefined;
|
|
235
|
+
label?: string | undefined;
|
|
236
|
+
}): Promise<{
|
|
237
|
+
content: [{
|
|
238
|
+
type: "text";
|
|
239
|
+
text: string;
|
|
240
|
+
}];
|
|
241
|
+
isError?: undefined;
|
|
242
|
+
} | {
|
|
243
|
+
content: [{
|
|
244
|
+
type: "text";
|
|
245
|
+
text: string;
|
|
246
|
+
}];
|
|
247
|
+
isError: true;
|
|
248
|
+
}>;
|
|
161
249
|
export { findSection, findColumn, findModule, parseLayout };
|
|
162
250
|
export declare function registerLayoutTools(server: McpServer, sdk: KywiSdkScope): void;
|
|
163
251
|
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/site/tools/layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAKtD,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/site/tools/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@ function findSection(layout, region, rowId) {
|
|
|
5
5
|
const sections = layout.regions[region];
|
|
6
6
|
if (!sections)
|
|
7
7
|
return undefined;
|
|
8
|
-
return sections.find((s) => s.id === rowId);
|
|
8
|
+
return sections.find((s) => s.id === rowId && s.type === 'section');
|
|
9
9
|
}
|
|
10
10
|
function findColumn(section, colId) {
|
|
11
11
|
return section.columns.find((c) => c.id === colId);
|
|
12
12
|
}
|
|
13
13
|
function findModule(column, instanceId) {
|
|
14
|
-
return column.nodes.find((n) => n.instanceId === instanceId);
|
|
14
|
+
return column.nodes.find((n) => n.type !== 'moduleVariantContainer' && n.instanceId === instanceId);
|
|
15
15
|
}
|
|
16
16
|
function parseLayout(content) {
|
|
17
17
|
// Core 0.6.1 stores the layout as a `layout` jsonb object. Older content used a
|
|
@@ -79,7 +79,7 @@ export async function handleRemoveModule(sdk, args) {
|
|
|
79
79
|
if (!column)
|
|
80
80
|
return errorResult(`Column '${args.colId}' not found in row '${args.rowId}'`);
|
|
81
81
|
const before = column.nodes.length;
|
|
82
|
-
column.nodes = column.nodes.filter((n) => n.instanceId !== args.instanceId);
|
|
82
|
+
column.nodes = column.nodes.filter((n) => n.type === 'moduleVariantContainer' || n.instanceId !== args.instanceId);
|
|
83
83
|
if (column.nodes.length === before) {
|
|
84
84
|
return errorResult(`Module '${args.instanceId}' not found in column '${args.colId}'`);
|
|
85
85
|
}
|
|
@@ -152,6 +152,119 @@ export async function handleRemoveRow(sdk, args) {
|
|
|
152
152
|
});
|
|
153
153
|
return updated ? textResult({ removed: args.rowId, layout }) : errorResult('Failed to save layout');
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Find a module by id in a region's own sections only.
|
|
157
|
+
*
|
|
158
|
+
* Deliberately NOT arm-aware: a module inside a section-level variantContainer
|
|
159
|
+
* arm may not be promoted (containers never nest), so "not found here" and
|
|
160
|
+
* "found, but ineligible" are answered separately below — an agent that gets a
|
|
161
|
+
* bare "not found" for a module it can see in `get_layout` will keep retrying.
|
|
162
|
+
*/
|
|
163
|
+
export function findModuleSlot(layout, moduleId) {
|
|
164
|
+
for (const nodes of Object.values(layout.regions ?? {})) {
|
|
165
|
+
for (const node of nodes ?? []) {
|
|
166
|
+
if (node.type !== 'section')
|
|
167
|
+
continue;
|
|
168
|
+
for (const column of node.columns ?? []) {
|
|
169
|
+
for (let i = 0; i < (column.nodes ?? []).length; i++) {
|
|
170
|
+
const entry = column.nodes[i];
|
|
171
|
+
if (entry && entry.type !== 'moduleVariantContainer' && entry.id === moduleId) {
|
|
172
|
+
return { section: node, column, index: i, module: entry };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
/** Is this module id inside a SECTION-level variantContainer arm, or already inside a module container? */
|
|
181
|
+
function describeIneligibility(layout, moduleId) {
|
|
182
|
+
for (const nodes of Object.values(layout.regions ?? {})) {
|
|
183
|
+
for (const node of nodes ?? []) {
|
|
184
|
+
if (node.type === 'variantContainer') {
|
|
185
|
+
const arms = [
|
|
186
|
+
...(node.defaultSections ?? []),
|
|
187
|
+
...(node.variants ?? []).flatMap((v) => v.sections ?? []),
|
|
188
|
+
];
|
|
189
|
+
for (const section of arms) {
|
|
190
|
+
for (const column of section.columns ?? []) {
|
|
191
|
+
for (const entry of column.nodes ?? []) {
|
|
192
|
+
if (entry.id === moduleId) {
|
|
193
|
+
return `Module '${moduleId}' is already inside a personalized section (variantContainer '${node.id}'). Personalization containers never nest — edit that section's variants instead.`;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (node.type !== 'section')
|
|
200
|
+
continue;
|
|
201
|
+
for (const column of node.columns ?? []) {
|
|
202
|
+
for (const entry of column.nodes ?? []) {
|
|
203
|
+
if (entry.type !== 'moduleVariantContainer')
|
|
204
|
+
continue;
|
|
205
|
+
const mvc = entry;
|
|
206
|
+
if (mvc.id === moduleId || mvc.defaultModule.id === moduleId || mvc.variants.some((v) => v.module.id === moduleId)) {
|
|
207
|
+
return `Module '${moduleId}' is already personalized by moduleVariantContainer '${mvc.id}'. Add a variant to it with update_layout instead.`;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Promote one module to a module-level variant container, in place.
|
|
217
|
+
*
|
|
218
|
+
* The read-modify-write counterpart of the editor's
|
|
219
|
+
* `WRAP_MODULE_IN_VARIANT_CONTAINER`: the original module becomes the Default
|
|
220
|
+
* arm — so the page renders identically until it's bound — and this ALWAYS
|
|
221
|
+
* seeds exactly one variant arm from a DETACHED copy of it (fresh ids, no
|
|
222
|
+
* `componentId`, so editing the challenger never rewrites a shared component).
|
|
223
|
+
* Matches the editor's `ADD_MODULE_VARIANT_ARM` contract: an `audienceId`
|
|
224
|
+
* binds the seeded arm immediately; omitting it leaves the arm UNBOUND
|
|
225
|
+
* (`audienceId: ''`) — a draft that serves nobody until it's bound — never
|
|
226
|
+
* an empty `variants: []`.
|
|
227
|
+
*
|
|
228
|
+
* `ab_test` mints a FRESH `experimentId` and never carries a winner: an
|
|
229
|
+
* experiment id copied between pages silently enrols a second page's container
|
|
230
|
+
* in the first page's run.
|
|
231
|
+
*/
|
|
232
|
+
export async function handlePersonalizeModule(sdk, args) {
|
|
233
|
+
const item = await sdk.content.getById(args.id);
|
|
234
|
+
if (!item)
|
|
235
|
+
return errorResult('Content not found');
|
|
236
|
+
const layout = parseLayout(item) ?? { regions: {} };
|
|
237
|
+
const slot = findModuleSlot(layout, args.moduleId);
|
|
238
|
+
if (!slot) {
|
|
239
|
+
const why = describeIneligibility(layout, args.moduleId);
|
|
240
|
+
return errorResult(why ?? `Module '${args.moduleId}' not found in this layout`);
|
|
241
|
+
}
|
|
242
|
+
const detached = (node) => ({
|
|
243
|
+
id: crypto.randomUUID(),
|
|
244
|
+
type: node.type,
|
|
245
|
+
instanceId: crypto.randomUUID(),
|
|
246
|
+
props: JSON.parse(JSON.stringify(node.props ?? {})),
|
|
247
|
+
style: JSON.parse(JSON.stringify(node.style ?? {})),
|
|
248
|
+
});
|
|
249
|
+
const armId = crypto.randomUUID();
|
|
250
|
+
const container = {
|
|
251
|
+
id: crypto.randomUUID(),
|
|
252
|
+
type: 'moduleVariantContainer',
|
|
253
|
+
mode: args.mode,
|
|
254
|
+
...(args.mode === 'ab_test' ? { experimentId: crypto.randomUUID() } : {}),
|
|
255
|
+
defaultModule: slot.module,
|
|
256
|
+
variants: [{ id: armId, label: args.label ?? '', audienceId: args.audienceId ?? '', module: detached(slot.module) }],
|
|
257
|
+
};
|
|
258
|
+
slot.column.nodes[slot.index] = container;
|
|
259
|
+
const updated = await sdk.content.update(args.type, args.id, { layout });
|
|
260
|
+
if (!updated)
|
|
261
|
+
return errorResult('Failed to save layout');
|
|
262
|
+
return textResult({
|
|
263
|
+
container,
|
|
264
|
+
armId,
|
|
265
|
+
layout,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
155
268
|
// Export helpers for testing
|
|
156
269
|
export { findSection, findColumn, findModule, parseLayout };
|
|
157
270
|
// ─── Registration ───────────────────────────────────────────────────────────
|
|
@@ -164,16 +277,17 @@ export function registerLayoutTools(server, sdk) {
|
|
|
164
277
|
},
|
|
165
278
|
}, async (args) => handleGetLayout(sdk, args));
|
|
166
279
|
server.registerTool('update_layout', {
|
|
167
|
-
description: 'Replace the entire layout JSON for a content item. Shape: `{ regions: { [regionName]:
|
|
280
|
+
description: 'Replace the entire layout JSON for a content item. Shape: `{ regions: { [regionName]: RegionNode[] } }`, ' +
|
|
168
281
|
'where each section has `columns` (each `{ id, width, nodes }`; widths in a row should sum to 12) whose ' +
|
|
169
|
-
'`nodes` are ModuleNodes — call list_module_types for valid `type` values and their props.
|
|
170
|
-
'
|
|
171
|
-
'
|
|
172
|
-
'module-level `
|
|
173
|
-
'
|
|
174
|
-
'
|
|
175
|
-
"
|
|
176
|
-
'
|
|
282
|
+
'`nodes` are ModuleNodes — call list_module_types for valid `type` values and their props. ' +
|
|
283
|
+
'PERSONALIZATION COMES IN TWO GRANULARITIES, both server-resolved (no flash of default content): a region ' +
|
|
284
|
+
'can hold a section-level `variantContainer` (sibling of sections; `defaultSections` + `variants[].sections`), ' +
|
|
285
|
+
'and a COLUMN can hold a module-level `moduleVariantContainer` (`defaultModule` + `variants[].module`, one ' +
|
|
286
|
+
'module per arm, arm types may differ). Both take `mode: personalization | ab_test`, and `ab_test` requires ' +
|
|
287
|
+
'its own fresh `experimentId`. Containers never nest — neither inside the other, nor inside itself. ' +
|
|
288
|
+
"You rarely need to hand-author either shape: the editor's section chrome offers Personalize / A/B test on a " +
|
|
289
|
+
'section, its module chrome offers the same on a module, and the `personalize_module` tool does the module ' +
|
|
290
|
+
'wrap over the API. See get_building_patterns for the full reference.',
|
|
177
291
|
inputSchema: {
|
|
178
292
|
type: z.string().describe('Content type name'),
|
|
179
293
|
id: z.string().describe('Content ID'),
|
|
@@ -183,9 +297,9 @@ export function registerLayoutTools(server, sdk) {
|
|
|
183
297
|
server.registerTool('add_module', {
|
|
184
298
|
description: 'Add a module to a specific column in a layout row. `module` must be a `type` name from list_module_types ' +
|
|
185
299
|
'(built-ins) or a custom module defined in kywi.config.ts — call list_module_types first if you have not ' +
|
|
186
|
-
"already. `props` should match that module's props schema.
|
|
187
|
-
'variants, add a `variantContainer` row
|
|
188
|
-
'
|
|
300
|
+
"already. `props` should match that module's props schema. " +
|
|
301
|
+
'For section-level A/B tests or audience variants, add a `variantContainer` row (see update_layout); to vary ' +
|
|
302
|
+
'ONE module, add it normally and then call personalize_module.',
|
|
189
303
|
inputSchema: {
|
|
190
304
|
type: z.string().describe('Content type name'),
|
|
191
305
|
id: z.string().describe('Content ID'),
|
|
@@ -239,5 +353,23 @@ export function registerLayoutTools(server, sdk) {
|
|
|
239
353
|
rowId: z.string().describe('Row/section ID to remove'),
|
|
240
354
|
},
|
|
241
355
|
}, async (args) => handleRemoveRow(sdk, args));
|
|
356
|
+
server.registerTool('personalize_module', {
|
|
357
|
+
description: 'Turn ONE module in a layout into a personalized (audience) or A/B-tested module, in place. The module ' +
|
|
358
|
+
'becomes the Default arm of a `moduleVariantContainer`, so the page renders identically until the seeded arm ' +
|
|
359
|
+
'is bound; it always seeds one variant arm as a detached copy of the module — pass `audienceId` (and ' +
|
|
360
|
+
"optionally `label`) to bind it immediately, otherwise it starts unbound ('' — serves nobody until bound). " +
|
|
361
|
+
'A/B mode mints a fresh experiment id — never reuse one across pages. Refused for a module already inside a ' +
|
|
362
|
+
'personalized SECTION or an existing personalized module: personalization containers never nest. Edit each ' +
|
|
363
|
+
"arm's content afterwards with update_layout, or hand the page to the owner — the editor's module chrome " +
|
|
364
|
+
'offers the same Personalize / A/B test actions.',
|
|
365
|
+
inputSchema: {
|
|
366
|
+
type: z.string().describe('Content type name'),
|
|
367
|
+
id: z.string().describe('Content ID'),
|
|
368
|
+
moduleId: z.string().describe('The `id` of the ModuleNode to promote (not its instanceId)'),
|
|
369
|
+
mode: z.enum(['personalization', 'ab_test']).describe('personalization = by audience; ab_test = weighted split'),
|
|
370
|
+
audienceId: z.string().optional().describe('Bind the seeded variant to this audience id (personalization) or variant key (ab_test); omit to leave it unbound'),
|
|
371
|
+
label: z.string().optional().describe('Human label for the seeded variant'),
|
|
372
|
+
},
|
|
373
|
+
}, async (args) => handlePersonalizeModule(sdk, args));
|
|
242
374
|
}
|
|
243
375
|
//# sourceMappingURL=layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/site/tools/layout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/site/tools/layout.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kywi-software/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Model Context Protocol servers for Kywi CMS — a site server (content/nav/media over the REST API) and a developer server (kywi.config.ts scaffolding and mutation).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
49
49
|
"zod": "^3.25.0",
|
|
50
|
-
"@kywi-software/core": "0.
|
|
51
|
-
"@kywi-software/sdk": "0.
|
|
50
|
+
"@kywi-software/core": "0.14.0",
|
|
51
|
+
"@kywi-software/sdk": "0.14.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/node": "^20.0.0",
|