@metaobjectsdev/codegen-ts 0.23.1 → 0.24.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.
Files changed (179) hide show
  1. package/dist/column-mapper.d.ts +32 -0
  2. package/dist/column-mapper.d.ts.map +1 -1
  3. package/dist/column-mapper.js +91 -8
  4. package/dist/column-mapper.js.map +1 -1
  5. package/dist/enum-meta.d.ts +20 -0
  6. package/dist/enum-meta.d.ts.map +1 -1
  7. package/dist/enum-meta.js +32 -1
  8. package/dist/enum-meta.js.map +1 -1
  9. package/dist/generator.d.ts +9 -0
  10. package/dist/generator.d.ts.map +1 -1
  11. package/dist/generator.js.map +1 -1
  12. package/dist/generators/api-field-shape.js +1 -1
  13. package/dist/generators/api-field-shape.js.map +1 -1
  14. package/dist/generators/api-model.d.ts.map +1 -1
  15. package/dist/generators/api-model.js +71 -42
  16. package/dist/generators/api-model.js.map +1 -1
  17. package/dist/generators/docs-data-builder.d.ts.map +1 -1
  18. package/dist/generators/docs-data-builder.js +36 -1
  19. package/dist/generators/docs-data-builder.js.map +1 -1
  20. package/dist/generators/docs-data.d.ts +14 -0
  21. package/dist/generators/docs-data.d.ts.map +1 -1
  22. package/dist/generators/docs-file.d.ts.map +1 -1
  23. package/dist/generators/docs-file.js +13 -4
  24. package/dist/generators/docs-file.js.map +1 -1
  25. package/dist/generators/extractor-file.d.ts.map +1 -1
  26. package/dist/generators/extractor-file.js +7 -11
  27. package/dist/generators/extractor-file.js.map +1 -1
  28. package/dist/generators/index.d.ts +4 -0
  29. package/dist/generators/index.d.ts.map +1 -1
  30. package/dist/generators/index.js +5 -0
  31. package/dist/generators/index.js.map +1 -1
  32. package/dist/generators/output-parser-file.d.ts.map +1 -1
  33. package/dist/generators/output-parser-file.js +12 -7
  34. package/dist/generators/output-parser-file.js.map +1 -1
  35. package/dist/generators/output-prompt-file.d.ts.map +1 -1
  36. package/dist/generators/output-prompt-file.js +14 -24
  37. package/dist/generators/output-prompt-file.js.map +1 -1
  38. package/dist/generators/requirement-tests.d.ts +44 -0
  39. package/dist/generators/requirement-tests.d.ts.map +1 -0
  40. package/dist/generators/requirement-tests.js +127 -0
  41. package/dist/generators/requirement-tests.js.map +1 -0
  42. package/dist/generators/requirements-file.d.ts +9 -0
  43. package/dist/generators/requirements-file.d.ts.map +1 -0
  44. package/dist/generators/requirements-file.js +53 -0
  45. package/dist/generators/requirements-file.js.map +1 -0
  46. package/dist/generators/requirements-markdown.d.ts +10 -0
  47. package/dist/generators/requirements-markdown.d.ts.map +1 -0
  48. package/dist/generators/requirements-markdown.js +71 -0
  49. package/dist/generators/requirements-markdown.js.map +1 -0
  50. package/dist/generators/requirements-toon.d.ts +3 -0
  51. package/dist/generators/requirements-toon.d.ts.map +1 -0
  52. package/dist/generators/requirements-toon.js +47 -0
  53. package/dist/generators/requirements-toon.js.map +1 -0
  54. package/dist/generators/requirements-view.d.ts +32 -0
  55. package/dist/generators/requirements-view.d.ts.map +1 -0
  56. package/dist/generators/requirements-view.js +64 -0
  57. package/dist/generators/requirements-view.js.map +1 -0
  58. package/dist/generators/trace-helper-file.d.ts.map +1 -1
  59. package/dist/generators/trace-helper-file.js +19 -11
  60. package/dist/generators/trace-helper-file.js.map +1 -1
  61. package/dist/index.d.ts +13 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +18 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/metaobjects-config.d.ts +12 -20
  66. package/dist/metaobjects-config.d.ts.map +1 -1
  67. package/dist/metaobjects-config.js +5 -1
  68. package/dist/metaobjects-config.js.map +1 -1
  69. package/dist/orphan-sweep.d.ts +38 -0
  70. package/dist/orphan-sweep.d.ts.map +1 -0
  71. package/dist/orphan-sweep.js +129 -0
  72. package/dist/orphan-sweep.js.map +1 -0
  73. package/dist/overwrite-policy.d.ts +97 -3
  74. package/dist/overwrite-policy.d.ts.map +1 -1
  75. package/dist/overwrite-policy.js +293 -81
  76. package/dist/overwrite-policy.js.map +1 -1
  77. package/dist/projection/build-projection-views.d.ts +8 -0
  78. package/dist/projection/build-projection-views.d.ts.map +1 -1
  79. package/dist/projection/build-projection-views.js +2 -0
  80. package/dist/projection/build-projection-views.js.map +1 -1
  81. package/dist/projection/extract-view-spec.d.ts.map +1 -1
  82. package/dist/projection/extract-view-spec.js +70 -6
  83. package/dist/projection/extract-view-spec.js.map +1 -1
  84. package/dist/reconcile-orphans.d.ts +80 -0
  85. package/dist/reconcile-orphans.d.ts.map +1 -0
  86. package/dist/reconcile-orphans.js +61 -0
  87. package/dist/reconcile-orphans.js.map +1 -0
  88. package/dist/render-engine/embedded-templates.generated.js +1 -1
  89. package/dist/render-engine/embedded-templates.generated.js.map +1 -1
  90. package/dist/requirement-walk.d.ts +57 -0
  91. package/dist/requirement-walk.d.ts.map +1 -0
  92. package/dist/requirement-walk.js +94 -0
  93. package/dist/requirement-walk.js.map +1 -0
  94. package/dist/runner.d.ts +35 -0
  95. package/dist/runner.d.ts.map +1 -1
  96. package/dist/runner.js +217 -21
  97. package/dist/runner.js.map +1 -1
  98. package/dist/templates/drizzle-schema.d.ts.map +1 -1
  99. package/dist/templates/drizzle-schema.js +67 -4
  100. package/dist/templates/drizzle-schema.js.map +1 -1
  101. package/dist/templates/extractor.d.ts +4 -4
  102. package/dist/templates/extractor.d.ts.map +1 -1
  103. package/dist/templates/extractor.js +18 -22
  104. package/dist/templates/extractor.js.map +1 -1
  105. package/dist/templates/filter-allowlist.d.ts.map +1 -1
  106. package/dist/templates/filter-allowlist.js +4 -2
  107. package/dist/templates/filter-allowlist.js.map +1 -1
  108. package/dist/templates/filter-type.d.ts.map +1 -1
  109. package/dist/templates/filter-type.js +6 -2
  110. package/dist/templates/filter-type.js.map +1 -1
  111. package/dist/templates/find-inbound.d.ts +44 -0
  112. package/dist/templates/find-inbound.d.ts.map +1 -0
  113. package/dist/templates/find-inbound.js +69 -0
  114. package/dist/templates/find-inbound.js.map +1 -0
  115. package/dist/templates/output-format-spec-emitter.d.ts.map +1 -1
  116. package/dist/templates/output-format-spec-emitter.js +7 -4
  117. package/dist/templates/output-format-spec-emitter.js.map +1 -1
  118. package/dist/templates/output-parser.d.ts +8 -3
  119. package/dist/templates/output-parser.d.ts.map +1 -1
  120. package/dist/templates/output-parser.js +71 -31
  121. package/dist/templates/output-parser.js.map +1 -1
  122. package/dist/templates/output-prompt.d.ts +6 -5
  123. package/dist/templates/output-prompt.d.ts.map +1 -1
  124. package/dist/templates/output-prompt.js +26 -37
  125. package/dist/templates/output-prompt.js.map +1 -1
  126. package/dist/templates/queries.js +1 -1
  127. package/dist/templates/queries.js.map +1 -1
  128. package/dist/templates/requirement-test.d.ts +12 -0
  129. package/dist/templates/requirement-test.d.ts.map +1 -0
  130. package/dist/templates/requirement-test.js +120 -0
  131. package/dist/templates/requirement-test.js.map +1 -0
  132. package/dist/templates/zod-validators.d.ts.map +1 -1
  133. package/dist/templates/zod-validators.js +32 -15
  134. package/dist/templates/zod-validators.js.map +1 -1
  135. package/package.json +7 -6
  136. package/src/column-mapper.ts +124 -8
  137. package/src/enum-meta.ts +37 -1
  138. package/src/generator.ts +9 -0
  139. package/src/generators/api-field-shape.ts +1 -1
  140. package/src/generators/api-model.ts +69 -44
  141. package/src/generators/docs-data-builder.ts +37 -0
  142. package/src/generators/docs-data.ts +15 -0
  143. package/src/generators/docs-file.ts +13 -4
  144. package/src/generators/extractor-file.ts +7 -11
  145. package/src/generators/index.ts +11 -0
  146. package/src/generators/output-parser-file.ts +12 -7
  147. package/src/generators/output-prompt-file.ts +14 -27
  148. package/src/generators/requirement-tests.ts +203 -0
  149. package/src/generators/requirements-file.ts +71 -0
  150. package/src/generators/requirements-markdown.ts +72 -0
  151. package/src/generators/requirements-toon.ts +64 -0
  152. package/src/generators/requirements-view.ts +93 -0
  153. package/src/generators/trace-helper-file.ts +20 -10
  154. package/src/index.ts +47 -1
  155. package/src/metaobjects-config.ts +17 -22
  156. package/src/orphan-sweep.ts +178 -0
  157. package/src/overwrite-policy.ts +362 -89
  158. package/src/projection/build-projection-views.ts +10 -0
  159. package/src/projection/extract-view-spec.ts +88 -4
  160. package/src/reconcile-orphans.ts +136 -0
  161. package/src/reference/barrel.ts +4 -0
  162. package/src/reference/entity.ts +4 -0
  163. package/src/reference/queries.ts +4 -0
  164. package/src/reference/routes.ts +4 -0
  165. package/src/render-engine/embedded-templates.generated.ts +1 -1
  166. package/src/requirement-walk.ts +124 -0
  167. package/src/runner.ts +266 -27
  168. package/src/templates/drizzle-schema.ts +70 -6
  169. package/src/templates/extractor.ts +19 -24
  170. package/src/templates/filter-allowlist.ts +4 -2
  171. package/src/templates/filter-type.ts +6 -2
  172. package/src/templates/find-inbound.ts +96 -0
  173. package/src/templates/output-format-spec-emitter.ts +7 -4
  174. package/src/templates/output-parser.ts +76 -34
  175. package/src/templates/output-prompt.ts +29 -42
  176. package/src/templates/queries.ts +1 -1
  177. package/src/templates/requirement-test.ts +140 -0
  178. package/src/templates/zod-validators.ts +32 -15
  179. package/templates/docs/entity-page.md.mustache +8 -0
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/templates/extractor.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,KAAK,QAAQ,EAWd,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA0P1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,MAAM,CAsFjG"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/templates/extractor.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,KAAK,QAAQ,EAUd,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA0P1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,MAAM,CAiFjG"}
@@ -19,7 +19,8 @@
19
19
  //
20
20
  // NO registry / binding provider / factory; codegen walks the whole type graph statically (the
21
21
  // same MetaObject walk the extract-schema / payload emitters use).
22
- import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_OUTPUT, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_ENUM, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_REQUIRED, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_FORMAT, resolveObjectRef, } from "@metaobjectsdev/metadata";
22
+ import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_PROMPT, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_ENUM, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_REQUIRED, TEMPLATE_ATTR_RESPONSE_REF, resolveObjectRef, } from "@metaobjectsdev/metadata";
23
+ import { responseShape } from "./find-inbound.js";
23
24
  import { fields, isArray } from "./fr010-field-mapping.js";
24
25
  import { mirrorName } from "./extract-delegate-emitter.js";
25
26
  import { enumUnionAliasName } from "./inferred-types.js";
@@ -245,34 +246,29 @@ function reachableMirrorTypes(vo, root, rootMirror, ctx) {
245
246
  return out;
246
247
  }
247
248
  /**
248
- * Render the full `<TemplateName>.extractor.ts` for one `template.output` node.
249
- * Throws if the template isn't found / isn't a template.output / its @payloadRef doesn't resolve,
250
- * or if the target format is not json/xml (the extract tier requires the extract<Name> API, which
251
- * only the json/xml output-parsers emit).
249
+ * Render the full `<PromptName>.extractor.ts` for one responding `template.prompt`.
250
+ * Throws if the template isn't found / isn't a template.prompt / its @responseRef
251
+ * doesn't resolve. ADR-0052: no format gate remains @responseFormat is a closed
252
+ * json|xml set, so every responding prompt has an extract<Name> API to sit over.
252
253
  */
253
254
  export function renderExtractor(root, templateName, ctx) {
254
255
  const tmpl = findTemplate(root, templateName);
255
256
  if (!tmpl) {
256
257
  throw new Error(`template "${templateName}" not found in metadata root`);
257
258
  }
258
- if (tmpl.subType !== TEMPLATE_SUBTYPE_OUTPUT) {
259
- throw new Error(`template "${templateName}" is not a template.output (got subtype "${tmpl.subType}")`);
259
+ if (tmpl.subType !== TEMPLATE_SUBTYPE_PROMPT) {
260
+ throw new Error(`template "${templateName}" is not a template.prompt (got subtype "${tmpl.subType}")`);
260
261
  }
261
- // ADR-0039: resolving a template may inherit its @* refs/format/kind via extends.
262
- const payloadRef = tmpl.attr(TEMPLATE_ATTR_PAYLOAD_REF);
263
- if (typeof payloadRef !== "string") {
264
- throw new Error(`template "${templateName}" missing @payloadRef`);
265
- }
266
- // ADR-0042: a bare @payloadRef resolves in the template's package.
267
- const vo = findObject(root, payloadRef, tmpl.package ?? tmpl.fileDefaultPackage ?? "");
268
- if (!vo) {
269
- throw new Error(`template "${templateName}" @payloadRef "${payloadRef}" not found in metadata root`);
270
- }
271
- // ADR-0039: resolving — a template may inherit its @* refs/format/kind via extends.
272
- const format = (tmpl.attr(TEMPLATE_ATTR_FORMAT) ?? "text").toLowerCase();
273
- if (format !== "json" && format !== "xml") {
274
- throw new Error(`template "${templateName}" @format "${format}" has no extract API to extract over (json/xml only)`);
262
+ // ADR-0052: the extract tier reads a REPLY, so it binds @responseRef.
263
+ const shape = responseShape(root, tmpl);
264
+ if (!shape) {
265
+ // ADR-0039: resolving @responseRef may be inherited via extends.
266
+ const declared = tmpl.attr(TEMPLATE_ATTR_RESPONSE_REF);
267
+ throw new Error(typeof declared === "string"
268
+ ? `template "${templateName}" @responseRef "${declared}" not found in metadata root`
269
+ : `template "${templateName}" missing @responseRef`);
275
270
  }
271
+ const { vo } = shape;
276
272
  // ADR-0044/#228: the strict payload TYPE name is the entity-domain EMITTED name (Task 3's
277
273
  // `valueObjectEmittedName`) — the SAME name entityFile() declared the interface under, so a
278
274
  // cross-package short-name collision emits e.g. `AcmeAlphaNote`, matching `./AcmeAlphaNote.js`.
@@ -297,7 +293,7 @@ export function renderExtractor(root, templateName, ctx) {
297
293
  `// arrays-of-objects populated) in one call, by delegating to the nested-capable extract and\n` +
298
294
  `// mapping the all-nullable mirror onto the strict payload. No registry / binding / factory.\n` +
299
295
  `\n` +
300
- `import {\n ${extractLenientWithName},\n type ${mirrorTypes.join(",\n type ")},\n} from "./${templateName}.output.js";\n` +
296
+ `import {\n ${extractLenientWithName},\n type ${mirrorTypes.join(",\n type ")},\n} from "./${templateName}.response.js";\n` +
301
297
  `${payloadImports}\n` +
302
298
  `import type { MetaRoot } from "@metaobjectsdev/metadata";\n` +
303
299
  `import type { ExtractionResult } from "@metaobjectsdev/render";\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/templates/extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/templates/extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-allowlist.d.ts","sourceRoot":"","sources":["../../src/templates/filter-allowlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAa,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAiBjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAiC1D;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CA4BrG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CA8B9E"}
1
+ {"version":3,"file":"filter-allowlist.d.ts","sourceRoot":"","sources":["../../src/templates/filter-allowlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAa,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAiBjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAiC1D;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CA8BrG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CA8B9E"}
@@ -1,6 +1,6 @@
1
1
  import { code } from "ts-poet";
2
2
  import { MetaField, MetaObject } from "@metaobjectsdev/metadata";
3
- import { FIELD_ATTR_FILTERABLE, FIELD_ATTR_SORTABLE_DEFAULT_ORDER, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_CURRENCY, opsForSubType, } from "@metaobjectsdev/metadata";
3
+ import { FIELD_ATTR_FILTERABLE, FIELD_ATTR_SORTABLE_DEFAULT_ORDER, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_CURRENCY, opsForField, } from "@metaobjectsdev/metadata";
4
4
  import { sortableFields } from "./filter-shared.js";
5
5
  const NUMBER_SUBTYPES = new Set([
6
6
  FIELD_SUBTYPE_INT,
@@ -55,7 +55,9 @@ export const ${entity.name}FilterAllowlist = {} as const satisfies FilterAllowli
55
55
  }
56
56
  const rows = fields
57
57
  .map((f) => {
58
- const ops = opsForSubType(f.subType).map((o) => JSON.stringify(o)).join(", ");
58
+ // opsForField, not opsForSubType an int-backed field.enum (@intValueMap)
59
+ // stores as an integer, so `like` (a substring match) is not in its band.
60
+ const ops = opsForField(f).map((o) => JSON.stringify(o)).join(", ");
59
61
  const sub = filterSubTypeFor(f.subType);
60
62
  // Only field.timestamp is governed by timestampMode — Drizzle types
61
63
  // field.date / field.time as strings under every dialect.
@@ -1 +1 @@
1
- {"version":3,"file":"filter-allowlist.js","sourceRoot":"","sources":["../../src/templates/filter-allowlist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-allowlist.js","sourceRoot":"","sources":["../../src/templates/filter-allowlist.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-type.d.ts","sourceRoot":"","sources":["../../src/templates/filter-type.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAa,UAAU,EAAE,MAAM,0BAA0B,CAAC;AA0CjE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CA2C3E"}
1
+ {"version":3,"file":"filter-type.d.ts","sourceRoot":"","sources":["../../src/templates/filter-type.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAa,UAAU,EAAE,MAAM,0BAA0B,CAAC;AA8CjE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CA2C3E"}
@@ -3,7 +3,7 @@
3
3
  // datetimes get eq/ne/gt/gte/lt/lte/in.
4
4
  import { code } from "ts-poet";
5
5
  import { MetaField, MetaObject } from "@metaobjectsdev/metadata";
6
- import { FIELD_ATTR_FILTERABLE, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, opsForSubType, } from "@metaobjectsdev/metadata";
6
+ import { FIELD_ATTR_FILTERABLE, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, opsForField, } from "@metaobjectsdev/metadata";
7
7
  import { isSortableField } from "./filter-shared.js";
8
8
  // VALUE-type classification only (distinct from the OPERATOR band, which comes from
9
9
  // opsForSubType). decimal is deliberately NOT here: its operator band stays NUMERIC
@@ -24,7 +24,11 @@ function tsNameFor(fieldSubType) {
24
24
  return "string";
25
25
  }
26
26
  function renderFieldUnion(field) {
27
- const ops = opsForSubType(field.subType);
27
+ // opsForField, not opsForSubType — an int-backed field.enum (@intValueMap) stores
28
+ // as an integer, so `like` is not in its band. The client type and the server
29
+ // allowlist MUST agree: offering `like` here that the allowlist 400s is a
30
+ // client/server mismatch of exactly the kind filter-shared.ts exists to prevent.
31
+ const ops = opsForField(field);
28
32
  const tsName = tsNameFor(field.subType);
29
33
  const opEntries = ops.map((op) => {
30
34
  if (op === "in")
@@ -1 +1 @@
1
- {"version":3,"file":"filter-type.js","sourceRoot":"","sources":["../../src/templates/filter-type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-type.js","sourceRoot":"","sources":["../../src/templates/filter-type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { type MetaData, type ResponseFormat } from "@metaobjectsdev/metadata";
2
+ /** What an inbound generator needs about one responding prompt. */
3
+ export interface InboundShape {
4
+ /** The resolved response value-object — the shape a reply is parsed INTO. */
5
+ readonly vo: MetaData;
6
+ /** The `@responseRef` string as authored (bare or fully-qualified). */
7
+ readonly ref: string;
8
+ /**
9
+ * The syntax of the REPLY (ADR-0053) — never the template's `@format`, which is
10
+ * the syntax of the rendered prompt BODY. The two genuinely differ.
11
+ */
12
+ readonly format: ResponseFormat;
13
+ }
14
+ /**
15
+ * Every `template.prompt` that declares a response shape, in declaration order.
16
+ *
17
+ * The gate is `@responseRef` PRESENCE, not a format value: declaring a response
18
+ * shape is the request for a parser. Gating on `@format` was what let a `text`
19
+ * template get a strict parser but no tolerant extract, and — because `@format`
20
+ * defaults to `text` — would silently emit nothing at all after the re-homing.
21
+ *
22
+ * ADR-0039: resolving accessors throughout. A root has no super, but a template
23
+ * may inherit `@responseRef` from an abstract base via `extends`, and three
24
+ * shipped fixtures rely on exactly that.
25
+ */
26
+ export declare function inboundTemplates(root: MetaData): MetaData[];
27
+ /**
28
+ * Resolve a prompt's response value-object and reply syntax.
29
+ *
30
+ * Returns `undefined` when the template declares no `@responseRef` or the ref does
31
+ * not resolve — callers skip rather than throw, matching the pre-ADR-0052 contract
32
+ * for an unresolvable payload ref.
33
+ */
34
+ export declare function responseShape(root: MetaData, tmpl: MetaData): InboundShape | undefined;
35
+ /**
36
+ * The declared reply syntax, defaulted per ADR-0053.
37
+ *
38
+ * The default is `json` because that reproduces the trace helper's pre-ADR-0053
39
+ * fallback exactly (anything that was not `"xml"` was treated as JSON), which is
40
+ * what makes the attribute's introduction behaviour-preserving rather than a new
41
+ * policy.
42
+ */
43
+ export declare function responseFormatOf(tmpl: MetaData): ResponseFormat;
44
+ //# sourceMappingURL=find-inbound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-inbound.d.ts","sourceRoot":"","sources":["../../src/templates/find-inbound.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,QAAQ,EAOb,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAElC,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAS3D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAQtF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAM/D"}
@@ -0,0 +1,69 @@
1
+ // server/typescript/packages/codegen-ts/src/templates/find-inbound.ts
2
+ //
3
+ // The ADR-0052 direction rule, in ONE place.
4
+ //
5
+ // A template subtype's axis is DIRECTION: `template.output` renders outbound (a
6
+ // document or an email) and generates no parser; the inbound half — the response
7
+ // shape, the FR-010 response-format fragment, and the parser-on-receipt — belongs
8
+ // to a `template.prompt` that declares `@responseRef`.
9
+ //
10
+ // Every inbound generator calls through here rather than re-deriving "which
11
+ // templates have a response". Three call sites each deciding for themselves is
12
+ // exactly how the pre-ADR-0052 tier drifted: the parser had no `@kind` filter at
13
+ // all, so an email template generated a parser for text the system had just
14
+ // rendered, while the extractor and the fragment emitter each applied a different
15
+ // json/xml gate.
16
+ import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_PROMPT, TEMPLATE_ATTR_RESPONSE_REF, TEMPLATE_ATTR_RESPONSE_FORMAT, RESPONSE_FORMAT_DEFAULT, RESPONSE_FORMAT_XML, resolveObjectRef, } from "@metaobjectsdev/metadata";
17
+ /**
18
+ * Every `template.prompt` that declares a response shape, in declaration order.
19
+ *
20
+ * The gate is `@responseRef` PRESENCE, not a format value: declaring a response
21
+ * shape is the request for a parser. Gating on `@format` was what let a `text`
22
+ * template get a strict parser but no tolerant extract, and — because `@format`
23
+ * defaults to `text` — would silently emit nothing at all after the re-homing.
24
+ *
25
+ * ADR-0039: resolving accessors throughout. A root has no super, but a template
26
+ * may inherit `@responseRef` from an abstract base via `extends`, and three
27
+ * shipped fixtures rely on exactly that.
28
+ */
29
+ export function inboundTemplates(root) {
30
+ return root
31
+ .children()
32
+ .filter((c) => c.type === TYPE_TEMPLATE &&
33
+ c.subType === TEMPLATE_SUBTYPE_PROMPT &&
34
+ typeof c.attr(TEMPLATE_ATTR_RESPONSE_REF) === "string");
35
+ }
36
+ /**
37
+ * Resolve a prompt's response value-object and reply syntax.
38
+ *
39
+ * Returns `undefined` when the template declares no `@responseRef` or the ref does
40
+ * not resolve — callers skip rather than throw, matching the pre-ADR-0052 contract
41
+ * for an unresolvable payload ref.
42
+ */
43
+ export function responseShape(root, tmpl) {
44
+ // ADR-0039: resolving — @responseRef may be inherited via extends.
45
+ const ref = tmpl.attr(TEMPLATE_ATTR_RESPONSE_REF);
46
+ if (typeof ref !== "string")
47
+ return undefined;
48
+ // ADR-0042: a bare @responseRef resolves package-locally, then root-level.
49
+ const vo = resolveObjectRef(root, ref, tmpl.package ?? tmpl.fileDefaultPackage ?? "").node;
50
+ if (!vo)
51
+ return undefined;
52
+ return { vo, ref, format: responseFormatOf(tmpl) };
53
+ }
54
+ /**
55
+ * The declared reply syntax, defaulted per ADR-0053.
56
+ *
57
+ * The default is `json` because that reproduces the trace helper's pre-ADR-0053
58
+ * fallback exactly (anything that was not `"xml"` was treated as JSON), which is
59
+ * what makes the attribute's introduction behaviour-preserving rather than a new
60
+ * policy.
61
+ */
62
+ export function responseFormatOf(tmpl) {
63
+ // ADR-0039: resolving — @responseFormat may be inherited via extends.
64
+ const raw = tmpl.attr(TEMPLATE_ATTR_RESPONSE_FORMAT);
65
+ return typeof raw === "string" && raw.toLowerCase() === RESPONSE_FORMAT_XML
66
+ ? RESPONSE_FORMAT_XML
67
+ : RESPONSE_FORMAT_DEFAULT;
68
+ }
69
+ //# sourceMappingURL=find-inbound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-inbound.js","sourceRoot":"","sources":["../../src/templates/find-inbound.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,iFAAiF;AACjF,4EAA4E;AAC5E,kFAAkF;AAClF,iBAAiB;AAEjB,OAAO,EAEL,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,EAEnB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAelC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,OAAO,IAAI;SACR,QAAQ,EAAE;SACV,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,aAAa;QACxB,CAAC,CAAC,OAAO,KAAK,uBAAuB;QACrC,OAAO,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,QAAQ,CACzD,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,IAAc;IAC1D,mEAAmE;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,2EAA2E;IAC3E,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IAC3F,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,sEAAsE;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACrD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,mBAAmB;QACzE,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,uBAAuB,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"output-format-spec-emitter.d.ts","sourceRoot":"","sources":["../../src/templates/output-format-spec-emitter.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,QAAQ,EAUd,MAAM,0BAA0B,CAAC;AAYlC,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQtF"}
1
+ {"version":3,"file":"output-format-spec-emitter.d.ts","sourceRoot":"","sources":["../../src/templates/output-format-spec-emitter.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,QAAQ,EAUd,MAAM,0BAA0B,CAAC;AAalC,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQtF"}
@@ -6,7 +6,8 @@
6
6
  // Emits an `{ format, rootName, style, fields: [ … ] } satisfies OutputFormatSpec` literal.
7
7
  // Mirrors the C# OutputFormatSpecEmitter (adapted to TS syntax). Field-kind mapping is shared
8
8
  // via fr010-field-mapping. Bounded scope: scalar / enum. Nested object → FieldKind.OBJECT placeholder.
9
- import { FIELD_SUBTYPE_ENUM, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_EXAMPLE, FIELD_ATTR_INSTRUCTION, FIELD_ATTR_ENUM_DOC, TEMPLATE_ATTR_FORMAT, TEMPLATE_ATTR_PROMPT_STYLE, PROMPT_STYLE_INLINE, PROMPT_STYLE_EXAMPLE_ONLY, } from "@metaobjectsdev/metadata";
9
+ import { FIELD_SUBTYPE_ENUM, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_EXAMPLE, FIELD_ATTR_INSTRUCTION, FIELD_ATTR_ENUM_DOC, TEMPLATE_ATTR_PROMPT_STYLE, PROMPT_STYLE_INLINE, PROMPT_STYLE_EXAMPLE_ONLY, RESPONSE_FORMAT_XML, } from "@metaobjectsdev/metadata";
10
+ import { responseFormatOf } from "./find-inbound.js";
10
11
  import { fields, isRequired, isArray, scalarKind, enumValues, jsonStringLiteral, stringArrayLiteral, propertiesMapLiteral, } from "./fr010-field-mapping.js";
11
12
  /** Emit `{ format, rootName, style, fields: [ … ] } satisfies OutputFormatSpec`. */
12
13
  export function specLiteral(vo, template, rootName) {
@@ -17,9 +18,11 @@ export function specLiteral(vo, template, rootName) {
17
18
  `style: ${styleEnum}, fields: [${fieldLits.join(", ")}] } satisfies OutputFormatSpec`);
18
19
  }
19
20
  function resolveFormat(template) {
20
- // ADR-0039: resolving a template may inherit @format via extends.
21
- const f = template.attr(TEMPLATE_ATTR_FORMAT);
22
- return typeof f === "string" && f.toLowerCase() === "xml" ? "Format.XML" : "Format.JSON";
21
+ // ADR-0053: the fragment describes the REPLY, so its syntax is @responseFormat
22
+ // NOT @format, which is the syntax of the rendered prompt BODY. Reading @format
23
+ // here typed the instruction "produce your answer like this" off the format of
24
+ // the question.
25
+ return responseFormatOf(template) === RESPONSE_FORMAT_XML ? "Format.XML" : "Format.JSON";
23
26
  }
24
27
  function resolvePromptStyle(template) {
25
28
  // ADR-0039: resolving — a template may inherit @promptStyle via extends.
@@ -1 +1 @@
1
- {"version":3,"file":"output-format-spec-emitter.js","sourceRoot":"","sources":["../../src/templates/output-format-spec-emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output-format-spec-emitter.js","sourceRoot":"","sources":["../../src/templates/output-format-spec-emitter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  import { type MetaData } from "@metaobjectsdev/metadata";
2
2
  import type { RenderContext } from "../render-context.js";
3
3
  /**
4
- * Render the full output-parser file for one `template.output` node.
5
- * Throws if the template isn't found, isn't a template.output, or its
6
- * @payloadRef doesn't resolve to an object.value.
4
+ * Render the full response-parser file for one responding `template.prompt`.
5
+ * Throws if the template isn't found, isn't a template.prompt, or its
6
+ * @responseRef is missing / doesn't resolve to an object.value.
7
+ *
8
+ * ADR-0052: the shape parsed INTO is `@responseRef`, not `@payloadRef` —
9
+ * `@payloadRef` types the REQUEST rendered outbound, which is the distinction the
10
+ * trace helper has always drawn ("@responseRef types the result; @payloadRef types
11
+ * the request") and the inbound tier used to ignore.
7
12
  */
8
13
  export declare function renderOutputParser(root: MetaData, templateName: string, ctx?: RenderContext): string;
9
14
  //# sourceMappingURL=output-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../../src/templates/output-parser.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,QAAQ,EASd,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA6D1D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,MAAM,CAiLpG"}
1
+ {"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../../src/templates/output-parser.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,QAAQ,EASd,MAAM,0BAA0B,CAAC;AAWlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA4E1D;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,MAAM,CAqMpG"}
@@ -8,7 +8,9 @@
8
8
  // via `z.infer<typeof Schema>` and exports it as `<TemplateName>Data`. Consumers
9
9
  // wiring `promptRender()` get a structurally identical payload-VO interface in
10
10
  // `prompts.ts`; either type can be used interchangeably with parse results.
11
- import { TYPE_FIELD, TYPE_TEMPLATE, TEMPLATE_SUBTYPE_OUTPUT, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_FORMAT, resolveObjectRef, } from "@metaobjectsdev/metadata";
11
+ import { TYPE_FIELD, TYPE_TEMPLATE, TEMPLATE_SUBTYPE_PROMPT, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, TEMPLATE_ATTR_RESPONSE_REF, RESPONSE_FORMAT_XML, resolveObjectRef, } from "@metaobjectsdev/metadata";
12
+ import { responseShape } from "./find-inbound.js";
13
+ import { isRequired } from "./fr010-field-mapping.js";
12
14
  import { nestedMirrorInterfaces, nestedMappers, rootMapperName, delegateHelpers, usedHelpers, hasNested, } from "./extract-delegate-emitter.js";
13
15
  const SCALAR_ZOD = {
14
16
  string: "z.string()",
@@ -30,7 +32,19 @@ function findObject(root, name, referrerPkg = "") {
30
32
  function findTemplate(root, name) {
31
33
  return root.children().find((c) => c.type === TYPE_TEMPLATE && c.name === name);
32
34
  }
33
- /** Render the Zod expression for a single field; recurses on @objectRef. */
35
+ /** Render the Zod expression for a single field; recurses on @objectRef.
36
+ *
37
+ * Optionality comes from `@required`, via the SAME `isRequired` predicate the
38
+ * tolerant tier uses — so the two tiers in this file cannot disagree about what
39
+ * the contract is. They used to: this schema emitted every field as mandatory
40
+ * and never read `@required`, so `parse<Name>` threw on a reply that correctly
41
+ * omitted a declared-optional field, while the tolerant extract accepted it.
42
+ *
43
+ * Every other port reuses the payload VO, which #309 made `@required`-correct.
44
+ * TypeScript re-derives its schema inline here, which is how it drifted — the
45
+ * same "payload tier disagrees with the rest of the toolchain" shape ADR-0052
46
+ * came out of.
47
+ */
34
48
  function fieldZod(field, root, seen, depth) {
35
49
  // isArray is a native (reserved) property on MetaData, not an attr.
36
50
  const isArray = field.resolvedIsArray();
@@ -53,7 +67,10 @@ function fieldZod(field, root, seen, depth) {
53
67
  else {
54
68
  base = SCALAR_ZOD[field.subType] ?? "z.unknown()";
55
69
  }
56
- return isArray ? `z.array(${base})` : base;
70
+ const shaped = isArray ? `z.array(${base})` : base;
71
+ // `.optional()` wraps the ARRAY, not its element: an absent list and a list of
72
+ // absent things are different claims.
73
+ return isRequired(field) ? shaped : `${shaped}.optional()`;
57
74
  }
58
75
  /** Render a `z.object({ ... })` for an object.value node.
59
76
  * At depth 0 the schema starts at column 0 (consumer's `const Foo = z.object({`),
@@ -68,41 +85,62 @@ function renderObjectSchema(vo, root, seen, depth) {
68
85
  return `z.object({\n${lines.join("\n")}\n${closeIndent}})`;
69
86
  }
70
87
  /**
71
- * Render the full output-parser file for one `template.output` node.
72
- * Throws if the template isn't found, isn't a template.output, or its
73
- * @payloadRef doesn't resolve to an object.value.
88
+ * Render the full response-parser file for one responding `template.prompt`.
89
+ * Throws if the template isn't found, isn't a template.prompt, or its
90
+ * @responseRef is missing / doesn't resolve to an object.value.
91
+ *
92
+ * ADR-0052: the shape parsed INTO is `@responseRef`, not `@payloadRef` —
93
+ * `@payloadRef` types the REQUEST rendered outbound, which is the distinction the
94
+ * trace helper has always drawn ("@responseRef types the result; @payloadRef types
95
+ * the request") and the inbound tier used to ignore.
74
96
  */
75
97
  export function renderOutputParser(root, templateName, ctx) {
76
98
  const tmpl = findTemplate(root, templateName);
77
99
  if (!tmpl) {
78
100
  throw new Error(`template "${templateName}" not found in metadata root`);
79
101
  }
80
- if (tmpl.subType !== TEMPLATE_SUBTYPE_OUTPUT) {
81
- throw new Error(`template "${templateName}" is not a template.output (got subtype "${tmpl.subType}")`);
82
- }
83
- // ADR-0039: resolving — a template may inherit its @* refs/format/kind via extends.
84
- const payloadRef = tmpl.attr(TEMPLATE_ATTR_PAYLOAD_REF);
85
- if (typeof payloadRef !== "string") {
86
- throw new Error(`template "${templateName}" missing @payloadRef`);
102
+ if (tmpl.subType !== TEMPLATE_SUBTYPE_PROMPT) {
103
+ throw new Error(`template "${templateName}" is not a template.prompt (got subtype "${tmpl.subType}")`);
87
104
  }
88
- // ADR-0042: a bare @payloadRef resolves in the template's package.
89
- const vo = findObject(root, payloadRef, tmpl.package ?? tmpl.fileDefaultPackage ?? "");
90
- if (!vo) {
91
- throw new Error(`template "${templateName}" @payloadRef "${payloadRef}" not found in metadata root`);
105
+ const shape = responseShape(root, tmpl);
106
+ if (!shape) {
107
+ // ADR-0039: resolving — @responseRef may be inherited via extends.
108
+ const declared = tmpl.attr(TEMPLATE_ATTR_RESPONSE_REF);
109
+ throw new Error(typeof declared === "string"
110
+ ? `template "${templateName}" @responseRef "${declared}" not found in metadata root`
111
+ : `template "${templateName}" missing @responseRef`);
92
112
  }
113
+ const { vo, ref: payloadRef } = shape;
93
114
  const schema = renderObjectSchema(vo, root, new Set([payloadRef]), 0);
94
115
  const schemaName = `${templateName}Schema`;
95
116
  const dataName = `${templateName}Data`;
96
117
  const errorName = `${templateName}ValidationError`;
97
118
  const parseName = `parse${templateName}`;
98
119
  const safeParseName = `safeParse${templateName}`;
99
- // FR-010: emit the tolerant extract() API alongside the strict Zod parser when the
100
- // template targets json/xml. The @payloadRef already resolved to a value-object above,
101
- // so a ExtractSchema can always be baked. text-format outputs get no extract.
102
- // ADR-0039: resolving a template may inherit its @* refs/format/kind via extends.
103
- const format = tmpl.attr(TEMPLATE_ATTR_FORMAT) ?? "text";
104
- const lc = format.toLowerCase();
105
- const emitExtractLenient = lc === "json" || lc === "xml";
120
+ // FR-010: emit the tolerant extract() API alongside the strict Zod parser.
121
+ //
122
+ // ADR-0052/0053: a declared @responseRef ALWAYS gets the tolerant path, and the
123
+ // syntax comes from @responseFormat (json|xml, default json) never from
124
+ // @format, which is the syntax of the rendered prompt BODY. The old json/xml
125
+ // gate on @format is what made a text-bodied prompt with a JSON reply emit a
126
+ // strict parser and no extract at all.
127
+ const format = shape.format;
128
+ // The strict Zod tier is JSON-ONLY, by construction.
129
+ //
130
+ // Its body is `Schema.parse(JSON.parse(text))`, and there is no XML equivalent to
131
+ // generate. Not because no XML reader exists — `render/src/extract/
132
+ // xml-forgiving-reader.ts` ships one — but because that reader is FORGIVING by
133
+ // design, and strict all-or-nothing semantics layered over a repairing parser is
134
+ // incoherent: it would throw or accept based on how much repair happened, which
135
+ // is not a contract anyone can reason about. The JS runtime's `JSON.parse` is an
136
+ // exact parser, which is what makes the strict tier meaningful for JSON and only
137
+ // for JSON. Before this, an XML template got `JSON.parse` anyway — a generated
138
+ // function that could never work.
139
+ //
140
+ // So an XML reply gets the tolerant extract and nothing else. Its typed shape is
141
+ // `<Name>Extracted` — a nullable mirror, which is the honest type for a
142
+ // best-effort parse of model output.
143
+ const emitStrict = format !== RESPONSE_FORMAT_XML;
106
144
  const strictBody = `const ${schemaName} = ${schema};
107
145
 
108
146
  export type ${dataName} = z.infer<typeof ${schemaName}>;
@@ -138,14 +176,14 @@ export function ${safeParseName}(
138
176
  : { success: false, error: result.error };
139
177
  }
140
178
  `;
141
- if (!emitExtractLenient) {
142
- return `import { z } from "zod";\n\n${strictBody}`;
143
- }
144
- // ---- FR-010 tolerant extract block (json/xml only) ----
179
+ // ---- FR-010 tolerant extract block ----
180
+ // Unconditional since ADR-0052: a declared @responseRef IS the request for the
181
+ // tolerant path, and @responseFormat is a closed json|xml set, so there is no
182
+ // longer a third case to gate on.
145
183
  const extractedName = `${templateName}Extracted`;
146
184
  const extractLenientWithName = `extractLenient${templateName}WithLoader`;
147
185
  const payloadFqnConst = `${templateName.toUpperCase()}_PAYLOAD_NAME`;
148
- const formatEnum = format.toLowerCase() === "xml" ? "Format.XML" : "Format.JSON";
186
+ const formatEnum = format === RESPONSE_FORMAT_XML ? "Format.XML" : "Format.JSON";
149
187
  // The nullable mirror is the return shape of the delegating extract. Use the nested-aware
150
188
  // emitter so the payload mirror's nested-object / array-of-object components are typed (not
151
189
  // `unknown`), and so a mirror interface is emitted for every reachable nested value-object.
@@ -228,12 +266,14 @@ export function ${extractLenientWithName}(
228
266
  ? `import type { MetaRoot } from "@metaobjectsdev/metadata";\nimport { resolveObjectRef } from "@metaobjectsdev/metadata";\n`
229
267
  : `import type { MetaRoot } from "@metaobjectsdev/metadata";\n`;
230
268
  const runtimeImport = `import { extractObject } from "@metaobjectsdev/runtime-ts";\n`;
231
- return (`import { z } from "zod";\n` +
269
+ // `zod` is imported only when the strict tier is emitted — an XML reply's file
270
+ // would otherwise carry an unused import (tsc noUnusedLocals-unsafe).
271
+ return ((emitStrict ? `import { z } from "zod";\n` : "") +
232
272
  `import {\n ${renderImports.join(",\n ")},\n} from "@metaobjectsdev/render";\n` +
233
273
  metadataImport +
234
274
  runtimeImport +
235
275
  `\n` +
236
- `${strictBody}\n` +
276
+ (emitStrict ? `${strictBody}\n` : "") +
237
277
  `${delegating}`);
238
278
  }
239
279
  //# sourceMappingURL=output-parser.js.map