@metaobjectsdev/cli 0.15.19-rc.1 → 0.15.20

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.
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAiDA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgShF"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAuDA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6ThF"}
@@ -20,7 +20,7 @@ import { buildKyselyFromUrl } from "../lib/kysely.js";
20
20
  import { tokensToAllowOptions, describeChange } from "../lib/allow.js";
21
21
  import { computeDrift } from "@metaobjectsdev/migrate-ts";
22
22
  import { loadMemory } from "@metaobjectsdev/sdk";
23
- import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_PROMPT, TEMPLATE_SUBTYPE_OUTPUT, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_REQUIRED_SLOTS, TEMPLATE_ATTR_REQUIRED_TAGS, } from "@metaobjectsdev/metadata";
23
+ import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_PROMPT, TEMPLATE_SUBTYPE_OUTPUT, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_REQUIRED_SLOTS, TEMPLATE_ATTR_REQUIRED_TAGS, TEMPLATE_ATTR_KIND, TEMPLATE_KIND_EMAIL, TEMPLATE_KIND_DEFAULT, TEMPLATE_ATTR_SUBJECT_REF, TEMPLATE_ATTR_HTML_BODY_REF, TEMPLATE_ATTR_TEXT_BODY_REF, } from "@metaobjectsdev/metadata";
24
24
  import { verify, ERR_REQUIRED_SLOT_UNUSED, ERR_PARTIAL_UNRESOLVED } from "@metaobjectsdev/render";
25
25
  const DEFAULT_PROMPTS_DIR = "prompts";
26
26
  // Loader error code (from @metaobjectsdev/metadata's ERROR_CODES) raised by the
@@ -146,56 +146,91 @@ export async function verifyCommand(args, cwd) {
146
146
  let warnCount = 0;
147
147
  let checked = 0;
148
148
  for (const tmpl of templates) {
149
- // ADR-0039: effective attrs — @textRef/@payloadRef may be inherited via an abstract template.
150
- const textRef = tmpl.attr(TEMPLATE_ATTR_TEXT_REF);
149
+ // ADR-0039: effective attrs — @payloadRef may be inherited via an abstract template.
151
150
  const payloadRef = tmpl.attr(TEMPLATE_ATTR_PAYLOAD_REF);
152
- // Absent/typeless required attrs are a loader-schema concern, not verify's.
153
- if (typeof textRef !== "string" || typeof payloadRef !== "string")
151
+ // A typeless/absent @payloadRef is a loader-schema concern, not verify's. Every
152
+ // renderable template needs it (do NOT gate on @textRef an @kind=email output
153
+ // has no @textRef, and gating on it silently skipped email drift; #193).
154
+ if (typeof payloadRef !== "string")
154
155
  continue;
155
- // Both subtypes verify that @payloadRef resolves to a loaded object.value.
156
- // The render-engine `verify()` would also throw on missing refs, but the
157
- // output branch doesn't call it explicit check keeps the error symmetric.
158
- const fieldTree = derivePayloadFieldTree(root, payloadRef);
156
+ // @payloadRef must resolve to a loaded object.value (drives the field tree
157
+ // every render-engine drift check runs against).
158
+ const fieldTree = derivePayloadFieldTree(root, payloadRef, tmpl.package ?? tmpl.fileDefaultPackage ?? "");
159
159
  if (fieldTree.length === 0) {
160
160
  log.error(`[${tmpl.name}] (${tmpl.subType}) ${ERR_PARTIAL_UNRESOLVED}: ` +
161
161
  `@payloadRef "${payloadRef}" did not resolve to a loaded object.value`);
162
162
  errorCount++;
163
163
  continue;
164
164
  }
165
+ // Collect every renderable mustache ref for this template + whether the
166
+ // prompt-only @requiredSlots/@requiredTags rules apply — mirroring the
167
+ // gen-time render-helper drift gate so `verify` and `gen` agree (#193):
168
+ // template.prompt → the single @textRef (WITH required slots/tags).
169
+ // template.output document (default) → the @textRef body.
170
+ // template.output @kind=email → @subjectRef + @htmlBodyRef + optional @textBodyRef.
171
+ let refs = [];
172
+ let promptRules = false;
165
173
  if (tmpl.subType === TEMPLATE_SUBTYPE_PROMPT) {
166
- // Render-engine drift check: template variables payload field names.
167
- const text = provider.resolve(textRef);
174
+ // ADR-0039: effective attrs @textRef may be inherited via an abstract template.
175
+ const textRef = tmpl.attr(TEMPLATE_ATTR_TEXT_REF);
176
+ if (typeof textRef === "string")
177
+ refs = [{ label: "prompt", ref: textRef }];
178
+ promptRules = true;
179
+ }
180
+ else if (tmpl.subType === TEMPLATE_SUBTYPE_OUTPUT) {
181
+ // ADR-0039: effective attrs — @kind / part refs may be inherited via an abstract template.
182
+ const kind = (tmpl.attr(TEMPLATE_ATTR_KIND) ?? TEMPLATE_KIND_DEFAULT).toLowerCase();
183
+ if (kind === TEMPLATE_KIND_EMAIL) {
184
+ const subjectRef = tmpl.attr(TEMPLATE_ATTR_SUBJECT_REF);
185
+ const htmlBodyRef = tmpl.attr(TEMPLATE_ATTR_HTML_BODY_REF);
186
+ const textBodyRef = tmpl.attr(TEMPLATE_ATTR_TEXT_BODY_REF);
187
+ if (typeof subjectRef === "string")
188
+ refs.push({ label: "email/subject", ref: subjectRef });
189
+ if (typeof htmlBodyRef === "string")
190
+ refs.push({ label: "email/html", ref: htmlBodyRef });
191
+ if (typeof textBodyRef === "string")
192
+ refs.push({ label: "email/text", ref: textBodyRef });
193
+ }
194
+ else {
195
+ const textRef = tmpl.attr(TEMPLATE_ATTR_TEXT_REF);
196
+ if (typeof textRef === "string")
197
+ refs = [{ label: "document", ref: textRef }];
198
+ }
199
+ }
200
+ else {
201
+ continue; // unknown subtype — loader-schema concern.
202
+ }
203
+ // No renderable body ref present — absent required refs are a loader-schema
204
+ // concern, not verify's (mirrors the pre-#193 behavior for a bodyless template).
205
+ if (refs.length === 0)
206
+ continue;
207
+ // Slot/tag requirements are a template.prompt concept; the render-helper's
208
+ // email/document gate does NOT apply them per part (they would false-flag a
209
+ // slot as unused in each part). So only the prompt path carries them.
210
+ // ADR-0039: effective attrs — @requiredSlots/@requiredTags may be inherited.
211
+ const requiredSlots = promptRules ? attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_SLOTS)) : [];
212
+ const requiredTags = promptRules ? attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_TAGS)) : [];
213
+ for (const { label, ref } of refs) {
214
+ // Render-engine drift check: mustache variables ↔ payload field names.
215
+ const text = provider.resolve(ref);
168
216
  if (text === undefined) {
169
- log.error(`[${tmpl.name}] (prompt) ${ERR_PARTIAL_UNRESOLVED}: @textRef "${textRef}" did not resolve under ${promptsDir}`);
217
+ log.error(`[${tmpl.name}] (${label}) ${ERR_PARTIAL_UNRESOLVED}: ref "${ref}" did not resolve under ${promptsDir}`);
170
218
  errorCount++;
171
219
  continue;
172
220
  }
173
- // ADR-0039: effective attrs — @requiredSlots/@requiredTags may be inherited via an abstract template.
174
- const requiredSlots = attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_SLOTS));
175
- const requiredTags = attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_TAGS));
176
221
  const drift = verify(text, fieldTree, { provider, requiredSlots, requiredTags });
177
222
  checked++;
178
223
  for (const e of drift) {
179
224
  if (e.code === ERR_REQUIRED_SLOT_UNUSED) {
180
- log.warn(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
225
+ log.warn(`[${tmpl.name}] (${label}) ${e.code}: ${e.path}`);
181
226
  warnCount++;
182
227
  }
183
228
  else {
184
- log.error(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
229
+ log.error(`[${tmpl.name}] (${label}) ${e.code}: ${e.path}`);
185
230
  errorCount++;
186
231
  }
187
232
  }
188
233
  }
189
- else if (tmpl.subType === TEMPLATE_SUBTYPE_OUTPUT) {
190
- // Output drift check: re-derive the payload field tree (already done above);
191
- // if it resolved, the parser codegen can produce a schema. Field-type
192
- // unsupported-by-Zod issues are caught by the codegen itself if/when
193
- // `meta gen` runs; verify confines itself to ref-resolution checks.
194
- checked++;
195
- }
196
- else {
197
- // Unknown subtype — ignore (loader-schema concern).
198
- }
199
234
  }
200
235
  if (errorCount > 0) {
201
236
  log.error(`meta verify — ${errorCount} drift error(s) across ${templates.length} template(s).`);
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ import type { PayloadField } from "@metaobjectsdev/render";
3
3
  /**
4
4
  * Walk an `object.value` view-object into a render `PayloadField[]`. Object-ref
5
5
  * fields recurse into their referenced view-object; a `seen` set guards against
6
- * a (pathological) reference cycle.
6
+ * a (pathological) reference cycle. `referrerPkg` (ADR-0042) is the package of
7
+ * the node that declares `voName` (the template for the root call; the parent VO
8
+ * for a nested recursion), so a bare ref resolves package-locally.
7
9
  */
8
- export declare function derivePayloadFieldTree(root: MetaData, voName: string, seen?: ReadonlySet<string>): PayloadField[];
10
+ export declare function derivePayloadFieldTree(root: MetaData, voName: string, referrerPkg?: string, seen?: ReadonlySet<string>): PayloadField[];
9
11
  //# sourceMappingURL=payload-field-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload-field-tree.d.ts","sourceRoot":"","sources":["../../../src/lib/payload-field-tree.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,QAAQ,EAMd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAU3D;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,GACpC,YAAY,EAAE,CAkBhB"}
1
+ {"version":3,"file":"payload-field-tree.d.ts","sourceRoot":"","sources":["../../../src/lib/payload-field-tree.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,QAAQ,EAKd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAU3D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,WAAW,SAAK,EAChB,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,GACpC,YAAY,EAAE,CAuBhB"}
@@ -4,25 +4,31 @@
4
4
  // PayloadField[] (no metadata import), and this function produces it by walking
5
5
  // the view-object exactly as payload-codegen.ts does — scalars become leaves,
6
6
  // `field.object` with an `@objectRef` becomes a nested tree.
7
- import { TYPE_OBJECT, TYPE_FIELD, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, refMatchesObject, } from "@metaobjectsdev/metadata";
8
- function findObject(root, name) {
7
+ import { TYPE_FIELD, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, resolveObjectRef, } from "@metaobjectsdev/metadata";
8
+ function findObject(root, name, referrerPkg) {
9
9
  // ADR-0039: effective children — resolve rather than rely on root being unextended.
10
- // ADR-0041: FQN-exacta "::"-qualified @objectRef binds the exact package (never a
11
- // bare-tail fallback), so a same-named object.value in another package can't be wrongly
12
- // bound. The SAME resolver render-helper.ts's findObject uses (the two must not drift).
13
- return root.children().find((c) => c.type === TYPE_OBJECT && refMatchesObject(c, name));
10
+ // ADR-0042: package-localan FQN @objectRef binds the exact package; a bare ref
11
+ // binds the referrer's package FIRST (else root-level), never a same-named object.value
12
+ // in another package. The SAME resolver render-helper.ts's findObject uses (must not drift).
13
+ return resolveObjectRef(root, name, referrerPkg).node;
14
14
  }
15
15
  /**
16
16
  * Walk an `object.value` view-object into a render `PayloadField[]`. Object-ref
17
17
  * fields recurse into their referenced view-object; a `seen` set guards against
18
- * a (pathological) reference cycle.
18
+ * a (pathological) reference cycle. `referrerPkg` (ADR-0042) is the package of
19
+ * the node that declares `voName` (the template for the root call; the parent VO
20
+ * for a nested recursion), so a bare ref resolves package-locally.
19
21
  */
20
- export function derivePayloadFieldTree(root, voName, seen = new Set()) {
22
+ export function derivePayloadFieldTree(root, voName, referrerPkg = "", seen = new Set()) {
21
23
  if (seen.has(voName))
22
24
  return [];
23
- const vo = findObject(root, voName);
25
+ const vo = findObject(root, voName, referrerPkg);
24
26
  if (!vo)
25
27
  return [];
28
+ // A nested @objectRef resolves in the FIELD's own declaring package (fallback
29
+ // below), which differs from this VO's when the field is inherited via extends
30
+ // from an abstract VO in another package (the bare ref was authored there).
31
+ const voPkg = vo.package ?? vo.fileDefaultPackage ?? "";
26
32
  const nextSeen = new Set(seen).add(voName);
27
33
  const fields = [];
28
34
  for (const f of vo.children().filter((c) => c.type === TYPE_FIELD)) {
@@ -30,7 +36,8 @@ export function derivePayloadFieldTree(root, voName, seen = new Set()) {
30
36
  // ADR-0039: effective attr — @objectRef may be inherited via extends.
31
37
  const ref = f.attr(FIELD_ATTR_OBJECT_REF);
32
38
  if (typeof ref === "string") {
33
- fields.push({ name: f.name, fields: derivePayloadFieldTree(root, ref, nextSeen) });
39
+ const fieldPkg = f.parent?.package ?? f.parent?.fileDefaultPackage ?? voPkg;
40
+ fields.push({ name: f.name, fields: derivePayloadFieldTree(root, ref, fieldPkg, nextSeen) });
34
41
  continue;
35
42
  }
36
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"payload-field-tree.js","sourceRoot":"","sources":["../../../src/lib/payload-field-tree.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,gFAAgF;AAChF,8EAA8E;AAC9E,6DAA6D;AAE7D,OAAO,EAEL,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY;IAC9C,oFAAoF;IACpF,qFAAqF;IACrF,wFAAwF;IACxF,wFAAwF;IACxF,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAc,EACd,MAAc,EACd,OAA4B,IAAI,GAAG,EAAE;IAErC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;YACvC,sEAAsE;YACtE,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACnF,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"payload-field-tree.js","sourceRoot":"","sources":["../../../src/lib/payload-field-tree.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,gFAAgF;AAChF,8EAA8E;AAC9E,6DAA6D;AAE7D,OAAO,EAEL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY,EAAE,WAAmB;IACnE,oFAAoF;IACpF,kFAAkF;IAClF,wFAAwF;IACxF,6FAA6F;IAC7F,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAc,EACd,MAAc,EACd,WAAW,GAAG,EAAE,EAChB,OAA4B,IAAI,GAAG,EAAE;IAErC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,8EAA8E;IAC9E,+EAA+E;IAC/E,4EAA4E;IAC5E,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;YACvC,sEAAsE;YACtE,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE,kBAAkB,IAAI,KAAK,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC7F,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/cli",
3
- "version": "0.15.19-rc.1",
3
+ "version": "0.15.20",
4
4
  "description": "CLI for MetaObjects: scaffold, codegen, migrate, and drift-detection commands.",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -49,15 +49,15 @@
49
49
  ],
50
50
  "dependencies": {
51
51
  "@libsql/kysely-libsql": "^0.4.0",
52
- "@metaobjectsdev/codegen-ts": "0.15.19-rc.1",
53
- "@metaobjectsdev/codegen-ts-react": "0.15.19-rc.1",
54
- "@metaobjectsdev/codegen-ts-tanstack": "0.15.19-rc.1",
55
- "@metaobjectsdev/docs-site": "0.15.19-rc.1",
56
- "@metaobjectsdev/metadata": "0.15.19-rc.1",
57
- "@metaobjectsdev/migrate-ts": "0.15.19-rc.1",
58
- "@metaobjectsdev/render": "0.15.19-rc.1",
59
- "@metaobjectsdev/runtime-ts": "0.15.19-rc.1",
60
- "@metaobjectsdev/sdk": "0.15.19-rc.1",
52
+ "@metaobjectsdev/codegen-ts": "0.15.20",
53
+ "@metaobjectsdev/codegen-ts-react": "0.15.20",
54
+ "@metaobjectsdev/codegen-ts-tanstack": "0.15.20",
55
+ "@metaobjectsdev/docs-site": "0.15.20",
56
+ "@metaobjectsdev/metadata": "0.15.20",
57
+ "@metaobjectsdev/migrate-ts": "0.15.20",
58
+ "@metaobjectsdev/render": "0.15.20",
59
+ "@metaobjectsdev/runtime-ts": "0.15.20",
60
+ "@metaobjectsdev/sdk": "0.15.20",
61
61
  "@toon-format/toon": "^2.3.0",
62
62
  "jiti": "^2.4.0"
63
63
  },
@@ -30,6 +30,12 @@ import {
30
30
  TEMPLATE_ATTR_TEXT_REF,
31
31
  TEMPLATE_ATTR_REQUIRED_SLOTS,
32
32
  TEMPLATE_ATTR_REQUIRED_TAGS,
33
+ TEMPLATE_ATTR_KIND,
34
+ TEMPLATE_KIND_EMAIL,
35
+ TEMPLATE_KIND_DEFAULT,
36
+ TEMPLATE_ATTR_SUBJECT_REF,
37
+ TEMPLATE_ATTR_HTML_BODY_REF,
38
+ TEMPLATE_ATTR_TEXT_BODY_REF,
33
39
  } from "@metaobjectsdev/metadata";
34
40
  import { verify, ERR_REQUIRED_SLOT_UNUSED, ERR_PARTIAL_UNRESOLVED } from "@metaobjectsdev/render";
35
41
 
@@ -168,16 +174,16 @@ export async function verifyCommand(args: string[], cwd: string): Promise<number
168
174
  let checked = 0;
169
175
 
170
176
  for (const tmpl of templates) {
171
- // ADR-0039: effective attrs — @textRef/@payloadRef may be inherited via an abstract template.
172
- const textRef = tmpl.attr(TEMPLATE_ATTR_TEXT_REF);
177
+ // ADR-0039: effective attrs — @payloadRef may be inherited via an abstract template.
173
178
  const payloadRef = tmpl.attr(TEMPLATE_ATTR_PAYLOAD_REF);
174
- // Absent/typeless required attrs are a loader-schema concern, not verify's.
175
- if (typeof textRef !== "string" || typeof payloadRef !== "string") continue;
176
-
177
- // Both subtypes verify that @payloadRef resolves to a loaded object.value.
178
- // The render-engine `verify()` would also throw on missing refs, but the
179
- // output branch doesn't call it explicit check keeps the error symmetric.
180
- const fieldTree = derivePayloadFieldTree(root, payloadRef);
179
+ // A typeless/absent @payloadRef is a loader-schema concern, not verify's. Every
180
+ // renderable template needs it (do NOT gate on @textRef an @kind=email output
181
+ // has no @textRef, and gating on it silently skipped email drift; #193).
182
+ if (typeof payloadRef !== "string") continue;
183
+
184
+ // @payloadRef must resolve to a loaded object.value (drives the field tree
185
+ // every render-engine drift check runs against).
186
+ const fieldTree = derivePayloadFieldTree(root, payloadRef, tmpl.package ?? tmpl.fileDefaultPackage ?? "");
181
187
  if (fieldTree.length === 0) {
182
188
  log.error(
183
189
  `[${tmpl.name}] (${tmpl.subType}) ${ERR_PARTIAL_UNRESOLVED}: ` +
@@ -187,40 +193,69 @@ export async function verifyCommand(args: string[], cwd: string): Promise<number
187
193
  continue;
188
194
  }
189
195
 
196
+ // Collect every renderable mustache ref for this template + whether the
197
+ // prompt-only @requiredSlots/@requiredTags rules apply — mirroring the
198
+ // gen-time render-helper drift gate so `verify` and `gen` agree (#193):
199
+ // template.prompt → the single @textRef (WITH required slots/tags).
200
+ // template.output document (default) → the @textRef body.
201
+ // template.output @kind=email → @subjectRef + @htmlBodyRef + optional @textBodyRef.
202
+ let refs: { label: string; ref: string }[] = [];
203
+ let promptRules = false;
190
204
  if (tmpl.subType === TEMPLATE_SUBTYPE_PROMPT) {
191
- // Render-engine drift check: template variables payload field names.
192
- const text = provider.resolve(textRef);
205
+ // ADR-0039: effective attrs @textRef may be inherited via an abstract template.
206
+ const textRef = tmpl.attr(TEMPLATE_ATTR_TEXT_REF);
207
+ if (typeof textRef === "string") refs = [{ label: "prompt", ref: textRef }];
208
+ promptRules = true;
209
+ } else if (tmpl.subType === TEMPLATE_SUBTYPE_OUTPUT) {
210
+ // ADR-0039: effective attrs — @kind / part refs may be inherited via an abstract template.
211
+ const kind = ((tmpl.attr(TEMPLATE_ATTR_KIND) as string | undefined) ?? TEMPLATE_KIND_DEFAULT).toLowerCase();
212
+ if (kind === TEMPLATE_KIND_EMAIL) {
213
+ const subjectRef = tmpl.attr(TEMPLATE_ATTR_SUBJECT_REF);
214
+ const htmlBodyRef = tmpl.attr(TEMPLATE_ATTR_HTML_BODY_REF);
215
+ const textBodyRef = tmpl.attr(TEMPLATE_ATTR_TEXT_BODY_REF);
216
+ if (typeof subjectRef === "string") refs.push({ label: "email/subject", ref: subjectRef });
217
+ if (typeof htmlBodyRef === "string") refs.push({ label: "email/html", ref: htmlBodyRef });
218
+ if (typeof textBodyRef === "string") refs.push({ label: "email/text", ref: textBodyRef });
219
+ } else {
220
+ const textRef = tmpl.attr(TEMPLATE_ATTR_TEXT_REF);
221
+ if (typeof textRef === "string") refs = [{ label: "document", ref: textRef }];
222
+ }
223
+ } else {
224
+ continue; // unknown subtype — loader-schema concern.
225
+ }
226
+
227
+ // No renderable body ref present — absent required refs are a loader-schema
228
+ // concern, not verify's (mirrors the pre-#193 behavior for a bodyless template).
229
+ if (refs.length === 0) continue;
230
+
231
+ // Slot/tag requirements are a template.prompt concept; the render-helper's
232
+ // email/document gate does NOT apply them per part (they would false-flag a
233
+ // slot as unused in each part). So only the prompt path carries them.
234
+ // ADR-0039: effective attrs — @requiredSlots/@requiredTags may be inherited.
235
+ const requiredSlots = promptRules ? attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_SLOTS)) : [];
236
+ const requiredTags = promptRules ? attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_TAGS)) : [];
237
+
238
+ for (const { label, ref } of refs) {
239
+ // Render-engine drift check: mustache variables ↔ payload field names.
240
+ const text = provider.resolve(ref);
193
241
  if (text === undefined) {
194
242
  log.error(
195
- `[${tmpl.name}] (prompt) ${ERR_PARTIAL_UNRESOLVED}: @textRef "${textRef}" did not resolve under ${promptsDir}`,
243
+ `[${tmpl.name}] (${label}) ${ERR_PARTIAL_UNRESOLVED}: ref "${ref}" did not resolve under ${promptsDir}`,
196
244
  );
197
245
  errorCount++;
198
246
  continue;
199
247
  }
200
-
201
- // ADR-0039: effective attrs — @requiredSlots/@requiredTags may be inherited via an abstract template.
202
- const requiredSlots = attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_SLOTS));
203
- const requiredTags = attrAsStringArray(tmpl.attr(TEMPLATE_ATTR_REQUIRED_TAGS));
204
-
205
248
  const drift = verify(text, fieldTree, { provider, requiredSlots, requiredTags });
206
249
  checked++;
207
250
  for (const e of drift) {
208
251
  if (e.code === ERR_REQUIRED_SLOT_UNUSED) {
209
- log.warn(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
252
+ log.warn(`[${tmpl.name}] (${label}) ${e.code}: ${e.path}`);
210
253
  warnCount++;
211
254
  } else {
212
- log.error(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
255
+ log.error(`[${tmpl.name}] (${label}) ${e.code}: ${e.path}`);
213
256
  errorCount++;
214
257
  }
215
258
  }
216
- } else if (tmpl.subType === TEMPLATE_SUBTYPE_OUTPUT) {
217
- // Output drift check: re-derive the payload field tree (already done above);
218
- // if it resolved, the parser codegen can produce a schema. Field-type
219
- // unsupported-by-Zod issues are caught by the codegen itself if/when
220
- // `meta gen` runs; verify confines itself to ref-resolution checks.
221
- checked++;
222
- } else {
223
- // Unknown subtype — ignore (loader-schema concern).
224
259
  }
225
260
  }
226
261
 
@@ -7,35 +7,41 @@
7
7
 
8
8
  import {
9
9
  type MetaData,
10
- TYPE_OBJECT,
11
10
  TYPE_FIELD,
12
11
  FIELD_SUBTYPE_OBJECT,
13
12
  FIELD_ATTR_OBJECT_REF,
14
- refMatchesObject,
13
+ resolveObjectRef,
15
14
  } from "@metaobjectsdev/metadata";
16
15
  import type { PayloadField } from "@metaobjectsdev/render";
17
16
 
18
- function findObject(root: MetaData, name: string): MetaData | undefined {
17
+ function findObject(root: MetaData, name: string, referrerPkg: string): MetaData | undefined {
19
18
  // ADR-0039: effective children — resolve rather than rely on root being unextended.
20
- // ADR-0041: FQN-exacta "::"-qualified @objectRef binds the exact package (never a
21
- // bare-tail fallback), so a same-named object.value in another package can't be wrongly
22
- // bound. The SAME resolver render-helper.ts's findObject uses (the two must not drift).
23
- return root.children().find((c) => c.type === TYPE_OBJECT && refMatchesObject(c, name));
19
+ // ADR-0042: package-localan FQN @objectRef binds the exact package; a bare ref
20
+ // binds the referrer's package FIRST (else root-level), never a same-named object.value
21
+ // in another package. The SAME resolver render-helper.ts's findObject uses (must not drift).
22
+ return resolveObjectRef(root, name, referrerPkg).node;
24
23
  }
25
24
 
26
25
  /**
27
26
  * Walk an `object.value` view-object into a render `PayloadField[]`. Object-ref
28
27
  * fields recurse into their referenced view-object; a `seen` set guards against
29
- * a (pathological) reference cycle.
28
+ * a (pathological) reference cycle. `referrerPkg` (ADR-0042) is the package of
29
+ * the node that declares `voName` (the template for the root call; the parent VO
30
+ * for a nested recursion), so a bare ref resolves package-locally.
30
31
  */
31
32
  export function derivePayloadFieldTree(
32
33
  root: MetaData,
33
34
  voName: string,
35
+ referrerPkg = "",
34
36
  seen: ReadonlySet<string> = new Set(),
35
37
  ): PayloadField[] {
36
38
  if (seen.has(voName)) return [];
37
- const vo = findObject(root, voName);
39
+ const vo = findObject(root, voName, referrerPkg);
38
40
  if (!vo) return [];
41
+ // A nested @objectRef resolves in the FIELD's own declaring package (fallback
42
+ // below), which differs from this VO's when the field is inherited via extends
43
+ // from an abstract VO in another package (the bare ref was authored there).
44
+ const voPkg = vo.package ?? vo.fileDefaultPackage ?? "";
39
45
  const nextSeen = new Set(seen).add(voName);
40
46
  const fields: PayloadField[] = [];
41
47
  for (const f of vo.children().filter((c) => c.type === TYPE_FIELD)) {
@@ -43,7 +49,8 @@ export function derivePayloadFieldTree(
43
49
  // ADR-0039: effective attr — @objectRef may be inherited via extends.
44
50
  const ref = f.attr(FIELD_ATTR_OBJECT_REF);
45
51
  if (typeof ref === "string") {
46
- fields.push({ name: f.name, fields: derivePayloadFieldTree(root, ref, nextSeen) });
52
+ const fieldPkg = f.parent?.package ?? f.parent?.fileDefaultPackage ?? voPkg;
53
+ fields.push({ name: f.name, fields: derivePayloadFieldTree(root, ref, fieldPkg, nextSeen) });
47
54
  continue;
48
55
  }
49
56
  }