@framers/agentos 0.13.4 → 0.13.5

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 (44) hide show
  1. package/dist/api/AgentOS.d.ts +3 -0
  2. package/dist/api/AgentOS.d.ts.map +1 -1
  3. package/dist/api/AgentOS.js +52 -1
  4. package/dist/api/AgentOS.js.map +1 -1
  5. package/dist/api/generateObject.d.ts.map +1 -1
  6. package/dist/api/generateObject.js +1 -150
  7. package/dist/api/generateObject.js.map +1 -1
  8. package/dist/api/index.d.ts +1 -0
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +2 -0
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/api/runtime/AgentOSOrchestrator.d.ts.map +1 -1
  13. package/dist/api/runtime/AgentOSOrchestrator.js +1 -0
  14. package/dist/api/runtime/AgentOSOrchestrator.js.map +1 -1
  15. package/dist/api/runtime/ExternalToolResultHandler.d.ts.map +1 -1
  16. package/dist/api/runtime/ExternalToolResultHandler.js +1 -0
  17. package/dist/api/runtime/ExternalToolResultHandler.js.map +1 -1
  18. package/dist/api/runtime/StreamChunkEmitter.d.ts.map +1 -1
  19. package/dist/api/runtime/StreamChunkEmitter.js +1 -0
  20. package/dist/api/runtime/StreamChunkEmitter.js.map +1 -1
  21. package/dist/api/runtime/structuredReply.d.ts +138 -0
  22. package/dist/api/runtime/structuredReply.d.ts.map +1 -0
  23. package/dist/api/runtime/structuredReply.js +284 -0
  24. package/dist/api/runtime/structuredReply.js.map +1 -0
  25. package/dist/api/types/AgentOSInput.d.ts +6 -0
  26. package/dist/api/types/AgentOSInput.d.ts.map +1 -1
  27. package/dist/api/types/AgentOSResponse.d.ts +2 -0
  28. package/dist/api/types/AgentOSResponse.d.ts.map +1 -1
  29. package/dist/api/types/AgentOSResponse.js.map +1 -1
  30. package/dist/cognition/substrate/GMI.d.ts.map +1 -1
  31. package/dist/cognition/substrate/GMI.js +58 -4
  32. package/dist/cognition/substrate/GMI.js.map +1 -1
  33. package/dist/cognition/substrate/IGMI.d.ts +2 -0
  34. package/dist/cognition/substrate/IGMI.d.ts.map +1 -1
  35. package/dist/cognition/substrate/IGMI.js.map +1 -1
  36. package/dist/core/utils/errors.d.ts +2 -0
  37. package/dist/core/utils/errors.d.ts.map +1 -1
  38. package/dist/core/utils/errors.js +3 -0
  39. package/dist/core/utils/errors.js.map +1 -1
  40. package/dist/index.d.ts +2 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -0
  43. package/dist/index.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,284 @@
1
+ /**
2
+ * @module api/runtime/structuredReply
3
+ *
4
+ * A reply that must match a schema, on the full runtime: the spec a request carries, the text parsed and checked
5
+ * against a Zod or a JSON schema, the repair message a failed attempt is answered with, and the check again after
6
+ * the output guardrails. `generateObject` shares the parsers here.
7
+ */
8
+ import Ajv from 'ajv';
9
+ import addFormats from 'ajv-formats';
10
+ import { lowerZodToJsonSchema } from '../../orchestration/compiler/SchemaLowering.js';
11
+ export class StructuredReplyConfigError extends Error {
12
+ constructor(message) {
13
+ super(message);
14
+ this.code = 'STRUCTURED_REPLY_CONFIG';
15
+ this.name = 'StructuredReplyConfigError';
16
+ }
17
+ }
18
+ export const STRUCTURED_REPLY_DEFAULTS = { name: 'reply', maxRetries: 2, maxRetriesCeiling: 5, onExhausted: 'error', streamDeltas: false };
19
+ export function isZodSchema(schema) {
20
+ return typeof schema === 'object' && schema !== null && typeof schema.safeParse === 'function';
21
+ }
22
+ /** Resolves a `schemaRef` through the registry; a spec that names no schema the runtime can reach is refused here, before any turn. */
23
+ export function resolveStructuredReplySpec(spec, registry) {
24
+ if (spec.schema !== undefined) {
25
+ if (!isZodSchema(spec.schema) && (typeof spec.schema !== 'object' || spec.schema === null || Array.isArray(spec.schema))) {
26
+ throw new StructuredReplyConfigError('structuredReply.schema must be a Zod schema or a JSON Schema object.');
27
+ }
28
+ return { ...spec, schema: spec.schema };
29
+ }
30
+ if (spec.schemaRef) {
31
+ const found = registry?.get(spec.schemaRef);
32
+ if (found)
33
+ return { ...spec, schema: found };
34
+ throw new StructuredReplyConfigError(`structuredReply.schemaRef "${spec.schemaRef}" is not in AgentOSConfig.structuredSchemas.`);
35
+ }
36
+ throw new StructuredReplyConfigError('structuredReply needs a schema or a schemaRef.');
37
+ }
38
+ let sharedAjv;
39
+ function ajvInstance() {
40
+ if (!sharedAjv) {
41
+ sharedAjv = new Ajv({ allErrors: true, strict: false });
42
+ addFormats(sharedAjv);
43
+ }
44
+ return sharedAjv;
45
+ }
46
+ /** Builds what a structured turn needs from the spec, or null when the request carries none. Throws on a spec without a usable schema. */
47
+ export function resolveStructuredReply(spec) {
48
+ if (!spec)
49
+ return null;
50
+ const { schema } = resolveStructuredReplySpec(spec);
51
+ const name = (spec.name ?? '').trim() || STRUCTURED_REPLY_DEFAULTS.name;
52
+ const maxRetries = Math.max(0, Math.min(STRUCTURED_REPLY_DEFAULTS.maxRetriesCeiling, Math.trunc(spec.maxRetries ?? STRUCTURED_REPLY_DEFAULTS.maxRetries)));
53
+ const onExhausted = spec.onExhausted === 'return_invalid' ? 'return_invalid' : 'error';
54
+ const streamDeltas = spec.streamDeltas === true;
55
+ if (isZodSchema(schema)) {
56
+ const jsonSchema = lowerZodToJsonSchema(schema);
57
+ return {
58
+ name,
59
+ description: spec.description,
60
+ zod: schema,
61
+ jsonSchema,
62
+ maxRetries,
63
+ onExhausted,
64
+ streamDeltas,
65
+ instruction: buildSchemaInstructionText(jsonSchema, name, spec.description),
66
+ checkValue: (value) => checkWithZod(value, schema),
67
+ };
68
+ }
69
+ let validate;
70
+ try {
71
+ validate = ajvInstance().compile(schema);
72
+ }
73
+ catch (e) {
74
+ throw new StructuredReplyConfigError(`structuredReply.schema is not a valid JSON Schema: ${e instanceof Error ? e.message : String(e)}`);
75
+ }
76
+ return {
77
+ name,
78
+ description: spec.description,
79
+ jsonSchema: schema,
80
+ maxRetries,
81
+ onExhausted,
82
+ streamDeltas,
83
+ instruction: buildSchemaInstructionText(schema, name, spec.description),
84
+ checkValue: (value) => {
85
+ if (validate(value))
86
+ return { ok: true, value };
87
+ const issues = (validate.errors ?? []).slice(0, MAX_FEEDBACK_VALIDATION_ISSUES).map((e) => `- ${e.instancePath || '<root>'}: ${e.message ?? 'does not match the schema'}`);
88
+ return { ok: false, issues: issues.length ? issues : ['- <root>: does not match the schema'], value };
89
+ },
90
+ };
91
+ }
92
+ function checkWithZod(value, schema) {
93
+ let parsed = schema.safeParse(value);
94
+ if (!parsed.success) {
95
+ const repaired = repairStringEncodedContainers(value, parsed.error);
96
+ if (repaired.repaired)
97
+ parsed = schema.safeParse(repaired.value);
98
+ }
99
+ if (parsed.success)
100
+ return { ok: true, value: parsed.data };
101
+ return { ok: false, issues: summarizeZodErrors(parsed.error).split('\n'), value };
102
+ }
103
+ /** Parses the model's text and checks it: the JSON is found in plain text, in a code fence, or between the first and last brace. */
104
+ export function checkStructuredReply(text, resolved) {
105
+ let raw;
106
+ try {
107
+ raw = extractJson(text);
108
+ }
109
+ catch (e) {
110
+ return { ok: false, issues: [`- <root>: the reply is not JSON (${e instanceof Error ? e.message : String(e)})`] };
111
+ }
112
+ return resolved.checkValue(raw);
113
+ }
114
+ /** The message a failed attempt is answered with, inside the same turn. The schema itself stands in the system prompt. */
115
+ export function structuredRepairMessage(issues, resolved, badText) {
116
+ return [
117
+ `Your reply did not match the required JSON schema for "${resolved.name}".`,
118
+ 'Problems:',
119
+ ...issues,
120
+ '',
121
+ `Your reply was: ${summarizeBadResponse(badText)}`,
122
+ '',
123
+ 'Reply again with ONLY the corrected JSON object: no markdown, no code fences, no explanation.',
124
+ ].join('\n');
125
+ }
126
+ /**
127
+ * The check after the output guardrails: a sanitizer that rewrote the final text may have broken the shape the model
128
+ * matched. Returns the output as it stands after the rewrite, with `stage: 'post_guardrail'`.
129
+ */
130
+ export function recheckStructuredReply(finalText, previous, resolved) {
131
+ const check = checkStructuredReply(finalText ?? '', resolved);
132
+ if (check.ok)
133
+ return { value: check.value, meta: { ...previous.meta, valid: true, stage: 'post_guardrail', issues: undefined } };
134
+ return { value: check.value ?? null, meta: { ...previous.meta, valid: false, stage: 'post_guardrail', issues: check.issues } };
135
+ }
136
+ // ---------------------------------------------------------------------------
137
+ // The parsers generateObject and the structured turn share
138
+ // ---------------------------------------------------------------------------
139
+ export function buildSchemaInstructionText(jsonSchema, schemaName, schemaDescription) {
140
+ const parts = [];
141
+ parts.push('You MUST respond with ONLY a valid JSON object — no markdown, no code fences, no explanation.');
142
+ if (schemaName)
143
+ parts.push(`The JSON object should be a "${schemaName}".`);
144
+ if (schemaDescription)
145
+ parts.push(schemaDescription);
146
+ parts.push('');
147
+ parts.push('The JSON MUST conform to this JSON Schema:');
148
+ parts.push(JSON.stringify(jsonSchema, null, 2));
149
+ return parts.join('\n');
150
+ }
151
+ /**
152
+ * Attempts to extract a JSON object from raw LLM text.
153
+ *
154
+ * First tries a direct `JSON.parse`. If that fails, looks for JSON inside
155
+ * common markdown code fences (` ```json ... ``` ` or ` ``` ... ``` `).
156
+ * This handles the common case where models wrap JSON in code blocks
157
+ * despite being told not to.
158
+ *
159
+ * @param text - The raw text to parse.
160
+ * @returns The parsed value.
161
+ * @throws {SyntaxError} When no valid JSON can be extracted.
162
+ */
163
+ export function extractJson(text) {
164
+ const trimmed = text.trim();
165
+ // Fast path: direct JSON parse
166
+ try {
167
+ return JSON.parse(trimmed);
168
+ }
169
+ catch {
170
+ // Fall through to code fence extraction
171
+ }
172
+ // Try extracting from markdown code fences (```json ... ``` or ``` ... ```)
173
+ const fenceMatch = trimmed.match(/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/);
174
+ if (fenceMatch?.[1]) {
175
+ return JSON.parse(fenceMatch[1].trim());
176
+ }
177
+ // Last resort: find the first { and last } to extract a JSON object
178
+ const firstBrace = trimmed.indexOf('{');
179
+ const lastBrace = trimmed.lastIndexOf('}');
180
+ if (firstBrace !== -1 && lastBrace > firstBrace) {
181
+ return JSON.parse(trimmed.slice(firstBrace, lastBrace + 1));
182
+ }
183
+ throw new SyntaxError(`No valid JSON found in LLM response: ${trimmed.slice(0, 200)}`);
184
+ }
185
+ /**
186
+ * Re-parses string-encoded containers where the schema expects an array or
187
+ * object but the model produced a JSON STRING containing one.
188
+ *
189
+ * Models on the tool-use / structured-output path intermittently
190
+ * double-encode a nested container — `{"verdicts": "[{...}]"}` instead of
191
+ * `{"verdicts": [{...}]}` — most often on long, deeply nested payloads. The
192
+ * raw text extracts as valid JSON, so only Zod sees the defect
193
+ * (`invalid_type: expected array, received string`), and a retry re-rolls
194
+ * the same dice with the same prompt.
195
+ *
196
+ * Driven strictly by the validation issues: for each `invalid_type` issue
197
+ * expecting a container whose actual value is a string that syntactically
198
+ * starts like that container, `JSON.parse` the string in place on a clone.
199
+ * One pass, no recursion; anything that does not parse is left untouched so
200
+ * the caller's normal retry/feedback path still applies.
201
+ *
202
+ * @param value - The extracted-but-invalid candidate value.
203
+ * @param error - The Zod error from the failed validation.
204
+ * @returns The (possibly repaired) value and whether any repair applied.
205
+ * @internal
206
+ */
207
+ export function repairStringEncodedContainers(value, error) {
208
+ const targets = error.issues.filter(issue => issue.code === 'invalid_type' &&
209
+ (issue.expected === 'array' || issue.expected === 'object'));
210
+ if (targets.length === 0)
211
+ return { value, repaired: false };
212
+ let root;
213
+ try {
214
+ root = structuredClone(value);
215
+ }
216
+ catch {
217
+ // Non-cloneable input (should never happen for JSON-derived data) —
218
+ // repair is best-effort, never a new failure mode.
219
+ return { value, repaired: false };
220
+ }
221
+ let repaired = false;
222
+ for (const issue of targets) {
223
+ const path = issue.path ?? [];
224
+ // Resolve the offending node and its parent inside the clone.
225
+ let parent = null;
226
+ let node = root;
227
+ for (const key of path) {
228
+ if (node === null || typeof node !== 'object') {
229
+ node = undefined;
230
+ break;
231
+ }
232
+ parent = node;
233
+ node = parent[key];
234
+ }
235
+ if (typeof node !== 'string')
236
+ continue;
237
+ const trimmed = node.trim();
238
+ const expectsArray = issue.expected === 'array';
239
+ if (expectsArray ? !trimmed.startsWith('[') : !trimmed.startsWith('{'))
240
+ continue;
241
+ let inner;
242
+ try {
243
+ inner = JSON.parse(trimmed);
244
+ }
245
+ catch {
246
+ continue;
247
+ }
248
+ if (path.length === 0) {
249
+ // The root itself was string-encoded.
250
+ root = inner;
251
+ repaired = true;
252
+ continue;
253
+ }
254
+ if (parent) {
255
+ parent[path[path.length - 1]] = inner;
256
+ repaired = true;
257
+ }
258
+ }
259
+ return { value: root, repaired };
260
+ }
261
+ export const MAX_FEEDBACK_BAD_RESPONSE_CHARS = 500;
262
+ export const MAX_FEEDBACK_VALIDATION_ISSUES = 5;
263
+ /**
264
+ * Truncates a bad LLM response for retry feedback to avoid prompt-token bloat.
265
+ * @internal
266
+ */
267
+ export function summarizeBadResponse(text) {
268
+ if (text.length <= MAX_FEEDBACK_BAD_RESPONSE_CHARS)
269
+ return text;
270
+ return `${text.slice(0, MAX_FEEDBACK_BAD_RESPONSE_CHARS)}... (truncated, ${text.length - MAX_FEEDBACK_BAD_RESPONSE_CHARS} more chars)`;
271
+ }
272
+ /**
273
+ * Truncates Zod validation errors for retry feedback.
274
+ * @internal
275
+ */
276
+ export function summarizeZodErrors(error) {
277
+ const issues = error.issues.slice(0, MAX_FEEDBACK_VALIDATION_ISSUES);
278
+ const lines = issues.map(i => `- ${i.path.join('.') || '<root>'}: ${i.message}`);
279
+ if (error.issues.length > MAX_FEEDBACK_VALIDATION_ISSUES) {
280
+ lines.push(`(${error.issues.length - MAX_FEEDBACK_VALIDATION_ISSUES} more issues omitted)`);
281
+ }
282
+ return lines.join('\n');
283
+ }
284
+ //# sourceMappingURL=structuredReply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuredReply.js","sourceRoot":"","sources":["../../../src/api/runtime/structuredReply.ts"],"names":[],"mappings":"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"}
@@ -140,5 +140,11 @@ export interface ProcessingOptions {
140
140
  debugMode?: boolean;
141
141
  forceNewConversation?: boolean;
142
142
  customFlags?: Record<string, any>;
143
+ /**
144
+ * A reply that must match a schema: the model is instructed, its reply parsed and checked, a reply that does not
145
+ * match asked for again inside the turn, and the final chunk carries the parsed value (`structured`). See
146
+ * `src/api/runtime/structuredReply.ts`.
147
+ */
148
+ structuredReply?: import('../runtime/structuredReply').StructuredReplySpec;
143
149
  }
144
150
  //# sourceMappingURL=AgentOSInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentOSInput.d.ts","sourceRoot":"","sources":["../../../src/api/types/AgentOSInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentOSInput.d.ts","sourceRoot":"","sources":["../../../src/api/types/AgentOSInput.ts"],"names":[],"mappings":"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"}
@@ -133,6 +133,8 @@ export interface AgentOSFinalResponseChunk extends AgentOSResponseChunk {
133
133
  * Undefined when no RAG retrieval was performed.
134
134
  */
135
135
  ragSources?: import('../../cognition/rag').RagRetrievedChunk[];
136
+ /** On a structured turn (`ProcessingOptions.structuredReply`): the parsed value and how it was checked. */
137
+ structured?: import('../runtime/structuredReply').StructuredReplyOutput;
136
138
  }
137
139
  /**
138
140
  * @typedef {Object} AgentOSErrorChunk
@@ -1 +1 @@
1
- {"version":3,"file":"AgentOSResponse.d.ts","sourceRoot":"","sources":["../../../src/api/types/AgentOSResponse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentOSResponse.d.ts","sourceRoot":"","sources":["../../../src/api/types/AgentOSResponse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AgentOSResponse.js","sourceRoot":"","sources":["../../../src/api/types/AgentOSResponse.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;;;;GAKG;AAcH;;;GAGG;AACH,MAAM,CAAN,IAAY,wBAYX;AAZD,WAAY,wBAAwB;IAClC,qDAAyB,CAAA;IACzB,+DAAmC,CAAA;IACnC,mEAAuC,CAAA;IACvC,yEAA6C,CAAA;IAC7C,qDAAyB,CAAA;IACzB,6DAAiC,CAAA;IACjC,2CAAe,CAAA;IACf,+DAAmC,CAAA;IACnC,+DAAmC,CAAA;IACnC,2DAA+B,CAAA;IAC/B,iEAAqC,CAAA;AACvC,CAAC,EAZW,wBAAwB,KAAxB,wBAAwB,QAYnC;AAkND,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAc;IAEd,OAAO,CACL,aAAa,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,IAAI,KAAK,wBAAwB,CAAC,iBAAiB;QACzD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,KAAc;IAEd,OAAO,CACL,sBAAsB,CAAC,KAAK,CAAC;QAC7B,KAAK,CAAC,aAAa,KAAK,UAAU;QAClC,KAAK,CAAC,0BAA0B,KAAK,IAAI,CAC1C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AgentOSResponse.js","sourceRoot":"","sources":["../../../src/api/types/AgentOSResponse.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;;;;GAKG;AAcH;;;GAGG;AACH,MAAM,CAAN,IAAY,wBAYX;AAZD,WAAY,wBAAwB;IAClC,qDAAyB,CAAA;IACzB,+DAAmC,CAAA;IACnC,mEAAuC,CAAA;IACvC,yEAA6C,CAAA;IAC7C,qDAAyB,CAAA;IACzB,6DAAiC,CAAA;IACjC,2CAAe,CAAA;IACf,+DAAmC,CAAA;IACnC,+DAAmC,CAAA;IACnC,2DAA+B,CAAA;IAC/B,iEAAqC,CAAA;AACvC,CAAC,EAZW,wBAAwB,KAAxB,wBAAwB,QAYnC;AAqND,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAc;IAEd,OAAO,CACL,aAAa,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,IAAI,KAAK,wBAAwB,CAAC,iBAAiB;QACzD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,KAAc;IAEd,OAAO,CACL,sBAAsB,CAAC,KAAK,CAAC;QAC7B,KAAK,CAAC,aAAa,KAAK,UAAU;QAClC,KAAK,CAAC,0BAA0B,KAAK,IAAI,CAC1C,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GMI.d.ts","sourceRoot":"","sources":["../../../src/cognition/substrate/GMI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GMI.d.ts","sourceRoot":"","sources":["../../../src/cognition/substrate/GMI.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ import { GMIOutputChunkType, GMIPrimeState, GMIMood, ReasoningEntryType, GMIInte
17
17
  } from './IGMI.js';
18
18
  import { hardLimitsBlock, HARD_LIMITS_PRIORITY } from './personas/hardLimits.js';
19
19
  import { RagMemoryCategory } from '../rag/IRetrievalAugmentor.js';
20
+ import { checkStructuredReply, resolveStructuredReply, structuredRepairMessage, StructuredReplyConfigError } from '../../api/runtime/structuredReply.js';
20
21
  import { GMIError, GMIErrorCode, createGMIErrorFromError } from '../../core/utils/errors.js';
21
22
  import { ConversationHistoryManager } from './ConversationHistoryManager.js';
22
23
  import { CognitiveMemoryBridge } from './CognitiveMemoryBridge.js';
@@ -860,6 +861,20 @@ export class GMI {
860
861
  ? requestedCacheDiagnostics
861
862
  : this.activePersona.defaultModelCompletionOptions?.cacheDiagnostics);
862
863
  let lastRagSources;
864
+ // A structured turn (ProcessingOptions.structuredReply): the schema the reply must match, resolved once. Its
865
+ // instruction joins the system prompt, its Zod schema reaches the gateway, no delta streams before the check
866
+ // unless asked, and a reply that does not match is asked for again inside the turn.
867
+ let structuredReply = null;
868
+ try {
869
+ structuredReply = resolveStructuredReply(turnInput.metadata?.options?.structuredReply);
870
+ }
871
+ catch (error) {
872
+ if (error instanceof StructuredReplyConfigError)
873
+ throw new GMIError(error.message, GMIErrorCode.VALIDATION_ERROR, { code: error.code });
874
+ throw error;
875
+ }
876
+ let structuredAttempts = 0;
877
+ let structuredResult;
863
878
  main_processing_loop: while (safetyBreak < maxToolLoopIterations) {
864
879
  safetyBreak++;
865
880
  let augmentedContextFromRAG = "";
@@ -954,6 +969,9 @@ export class GMI {
954
969
  priority: 57,
955
970
  });
956
971
  }
972
+ if (structuredReply) {
973
+ systemPrompts.push({ content: structuredReply.instruction, priority: 900 });
974
+ }
957
975
  // the persona's hard limits close the system prompt, after everything the turn added above
958
976
  const hardLimits = hardLimitsBlock(this.activePersona.hardLimits);
959
977
  if (hardLimits) {
@@ -1036,8 +1054,8 @@ export class GMI {
1036
1054
  stream: true,
1037
1055
  };
1038
1056
  // A schema travels to the gateway, which lowers it per hop (D9); it is not a provider option.
1039
- const responseSchema = turnOptions.responseSchema;
1040
- const schemaName = turnOptions.schemaName;
1057
+ const responseSchema = turnOptions.responseSchema ?? structuredReply?.zod;
1058
+ const schemaName = turnOptions.schemaName ?? (structuredReply && responseSchema === structuredReply.zod ? structuredReply.name : undefined);
1041
1059
  // The gateway's route: the model asked for, the last user message (its text
1042
1060
  // is the router's task hint: the text parts of a multimodal message, and on
1043
1061
  // a continuation the message being answered, never the continuation's own
@@ -1179,7 +1197,9 @@ export class GMI {
1179
1197
  if (chunk.responseTextDelta) {
1180
1198
  currentIterationTextResponse += chunk.responseTextDelta;
1181
1199
  aggregatedResponseText += chunk.responseTextDelta; // Aggregate for final output
1182
- yield this.createOutputChunk(turnInput.interactionId, GMIOutputChunkType.TEXT_DELTA, chunk.responseTextDelta, { usage: chunk.usage });
1200
+ if (!structuredReply || structuredReply.streamDeltas) {
1201
+ yield this.createOutputChunk(turnInput.interactionId, GMIOutputChunkType.TEXT_DELTA, chunk.responseTextDelta, { usage: chunk.usage });
1202
+ }
1183
1203
  textDeltaEmitted = true;
1184
1204
  }
1185
1205
  // Handle fully formed tool_calls if present in the chunk's message
@@ -1215,7 +1235,9 @@ export class GMI {
1215
1235
  if (chunk.isFinal && !textDeltaEmitted && typeof choice?.message?.content === 'string' && choice.message.content.length > 0) {
1216
1236
  currentIterationTextResponse = choice.message.content;
1217
1237
  aggregatedResponseText += choice.message.content;
1218
- yield this.createOutputChunk(turnInput.interactionId, GMIOutputChunkType.TEXT_DELTA, choice.message.content, { usage: chunk.usage });
1238
+ if (!structuredReply || structuredReply.streamDeltas) {
1239
+ yield this.createOutputChunk(turnInput.interactionId, GMIOutputChunkType.TEXT_DELTA, choice.message.content, { usage: chunk.usage });
1240
+ }
1219
1241
  textDeltaEmitted = true;
1220
1242
  }
1221
1243
  if (chunk.isFinal && choice?.finishReason) {
@@ -1318,6 +1340,37 @@ export class GMI {
1318
1340
  ...(stepFinishReason ? { finishReason: stepFinishReason } : {}),
1319
1341
  ...(stepUsage ? { usage: stepUsage } : {}),
1320
1342
  });
1343
+ // The structured check, on a step that answered with text rather than tool calls. A reply that does not match
1344
+ // is asked for again: the invalid reply and the repair request join this turn's prompt and never the durable
1345
+ // history, and the turn's text starts over with the next attempt.
1346
+ if (structuredReply && currentIterationToolCallRequests.length === 0) {
1347
+ structuredAttempts += 1;
1348
+ const lifted = stepStructuredOutput !== undefined;
1349
+ const check = lifted ? structuredReply.checkValue(stepStructuredOutput) : checkStructuredReply(currentIterationTextResponse, structuredReply);
1350
+ const enforcement = lifted ? 'forced_tool' : gateway ? 'provider_schema' : 'prompt_only';
1351
+ if (check.ok) {
1352
+ structuredResult = { value: check.value, meta: { schemaName: structuredReply.name, valid: true, attempts: structuredAttempts, enforcement, stage: 'model' } };
1353
+ if (lifted && !currentIterationTextResponse) {
1354
+ // the forced tool call carried the reply: its text is the value, so the final response holds it too
1355
+ currentIterationTextResponse = JSON.stringify(check.value);
1356
+ aggregatedResponseText += currentIterationTextResponse;
1357
+ }
1358
+ }
1359
+ else {
1360
+ const canRetry = structuredAttempts <= structuredReply.maxRetries && safetyBreak < maxToolLoopIterations;
1361
+ if (canRetry) {
1362
+ this.addTraceEntry(ReasoningEntryType.WARNING, `The reply did not match the schema "${structuredReply.name}" (attempt ${structuredAttempts}); asking again.`, { issues: check.issues });
1363
+ turnMessages.push({ role: 'assistant', content: currentIterationTextResponse || null });
1364
+ turnMessages.push({ role: 'user', content: structuredRepairMessage(check.issues, structuredReply, currentIterationTextResponse) });
1365
+ aggregatedResponseText = '';
1366
+ continue main_processing_loop;
1367
+ }
1368
+ if (structuredReply.onExhausted === 'error') {
1369
+ throw new GMIError(`The reply did not match the schema "${structuredReply.name}" after ${structuredAttempts} attempt(s).`, GMIErrorCode.STRUCTURED_OUTPUT_INVALID, { schemaName: structuredReply.name, attempts: structuredAttempts, issues: check.issues });
1370
+ }
1371
+ structuredResult = { value: check.value ?? null, meta: { schemaName: structuredReply.name, valid: false, attempts: structuredAttempts, enforcement, stage: 'model', issues: check.issues } };
1372
+ }
1373
+ }
1321
1374
  const assistantMessage = {
1322
1375
  role: 'assistant',
1323
1376
  content: currentIterationTextResponse || null,
@@ -1408,6 +1461,7 @@ export class GMI {
1408
1461
  usage: aggregatedUsage,
1409
1462
  error: lastErrorForOutput,
1410
1463
  ragSources: lastRagSources,
1464
+ ...(structuredResult ? { structuredOutput: structuredResult } : {}),
1411
1465
  };
1412
1466
  return finalTurnOutput; // Return the aggregated output
1413
1467
  }