@metaobjectsdev/render 1.0.9-rc.1 → 1.0.9-rc.3
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":"output-format-renderer.d.ts","sourceRoot":"","sources":["../../src/prompt/output-format-renderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output-format-renderer.d.ts","sourceRoot":"","sources":["../../src/prompt/output-format-renderer.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoB7D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAU7F"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
//
|
|
8
8
|
// Cross-port INVARIANT: the rendered text is byte-identical to the Java/C#/Kotlin
|
|
9
9
|
// reference (com.metaobjects.render.prompt.OutputFormatRenderer). Do not change
|
|
10
|
-
// the verbatim prose, skeleton shapes, or numeric-vs-quoted decision
|
|
10
|
+
// the verbatim prose, skeleton shapes, or numeric-vs-quoted decision (a number /
|
|
11
|
+
// boolean is never quoted, placeholder or not).
|
|
11
12
|
import { ESCAPERS } from "../escapers.js";
|
|
12
13
|
import { FieldKind, Format } from "../extract/types.js";
|
|
13
14
|
import { PromptStyle } from "./prompt-style.js";
|
|
@@ -131,9 +132,19 @@ function jsonValue(field, overrides, indent, mode, path, depth) {
|
|
|
131
132
|
return jsonObjectField(field, overrides, indent, mode, path, depth);
|
|
132
133
|
return jsonLeaf(field, overrides, mode);
|
|
133
134
|
}
|
|
135
|
+
// A number or boolean is shown UNQUOTED wherever the skeleton holds a placeholder for it
|
|
136
|
+
// — the inline hint (`{Integer 1-5.}`, `true | false`) and the no-example fallback
|
|
137
|
+
// (`{averageRating}`). A quoted placeholder taught the model to answer a number as a
|
|
138
|
+
// JSON string, which the generated response parser then rejected. Only STRING / ENUM
|
|
139
|
+
// values (and OBJECT past the depth guard) are quoted.
|
|
134
140
|
function jsonLeaf(field, overrides, mode) {
|
|
135
|
-
|
|
136
|
-
|
|
141
|
+
const unquoted = NUMERIC_KINDS.has(field.kind);
|
|
142
|
+
if (mode === "inline") {
|
|
143
|
+
const content = inlineContent(field, overrides);
|
|
144
|
+
return unquoted ? content : `"${escapeJson(content)}"`;
|
|
145
|
+
}
|
|
146
|
+
if (unquoted && exampleValueIfDeclared(field, overrides) == null)
|
|
147
|
+
return `{${field.name}}`;
|
|
137
148
|
const value = exampleValue(field, overrides);
|
|
138
149
|
return isNumericOrBoolean(field.kind, value) ? value : `"${escapeJson(value)}"`;
|
|
139
150
|
}
|
|
@@ -190,6 +201,10 @@ function exampleValueIfDeclared(field, overrides) {
|
|
|
190
201
|
return field.example;
|
|
191
202
|
return null;
|
|
192
203
|
}
|
|
204
|
+
// An enum with no declared example shows its allowed MEMBERS (`low | medium | high`,
|
|
205
|
+
// the inline style's spelling), never one pre-filled member: a model shown a filled-in
|
|
206
|
+
// value copies it, so every reply came back as the first member. Declaring `@example`
|
|
207
|
+
// is how an author asks for a concrete value in the skeleton.
|
|
193
208
|
function exampleValue(field, overrides) {
|
|
194
209
|
const ov = overrides.examples?.[field.name];
|
|
195
210
|
if (ov != null)
|
|
@@ -197,7 +212,7 @@ function exampleValue(field, overrides) {
|
|
|
197
212
|
if (field.example != null)
|
|
198
213
|
return field.example;
|
|
199
214
|
if (field.kind === FieldKind.ENUM && field.enumValues != null && field.enumValues.length > 0) {
|
|
200
|
-
return field.enumValues
|
|
215
|
+
return field.enumValues.join(" | ");
|
|
201
216
|
}
|
|
202
217
|
return `{${field.name}}`;
|
|
203
218
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-format-renderer.js","sourceRoot":"","sources":["../../src/prompt/output-format-renderer.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,8DAA8D;AAC9D,EAAE;AACF,kFAAkF;AAClF,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"output-format-renderer.js","sourceRoot":"","sources":["../../src/prompt/output-format-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/render",
|
|
3
|
-
"version": "1.0.9-rc.
|
|
3
|
+
"version": "1.0.9-rc.3",
|
|
4
4
|
"description": "Logic-less, deterministic text render engine (Mustache) for MetaObjects templates — provider-resolved partials, format-driven escaping, zero core dependency.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
//
|
|
8
8
|
// Cross-port INVARIANT: the rendered text is byte-identical to the Java/C#/Kotlin
|
|
9
9
|
// reference (com.metaobjects.render.prompt.OutputFormatRenderer). Do not change
|
|
10
|
-
// the verbatim prose, skeleton shapes, or numeric-vs-quoted decision
|
|
10
|
+
// the verbatim prose, skeleton shapes, or numeric-vs-quoted decision (a number /
|
|
11
|
+
// boolean is never quoted, placeholder or not).
|
|
11
12
|
|
|
12
13
|
import { ESCAPERS } from "../escapers.js";
|
|
13
14
|
import { FieldKind, Format } from "../extract/types.js";
|
|
@@ -160,8 +161,18 @@ function jsonValue(
|
|
|
160
161
|
return jsonLeaf(field, overrides, mode);
|
|
161
162
|
}
|
|
162
163
|
|
|
164
|
+
// A number or boolean is shown UNQUOTED wherever the skeleton holds a placeholder for it
|
|
165
|
+
// — the inline hint (`{Integer 1-5.}`, `true | false`) and the no-example fallback
|
|
166
|
+
// (`{averageRating}`). A quoted placeholder taught the model to answer a number as a
|
|
167
|
+
// JSON string, which the generated response parser then rejected. Only STRING / ENUM
|
|
168
|
+
// values (and OBJECT past the depth guard) are quoted.
|
|
163
169
|
function jsonLeaf(field: PromptField, overrides: PromptOverrides, mode: SkelMode): string {
|
|
164
|
-
|
|
170
|
+
const unquoted = NUMERIC_KINDS.has(field.kind);
|
|
171
|
+
if (mode === "inline") {
|
|
172
|
+
const content = inlineContent(field, overrides);
|
|
173
|
+
return unquoted ? content : `"${escapeJson(content)}"`;
|
|
174
|
+
}
|
|
175
|
+
if (unquoted && exampleValueIfDeclared(field, overrides) == null) return `{${field.name}}`;
|
|
165
176
|
const value = exampleValue(field, overrides);
|
|
166
177
|
return isNumericOrBoolean(field.kind, value) ? value : `"${escapeJson(value)}"`;
|
|
167
178
|
}
|
|
@@ -235,12 +246,16 @@ function exampleValueIfDeclared(field: PromptField, overrides: PromptOverrides):
|
|
|
235
246
|
return null;
|
|
236
247
|
}
|
|
237
248
|
|
|
249
|
+
// An enum with no declared example shows its allowed MEMBERS (`low | medium | high`,
|
|
250
|
+
// the inline style's spelling), never one pre-filled member: a model shown a filled-in
|
|
251
|
+
// value copies it, so every reply came back as the first member. Declaring `@example`
|
|
252
|
+
// is how an author asks for a concrete value in the skeleton.
|
|
238
253
|
function exampleValue(field: PromptField, overrides: PromptOverrides): string {
|
|
239
254
|
const ov = overrides.examples?.[field.name];
|
|
240
255
|
if (ov != null) return ov;
|
|
241
256
|
if (field.example != null) return field.example;
|
|
242
257
|
if (field.kind === FieldKind.ENUM && field.enumValues != null && field.enumValues.length > 0) {
|
|
243
|
-
return field.enumValues
|
|
258
|
+
return field.enumValues.join(" | ");
|
|
244
259
|
}
|
|
245
260
|
return `{${field.name}}`;
|
|
246
261
|
}
|