@sensigo/realm 0.35.0 → 0.37.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.
@@ -1 +1 @@
1
- {"version":3,"file":"run-health.d.ts","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"AAuFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAK1E;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAsB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EACA,oBAAoB,GACpB,aAAa,GACb,qBAAqB,GACrB,kBAAkB,GAClB,4BAA4B,GAE5B,0BAA0B,GAC1B,iBAAiB,GACjB,mCAAmC,GAGnC,6BAA6B,GAM7B,6BAA6B,GAK7B,8BAA8B,CAAC;IACnC;6DACyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;yCAEqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf;;;;4DAIwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;kDAC8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;mEAG+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA2ED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAC/E,gBAAgB,EAAE,CAwKpB"}
1
+ {"version":3,"file":"run-health.d.ts","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"AAuFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAK1E;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAsB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EACA,oBAAoB,GACpB,aAAa,GACb,qBAAqB,GACrB,kBAAkB,GAClB,4BAA4B,GAE5B,0BAA0B,GAC1B,iBAAiB,GACjB,mCAAmC,GAGnC,6BAA6B,GAM7B,6BAA6B,GAQ7B,8BAA8B,CAAC;IACnC;6DACyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;yCAEqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf;;;;4DAIwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;kDAC8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;mEAG+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAoHD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAC/E,gBAAgB,EAAE,CAwKpB"}
@@ -54,6 +54,30 @@ function findGateCorruption(run) {
54
54
  * Checked from BOTH branches of {@link classifyRunHealth}, mirroring {@link findGateCorruption}'s
55
55
  * own dual-branch pattern — a live run's evidence and a terminal run's evidence are read exactly
56
56
  * the same way; only WHERE the caller is standing differs.
57
+ *
58
+ * THREE scope notes an operator needs before reading this finding:
59
+ *
60
+ * 1. EXPECTED FIRE, not an anomaly. Every run of a step that declares `structured_output: strict`
61
+ * AND declares tools now fires this finding with `unsupported_context_tools`, on every run,
62
+ * permanently — that step's OUTPUT is produced on the tools path, which has no
63
+ * grammar-constrained submit call. It is a true statement about the output dimension, and it
64
+ * is a baseline, not a regression signal. Do not tune alerting on the finding's mere presence
65
+ * for such steps; look at the reason list.
66
+ * 2. The finding is OUTPUT-dimension-first. The tool-ARGUMENTS dimension contributes exactly one
67
+ * marked literal, `tool_args:api_rejected_schema` (see the loop below). A tools step can be
68
+ * running strict successfully on most of its tools while this finding reports
69
+ * `unsupported_context_tools` — those are not in contradiction. Per-tool detail is deliberately
70
+ * NOT surfaced here (it belongs to `realm run inspect`/`export`); MCP pollers see this narrow
71
+ * finding only.
72
+ * 3. (issue #313) A SECOND expected-fire baseline: a strict-declared step driven through an
73
+ * OpenAI-COMPATIBLE endpoint (`--base-url`) without the `--strict-base-url` attestation fires
74
+ * this finding on every run with `compat_endpoint`. Realm declined to send strict rather than
75
+ * send it into an endpoint that might accept and ignore it — a deliberate choice, correctly
76
+ * reported. Baseline, not regression; the operator remedy is either `--strict-base-url` (if
77
+ * the endpoint genuinely enforces strict) or a native endpoint. Note this is INCLUDED while
78
+ * `external_agent` is excluded, and the distinction is epistemic, not cosmetic: realm cannot
79
+ * KNOW what an external driver did, whereas compat is realm's own decision — the same footing
80
+ * as `unsupported_context_tools`, which is also included.
57
81
  */
58
82
  function findStructuredOutputDowngrades(run) {
59
83
  const reasonsByStep = new Map();
@@ -61,11 +85,28 @@ function findStructuredOutputDowngrades(run) {
61
85
  const meta = entry.diagnostics?.structured_output;
62
86
  if (meta === undefined)
63
87
  continue;
64
- if (meta.downgrade_reason === undefined || meta.downgrade_reason === 'external_agent')
65
- continue;
66
- const reasons = reasonsByStep.get(entry.step_id) ?? new Set();
67
- reasons.add(meta.downgrade_reason);
68
- reasonsByStep.set(entry.step_id, reasons);
88
+ if (meta.downgrade_reason !== undefined && meta.downgrade_reason !== 'external_agent') {
89
+ const reasons = reasonsByStep.get(entry.step_id) ?? new Set();
90
+ reasons.add(meta.downgrade_reason);
91
+ reasonsByStep.set(entry.step_id, reasons);
92
+ }
93
+ // issue #311 — the NARROW tool-arguments widening. Only ONE class from the tool-args
94
+ // dimension is admitted: `api_rejected_schema`, the event where the API actively REJECTED a
95
+ // strict tool schema realm had assessed as eligible. That is the trigger #346 watches for,
96
+ // and it is the only tool-args outcome an operator can act on. Everything else in
97
+ // `tool_args.reasons` (`budget_excluded`, the eligibility verdict codes, the 503 labels) is
98
+ // routine, expected, and would drown the finding — it stays visible via inspect/export.
99
+ //
100
+ // The literal is DIMENSION-MARKED (`tool_args:` prefix) so it can never be confused with the
101
+ // step-OUTPUT reason of the same name, and so the #346 trigger greps cleanly against the
102
+ // permanent `unsupported_context_tools` baseline every opted-in tools step now carries.
103
+ for (const tool of meta.tool_args?.tools ?? []) {
104
+ if (!(tool.reasons ?? []).includes('api_rejected_schema'))
105
+ continue;
106
+ const reasons = reasonsByStep.get(entry.step_id) ?? new Set();
107
+ reasons.add('tool_args:api_rejected_schema');
108
+ reasonsByStep.set(entry.step_id, reasons);
109
+ }
69
110
  }
70
111
  if (reasonsByStep.size === 0)
71
112
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"run-health.js","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-health.js","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -47,7 +47,7 @@ export type { Requirement, CapabilityBlockInfo } from './engine/capability.js';
47
47
  export { evaluatePrecondition, checkPreconditions, evaluateAllPreconditions, } from './engine/precondition.js';
48
48
  export type { PreconditionResult } from './engine/precondition.js';
49
49
  export type { StepDiagnostics } from './types/run-record.js';
50
- export declare const VERSION = "0.35.0";
50
+ export declare const VERSION = "0.37.0";
51
51
  export type { ToolCallRecord, McpServerConfig } from './types/mcp-types.js';
52
52
  export type { ServiceAdapter, ServiceResponse } from './extensions/service-adapter.js';
53
53
  export type { StepHandler, StepHandlerInputs, StepContext, StepHandlerResult, } from './extensions/step-handler.js';
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ export { classifyRunHealth, DEFAULT_IDLE_THRESHOLD_MS } from './engine/run-healt
36
36
  export { computeGateDueState } from './engine/gate-timing.js';
37
37
  export { requirementForStep, unmetCapabilities, findCapabilityBlockedSteps, capabilityWarning, } from './engine/capability.js';
38
38
  export { evaluatePrecondition, checkPreconditions, evaluateAllPreconditions, } from './engine/precondition.js';
39
- export const VERSION = '0.35.0';
39
+ export const VERSION = '0.37.0';
40
40
  export { ExtensionRegistry } from './extensions/registry.js';
41
41
  export { createDefaultRegistry } from './extensions/default-registry.js';
42
42
  export { validateDeploymentManifest, collectManifestSecretRefs, DEPLOYMENT_MANIFEST_JSON_SCHEMA, } from './manifest/deployment-manifest.js';
@@ -80,6 +80,15 @@ export interface TraceNormalizationSummary {
80
80
  * that the API enforced it). Per-attempt: a retry-configured step's evidence array can carry a
81
81
  * different value per attempt. `requested` is always `true` when this object is present at all —
82
82
  * it exists ONLY on a step that declared `structured_output: 'strict'`.
83
+ *
84
+ * SCOPE (issue #311 truth pass): every field on this object EXCEPT `tool_args` describes ONE
85
+ * dimension — the step's own OUTPUT request (the submit tool realm sends for the step's answer).
86
+ * That was the only dimension #236 shipped, so the original wording did not need to say so;
87
+ * it does now. `tool_args` describes the independent TOOL-ARGUMENTS dimension, and the two
88
+ * legitimately disagree on the same attempt: a tools-bearing step is permanently
89
+ * `sent: false` / `unsupported_context_tools` at the OUTPUT level while simultaneously carrying
90
+ * genuine per-tool `strict_sent: true` entries under `tool_args`. When reading a single field,
91
+ * check which dimension it belongs to before concluding "strict was off".
83
92
  */
84
93
  export interface StructuredOutputMeta {
85
94
  /** Always `true` — this object's mere presence already implies it; kept explicit so a reader
@@ -92,8 +101,16 @@ export interface StructuredOutputMeta {
92
101
  * `{requested: true, sent: false, downgrade_reason: 'external_agent'}` verbatim. */
93
102
  sent?: boolean;
94
103
  /** Caveat codes from `assessStructuredOutputEligibility`'s `eligible_with_caveats` verdict —
95
- * present only when `sent` is `true` and the schema carried caveats (never on an `ineligible`
96
- * attempt, where strict was never sent at all). */
104
+ * present whenever the Phase-B eligibility verdict carried them, REGARDLESS of what the live
105
+ * attempt then did (issue #332 correction: the mint is right, this doc was wrong). The verdict
106
+ * is computed once, at eligibility time (run-agent.ts:498-502), and its caveats are spread
107
+ * onto the meta unconditionally (run-agent.ts:690-695) — including onto a `sent: false` meta
108
+ * when the schema passed eligibility but the LIVE call then downgraded (a 400/503). `caveats`
109
+ * therefore records an eligibility-time fact about the SCHEMA; `sent`/`downgrade_reason`
110
+ * record the ATTEMPT's own outcome — the two can legitimately co-occur, and a reader
111
+ * disambiguates via the co-present fields, never via caveats' mere presence. Never present on
112
+ * a `gate_ineligible`/`external_agent` attempt (no eligibility verdict with caveats was ever
113
+ * computed for either). */
97
114
  caveats?: string[];
98
115
  /**
99
116
  * Why `sent` is `false` (absent when `sent` is `true`):
@@ -105,22 +122,143 @@ export interface StructuredOutputMeta {
105
122
  * - `service_unavailable` — a live 503 that did NOT match the grammar text (a generic overload
106
123
  * — fail-safe default label for any non-matching 503).
107
124
  * - `provider_unsupported` — the configured LLM provider does not implement `callStepWithMeta`
108
- * (a third-party `--provider-module` that only implements the base `callStep`).
109
- * - `unsupported_context_tools` the step declares `tools` (G6 v1 never supports strict on
110
- * a tools-bearing step).
125
+ * (a third-party `--provider-module` that only implements the base `callStep`). Both in-repo
126
+ * strict-capable providers override it, so at the STEP level this now names third-party
127
+ * modules specifically.
128
+ * - `unsupported_context_tools` — the step declares `tools`, so its OUTPUT is produced on the
129
+ * tools path, where realm sends no grammar-constrained submit call. That is a PER-PROVIDER
130
+ * DESIGN DECISION, not an API limitation: composing a step-output grammar with strict tool
131
+ * arguments in one request is unprobed on both providers, and doing it blind would make a
132
+ * 400 impossible to attribute to the right dimension. A future version wanting it starts
133
+ * with the probe. Issue #311 truth pass: this no
134
+ * longer means "strict is unsupported on this step" — strict may well have been attached to
135
+ * that step's TOOL-CALL ARGUMENTS on the very same attempt (see `tool_args`). It means only
136
+ * that the step's own output was not grammar-constrained.
111
137
  * - `external_agent` — the step declared `structured_output: 'strict'` but was driven by
112
138
  * something other than `realm agent` (e.g. an external agent calling `execute_step` over
113
139
  * MCP directly) — no `stepMeta.structuredOutput` was ever attached, so realm cannot know
114
140
  * whether strict was honored at all.
115
- */
116
- downgrade_reason?: 'gate_ineligible' | 'api_rejected_schema' | 'grammar_unavailable' | 'service_unavailable' | 'provider_unsupported' | 'unsupported_context_tools' | 'external_agent';
141
+ * - `compat_endpoint` (issue #313) — the provider is pointed at an OpenAI-COMPATIBLE endpoint
142
+ * via `--base-url`, and the author has not attested that it enforces strict. Realm declines
143
+ * to send strict rather than send it into an endpoint that may accept and ignore it. The
144
+ * remedy is `--strict-base-url` (an author attestation) or a native endpoint. Unlike
145
+ * `external_agent`, this is realm's own CHOICE, which is why the run-health finding
146
+ * includes it.
147
+ */
148
+ downgrade_reason?: 'gate_ineligible' | 'api_rejected_schema' | 'grammar_unavailable' | 'service_unavailable' | 'provider_unsupported' | 'unsupported_context_tools' | 'external_agent' | 'compat_endpoint';
117
149
  /** The raw API error message, when a live 400/503 drove a downgrade — attached verbatim,
118
- * never rewritten, so an operator can compare against Anthropic's own documented error text. */
150
+ * never rewritten, so an operator can compare against the provider's own documented error text. */
119
151
  api_message?: string;
152
+ /**
153
+ * Issue #313 — the provider's own machine-readable error fields, captured VERBATIM alongside
154
+ * `api_message` when a live 400 drove a downgrade. `null` is meaningful and preserved: OpenAI
155
+ * returns `param: null, code: null` for the model-unsupported class (probe P8), where the
156
+ * message is prose-only. Realm never KEYS any decision on these — they are capture-only, for
157
+ * an operator comparing against the provider's documented error taxonomy.
158
+ */
159
+ api_param?: string | null;
160
+ api_code?: string | null;
161
+ /**
162
+ * Issue #313 — which provider produced this attempt. Minted at a single run-agent chokepoint,
163
+ * so every meta run-agent writes carries it.
164
+ *
165
+ * The open `module:${string}` member names a third-party `--provider-module` by its module
166
+ * basename: such providers are assessed under the ANTHROPIC rule profile (realm cannot know a
167
+ * module's strict dialect), and this field is what makes that assumption detectable if the
168
+ * module in fact targets a different API.
169
+ *
170
+ * BY CONSTRUCTION absent on the engine's synthesized `external_agent` stamps: realm did not
171
+ * drive those attempts, so it has no provider to name.
172
+ */
173
+ provider?: 'anthropic' | 'openai' | 'openai-reasoning' | `module:${string}`;
120
174
  /** Whether the model's output arrived via the submit tool (`tool_use.input`, pre-parsed) or as
121
175
  * extracted text — the standing dodge detector (design record R-B): a schema shaped to make
122
176
  * the model prefer a text answer over the strict-constrained tool would show up here. */
123
177
  submission_channel?: 'tool' | 'text';
178
+ /**
179
+ * Issue #311 — the TOOL-ARGUMENTS dimension. Present only on a `structured_output: 'strict'`
180
+ * step that ran the tools path with at least one declared tool.
181
+ *
182
+ * Read this alongside the step-level fields above, which describe a DIFFERENT question. The
183
+ * step-level `sent`/`downgrade_reason` answer "did realm grammar-constrain this step's own
184
+ * OUTPUT?" — on the tools path that answer is permanently no (`unsupported_context_tools`),
185
+ * because the step's output still arrives through the unconstrained submit/extraction path.
186
+ * `tool_args` answers "did realm grammar-constrain the ARGUMENTS realm's model passes to each
187
+ * MCP tool?", which on the same attempt can be yes for some tools and no for others. The two
188
+ * co-occur by design; neither supersedes the other.
189
+ *
190
+ * Enforcement caveat: a strict grammar constrains what the model can EMIT. There is no Ajv on
191
+ * the tools path — realm does not post-hoc validate tool arguments — so for any tool that
192
+ * rides unconstrained, enforcement falls entirely to the MCP server at call time. Strict's
193
+ * guarantee also covers tool-NAME selection, not arguments alone.
194
+ *
195
+ * One entry per DECLARED tool, in declared order, whether or not strict was attached to it.
196
+ */
197
+ tool_args?: {
198
+ tools: Array<{
199
+ /** The bare tool name as declared by the MCP server (the wire name). */
200
+ name: string;
201
+ /** Always `true` — present iff this entry exists (house style, mirroring `requested`). */
202
+ strict_requested: true;
203
+ /** Whether realm placed `strict: true` on THIS tool in the request it handed to the SDK —
204
+ * the FINAL posture of the attempt (a mid-attempt drop rewrites this to `false`). Same
205
+ * observables-only discipline as `sent`: never a claim that the API honored it. */
206
+ strict_sent: boolean;
207
+ /**
208
+ * Why strict was not attached (or was dropped). Plural — codes co-occur. Values are the
209
+ * verdict codes from `assessStructuredOutputEligibility` verbatim
210
+ * (`no_schema` | `missing_additional_properties` | `unsupported_keyword` |
211
+ * `too_many_optionals` | `too_many_unions` | `unsupported_context_tools`), plus these
212
+ * non-verdict literals:
213
+ * - `budget_excluded` — eligible, but the API's per-request limits (≤20 strict tools,
214
+ * ≤24 summed optional properties) were already spent by earlier declared tools.
215
+ * - `api_rejected_schema` — a live 400 on a strict-carrying request dropped strict for
216
+ * this step's tools.
217
+ * - `grammar_unavailable` — a live 503 matching the grammar-compilation-unavailable text.
218
+ * - `service_unavailable` — a live 503 that did not match it (fail-safe generic label).
219
+ * - `provider_unsupported` — the configured provider does not place per-tool strict on the
220
+ * wire at all, so strict was never attached to ANY tool on this attempt and no per-tool
221
+ * eligibility was assessed. Since issue #313 both in-repo tool-capable providers DO place
222
+ * it, so at the per-tool level this now names third-party `--provider-module` providers
223
+ * specifically. Reuses the step-level literal of the same name.
224
+ * - `compat_endpoint` (issue #313) — the provider is pointed at an OpenAI-compatible
225
+ * endpoint without the `--strict-base-url` attestation, so no tool was sent strict. An
226
+ * ENDPOINT fact, never conflated with `provider_unsupported`: this provider CAN place the
227
+ * marker, realm chose not to have it do so here.
228
+ * - `not_all_required` (issue #313) — an OpenAI-profile verdict code: a property outside
229
+ * `required`. Reached on the tools path whenever an OpenAI-driven step assesses a tool
230
+ * schema; it is the dominant per-tool ineligibility code on that profile.
231
+ * - `exceeds_provider_limit` (issue #313) — an OpenAI-profile verdict code: the schema
232
+ * exceeds a documented size limit (nesting depth, property count, total characters, or
233
+ * enum values). The specific limit and measured value are in the verdict's remediation.
234
+ */
235
+ reasons?: string[];
236
+ /** Caveat codes from this tool's own eligibility verdict (e.g. `unenforced_keyword`,
237
+ * `optional_emission`) — an eligibility-time fact about the tool's schema, independent of
238
+ * what the live attempt then did. */
239
+ caveats?: string[];
240
+ }>;
241
+ /**
242
+ * Present only when a live 400/503 dropped strict PART-WAY THROUGH this attempt. Absent on
243
+ * an attempt that never attached strict at all — including every attempt after a sticky 400
244
+ * (there was no drop to describe; the tools simply started unconstrained).
245
+ */
246
+ dropped_mid_attempt?: {
247
+ /** `api_rejected_schema` | `grammar_unavailable` | `service_unavailable`. */
248
+ reason: string;
249
+ /** The raw API error message, verbatim. Lives HERE, never on the step-level
250
+ * `api_message` — that field describes the step-output dimension only. */
251
+ api_message?: string;
252
+ /** Issue #313 — the provider's machine-readable error fields, captured verbatim beside
253
+ * `api_message` (same capture-only, never-keyed discipline as the step-level pair).
254
+ * Minted by the OpenAI tools ladder; `null` is preserved and meaningful. */
255
+ api_param?: string | null;
256
+ api_code?: string | null;
257
+ /** How many strict-decorated requests returned 200 before the drop. `0` means the very
258
+ * first strict-carrying turn of this attempt was rejected. */
259
+ strict_turns_before_drop: number;
260
+ };
261
+ };
124
262
  }
125
263
  /** Diagnostic metadata captured during step execution. Written once; read by inspect. */
126
264
  export interface StepDiagnostics {
@@ -1 +1 @@
1
- {"version":3,"file":"run-record.d.ts","sourceRoot":"","sources":["../../src/types/run-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-record.d.ts","sourceRoot":"","sources":["../../src/types/run-record.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,62 @@
1
1
  import type { JsonSchema, StepDefinition } from '../types/workflow-definition.js';
2
2
  /** A single ineligibility reason. `remediation` is author-grade — it names the exact fix. */
3
3
  export interface StructuredOutputReason {
4
- code: 'no_schema' | 'missing_additional_properties' | 'unsupported_keyword' | 'too_many_optionals' | 'too_many_unions' | 'unsupported_context_tools';
4
+ code: 'no_schema' | 'missing_additional_properties' | 'unsupported_keyword' | 'too_many_optionals' | 'too_many_unions' | 'unsupported_context_tools' | 'not_all_required' | 'exceeds_provider_limit';
5
5
  /** Schema-relative path to the offending node (`''` = root; e.g. `properties.address`). */
6
6
  path: string;
7
7
  remediation: string;
8
8
  }
9
9
  /** A caveat: the schema is eligible, but this feature is enforced post-hoc by realm (Ajv), not
10
- * by the grammar itself — silently ignored or rejected by the API either way. */
10
+ * by the grammar itself — silently ignored or rejected by the API either way.
11
+ *
12
+ * Issue #311: `tools_runtime_assessed` is the Phase-A nudge row for a strict-declared,
13
+ * tools-bearing step. It is a CAVEAT code, never a WarningCode — a new WarningCode would
14
+ * auto-fail `validate --strict` (validate.ts's own rail), which would turn an informational
15
+ * nudge into a build break. */
11
16
  export interface StructuredOutputCaveat {
12
- code: 'unenforced_keyword' | 'unenforced_format' | 'unenforced_pattern' | 'optional_emission';
17
+ code: 'unenforced_keyword' | 'unenforced_format' | 'unenforced_pattern' | 'optional_emission' | 'tools_runtime_assessed' | 'null_union_emission';
13
18
  path: string;
14
19
  remediation: string;
15
20
  }
21
+ /**
22
+ * Issue #313: which PROVIDER's strict rules to assess against. Phase A (authoring) is
23
+ * deliberately provider-blind — it cannot know the drive-time provider — so this is a Phase-B
24
+ * concern only, and it defaults to `'anthropic'`, making every pre-#313 call site zero-diff.
25
+ *
26
+ * The two profiles are NOT subset-related: OpenAI's keyword allowlist is WIDER (pattern, format,
27
+ * numeric bounds, minLength and recursion are all first-class), while its structural rules are
28
+ * STRICTER (every property must be required). Only the enumerated rows below fork; every other
29
+ * #236 rule applies unchanged under both.
30
+ */
31
+ export type StructuredOutputProfile = 'anthropic' | 'openai';
32
+ /**
33
+ * Issue #311: which subject this assessment is about. Default (`step_output`) is the #236
34
+ * behaviour — the step's own output schema, which realm DOES post-hoc validate with Ajv.
35
+ * `tool_args` assesses a third-party MCP tool's `inputSchema` for per-tool strict attachment;
36
+ * there is NO Ajv on the tools path, so enforcement-class caveats must not claim realm enforces
37
+ * anything, and every remediation's fix-owner is the MCP SERVER, never the workflow author.
38
+ */
39
+ export type StructuredOutputSubject = 'step_output' | 'tool_args';
40
+ /**
41
+ * Issue #311: `optional_count` is the walk's own optional-property tally, exported so the
42
+ * per-tool budget walk (run-agent.ts) can sum optionals across strict-attached tools against the
43
+ * API's 24 limit without re-walking each schema. Present IFF the schema walk actually ran — the
44
+ * short-circuit arms (G0 no-schema/non-object root, Phase-B G6, and the Phase-A
45
+ * `tools_runtime_assessed` row) return before any counting, so the field is absent there rather
46
+ * than falsely reporting 0.
47
+ */
16
48
  export type StructuredOutputVerdict = {
17
49
  verdict: 'eligible';
50
+ optional_count?: number;
18
51
  } | {
19
52
  verdict: 'eligible_with_caveats';
20
53
  caveats: StructuredOutputCaveat[];
54
+ optional_count?: number;
21
55
  } | {
22
56
  verdict: 'ineligible';
23
57
  reasons: StructuredOutputReason[];
24
58
  caveats?: StructuredOutputCaveat[];
59
+ optional_count?: number;
25
60
  };
26
61
  /**
27
62
  * Phase A entry: the step definition itself — the effective-schema collapse
@@ -39,6 +74,13 @@ type PhaseAInput = Pick<StepDefinition, 'output_schema' | 'input_schema' | 'tool
39
74
  interface PhaseBInput {
40
75
  schema: unknown;
41
76
  tools: boolean;
77
+ /** Issue #311: `tool_args` forks the remediation vocabulary (fix-owner = the MCP server) and
78
+ * the enforcement-class caveat text (no Ajv on the tools path). Default `step_output`. */
79
+ subject?: StructuredOutputSubject;
80
+ /** Issue #313: which provider's strict RULES to assess against. Default `anthropic` — every
81
+ * pre-#313 call site is therefore byte-identical. Phase A never passes this (authoring is
82
+ * provider-blind by design); only the drive-time Phase-B call knows the provider. */
83
+ profile?: StructuredOutputProfile;
42
84
  }
43
85
  /**
44
86
  * G2 keyword allowlist — snapshot-dated 2026-08-05, CONTENTS transcribed verbatim from the
@@ -49,6 +91,8 @@ interface PhaseBInput {
49
91
  * this comment is a direct transcription:
50
92
  * "All basic types: object, array, string, integer, number, boolean, null" (the `type` keyword)
51
93
  * `enum` · `const` · `anyOf` and `allOf` · `$ref`, `$def`, and `definitions` · `default` ·
94
+ * ^ `$def` (singular) is transcribed VERBATIM from Anthropic's own list — see the entry's own
95
+ * comment below; it is not a typo in this file.
52
96
  * `required` and `additionalProperties` · string `format` (10 values — gated separately, G4) ·
53
97
  * array `minItems`.
54
98
  * A keyword present on a schema node but absent from this set is NOT necessarily rejected by the
@@ -67,7 +111,10 @@ export declare const STRICT_SUPPORTED_KEYWORDS: Set<string>;
67
111
  * incl. root `$ref:'#'`, external `$ref`, complex enum members) ⇒ ineligible; any other
68
112
  * off-allowlist keyword ⇒ caveat · G3 >24 optional properties / >16 union-typed ⇒ ineligible ·
69
113
  * G4 unsupported `format` value ⇒ caveat · G5 `pattern` present ⇒ caveat · G6 `tools`-bearing
70
- * step ⇒ ineligible (checked FIRST, short-circuits everything else) · G7' (Amendment 2) ANY
114
+ * step ⇒ checked FIRST, short-circuits everything else, and FORKS BY PHASE (issue #311):
115
+ * Phase A ⇒ caveat `tools_runtime_assessed` (strict applies to tool-call arguments, assessed
116
+ * per tool at runtime), Phase B ⇒ ineligible `unsupported_context_tools` (the step's own
117
+ * output is still never grammar-constrained on the tools fork) · G7' (Amendment 2) ANY
71
118
  * optional properties on an otherwise-eligible schema ⇒ caveat `optional_emission` (strict
72
119
  * measurably suppresses optional-field emission — see the benchmark cited in the docs section;
73
120
  * the remedy is making consumer-load-bearing fields `required`).
@@ -76,6 +123,8 @@ export declare function assessStructuredOutputEligibility(input: PhaseAInput | P
76
123
  /** Renders a step's structured_output declaration into a plain-English author message, combining
77
124
  * every reason's own remediation (`; `-joined) — the shared formatter both the loader's typed
78
125
  * error and create_workflow's PRE-register rejection use, so the two surfaces never drift. */
79
- export declare function renderIneligibleMessage(reasons: StructuredOutputReason[]): string;
126
+ export declare function renderIneligibleMessage(reasons: Array<{
127
+ remediation: string;
128
+ }>): string;
80
129
  export type { JsonSchema };
81
130
  //# sourceMappingURL=structured-output-eligibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structured-output-eligibility.d.ts","sourceRoot":"","sources":["../../src/workflow/structured-output-eligibility.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAElF,6FAA6F;AAC7F,MAAM,WAAW,sBAAsB;IACrC,IAAI,EACA,WAAW,GACX,+BAA+B,GAC/B,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,2BAA2B,CAAC;IAChC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;kFACkF;AAClF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,oBAAoB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;IAC9F,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,OAAO,EAAE,UAAU,CAAA;CAAE,GACvB;IAAE,OAAO,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAAE,GAGvE;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEN;;;;;;GAMG;AACH,KAAK,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC;AAEpF;;;;GAIG;AACH,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,aAkBpC,CAAC;AAmOH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,WAAW,GAAG,WAAW,GAC/B,uBAAuB,CAoGzB;AAED;;+FAE+F;AAC/F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAEjF;AAID,YAAY,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"structured-output-eligibility.d.ts","sourceRoot":"","sources":["../../src/workflow/structured-output-eligibility.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAElF,6FAA6F;AAC7F,MAAM,WAAW,sBAAsB;IACrC,IAAI,EACA,WAAW,GACX,+BAA+B,GAC/B,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,2BAA2B,GAI3B,kBAAkB,GAKlB,wBAAwB,CAAC;IAC7B,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;gCAMgC;AAChC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EACA,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,wBAAwB,GAIxB,qBAAqB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,aAAa,GAAG,WAAW,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAGD;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN;;;;;;GAMG;AACH,KAAK,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC;AAEpF;;;;GAIG;AACH,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf;+FAC2F;IAC3F,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC;;0FAEsF;IACtF,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,yBAAyB,aAyBpC,CAAC;AA4aH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,WAAW,GAAG,WAAW,GAC/B,uBAAuB,CAqMzB;AAED;;+FAE+F;AAK/F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAEvF;AAID,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -10,6 +10,8 @@ function isPhaseB(input) {
10
10
  * this comment is a direct transcription:
11
11
  * "All basic types: object, array, string, integer, number, boolean, null" (the `type` keyword)
12
12
  * `enum` · `const` · `anyOf` and `allOf` · `$ref`, `$def`, and `definitions` · `default` ·
13
+ * ^ `$def` (singular) is transcribed VERBATIM from Anthropic's own list — see the entry's own
14
+ * comment below; it is not a typo in this file.
13
15
  * `required` and `additionalProperties` · string `format` (10 values — gated separately, G4) ·
14
16
  * array `minItems`.
15
17
  * A keyword present on a schema node but absent from this set is NOT necessarily rejected by the
@@ -28,6 +30,13 @@ export const STRICT_SUPPORTED_KEYWORDS = new Set([
28
30
  'anyOf',
29
31
  'allOf',
30
32
  '$ref',
33
+ // Issue #311 ride-along (ledger R7), re-verified against Anthropic's CURRENT published docs on
34
+ // 2026-08-16: the source list still reads "`$ref`, `$def`, and `definitions`" — `$def`
35
+ // SINGULAR, with no `$defs` anywhere in the document. This entry therefore transcribes upstream
36
+ // faithfully (upstream's own apparent typo — JSON Schema's real keyword is `$defs`), which is
37
+ // why it is kept rather than "corrected". It is inert either way: the real `$defs` key is
38
+ // handled STRUCTURALLY by NON_KEYWORD_KEYS below, so it never reaches this allowlist at all.
39
+ // Dead but harmless — do not delete it as dead code without re-reading the upstream list.
31
40
  '$def',
32
41
  'definitions',
33
42
  'default',
@@ -54,6 +63,122 @@ const SUPPORTED_FORMATS = new Set([
54
63
  const OWN_ROW_KEYWORDS = new Set(['format', 'pattern']);
55
64
  /** Keys that are never schema keywords themselves — traversal structure, not gate subjects. */
56
65
  const NON_KEYWORD_KEYS = new Set(['properties', 'items', '$defs', 'definitions']);
66
+ /**
67
+ * Issue #313 — the OpenAI profile's keyword allowlist. WIDER than Anthropic's: every keyword
68
+ * Anthropic hard-rejects or silently ignores in the numeric/string-constraint family is
69
+ * first-class here, and `$ref` recursion is supported outright.
70
+ *
71
+ * Provenance (api-facts-lane + MA-executed probes, 2026-08-16): the docs were wrong in BOTH
72
+ * directions for both vendors, so acceptance is probe-anchored, never docs-derived. P2 in
73
+ * particular FLIPPED the expectation — `minLength` is accepted AND enforced (a 2-char answer
74
+ * came back padded to exactly 10 characters: the constrained-decoding signature), the exact
75
+ * opposite of Anthropic's live-proven accept-and-ignore of the same keyword.
76
+ */
77
+ const OPENAI_SUPPORTED_KEYWORDS = new Set([
78
+ // structural
79
+ 'type',
80
+ 'properties',
81
+ 'items',
82
+ 'description',
83
+ 'title',
84
+ 'required',
85
+ 'additionalProperties',
86
+ '$ref',
87
+ '$defs',
88
+ 'definitions',
89
+ 'default',
90
+ // value constraints — all first-class under OpenAI strict
91
+ 'enum',
92
+ 'const',
93
+ 'anyOf',
94
+ 'pattern',
95
+ 'format',
96
+ 'minLength',
97
+ 'maxLength',
98
+ 'minimum',
99
+ 'maximum',
100
+ 'exclusiveMinimum',
101
+ 'exclusiveMaximum',
102
+ 'multipleOf',
103
+ 'minItems',
104
+ 'maxItems',
105
+ ]);
106
+ /**
107
+ * Issue #313 — the OpenAI profile's HARD rejection set, with PER-MEMBER provenance labels
108
+ * (final-gate correction 1). Misclassifying a member here costs only the safe json_object
109
+ * fallback — never a falsity — which is why the docs-derived members are kept conservative:
110
+ *
111
+ * - `allOf` — 400-EXECUTED (probe P3a: "In context=('properties','x'), 'allOf' is
112
+ * not permitted", param=response_format).
113
+ * - `not` — 400-EXECUTED ("Unsupported keywords ('not',)").
114
+ * - `dependentRequired` — 400-EXECUTED (the keyword is named in the message).
115
+ * - `dependentSchemas` — 400-EXECUTED (the keyword is named in the message).
116
+ * - `if` / `then` / `else` — 400-EXECUTED (fires for if/then AND if/then/else).
117
+ *
118
+ * END STATE: every member is executed against the live API, each 400 naming its own keyword. The
119
+ * class posture (reject-on-unsupported, rather than Anthropic's silent strip) therefore no longer
120
+ * rests on a single confirmed member. This matters because the failure direction is asymmetric: a
121
+ * keyword wrongly present here would cost a SILENT capability loss (fallback to json_object with
122
+ * nobody told), whereas one wrongly absent is caught loudly by the live 400 arm. Adding a member
123
+ * on documentation alone would re-open that hazard — probe first.
124
+ */
125
+ const OPENAI_UNSUPPORTED_KEYWORDS = new Set([
126
+ 'allOf',
127
+ 'not',
128
+ 'dependentRequired',
129
+ 'dependentSchemas',
130
+ 'if',
131
+ 'then',
132
+ 'else',
133
+ ]);
134
+ /**
135
+ * Issue #313 — OpenAI's schema size limits, with PER-MEMBER PROVENANCE LABELS (the same
136
+ * discipline the keyword sets above carry, for the same reason: two of these four were executed
137
+ * against the live API and two were read off documentation that has already been wrong in both
138
+ * directions for both vendors).
139
+ *
140
+ * Misclassification cost is asymmetric and worth stating: a limit set too LOW silently withholds
141
+ * strict from a schema the API would have accepted (no error, no signal — the exact class this
142
+ * issue exists to remove), while a limit set too HIGH simply lets the request go and be caught by
143
+ * the live 400 arm, which drops strict, retries, and discloses. That is why the two unprobed
144
+ * members are kept at their documented values rather than tightened defensively.
145
+ */
146
+ const OPENAI_LIMITS = {
147
+ /** Nesting depth. BOUNDARY-EXECUTED: depth 10 ⇒ 200, depth 11 ⇒ 400 ("11 levels of nesting
148
+ * exceeds limit of 10"). Measured in OBJECT nesting levels — see walkNode. */
149
+ maxDepth: 10,
150
+ /** Total properties across the schema. BOUNDARY-EXECUTED both sides: 5000 ⇒ 200, 5001 ⇒ 400
151
+ * ("5001 parameters exceeds limit of 5000"). */
152
+ maxProperties: 5000,
153
+ /** Total characters across property names, enum values and const values.
154
+ * DOCS-DERIVED-CONSERVATIVE for the 120k figure itself — no exact-boundary cell was
155
+ * constructed. The COUNTED SET, however, is executed fact: descriptions are PROVEN excluded
156
+ * (~135k of description text behind tiny names/enums ⇒ 200), which is why they are not
157
+ * counted here. */
158
+ maxChars: 120_000,
159
+ /** Values in a single enum. BOUNDARY-EXECUTED: 1000 ⇒ 200, 1001 ⇒ 400 (the error names the
160
+ * limit and the received count). */
161
+ maxEnumValues: 1000,
162
+ };
163
+ /**
164
+ * Issue #311: the enforcement-class clause, forked by subject. On the step-output path realm's
165
+ * own Ajv still enforces the keyword after the model answers, so each row keeps its EXISTING
166
+ * wording verbatim (passed in — the two rows word it differently today and both are pinned). On
167
+ * the tools path there is NO Ajv at all — the arguments go straight to the MCP server — so
168
+ * claiming realm enforces them would be a lie; enforcement genuinely falls to the server.
169
+ */
170
+ function enforcementClause(subject, stepOutputClause) {
171
+ return subject === 'tool_args'
172
+ ? 'is not grammar-enforced and NOT post-hoc enforced by realm — enforcement falls to the MCP server at call time'
173
+ : stepOutputClause;
174
+ }
175
+ /** Issue #311: who fixes it. A third-party tool's schema is never the workflow author's to edit,
176
+ * so every tool-args remediation retargets the fix-owner to the publishing MCP server. */
177
+ function fixOwnerHint(subject) {
178
+ return subject === 'tool_args'
179
+ ? " (this schema is published by the MCP server — the fix belongs to that server's maintainer, not this workflow)"
180
+ : '';
181
+ }
57
182
  function isPlainObject(v) {
58
183
  return typeof v === 'object' && v !== null && !Array.isArray(v);
59
184
  }
@@ -113,20 +238,57 @@ function hasDefsCycle(defs) {
113
238
  }
114
239
  /** Recursively walks one schema node, mutating `ctx` with every G1/G2/G4/G5 finding + the G3
115
240
  * optional/union counts. `path` is the schema-relative dotted path to THIS node. */
116
- function walkNode(node, path, ctx) {
241
+ function walkNode(node, path, ctx, depth = 1) {
117
242
  if (!isPlainObject(node))
118
243
  return;
244
+ const openai = ctx.profile === 'openai';
245
+ // Depth is measured in OBJECT nesting levels — the unit OpenAI's own limit is stated in. A
246
+ // scalar leaf (`{type: 'string'}`) is a nested schema node but not a nested level, so counting
247
+ // every node would reject at 9 real levels and silently cost strict on schemas the API accepts.
248
+ if ((node['type'] === 'object' || node['properties'] !== undefined) && depth > ctx.maxDepthSeen) {
249
+ ctx.maxDepthSeen = depth;
250
+ }
251
+ // issue #313 (OpenAI hard set): keywords the API rejects outright with a 400. Checked BEFORE
252
+ // the generic allowlist walk so they never degrade to the caveat class.
253
+ if (openai) {
254
+ for (const kw of Object.keys(node)) {
255
+ if (!OPENAI_UNSUPPORTED_KEYWORDS.has(kw))
256
+ continue;
257
+ ctx.hardReasons.push({
258
+ code: 'unsupported_keyword',
259
+ path,
260
+ remediation: `'${kw}' at '${path || '(root)'}' is not supported by OpenAI strict mode and is rejected with a 400 — restructure without it (for '${kw}' inside a composition, express the shape directly or use 'anyOf')${fixOwnerHint(ctx.subject)}`,
261
+ });
262
+ }
263
+ // Enum-value cap is per-enum, so it is measured here rather than summed.
264
+ const enumForCap = node['enum'];
265
+ if (Array.isArray(enumForCap) && enumForCap.length > ctx.maxEnumValuesSeen) {
266
+ ctx.maxEnumValuesSeen = enumForCap.length;
267
+ }
268
+ // Character budget: property names + enum values + const values.
269
+ for (const v of Array.isArray(enumForCap) ? enumForCap : []) {
270
+ ctx.charCount += String(v).length;
271
+ }
272
+ if (node['const'] !== undefined)
273
+ ctx.charCount += String(node['const']).length;
274
+ }
119
275
  // G2-hard: root self-reference ('#') — the API neither enforces nor cleanly rejects this edge
120
276
  // (premise-probe-raw.md §Live-probe: silent-prune when optional, a persistent 503 when
121
277
  // required) — it must NEVER fall to the generic caveat class.
278
+ //
279
+ // issue #313: OpenAI supports `$ref` recursion FIRST-CLASS (api-facts lane), so the recursive
280
+ // arm is Anthropic-only. The external-$ref arm applies to BOTH — an unresolvable reference is
281
+ // unresolvable everywhere.
122
282
  const ref = node['$ref'];
123
283
  if (typeof ref === 'string') {
124
284
  if (ref === '#') {
125
- ctx.hardReasons.push({
126
- code: 'unsupported_keyword',
127
- path,
128
- remediation: `recursive schema at '${path || '(root)'}' ($ref: '#') is not supported — remove the self-reference or restructure without recursion`,
129
- });
285
+ if (!openai) {
286
+ ctx.hardReasons.push({
287
+ code: 'unsupported_keyword',
288
+ path,
289
+ remediation: `recursive schema at '${path || '(root)'}' ($ref: '#') is not supported — remove the self-reference or restructure without recursion`,
290
+ });
291
+ }
130
292
  }
131
293
  else if (!ref.startsWith('#')) {
132
294
  ctx.hardReasons.push({
@@ -136,13 +298,17 @@ function walkNode(node, path, ctx) {
136
298
  });
137
299
  }
138
300
  }
139
- // G2-hard: numeric constraints.
140
- for (const kw of ['minimum', 'maximum', 'multipleOf']) {
301
+ // G2-hard: numeric constraints. ANTHROPIC ONLY — OpenAI supports the whole numeric-bound
302
+ // family first-class (api-facts lane), so flagging them under 'openai' would reject schemas
303
+ // the API accepts and enforces.
304
+ for (const kw of openai ? [] : ['minimum', 'maximum', 'multipleOf']) {
141
305
  if (kw in node) {
142
306
  ctx.hardReasons.push({
143
307
  code: 'unsupported_keyword',
144
308
  path,
145
- remediation: `'${kw}' at '${path || '(root)'}' is not supported by strict mode — remove it (Ajv still enforces it at submission time) or drop 'structured_output: strict' for this step`,
309
+ remediation: ctx.subject === 'tool_args'
310
+ ? `'${kw}' at '${path || '(root)'}' is not supported by strict mode — this tool rides unconstrained${fixOwnerHint(ctx.subject)}`
311
+ : `'${kw}' at '${path || '(root)'}' is not supported by strict mode — remove it (Ajv still enforces it at submission time) or drop 'structured_output: strict' for this step`,
146
312
  });
147
313
  }
148
314
  }
@@ -155,21 +321,24 @@ function walkNode(node, path, ctx) {
155
321
  remediation: `'enum' at '${path || '(root)'}' contains a complex (object/array) member — strict mode only supports string/number/boolean/null enum members`,
156
322
  });
157
323
  }
158
- // G4: format.
159
- const format = node['format'];
324
+ // G4: format. ANTHROPIC ONLY — under OpenAI, `format` is supported and NOT flagged (the
325
+ // profile's deltas are enumerated; inventing a suppression-or-flag beyond them is banned).
326
+ const format = openai ? undefined : node['format'];
160
327
  if (typeof format === 'string' && !SUPPORTED_FORMATS.has(format)) {
161
328
  ctx.caveats.push({
162
329
  code: 'unenforced_format',
163
330
  path,
164
- remediation: `'format: ${format}' at '${path || '(root)'}' is silently ignored or rejected by the API — enforced post-hoc by realm's own validation only`,
331
+ remediation: `'format: ${format}' at '${path || '(root)'}' ${enforcementClause(ctx.subject, "is silently ignored or rejected by the API — enforced post-hoc by realm's own validation only")}${fixOwnerHint(ctx.subject)}`,
165
332
  });
166
333
  }
167
- // G5: pattern — always a caveat when present, regardless of regex complexity.
168
- if (typeof node['pattern'] === 'string') {
334
+ // G5: pattern — always a caveat when present, regardless of regex complexity. ANTHROPIC ONLY:
335
+ // OpenAI accepts `pattern` and (P2, INFERRED-strong) genuinely enforces it via constrained
336
+ // decoding, so a "realm enforces this post-hoc, the grammar doesn't" caveat would be false.
337
+ if (!openai && typeof node['pattern'] === 'string') {
169
338
  ctx.caveats.push({
170
339
  code: 'unenforced_pattern',
171
340
  path,
172
- remediation: `'pattern' at '${path || '(root)'}' is silently ignored or rejected by the API — enforced post-hoc by realm's own validation only`,
341
+ remediation: `'pattern' at '${path || '(root)'}' ${enforcementClause(ctx.subject, "is silently ignored or rejected by the API — enforced post-hoc by realm's own validation only")}${fixOwnerHint(ctx.subject)}`,
173
342
  });
174
343
  }
175
344
  // G2 generic off-allowlist walk — every OTHER key on this node not itself a keyword we already
@@ -179,7 +348,13 @@ function walkNode(node, path, ctx) {
179
348
  continue;
180
349
  if (key === 'minimum' || key === 'maximum' || key === 'multipleOf' || key === 'enum')
181
350
  continue; // already handled (hard or allowlisted)
182
- if (STRICT_SUPPORTED_KEYWORDS.has(key))
351
+ // issue #313: each profile walks its OWN allowlist. Under 'openai' the hard set was already
352
+ // rejected above, so anything still off-allowlist here is the genuine unknown-keyword class.
353
+ if (openai) {
354
+ if (OPENAI_SUPPORTED_KEYWORDS.has(key) || OPENAI_UNSUPPORTED_KEYWORDS.has(key))
355
+ continue;
356
+ }
357
+ else if (STRICT_SUPPORTED_KEYWORDS.has(key))
183
358
  continue;
184
359
  if (ctx.seenUnenforcedKeywords.has(`${path}:${key}`))
185
360
  continue;
@@ -187,7 +362,7 @@ function walkNode(node, path, ctx) {
187
362
  ctx.caveats.push({
188
363
  code: 'unenforced_keyword',
189
364
  path,
190
- remediation: `'${key}' at '${path || '(root)'}' is silently ignored or rejected by the API — either way enforced post-hoc by realm`,
365
+ remediation: `'${key}' at '${path || '(root)'}' ${enforcementClause(ctx.subject, 'is silently ignored or rejected by the API — either way enforced post-hoc by realm')}${fixOwnerHint(ctx.subject)}`,
191
366
  });
192
367
  }
193
368
  // G1: every object (root + nested) must carry explicit additionalProperties: false.
@@ -196,7 +371,7 @@ function walkNode(node, path, ctx) {
196
371
  ctx.hardReasons.push({
197
372
  code: 'missing_additional_properties',
198
373
  path,
199
- remediation: `add 'additionalProperties: false' at '${path || 'the schema root'}'`,
374
+ remediation: `add 'additionalProperties: false' at '${path || 'the schema root'}'${fixOwnerHint(ctx.subject)}`,
200
375
  });
201
376
  }
202
377
  }
@@ -209,6 +384,12 @@ function walkNode(node, path, ctx) {
209
384
  : new Set();
210
385
  for (const [propName, propSchema] of Object.entries(properties)) {
211
386
  const propPath = joinPath(path, `properties.${propName}`);
387
+ ctx.propertyCount += 1;
388
+ if (openai)
389
+ ctx.charCount += propName.length;
390
+ const isNullUnion = isPlainObject(propSchema) &&
391
+ Array.isArray(propSchema['type']) &&
392
+ propSchema['type'].includes('null');
212
393
  if (!required.has(propName)) {
213
394
  ctx.optionalCount += 1;
214
395
  if (isPlainObject(propSchema) &&
@@ -216,17 +397,30 @@ function walkNode(node, path, ctx) {
216
397
  (Array.isArray(propSchema['type']) && propSchema['type'].length > 1))) {
217
398
  ctx.unionCount += 1;
218
399
  }
400
+ // issue #313 (OpenAI): EVERY property must be listed in `required` — probe-derived, the
401
+ // S1 discriminator isolated it from the additionalProperties rule P1 had conflated it
402
+ // with. The sanctioned way to express "may be absent" is a null union + required.
403
+ if (openai) {
404
+ ctx.hardReasons.push({
405
+ code: 'not_all_required',
406
+ path: propPath,
407
+ remediation: `'${propName}' is not listed in 'required' at '${path || 'the schema root'}' — OpenAI strict requires EVERY property to be required. Add it to 'required'; if it genuinely may be absent, keep it required and widen its type to a null union (e.g. type: ['string', 'null']). Measured (gpt-4o, 24 runs): load-bearing fields stayed filled 24/24 under this rewrite, while a low-salience optional shifted to null 21/24 — so consumers must treat null as equivalent to absent${fixOwnerHint(ctx.subject)}`,
408
+ });
409
+ }
410
+ }
411
+ else if (openai && isNullUnion) {
412
+ ctx.nullUnionCount += 1;
219
413
  }
220
- walkNode(propSchema, propPath, ctx);
414
+ walkNode(propSchema, propPath, ctx, depth + 1);
221
415
  }
222
416
  }
223
417
  const items = node['items'];
224
418
  if (items !== undefined)
225
- walkNode(items, joinPath(path, 'items'), ctx);
419
+ walkNode(items, joinPath(path, 'items'), ctx, depth + 1);
226
420
  for (const branchKey of ['anyOf', 'allOf']) {
227
421
  const branches = node[branchKey];
228
422
  if (Array.isArray(branches)) {
229
- branches.forEach((b, i) => walkNode(b, joinPath(path, `${branchKey}[${i}]`), ctx));
423
+ branches.forEach((b, i) => walkNode(b, joinPath(path, `${branchKey}[${i}]`), ctx, depth + 1));
230
424
  }
231
425
  }
232
426
  for (const defsKey of ['$defs', 'definitions']) {
@@ -255,7 +449,10 @@ function walkNode(node, path, ctx) {
255
449
  * incl. root `$ref:'#'`, external `$ref`, complex enum members) ⇒ ineligible; any other
256
450
  * off-allowlist keyword ⇒ caveat · G3 >24 optional properties / >16 union-typed ⇒ ineligible ·
257
451
  * G4 unsupported `format` value ⇒ caveat · G5 `pattern` present ⇒ caveat · G6 `tools`-bearing
258
- * step ⇒ ineligible (checked FIRST, short-circuits everything else) · G7' (Amendment 2) ANY
452
+ * step ⇒ checked FIRST, short-circuits everything else, and FORKS BY PHASE (issue #311):
453
+ * Phase A ⇒ caveat `tools_runtime_assessed` (strict applies to tool-call arguments, assessed
454
+ * per tool at runtime), Phase B ⇒ ineligible `unsupported_context_tools` (the step's own
455
+ * output is still never grammar-constrained on the tools fork) · G7' (Amendment 2) ANY
259
456
  * optional properties on an otherwise-eligible schema ⇒ caveat `optional_emission` (strict
260
457
  * measurably suppresses optional-field emission — see the benchmark cited in the docs section;
261
458
  * the remedy is making consumer-load-bearing fields `required`).
@@ -263,18 +460,54 @@ function walkNode(node, path, ctx) {
263
460
  export function assessStructuredOutputEligibility(input) {
264
461
  const phaseB = isPhaseB(input);
265
462
  const schema = phaseB ? input.schema : (input.output_schema ?? input.input_schema);
463
+ const subject = phaseB
464
+ ? (input.subject ?? 'step_output')
465
+ : 'step_output';
466
+ // Phase A is provider-blind by design (authoring cannot know the drive-time provider), so it
467
+ // always assesses under the default profile — separation in TIME, not a trade-off.
468
+ const profile = phaseB ? (input.profile ?? 'anthropic') : 'anthropic';
266
469
  const toolsFlag = phaseB
267
470
  ? input.tools === true
268
471
  : Array.isArray(input.tools) && input.tools.length > 0;
269
- // G6 — checked FIRST; short-circuits every other row (fixture C8: "⇒ G6 exactly", no caveats).
472
+ // G6 — checked FIRST; short-circuits every other row (fixture C8). Issue #311 forks it BY PHASE:
473
+ //
474
+ // Phase A (authoring: loader/validate/register/create_workflow) now ACCEPTS a strict-declared
475
+ // tools-bearing step with an INFO-channel nudge instead of rejecting it. Strict is real on this
476
+ // fork — it just applies to the TOOL-CALL ARGUMENTS, per third-party tool, assessed at runtime
477
+ // (the tool schemas are not the author's to fix, and are not even known until the MCP servers
478
+ // are contacted). The step's own output stays post-hoc validated (L1), never grammar-
479
+ // constrained. The nudge is a CAVEAT row, never a WarningCode — a new WarningCode would
480
+ // auto-fail `validate --strict` and turn an informational nudge into a build break.
481
+ //
482
+ // The short-circuit is retained deliberately: the step-level output schema is never
483
+ // grammar-constrained on the tools fork, so walking it here would report findings about a
484
+ // schema that is never sent to a grammar — including on the composite cell (strict + tools +
485
+ // an ineligible step-level output_schema), which must NOT reject.
486
+ //
487
+ // Phase B (`tools: true`) keeps the #236 `ineligible` verdict verbatim: it is the RUNTIME
488
+ // step-output question ("may realm grammar-constrain THIS step's output?"), whose answer on a
489
+ // tools-bearing step is still no — that is what the #332 `unsupported_context_tools` mint
490
+ // discloses. It has zero production callers today and stays defensive.
270
491
  if (toolsFlag) {
492
+ if (phaseB) {
493
+ return {
494
+ verdict: 'ineligible',
495
+ reasons: [
496
+ {
497
+ code: 'unsupported_context_tools',
498
+ path: '',
499
+ remediation: 'this step declares tools — structured_output: strict is not supported on tools-bearing steps in v1; remove tools or drop structured_output',
500
+ },
501
+ ],
502
+ };
503
+ }
271
504
  return {
272
- verdict: 'ineligible',
273
- reasons: [
505
+ verdict: 'eligible_with_caveats',
506
+ caveats: [
274
507
  {
275
- code: 'unsupported_context_tools',
508
+ code: 'tools_runtime_assessed',
276
509
  path: '',
277
- remediation: 'this step declares tools — structured_output: strict is not supported on tools-bearing steps in v1; remove tools or drop structured_output',
510
+ remediation: 'this step declares tools — strict applies to tool-call arguments here, not to the step output; tool schemas are third-party and are assessed per tool at runtime (a tool whose schema is not strict-compatible simply rides unconstrained), and this step output stays post-hoc validated by realm',
278
511
  },
279
512
  ],
280
513
  };
@@ -310,27 +543,71 @@ export function assessStructuredOutputEligibility(input) {
310
543
  optionalCount: 0,
311
544
  unionCount: 0,
312
545
  seenUnenforcedKeywords: new Set(),
546
+ subject,
547
+ profile,
548
+ maxDepthSeen: 0,
549
+ propertyCount: 0,
550
+ charCount: 0,
551
+ maxEnumValuesSeen: 0,
552
+ nullUnionCount: 0,
313
553
  };
314
554
  walkNode(schema, '', ctx);
315
- if (ctx.optionalCount > 24) {
316
- ctx.hardReasons.push({
317
- code: 'too_many_optionals',
318
- path: '',
319
- remediation: `this schema has ${ctx.optionalCount} optional properties (limit: 24) — reduce the optional-property count or make more fields required`,
320
- });
555
+ // The two size caps below are ANTHROPIC's (G3). OpenAI publishes no strict-count or optional
556
+ // budget at all; its limits are structural size limits, applied instead — see below.
557
+ if (profile === 'anthropic') {
558
+ if (ctx.optionalCount > 24) {
559
+ ctx.hardReasons.push({
560
+ code: 'too_many_optionals',
561
+ path: '',
562
+ remediation: `this schema has ${ctx.optionalCount} optional properties (limit: 24) — reduce the optional-property count or make more fields required`,
563
+ });
564
+ }
565
+ if (ctx.unionCount > 16) {
566
+ ctx.hardReasons.push({
567
+ code: 'too_many_unions',
568
+ path: '',
569
+ remediation: `this schema has ${ctx.unionCount} union-typed properties (limit: 16) — reduce the anyOf/multi-type property count`,
570
+ });
571
+ }
321
572
  }
322
- if (ctx.unionCount > 16) {
323
- ctx.hardReasons.push({
324
- code: 'too_many_unions',
325
- path: '',
326
- remediation: `this schema has ${ctx.unionCount} union-typed properties (limit: 16) — reduce the anyOf/multi-type property count`,
327
- });
573
+ else {
574
+ // issue #313 — OpenAI's documented size limits (depth boundary and enum-count boundary both
575
+ // executed against the live API; the other two are documented and untested at that scale).
576
+ if (ctx.maxDepthSeen > OPENAI_LIMITS.maxDepth) {
577
+ ctx.hardReasons.push({
578
+ code: 'exceeds_provider_limit',
579
+ path: '',
580
+ remediation: `this schema nests ${ctx.maxDepthSeen} levels deep (OpenAI strict limit: ${OPENAI_LIMITS.maxDepth}) — flatten the deepest branch`,
581
+ });
582
+ }
583
+ if (ctx.propertyCount > OPENAI_LIMITS.maxProperties) {
584
+ ctx.hardReasons.push({
585
+ code: 'exceeds_provider_limit',
586
+ path: '',
587
+ remediation: `this schema declares ${ctx.propertyCount} properties (OpenAI strict limit: ${OPENAI_LIMITS.maxProperties}) — split the schema or drop properties`,
588
+ });
589
+ }
590
+ if (ctx.charCount > OPENAI_LIMITS.maxChars) {
591
+ ctx.hardReasons.push({
592
+ code: 'exceeds_provider_limit',
593
+ path: '',
594
+ remediation: `this schema's property names, enum values and const values total ${ctx.charCount} characters (OpenAI strict limit: ${OPENAI_LIMITS.maxChars}) — shorten names or reduce enum members`,
595
+ });
596
+ }
597
+ if (ctx.maxEnumValuesSeen > OPENAI_LIMITS.maxEnumValues) {
598
+ ctx.hardReasons.push({
599
+ code: 'exceeds_provider_limit',
600
+ path: '',
601
+ remediation: `an enum in this schema has ${ctx.maxEnumValuesSeen} values (OpenAI strict limit: ${OPENAI_LIMITS.maxEnumValues}) — reduce the enum or model the field as a plain string`,
602
+ });
603
+ }
328
604
  }
329
605
  if (ctx.hardReasons.length > 0) {
330
606
  return {
331
607
  verdict: 'ineligible',
332
608
  reasons: ctx.hardReasons,
333
609
  ...(ctx.caveats.length > 0 ? { caveats: ctx.caveats } : {}),
610
+ optional_count: ctx.optionalCount,
334
611
  };
335
612
  }
336
613
  // G7' (Amendment 2): any optional property on an otherwise-eligible schema ⇒ caveat. Measured:
@@ -338,21 +615,43 @@ export function assessStructuredOutputEligibility(input) {
338
615
  // (benchmark-raw.md §Run 2) — emission propensity is schema-shape-dependent, so this is a
339
616
  // general caveat, not a reasoning-specific rule. The nudge additionally names the
340
617
  // reasoning-position instance as the sharpest example (validate.ts).
341
- if (ctx.optionalCount > 0) {
618
+ // issue #313: G7' is ANTHROPIC-ONLY. Under OpenAI every property must be required, so a
619
+ // schema that reaches this point has no optionals at all and the omission hazard G7' warns
620
+ // about is structurally impossible. What replaces it is the MEASURED null-propensity of
621
+ // null-union properties — a different hazard needing different words and different numbers.
622
+ if (profile === 'openai' && ctx.nullUnionCount > 0) {
623
+ ctx.caveats.push({
624
+ code: 'null_union_emission',
625
+ path: '',
626
+ remediation: `this schema has ${ctx.nullUnionCount} null-union propert${ctx.nullUnionCount === 1 ? 'y' : 'ies'} (the OpenAI-sanctioned way to say "may be absent"). Measured over 24 real inputs: on gpt-4o a load-bearing field stayed filled 24/24 under strict, while a low-salience field shifted to null 21/24 (on gpt-4o-mini, 3/24 vs its own 2/24 unconstrained omission rate) — so a null here means "the model had nothing to say", not "the field is broken". Consumers MUST treat null as equivalent to absent${fixOwnerHint(ctx.subject)}`,
627
+ });
628
+ }
629
+ if (profile === 'anthropic' && ctx.optionalCount > 0) {
342
630
  ctx.caveats.push({
343
631
  code: 'optional_emission',
344
632
  path: '',
345
- remediation: 'under strict, the model emitted an optional field in 4/24 runs vs 24/24 unconstrained on a measured schema (see docs) — make fields your consumers rely on `required`',
633
+ // Issue #311: the G7' propensity text is subject-independent (it is a fact about strict
634
+ // itself, measured on a step-output schema but applying to any grammar-constrained
635
+ // arguments); only the FIX-OWNER retargets on the tools path.
636
+ remediation: `under strict, the model emitted an optional field in 4/24 runs vs 24/24 unconstrained on a measured schema (see docs) — make fields your consumers rely on \`required\`${fixOwnerHint(ctx.subject)}`,
346
637
  });
347
638
  }
348
639
  if (ctx.caveats.length > 0) {
349
- return { verdict: 'eligible_with_caveats', caveats: ctx.caveats };
640
+ return {
641
+ verdict: 'eligible_with_caveats',
642
+ caveats: ctx.caveats,
643
+ optional_count: ctx.optionalCount,
644
+ };
350
645
  }
351
- return { verdict: 'eligible' };
646
+ return { verdict: 'eligible', optional_count: ctx.optionalCount };
352
647
  }
353
648
  /** Renders a step's structured_output declaration into a plain-English author message, combining
354
649
  * every reason's own remediation (`; `-joined) — the shared formatter both the loader's typed
355
650
  * error and create_workflow's PRE-register rejection use, so the two surfaces never drift. */
651
+ // Issue #313: the parameter is widened ADDITIVELY to the structural minimum this function has
652
+ // always used, so CAVEATS can feed it too (the drive-time remediation nudge prints for
653
+ // ineligible AND caveated verdicts). Every existing caller passes `StructuredOutputReason[]`,
654
+ // which remains assignable — verified at all three: validate.ts, create-workflow.ts, yaml-loader.ts.
356
655
  export function renderIneligibleMessage(reasons) {
357
656
  return reasons.map((r) => r.remediation).join('; ');
358
657
  }
@@ -1 +1 @@
1
- {"version":3,"file":"structured-output-eligibility.js","sourceRoot":"","sources":["../../src/workflow/structured-output-eligibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structured-output-eligibility.js","sourceRoot":"","sources":["../../src/workflow/structured-output-eligibility.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sensigo/realm",
3
- "version": "0.35.0",
3
+ "version": "0.37.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },