@forumone/throughline 1.7.0 → 1.8.0-next-5b5ee85

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/components/options.d.ts +12 -0
  3. package/dist/components/options.d.ts.map +1 -1
  4. package/dist/components/options.js.map +1 -1
  5. package/dist/components/plugin.d.ts +2 -0
  6. package/dist/components/plugin.d.ts.map +1 -1
  7. package/dist/components/plugin.js +34 -2
  8. package/dist/components/plugin.js.map +1 -1
  9. package/dist/components/tools/recipes.d.ts +33 -0
  10. package/dist/components/tools/recipes.d.ts.map +1 -0
  11. package/dist/components/tools/recipes.js +167 -0
  12. package/dist/components/tools/recipes.js.map +1 -0
  13. package/dist/components/tools/validate-composition.d.ts +2 -0
  14. package/dist/components/tools/validate-composition.d.ts.map +1 -1
  15. package/dist/components/tools/validate-composition.js +2 -1
  16. package/dist/components/tools/validate-composition.js.map +1 -1
  17. package/dist/components/validation/composition.d.ts +6 -0
  18. package/dist/components/validation/composition.d.ts.map +1 -1
  19. package/dist/components/validation/composition.js +15 -1
  20. package/dist/components/validation/composition.js.map +1 -1
  21. package/dist/content/blocks.js +1 -1
  22. package/dist/content/blocks.js.map +1 -1
  23. package/dist/content/guards.d.ts +3 -1
  24. package/dist/content/guards.d.ts.map +1 -1
  25. package/dist/content/guards.js +5 -1
  26. package/dist/content/guards.js.map +1 -1
  27. package/dist/content/options.d.ts +7 -0
  28. package/dist/content/options.d.ts.map +1 -1
  29. package/dist/content/plugin.d.ts.map +1 -1
  30. package/dist/content/plugin.js +1 -0
  31. package/dist/content/plugin.js.map +1 -1
  32. package/dist/content/tools.d.ts +2 -0
  33. package/dist/content/tools.d.ts.map +1 -1
  34. package/dist/content/tools.js.map +1 -1
  35. package/dist/content/write.js +1 -1
  36. package/dist/content/write.js.map +1 -1
  37. package/dist/publishing/options.d.ts +21 -0
  38. package/dist/publishing/options.d.ts.map +1 -1
  39. package/dist/publishing/options.js.map +1 -1
  40. package/dist/publishing/pipeline/steps/composition.d.ts +5 -0
  41. package/dist/publishing/pipeline/steps/composition.d.ts.map +1 -1
  42. package/dist/publishing/pipeline/steps/composition.js +89 -13
  43. package/dist/publishing/pipeline/steps/composition.js.map +1 -1
  44. package/dist/throughline.d.ts +11 -1
  45. package/dist/throughline.d.ts.map +1 -1
  46. package/dist/throughline.js +8 -1
  47. package/dist/throughline.js.map +1 -1
  48. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @forumone/throughline
2
2
 
3
+ ## 1.8.0-next-5b5ee85
4
+
5
+ ### Minor Changes
6
+
7
+ - 204009a: The publish gate for composed sections. The new `publishing.recipes` option names the block that holds a recipe and the collection recipes live in. With it, the composition step checks that each such block's recipe exists, is approved, still passes `lintRecipe` against the current manifest, and has its required content filled, instead of calling the block an unknown component. The components plugin now also attaches its loaded manifest for this. The composition validator also checks placement: a component placed only `inline` can't be a block on a page by itself.
8
+ - 5b5ee85: Adds the recipe MCP tools to the components plugin (`get_recipe_vocabulary`, `validate_recipe`, and `save_recipe`, which writes drafts only), turned on with the new `throughline({ recipes: { blockType, collection } })`. The same setting configures the publish gate and lets `validate_composition` and the content write tools treat that block as a composed section instead of an unknown component.
9
+
10
+ **Upgrading: a migration.** The key collection gains three checkbox columns. Run `migrate:create` and apply it before deploying.
11
+
12
+ ### Patch Changes
13
+
14
+ - @forumone/throughline-design-system@1.8.0-next-5b5ee85
15
+
3
16
  ## 1.7.0
4
17
 
5
18
  ### Patch Changes
@@ -29,6 +29,18 @@ export interface ComponentsPluginOptions extends Omit<BaseCorePluginOptions, 'ro
29
29
  manifest: ManifestSource;
30
30
  /** Optional: how the plugin matches intents to components. Defaults to TF-IDF. */
31
31
  matching?: MatchingConfig;
32
+ /**
33
+ * Optional: composed sections (forumone-2026#801). With it, the plugin adds
34
+ * `get_recipe_vocabulary`, `validate_recipe` and `save_recipe`, and
35
+ * `validate_composition` treats `blockType` as a composed section rather than
36
+ * an unknown component.
37
+ */
38
+ recipes?: {
39
+ /** The block a composed section is stored as. */
40
+ blockType: string;
41
+ /** The collection `save_recipe` writes drafts to. */
42
+ collection: string;
43
+ };
32
44
  /**
33
45
  * Where to put this server's MCP tools so Payload's own MCP plugin can serve
34
46
  * them.
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/components/options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAA;AAE5E,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAOD,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC;IACzF,6DAA6D;IAC7D,QAAQ,EAAE,cAAc,CAAA;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC5B;AAgBD,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASxC,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,uBAAuB,CAOzF"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/components/options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAA;AAE5E,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAOD,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC;IACzF,6DAA6D;IAC7D,QAAQ,EAAE,cAAc,CAAA;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QACR,iDAAiD;QACjD,SAAS,EAAE,MAAM,CAAA;QACjB,qDAAqD;QACrD,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;IAED;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC5B;AAgBD,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASxC,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,uBAAuB,CAOzF"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/components/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA8CvB,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACxD,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QACrB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACxD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,oBAAoB;IAC9B,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAC3D,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgC;IAC9D,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/components/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA0DvB,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACxD,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QACrB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACxD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,oBAAoB;IAC9B,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAC3D,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgC;IAC9D,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import type { CorePlugin } from '../plugin-contract/index.js';
2
2
  import { type ComponentsPluginOptions } from './options.js';
3
+ /** Where the loaded manifest is attached, for peers that need the manifest itself. */
4
+ export declare const MANIFEST_SYMBOL: unique symbol;
3
5
  export declare const componentsPlugin: CorePlugin<ComponentsPluginOptions>;
4
6
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/components/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAI7D,OAAO,EAAE,KAAK,uBAAuB,EAAmB,MAAM,cAAc,CAAA;AA6B5E,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,uBAAuB,CAsE9D,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/components/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAI7D,OAAO,EAAE,KAAK,uBAAuB,EAAmB,MAAM,cAAc,CAAA;AAmC5E,sFAAsF;AACtF,eAAO,MAAM,eAAe,eAA0D,CAAA;AAEtF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,uBAAuB,CA2F9D,CAAA"}
@@ -4,6 +4,7 @@ import { getAuditWriter } from '../audit/plugin.js';
4
4
  import { validateOptions } from './options.js';
5
5
  import { createManifestLoader } from './manifest-source.js';
6
6
  import { createTfidfMatcher } from './matching/index.js';
7
+ import { RECIPE_TOOL_DESCRIPTORS, createGetRecipeVocabularyTool, createSaveRecipeTool, createValidateRecipeTool, } from './tools/recipes.js';
7
8
  import { COMPONENTS_TOOL_DESCRIPTORS, createFindAntiPatternTool, createGetContractTool, createGetTokensTool, createGetVariantsTool, createListComponentsTool, createSuggestForIntentTool, createValidateCompositionTool, } from './tools/index.js';
8
9
  import { validateComposition, } from './validation/composition.js';
9
10
  const PLUGIN_ID = '@forumone/throughline/components';
@@ -15,6 +16,8 @@ const PLUGIN_VERSION = '0.1.0';
15
16
  * in the publishing package.
16
17
  */
17
18
  const VALIDATOR_SYMBOL = Symbol.for('@forumone/throughline/components-validator');
19
+ /** Where the loaded manifest is attached, for peers that need the manifest itself. */
20
+ export const MANIFEST_SYMBOL = Symbol.for('@forumone/throughline/components-manifest');
18
21
  export const componentsPlugin = (rawOptions) => (incomingConfig) => {
19
22
  if (rawOptions.enabled === false)
20
23
  return incomingConfig;
@@ -27,7 +30,9 @@ export const componentsPlugin = (rawOptions) => (incomingConfig) => {
27
30
  denies any tool it has no checkbox for. This plugin must therefore come
28
31
  before `mcpPlugin` in the host's array.
29
32
  */
30
- options.mcpTools?.declare(COMPONENTS_TOOL_DESCRIPTORS, { serverName: 'components' });
33
+ options.mcpTools?.declare(options.recipes
34
+ ? [...COMPONENTS_TOOL_DESCRIPTORS, ...RECIPE_TOOL_DESCRIPTORS]
35
+ : COMPONENTS_TOOL_DESCRIPTORS, { serverName: 'components' });
31
36
  return {
32
37
  ...incomingConfig,
33
38
  onInit: async (payload) => {
@@ -54,8 +59,24 @@ export const componentsPlugin = (rawOptions) => (incomingConfig) => {
54
59
  createGetVariantsTool(loader),
55
60
  createGetTokensTool(loader),
56
61
  createSuggestForIntentTool({ loader, matcher, auditWriter, maxRecommendations }),
57
- createValidateCompositionTool({ loader, auditWriter }),
62
+ createValidateCompositionTool({
63
+ loader,
64
+ auditWriter,
65
+ ...(options.recipes ? { composedBlockType: options.recipes.blockType } : {}),
66
+ }),
58
67
  createFindAntiPatternTool({ loader, auditWriter }),
68
+ ...(options.recipes
69
+ ? [
70
+ createGetRecipeVocabularyTool({ loader }),
71
+ createValidateRecipeTool({ loader, auditWriter }),
72
+ createSaveRecipeTool({
73
+ payload,
74
+ loader,
75
+ auditWriter,
76
+ collection: options.recipes.collection,
77
+ }),
78
+ ]
79
+ : []),
59
80
  ];
60
81
  // Payload's own MCP plugin, and the only transport these tools have.
61
82
  // `onInit` is both the earliest they can exist and still early enough
@@ -91,5 +112,16 @@ function attachValidator(payload, loader) {
91
112
  writable: false,
92
113
  configurable: false,
93
114
  });
115
+ /*
116
+ The manifest itself, for the publish step's recipe check (forumone-2026#801):
117
+ a composed section is linted against the design system as it is at publish,
118
+ which is this loader's answer, not a copy taken when the recipe was saved.
119
+ */
120
+ Object.defineProperty(payload, MANIFEST_SYMBOL, {
121
+ value: async () => (await loader.get()).raw,
122
+ enumerable: false,
123
+ writable: false,
124
+ configurable: false,
125
+ });
94
126
  }
95
127
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/components/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/components/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type Payload } from 'payload';
2
+ import type { AuditWriter } from '../../audit/writer.js';
3
+ import type { McpToolDescriptor } from '../../mcp/collector.js';
4
+ import type { McpToolContext, McpToolDefinition } from '../../plugin-contract/mcp.js';
5
+ import type { ManifestLoader } from '../manifest-source.js';
6
+ export declare const RECIPE_TOOLS: {
7
+ readonly getRecipeVocabulary: {
8
+ readonly name: "get_recipe_vocabulary";
9
+ readonly description: "What a composed section (a recipe) may be made of: every primitive — layouts with their slots, content pieces with the kind of field they show — with the exact values each prop allows; the components that may be placed inside a section, with their fields and variants; and the rules a recipe is held to. Read this before writing one.";
10
+ };
11
+ readonly validateRecipe: {
12
+ readonly name: "validate_recipe";
13
+ readonly description: "Checks a recipe — { contract, tree } — against the design system as it is now, without saving it. Returns every problem with its path in the tree and what to do instead. Run it until it returns none, then save_recipe.";
14
+ };
15
+ readonly saveRecipe: {
16
+ readonly name: "save_recipe";
17
+ readonly description: "Saves a recipe as a draft, or updates a draft one by id. Refused if it does not pass validate_recipe, or if the recipe is approved (an approved recipe does not change: save a new one). A person approves it in the admin; until then no page using it can be published.";
18
+ };
19
+ };
20
+ export declare const RECIPE_TOOL_DESCRIPTORS: readonly McpToolDescriptor[];
21
+ export interface RecipeToolDeps {
22
+ payload: Payload;
23
+ loader: ManifestLoader;
24
+ auditWriter: AuditWriter;
25
+ /** The collection recipes are saved in. */
26
+ collection: string;
27
+ /** Who may save. Default: a user with the `admin` or `editor` role. */
28
+ canUse?: (ctx: McpToolContext) => boolean;
29
+ }
30
+ export declare function createGetRecipeVocabularyTool(deps: Pick<RecipeToolDeps, 'loader'>): McpToolDefinition;
31
+ export declare function createValidateRecipeTool(deps: Pick<RecipeToolDeps, 'loader' | 'auditWriter'>): McpToolDefinition;
32
+ export declare function createSaveRecipeTool(deps: RecipeToolDeps): McpToolDefinition;
33
+ //# sourceMappingURL=recipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../../src/components/tools/recipes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,OAAO,EAAuB,MAAM,SAAS,CAAA;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG/D,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAc3D,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAgB6B,CAAA;AAEtD,eAAO,MAAM,uBAAuB,EAAE,SAAS,iBAAiB,EAAgC,CAAA;AAEhG,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAA;CAC1C;AAgBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,iBAAiB,CA6BrG;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,aAAa,CAAC,GACnD,iBAAiB,CAmBnB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,iBAAiB,CA+E5E"}
@@ -0,0 +1,167 @@
1
+ import { z } from 'zod';
2
+ import { MAX_DEPTH, MAX_NODES, lintRecipe } from '@forumone/throughline-design-system/recipes';
3
+ import { ValidationError } from 'payload';
4
+ import { auditContext } from '../../mcp/audit-context.js';
5
+ import { deniedEnvelope } from '../../mcp/envelope.js';
6
+ import { withMeta } from '../../mcp/meta.js';
7
+ /*
8
+ The tools for composing a section the design system does not have
9
+ (forumone-2026#801): what a recipe may be made of, whether one passes, and
10
+ saving one as a draft.
11
+
12
+ A recipe is linted against the manifest as it is now on every one of these,
13
+ so `validate_recipe` is the loop an agent runs until the errors are gone, and
14
+ `save_recipe` refuses what it would refuse. Saving never approves: a person
15
+ does that in the admin, once, and only then can a page using the recipe go
16
+ live.
17
+ */
18
+ export const RECIPE_TOOLS = {
19
+ getRecipeVocabulary: {
20
+ name: 'get_recipe_vocabulary',
21
+ description: 'What a composed section (a recipe) may be made of: every primitive — layouts with their slots, content pieces with the kind of field they show — with the exact values each prop allows; the components that may be placed inside a section, with their fields and variants; and the rules a recipe is held to. Read this before writing one.',
22
+ },
23
+ validateRecipe: {
24
+ name: 'validate_recipe',
25
+ description: 'Checks a recipe — { contract, tree } — against the design system as it is now, without saving it. Returns every problem with its path in the tree and what to do instead. Run it until it returns none, then save_recipe.',
26
+ },
27
+ saveRecipe: {
28
+ name: 'save_recipe',
29
+ description: 'Saves a recipe as a draft, or updates a draft one by id. Refused if it does not pass validate_recipe, or if the recipe is approved (an approved recipe does not change: save a new one). A person approves it in the admin; until then no page using it can be published.',
30
+ },
31
+ };
32
+ export const RECIPE_TOOL_DESCRIPTORS = Object.values(RECIPE_TOOLS);
33
+ const recipeShape = {
34
+ contract: z
35
+ .record(z.string(), z.unknown())
36
+ .describe('The provisional component contract: name, intent, content.fields, antiExamples…'),
37
+ tree: z
38
+ .record(z.string(), z.unknown())
39
+ .describe('The root node, usually { primitive: "Section", slots: { children: [...] } }.'),
40
+ };
41
+ function editorOrAdmin(ctx) {
42
+ const roles = ctx.user?.roles ?? [];
43
+ return roles.includes('admin') || roles.includes('editor');
44
+ }
45
+ export function createGetRecipeVocabularyTool(deps) {
46
+ return {
47
+ ...RECIPE_TOOLS.getRecipeVocabulary,
48
+ inputSchema: z.object({}),
49
+ handler: async () => {
50
+ const manifest = (await deps.loader.get()).raw;
51
+ const components = Object.values(manifest.components)
52
+ .filter((c) => c.composition.placement.includes('inline'))
53
+ .map((c) => ({
54
+ name: c.name,
55
+ description: c.description,
56
+ fields: c.content.fields.map((f) => ({ name: f.name, type: f.type, required: f.required })),
57
+ ...(c.content.variants?.length ? { variants: c.content.variants.map((v) => v.name) } : {}),
58
+ }));
59
+ return {
60
+ primitives: Object.values(manifest.primitives ?? {}),
61
+ components,
62
+ rules: [
63
+ 'The root is a layout primitive, usually Section.',
64
+ 'A primitive node is { primitive, props?, slots?, content? }; a component node is { component, fields }.',
65
+ 'Every word comes from one of the contract’s content fields: bind it with { field: "<name>" }. Every declared field must be shown.',
66
+ 'A prop takes only a value its primitive lists. A component field may be a literal only if it is a boolean, or a select whose value is one of the component’s variants.',
67
+ 'Headings start at level 2 and do not skip a level. An image field is required.',
68
+ `At most ${MAX_DEPTH} levels deep and ${MAX_NODES} nodes.`,
69
+ 'The contract’s placement is ["section"], its intent at least 50 characters, and it has at least one anti-example.',
70
+ ],
71
+ };
72
+ },
73
+ };
74
+ }
75
+ export function createValidateRecipeTool(deps) {
76
+ const inputSchema = withMeta(recipeShape);
77
+ return {
78
+ ...RECIPE_TOOLS.validateRecipe,
79
+ inputSchema,
80
+ handler: async (input, ctx) => {
81
+ const issues = lintRecipe({ contract: input.contract, tree: input.tree }, (await deps.loader.get()).raw);
82
+ await deps.auditWriter({
83
+ ...auditContext(ctx, input._meta),
84
+ action: 'design.validate',
85
+ mcpServer: 'component',
86
+ mcpTool: RECIPE_TOOLS.validateRecipe.name,
87
+ });
88
+ return { valid: !issues.some((i) => i.severity === 'error'), issues };
89
+ },
90
+ };
91
+ }
92
+ export function createSaveRecipeTool(deps) {
93
+ const inputSchema = withMeta({
94
+ ...recipeShape,
95
+ id: z
96
+ .union([z.string(), z.number()])
97
+ .optional()
98
+ .describe('A draft recipe to update. Omit to save a new one.'),
99
+ });
100
+ const canUse = deps.canUse ?? editorOrAdmin;
101
+ return {
102
+ ...RECIPE_TOOLS.saveRecipe,
103
+ inputSchema,
104
+ requiredScope: 'content.write',
105
+ handler: async (input, ctx) => {
106
+ if (!ctx.user) {
107
+ return deniedEnvelope('This key is not tied to a person, and a recipe is saved as a person.');
108
+ }
109
+ if (!canUse(ctx))
110
+ return deniedEnvelope('Only admins and editors can save recipes.');
111
+ const issues = lintRecipe({ contract: input.contract, tree: input.tree }, (await deps.loader.get()).raw).filter((i) => i.severity === 'error');
112
+ if (issues.length > 0) {
113
+ return { error: `The recipe has ${issues.length} problem(s). Nothing was saved.`, issues };
114
+ }
115
+ const user = ctx.user;
116
+ const data = { contract: input.contract, tree: input.tree };
117
+ let doc;
118
+ try {
119
+ doc = (input.id === undefined
120
+ ? await deps.payload.create({
121
+ collection: deps.collection,
122
+ data: data,
123
+ overrideAccess: false,
124
+ user,
125
+ })
126
+ : await deps.payload.update({
127
+ collection: deps.collection,
128
+ id: input.id,
129
+ data: data,
130
+ overrideAccess: false,
131
+ overrideLock: false,
132
+ user,
133
+ }));
134
+ }
135
+ catch (error) {
136
+ if (error instanceof ValidationError) {
137
+ return {
138
+ error: error.message,
139
+ fields: (error.data?.errors ?? []).map((e) => ({ field: e.path, message: e.message })),
140
+ };
141
+ }
142
+ const status = error?.status;
143
+ if (status === 403 || status === 404 || status === 423)
144
+ return { error: error.message };
145
+ throw error;
146
+ }
147
+ const id = doc['id'];
148
+ await deps.auditWriter({
149
+ ...auditContext(ctx, input._meta),
150
+ action: input.id === undefined ? 'content.create' : 'content.update',
151
+ mcpServer: 'component',
152
+ mcpTool: RECIPE_TOOLS.saveRecipe.name,
153
+ targetCollection: deps.collection,
154
+ targetId: String(id),
155
+ targetTitle: typeof doc['name'] === 'string' ? doc['name'] : undefined,
156
+ });
157
+ return {
158
+ id,
159
+ name: doc['name'],
160
+ status: doc['status'] ?? 'draft',
161
+ adminUrl: `${deps.payload.config.routes.admin}/collections/${deps.collection}/${encodeURIComponent(String(id))}`,
162
+ next: 'A person approves the recipe in the admin. Until then a page can use it in a draft, but not publish.',
163
+ };
164
+ },
165
+ };
166
+ }
167
+ //# sourceMappingURL=recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../src/components/tools/recipes.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import type { ManifestLoader } from '../manifest-source.js';
4
4
  export interface ValidateCompositionDeps {
5
5
  loader: ManifestLoader;
6
6
  auditWriter: AuditWriter;
7
+ /** A block type that is a composed section (forumone-2026#801), not a component. */
8
+ composedBlockType?: string;
7
9
  }
8
10
  export declare function createValidateCompositionTool(deps: ValidateCompositionDeps): McpToolDefinition;
9
11
  //# sourceMappingURL=validate-composition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-composition.d.ts","sourceRoot":"","sources":["../../../src/components/tools/validate-composition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAI3D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,uBAAuB,GAAG,iBAAiB,CA6B9F"}
1
+ {"version":3,"file":"validate-composition.d.ts","sourceRoot":"","sources":["../../../src/components/tools/validate-composition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAI3D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,uBAAuB,GAAG,iBAAiB,CAgC9F"}
@@ -17,7 +17,8 @@ export function createValidateCompositionTool(deps) {
17
17
  inputSchema,
18
18
  handler: async (input, ctx) => {
19
19
  const manifest = await deps.loader.get();
20
- const result = validateComposition({ blocks: input.blocks }, manifest);
20
+ const blocks = input.blocks.map((block) => block.type === deps.composedBlockType ? { type: block.type, composed: true } : block);
21
+ const result = validateComposition({ blocks }, manifest);
21
22
  await deps.auditWriter({
22
23
  ...auditContext(ctx, input._meta),
23
24
  action: 'design.validate',
@@ -1 +1 @@
1
- {"version":3,"file":"validate-composition.js","sourceRoot":"","sources":["../../../src/components/tools/validate-composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAOnD,MAAM,UAAU,6BAA6B,CAAC,IAA6B;IACzE,MAAM,WAAW,GAAG,QAAQ,CAAC;QAC3B,MAAM,EAAE,CAAC;aACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC,CACH;aACA,GAAG,CAAC,CAAC,CAAC;KACV,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,gBAAgB,CAAC,mBAAmB;QACvC,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YACxC,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAA;YAEtE,MAAM,IAAI,CAAC,WAAW,CAAC;gBACrB,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;gBACjC,MAAM,EAAE,iBAAiB;gBACzB,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,sBAAsB;aAChC,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"validate-composition.js","sourceRoot":"","sources":["../../../src/components/tools/validate-composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AASnD,MAAM,UAAU,6BAA6B,CAAC,IAA6B;IACzE,MAAM,WAAW,GAAG,QAAQ,CAAC;QAC3B,MAAM,EAAE,CAAC;aACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC,CACH;aACA,GAAG,CAAC,CAAC,CAAC;KACV,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,gBAAgB,CAAC,mBAAmB;QACvC,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAqD,EAAE,EAAE,CACxF,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CACrF,CAAA;YACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAA;YAExD,MAAM,IAAI,CAAC,WAAW,CAAC;gBACrB,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;gBACjC,MAAM,EAAE,iBAAiB;gBACzB,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,sBAAsB;aAChC,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -2,6 +2,12 @@ import type { LoadedManifest } from '@forumone/throughline-design-system/contrac
2
2
  export interface CompositionBlock {
3
3
  type: string;
4
4
  variant?: string;
5
+ /**
6
+ * A composed section (forumone-2026#801): a recipe, not a component, so it
7
+ * has no contract here. The publish step checks the recipe itself; this only
8
+ * keeps its place in the order, so every block's index stays right.
9
+ */
10
+ composed?: boolean;
5
11
  }
6
12
  export interface CompositionInput {
7
13
  blocks: CompositionBlock[];
@@ -1 +1 @@
1
- {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../../src/components/validation/composition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAElF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,cAAc,GACvB,iBAAiB,CA+EnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,cAAc,GACvB,gBAAgB,EAAE,CAmDpB"}
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../../src/components/validation/composition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAElF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,cAAc,GACvB,iBAAiB,CA8FnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,cAAc,GACvB,gBAAgB,EAAE,CAmDpB"}
@@ -8,7 +8,7 @@ export function validateComposition(input, manifest) {
8
8
  const counts = new Map();
9
9
  for (let i = 0; i < input.blocks.length; i++) {
10
10
  const block = input.blocks[i];
11
- if (!block)
11
+ if (!block || block.composed)
12
12
  continue;
13
13
  counts.set(block.type, (counts.get(block.type) ?? 0) + 1);
14
14
  const contract = manifest.getComponent(block.type);
@@ -21,6 +21,20 @@ export function validateComposition(input, manifest) {
21
21
  });
22
22
  continue;
23
23
  }
24
+ /*
25
+ A component placed only `inline` lives inside another one — a Button in a
26
+ hero, a Card in a grid — and on a page by itself it is a fragment of a
27
+ layout with nothing around it. Nothing checked this before.
28
+ */
29
+ const placement = contract.composition.placement;
30
+ if (!placement.includes('page') && !placement.includes('section')) {
31
+ issues.push({
32
+ severity: 'error',
33
+ rule: 'placement',
34
+ message: `"${block.type}" is placed inside other components, not on a page by itself`,
35
+ blockIndex: i,
36
+ });
37
+ }
24
38
  if (block.variant && contract.content.variants) {
25
39
  const has = contract.content.variants.some((v) => v.name === block.variant);
26
40
  if (!has) {
@@ -1 +1 @@
1
- {"version":3,"file":"composition.js","sourceRoot":"","sources":["../../../src/components/validation/composition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composition.js","sourceRoot":"","sources":["../../../src/components/validation/composition.ts"],"names":[],"mappings":"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"}
@@ -163,7 +163,7 @@ async function operate(deps, ctx, input, tool, change) {
163
163
  };
164
164
  }
165
165
  }
166
- const issues = await compositionErrors(deps.payload, changed.rows);
166
+ const issues = await compositionErrors(deps.payload, changed.rows, deps.composedBlockType);
167
167
  if (issues && issues.length > 0) {
168
168
  return {
169
169
  error: `${input.field} would break ${issues.length} composition rule${issues.length === 1 ? '' : 's'}. Nothing was saved.`,
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/content/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/content/blocks.ts"],"names":[],"mappings":"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"}
@@ -41,5 +41,7 @@ export interface CompositionIssue {
41
41
  * stop a publish and do not stop a draft. `undefined` when there is no
42
42
  * validator, which is a site without the components plugin.
43
43
  */
44
- export declare function compositionErrors(payload: Payload, rows: readonly unknown[]): Promise<CompositionIssue[] | undefined>;
44
+ export declare function compositionErrors(payload: Payload, rows: readonly unknown[],
45
+ /** A composed section's block type: kept in the order, not checked as a component. */
46
+ composedBlockType?: string): Promise<CompositionIssue[] | undefined>;
45
47
  //# sourceMappingURL=guards.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/content/guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAkB,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AA8BpF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,YAAY,EAAE,CAUhB;AAQD,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAoBD,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,qDAAqD;IACrD,IAAI,EAAE,OAAO,CAAA;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;CACd;AAWD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAqCjC;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU;;;;EAQpF;AAID;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EACzC,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,WAAW,EAAE,SAAS,OAAO,EAAE,EAC/B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EACpC,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAmBzC"}
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/content/guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAkB,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AA8BpF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,YAAY,EAAE,CAUhB;AAQD,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAoBD,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,qDAAqD;IACrD,IAAI,EAAE,OAAO,CAAA;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;CACd;AAWD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAqCjC;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU;;;;EAQpF;AAID;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EACzC,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,WAAW,EAAE,SAAS,OAAO,EAAE,EAC/B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EACpC,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,OAAO,EAAE;AACxB,sFAAsF;AACtF,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAoBzC"}
@@ -152,7 +152,9 @@ export async function disallowedBlocks(field, rows, currentRows, registry, req)
152
152
  * stop a publish and do not stop a draft. `undefined` when there is no
153
153
  * validator, which is a site without the components plugin.
154
154
  */
155
- export async function compositionErrors(payload, rows) {
155
+ export async function compositionErrors(payload, rows,
156
+ /** A composed section's block type: kept in the order, not checked as a component. */
157
+ composedBlockType) {
156
158
  const validator = payload[COMPONENTS_VALIDATOR_SYMBOL];
157
159
  if (!validator)
158
160
  return undefined;
@@ -160,6 +162,8 @@ export async function compositionErrors(payload, rows) {
160
162
  const r = row;
161
163
  if (typeof r?.blockType !== 'string')
162
164
  return [];
165
+ if (r.blockType === composedBlockType)
166
+ return [{ type: r.blockType, composed: true }];
163
167
  return [typeof r.variant === 'string' ? { type: r.blockType, variant: r.variant } : { type: r.blockType }];
164
168
  });
165
169
  if (blocks.length === 0)