@cat-factory/contracts 0.287.1 → 0.290.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/binary-capabilities.d.ts +166 -0
  2. package/dist/binary-capabilities.d.ts.map +1 -1
  3. package/dist/binary-capabilities.js +267 -18
  4. package/dist/binary-capabilities.js.map +1 -1
  5. package/dist/binary-generators.d.ts +130 -4
  6. package/dist/binary-generators.d.ts.map +1 -1
  7. package/dist/binary-generators.js +96 -4
  8. package/dist/binary-generators.js.map +1 -1
  9. package/dist/debug-api.d.ts +2 -2
  10. package/dist/execution.d.ts +22 -10
  11. package/dist/execution.d.ts.map +1 -1
  12. package/dist/execution.js +5 -2
  13. package/dist/execution.js.map +1 -1
  14. package/dist/pipeline-environment-lifecycle.d.ts +12 -10
  15. package/dist/pipeline-environment-lifecycle.d.ts.map +1 -1
  16. package/dist/pipeline-environment-lifecycle.js +13 -11
  17. package/dist/pipeline-environment-lifecycle.js.map +1 -1
  18. package/dist/routes/agent-runs.d.ts +2 -2
  19. package/dist/routes/bug-hunt.d.ts +2 -2
  20. package/dist/routes/debug-api.d.ts +1 -1
  21. package/dist/routes/execution.d.ts +9 -9
  22. package/dist/routes/human-review.d.ts +1 -1
  23. package/dist/routes/human-test.d.ts +5 -5
  24. package/dist/routes/public-evidence.d.ts +16 -0
  25. package/dist/routes/public-evidence.d.ts.map +1 -1
  26. package/dist/routes/visual-confirm.d.ts +3 -3
  27. package/dist/routes/workspaces.d.ts +30 -2
  28. package/dist/routes/workspaces.d.ts.map +1 -1
  29. package/dist/run-evidence.d.ts +114 -1
  30. package/dist/run-evidence.d.ts.map +1 -1
  31. package/dist/run-evidence.js +170 -0
  32. package/dist/run-evidence.js.map +1 -1
  33. package/dist/run-outcome.d.ts +135 -2
  34. package/dist/run-outcome.d.ts.map +1 -1
  35. package/dist/run-outcome.js +277 -3
  36. package/dist/run-outcome.js.map +1 -1
  37. package/dist/snapshot.d.ts +15 -1
  38. package/dist/snapshot.d.ts.map +1 -1
  39. package/dist/tool-servers.d.ts +9 -7
  40. package/dist/tool-servers.d.ts.map +1 -1
  41. package/dist/tool-servers.js +8 -5
  42. package/dist/tool-servers.js.map +1 -1
  43. package/package.json +1 -1
@@ -23,6 +23,26 @@ import * as v from 'valibot';
23
23
  * two producers of one modality apart without unlocking an option would be the refused
24
24
  * discriminator wearing a new name.
25
25
  *
26
+ * **A capability says the request can CARRY the value; {@link binaryGeneratorAcceptsSchema} says
27
+ * which values are accepted.** The two questions are separate because they fail differently, and
28
+ * collapsing them is what produced both halves of the problem the value axis was added to fix.
29
+ * This member answers only "does asking this reach a parameter at all". An endpoint that has no
30
+ * such parameter declares NOTHING here, however close its behaviour looks: Recraft's
31
+ * `crispUpscale` enlarges at a ratio it fixes itself and takes no factor, so declaring `upscale`
32
+ * for it would admit a step asking for 4x and hand it an enlargement at an unknown multiple. No
33
+ * accepted-value list repairs that, because `upscale: [2]` is not a narrower statement of the
34
+ * truth, it is a fabricated one. The endpoint says what it does in a definition's `guidance` and
35
+ * the step is refused an option the endpoint genuinely cannot answer, which is a visible refusal
36
+ * naming the capability rather than an artifact that checks out everywhere and is wrong where it
37
+ * counts. The honest reading of such a refusal is usually that the option was the wrong way to
38
+ * state the requirement: a step wanting a specific larger deliverable is asking for
39
+ * {@link 'exact-size'}, not for a multiple of something it never measured.
40
+ *
41
+ * An endpoint that DOES take the parameter, but only at values from a closed set, declares the
42
+ * capability and states the set. That is not the per-integration table the design record refuses:
43
+ * a set of accepted values partitions exactly, the same way `mediaTypes` does, and stating it
44
+ * makes an existing ask checkable without unlocking anything new to ask for.
45
+ *
26
46
  * Anything that does not clear the bar stays prose in `description` / `guidance`, which is where
27
47
  * "good at pixel art", "expensive above 2K" and "rate limited to 5/min" belong.
28
48
  */
@@ -150,6 +170,21 @@ export declare const binaryOutputSizeSchema: v.ObjectSchema<{
150
170
  readonly height: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 16384, undefined>]>;
151
171
  }, undefined>;
152
172
  export type BinaryOutputSize = v.InferOutput<typeof binaryOutputSizeSchema>;
173
+ /**
174
+ * An aspect ratio, `W:H`.
175
+ *
176
+ * Named rather than inlined into the one option that used to be its only reader, because an
177
+ * integration now declares the ratios it ACCEPTS ({@link binaryGeneratorAcceptsSchema}) and the
178
+ * two have to be the same rule: a declaration validated more loosely than the request could hold
179
+ * a value no step is able to spell, so the endpoint's own list would silently accept nothing.
180
+ */
181
+ export declare const binaryAspectRatioSchema: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 16, undefined>, v.RegexAction<string, "must be an aspect ratio of the form W:H">]>;
182
+ /**
183
+ * How many times the integration's native size to render at. Named for the reason
184
+ * {@link binaryAspectRatioSchema} is: the accepted-factor list and the step's own field are one
185
+ * rule read from two places.
186
+ */
187
+ export declare const binaryUpscaleFactorSchema: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 2, undefined>, v.MaxValueAction<number, 8, undefined>]>;
153
188
  /**
154
189
  * The per-step GENERATION OPTIONS: the parameters a step wants every generation to carry, each
155
190
  * gated by the capability that makes it answerable ({@link BINARY_OPTION_CAPABILITIES}).
@@ -390,4 +425,135 @@ export declare function binaryCapabilityProviders(required: readonly BinaryGener
390
425
  capability: BinaryGeneratorCapability;
391
426
  generatorIds: string[];
392
427
  }[];
428
+ /**
429
+ * The values an integration ACCEPTS for the generation options whose domain is enumerable.
430
+ *
431
+ * A sibling of `capabilities` rather than a change to it, so a definition that declares only tags
432
+ * keeps working unchanged and absent goes on meaning "only the coarse facts are known".
433
+ *
434
+ * **Only the options with a CLOSED domain appear here, and each entry is a SET.** A range is
435
+ * deliberately unrepresentable: `min`/`max`/`step`/`multiple-of` is a constraint language, and
436
+ * the moment one exists it grows to cover Flux's "any pair up to 4 MP in multiples of 32", which
437
+ * is the `resolutionRange` discriminator the design record refuses. An endpoint with a genuine
438
+ * range declares the capability, states no set, and puts its limits in `guidance`: its steps are
439
+ * then judged exactly as they were before this field existed.
440
+ *
441
+ * **An empty list is refused rather than read as "accepts nothing".** Absent is the one spelling
442
+ * of "not stated", so a `[]` that fell out of a filter would otherwise refuse every value the
443
+ * endpoint has, silently, on a declaration whose author meant to say nothing at all.
444
+ */
445
+ export declare const binaryGeneratorAcceptsSchema: v.ObjectSchema<{
446
+ /** The aspect ratios it takes, when it takes a closed set of them. Compared in LOWEST TERMS. */
447
+ readonly aspectRatios: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 16, undefined>, v.RegexAction<string, "must be an aspect ratio of the form W:H">]>, undefined>, v.MinLengthAction<string[], 1, undefined>, v.MaxLengthAction<string[], 64, undefined>]>, undefined>;
448
+ /** The exact `WxH` pairs it renders, when its size parameter is a closed list. */
449
+ readonly outputSizes: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.ObjectSchema<{
450
+ readonly width: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 16384, undefined>]>;
451
+ readonly height: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 16384, undefined>]>;
452
+ }, undefined>, undefined>, v.MinLengthAction<{
453
+ width: number;
454
+ height: number;
455
+ }[], 1, undefined>, v.MaxLengthAction<{
456
+ width: number;
457
+ height: number;
458
+ }[], 64, undefined>]>, undefined>;
459
+ /** The upscale factors it takes, when it takes a closed set of them. */
460
+ readonly upscaleFactors: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 2, undefined>, v.MaxValueAction<number, 8, undefined>]>, undefined>, v.MinLengthAction<number[], 1, undefined>, v.MaxLengthAction<number[], 8, undefined>]>, undefined>;
461
+ }, undefined>;
462
+ export type BinaryGeneratorAccepts = v.InferOutput<typeof binaryGeneratorAcceptsSchema>;
463
+ /** A generation option whose accepted values an integration can enumerate. */
464
+ export type BinaryValueOption = 'aspectRatio' | 'outputSize' | 'upscale';
465
+ /** A value a step asks for that no selected integration accepts. Refuses the run. */
466
+ export interface BinaryUnacceptedValue {
467
+ option: BinaryValueOption;
468
+ /** What the step asks for, in the spelling a message states back. */
469
+ requested: string;
470
+ /** What the integrations that DID state a set accept, deduplicated, in selection order. */
471
+ accepted: string[];
472
+ }
473
+ /**
474
+ * A value some selected integration accepts and another has ENUMERATED AWAY: the step can be
475
+ * served, by a subset of what it selected, and the rest will quietly deliver something else.
476
+ */
477
+ export interface BinaryPartiallyAcceptedValue {
478
+ option: BinaryValueOption;
479
+ /** What the step asks for, in the spelling a message states back. */
480
+ requested: string;
481
+ /** Ids of the integrations whose stated set EXCLUDES it, in selection order. */
482
+ refusedBy: string[];
483
+ }
484
+ /** How a step's requested option VALUES stand against what its selected integrations accept. */
485
+ export interface BinaryValueCoverage {
486
+ /** Requested values every integration that stated a set excludes, and none left open. Refuses. */
487
+ unaccepted: BinaryUnacceptedValue[];
488
+ /**
489
+ * Requested values a stated set contains and ANOTHER stated set excludes, naming the
490
+ * integrations that exclude them. The step is servable, so this is advisory.
491
+ */
492
+ partial: BinaryPartiallyAcceptedValue[];
493
+ /**
494
+ * Requested values no stated set contains, where another integration declaring the capability
495
+ * stated NO set, so the value may still be served and nothing may say otherwise. Advisory.
496
+ */
497
+ unverifiable: BinaryValueOption[];
498
+ }
499
+ /**
500
+ * Judge the VALUES a step asks for against the sets its selected integrations accept.
501
+ *
502
+ * Judged per option and PER DECLARER, over the integrations that declare the gating capability
503
+ * (one that declares none of it is already the coarse axis's answer, and counting it here would
504
+ * report one fault twice). Each declarer is in one of three states, and the disposition is a
505
+ * function of the whole set rather than of the first agreeable member:
506
+ *
507
+ * - **Nobody stated a set.** SILENT. This is the state every registration is in until somebody
508
+ * audits an endpoint, and it is exactly what the platform knew before this field existed. An
509
+ * advisory that fired here would ride nearly every step with an aspect ratio, which is how a
510
+ * line stops being read.
511
+ * - **Every declarer that stated a set contains the value.** Covered, and a declarer that stated
512
+ * nothing beside them stays the pre-field unknown rather than a finding.
513
+ * - **Some stated set contains it and another stated set EXCLUDES it.** PARTIAL. The step is
514
+ * servable and is not refused, for the reason {@link binaryCapabilityCoverage} treats one
515
+ * declarer as covering a capability: which integration renders which artifact is the agent's
516
+ * call, not the platform's. But an excluding set is a DEFINITE fact about a definite endpoint,
517
+ * so it is named rather than absorbed. Absorbing it is the exact silent crop this axis exists
518
+ * to prevent, and it inverted the reporting: the LESS informed selection (a declarer that
519
+ * stated nothing) raised an advisory, so declaring an accurate second set bought silence.
520
+ * - **No stated set contains it, and some declarer stated none.** UNVERIFIABLE. One integration
521
+ * refuses the value and another has not said, so the step may well be served: reported, never
522
+ * refused, the same disposition {@link binaryCapabilityCoverage} gives its own third state.
523
+ * - **No stated set contains it, and every declarer stated one.** UNACCEPTED, and this is the
524
+ * refusal the axis exists for: every endpoint that could serve the option has enumerated what
525
+ * it takes, and this is not among them.
526
+ *
527
+ * Takes the step's OPTIONS rather than a pre-derived requirement list, unlike its neighbours,
528
+ * because the judgement needs the value and not only the capability it implies. It takes each
529
+ * integration's `id` for the same reason {@link binaryCapabilityProviders} does: a partial
530
+ * finding whose remedy is routing is unusable without naming who to route around.
531
+ */
532
+ export declare function binaryValueCoverage(options: BinaryGenerationOptions | undefined, selected: readonly {
533
+ id: string;
534
+ capabilities?: readonly BinaryGeneratorCapability[];
535
+ accepts?: BinaryGeneratorAccepts;
536
+ }[]): BinaryValueCoverage;
537
+ /**
538
+ * The value sets a definition states for options its capabilities do NOT declare.
539
+ *
540
+ * A definition saying which aspect ratios it accepts while declaring no `aspect-ratio` has stated
541
+ * two contradicting facts about one endpoint, and every reader believes a different half:
542
+ * {@link binaryValueCoverage} judges only over the capability's declarers and never sees the set,
543
+ * the agent's brief renders the set as fact beside the integration's formats, and admission
544
+ * refuses every step asking for the option at all. So the accurate half is unreachable and the
545
+ * step is refused for lacking a capability the same registration was documenting.
546
+ *
547
+ * Derived from the same table the coverage rule folds over, so an option added to
548
+ * {@link BinaryValueOption} is checked here with no second edit. Lives beside that table rather
549
+ * than in the boot validator for the reason the table is private: a caller re-deriving which
550
+ * capability gates which set is the drift this returns instead.
551
+ */
552
+ export declare function binaryAcceptsWithoutCapability(declaration: {
553
+ capabilities?: readonly BinaryGeneratorCapability[];
554
+ accepts?: BinaryGeneratorAccepts;
555
+ }): {
556
+ option: BinaryValueOption;
557
+ capability: BinaryGeneratorCapability;
558
+ }[];
393
559
  //# sourceMappingURL=binary-capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary-capabilities.d.ts","sourceRoot":"","sources":["../src/binary-capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-capabilities.d.ts","sourceRoot":"","sources":["../src/binary-capabilities.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,26 @@ import * as v from 'valibot';
43
43
  * two producers of one modality apart without unlocking an option would be the refused
44
44
  * discriminator wearing a new name.
45
45
  *
46
+ * **A capability says the request can CARRY the value; {@link binaryGeneratorAcceptsSchema} says
47
+ * which values are accepted.** The two questions are separate because they fail differently, and
48
+ * collapsing them is what produced both halves of the problem the value axis was added to fix.
49
+ * This member answers only "does asking this reach a parameter at all". An endpoint that has no
50
+ * such parameter declares NOTHING here, however close its behaviour looks: Recraft's
51
+ * `crispUpscale` enlarges at a ratio it fixes itself and takes no factor, so declaring `upscale`
52
+ * for it would admit a step asking for 4x and hand it an enlargement at an unknown multiple. No
53
+ * accepted-value list repairs that, because `upscale: [2]` is not a narrower statement of the
54
+ * truth, it is a fabricated one. The endpoint says what it does in a definition's `guidance` and
55
+ * the step is refused an option the endpoint genuinely cannot answer, which is a visible refusal
56
+ * naming the capability rather than an artifact that checks out everywhere and is wrong where it
57
+ * counts. The honest reading of such a refusal is usually that the option was the wrong way to
58
+ * state the requirement: a step wanting a specific larger deliverable is asking for
59
+ * {@link 'exact-size'}, not for a multiple of something it never measured.
60
+ *
61
+ * An endpoint that DOES take the parameter, but only at values from a closed set, declares the
62
+ * capability and states the set. That is not the per-integration table the design record refuses:
63
+ * a set of accepted values partitions exactly, the same way `mediaTypes` does, and stating it
64
+ * makes an existing ask checkable without unlocking anything new to ask for.
65
+ *
46
66
  * Anything that does not clear the bar stays prose in `description` / `guidance`, which is where
47
67
  * "good at pixel art", "expensive above 2K" and "rate limited to 5/min" belong.
48
68
  */
@@ -80,19 +100,25 @@ export const binaryGeneratorCapabilitySchema = v.picklist([
80
100
  */
81
101
  'seed',
82
102
  /**
83
- * Accepts an explicit aspect SHAPE: a ratio (`16:9`), or a fixed set of size buckets it
84
- * rounds to. Unlocks `generation.aspectRatio`.
103
+ * The request carries an explicit aspect SHAPE: a ratio (`16:9`), or a bucket it maps a shape
104
+ * onto (`image_size: square | portrait | landscape`, `resolution: 1k | 2k`). Unlocks
105
+ * `generation.aspectRatio`.
85
106
  *
86
107
  * Deliberately NOT "a ratio or an output size", which is what this member said while it was
87
- * the only one on the axis. A bucketed API (`image_size: square | portrait | landscape`,
88
- * `resolution: 1k | 2k`) honours a ratio exactly and an exact pixel size not at all, so one
89
- * member covering both made the two integrations that CAN be handed dimensions
90
- * indistinguishable from the two that cannot — see {@link 'exact-size'}.
108
+ * the only one on the axis. A bucketed API honours a ratio exactly and an exact pixel size not
109
+ * at all, so one member covering both made the integrations that CAN be handed dimensions
110
+ * indistinguishable from the ones that cannot: see {@link 'exact-size'}.
111
+ *
112
+ * The line between the two members is WHAT THE REQUEST CARRIES, not how free the answer is. A
113
+ * shape goes here even when the endpoint accepts only a closed list of ratios; dimensions go
114
+ * on `exact-size` even when it accepts only a closed list of those. Which values each takes is
115
+ * {@link binaryGeneratorAcceptsSchema}'s `aspectRatios`, so an endpoint offering ten ratios is
116
+ * a step's `7:3` refused by name rather than admitted and quietly cropped.
91
117
  */
92
118
  'aspect-ratio',
93
119
  /**
94
- * Accepts exact output DIMENSIONS in pixels: a width and a height it renders at natively,
95
- * rather than a shape it rounds to. Unlocks `generation.outputSize`.
120
+ * The request carries output DIMENSIONS in pixels: a width and a height, rather than a shape
121
+ * the endpoint maps onto a size of its own choosing. Unlocks `generation.outputSize`.
96
122
  *
97
123
  * Its own member rather than a refinement of `aspect-ratio`, because the two partition
98
124
  * differently and the difference is the whole deliverable for anything rendered to a fixed
@@ -102,21 +128,28 @@ export const binaryGeneratorCapabilitySchema = v.picklist([
102
128
  * format is covered, the upload succeeded). The consumer that rejects it is the game, weeks
103
129
  * later.
104
130
  *
131
+ * **An endpoint whose `size` parameter takes a closed list of `WxH` values declares THIS
132
+ * member and states the list**, which is the boundary case worth spelling out because it moved.
133
+ * While `accepts` did not exist such an endpoint had to declare `aspect-ratio`, on the ground
134
+ * that it rounds: that classification described a size-taking API as shape-taking, and it left
135
+ * a step needing 96x96 admitted against an endpoint whose nearest listed shape is 1024x1024.
136
+ * Now the capability answers the durable question (can it be handed dimensions at all) and
137
+ * `accepts.outputSizes` answers the vendor-specific one.
138
+ *
105
139
  * The vocabulary stays FLAT: an API taking width and height can honour any ratio, so it
106
140
  * declares BOTH members rather than this one implying the other. That is the same shape
107
- * `reference-image` / `multi-reference` already has, and it is chosen for the same reason
141
+ * `reference-image` / `multi-reference` already has, and it is chosen for the same reason:
108
142
  * an implication table is an ordering over a picklist that every future member would then
109
143
  * have to be placed in, to save a deployment one word in its own registration, and the cost
110
144
  * of forgetting that word is a loud refusal naming the capability rather than a silent
111
145
  * mis-render.
112
146
  *
113
- * What this does NOT do is state which sizes an endpoint supports. Flux caps at 4 MP and
114
- * wants multiples of 32; Retro Diffusion's range moves with the style. A per-integration size
115
- * TABLE is refused on the design record's own grounds (it is the `resolutionRange`
116
- * discriminator wearing a new name, and it goes stale in this repo while the vendor changes
117
- * it in theirs). This member answers only the question that is a durable fact about the
118
- * endpoint's REQUEST SHAPE: can it be handed dimensions at all. The rest is the integration's
119
- * own `guidance`, where a sentence can say what the limits are.
147
+ * An endpoint that renders any pair it is handed, inside limits no list can enumerate (Flux
148
+ * caps at 4 MP and wants multiples of 32; Retro Diffusion's range moves with the style),
149
+ * declares this member and states NO sizes. A per-integration size RANGE stays refused on the
150
+ * design record's own grounds: it is the `resolutionRange` discriminator wearing a new name,
151
+ * and `min`/`max`/`step`/`multiple-of` is a constraint language rather than a fact. The limits
152
+ * stay in the integration's own `guidance`, where a sentence can say what they are.
120
153
  */
121
154
  'exact-size',
122
155
  /**
@@ -254,6 +287,21 @@ export const binaryOutputSizeSchema = v.object({
254
287
  width: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(MAX_BINARY_PIXEL_EXTENT)),
255
288
  height: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(MAX_BINARY_PIXEL_EXTENT)),
256
289
  });
290
+ /**
291
+ * An aspect ratio, `W:H`.
292
+ *
293
+ * Named rather than inlined into the one option that used to be its only reader, because an
294
+ * integration now declares the ratios it ACCEPTS ({@link binaryGeneratorAcceptsSchema}) and the
295
+ * two have to be the same rule: a declaration validated more loosely than the request could hold
296
+ * a value no step is able to spell, so the endpoint's own list would silently accept nothing.
297
+ */
298
+ export const binaryAspectRatioSchema = v.pipe(v.string(), v.trim(), v.maxLength(16), v.regex(/^[1-9][0-9]{0,3}:[1-9][0-9]{0,3}$/, 'must be an aspect ratio of the form W:H'));
299
+ /**
300
+ * How many times the integration's native size to render at. Named for the reason
301
+ * {@link binaryAspectRatioSchema} is: the accepted-factor list and the step's own field are one
302
+ * rule read from two places.
303
+ */
304
+ export const binaryUpscaleFactorSchema = v.pipe(v.number(), v.integer(), v.minValue(2), v.maxValue(8));
257
305
  /**
258
306
  * The per-step GENERATION OPTIONS: the parameters a step wants every generation to carry, each
259
307
  * gated by the capability that makes it answerable ({@link BINARY_OPTION_CAPABILITIES}).
@@ -295,7 +343,7 @@ export const binaryGenerationOptionsObject = v.object({
295
343
  */
296
344
  seed: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(4294967295))),
297
345
  /** `16:9`, `1:1`, `3:2`. Needs `aspect-ratio`. */
298
- aspectRatio: v.optional(v.pipe(v.string(), v.trim(), v.maxLength(16), v.regex(/^[1-9][0-9]{0,3}:[1-9][0-9]{0,3}$/, 'must be an aspect ratio of the form W:H'))),
346
+ aspectRatio: v.optional(binaryAspectRatioSchema),
299
347
  /**
300
348
  * Exact pixel dimensions every artifact must be delivered at. Needs `exact-size`.
301
349
  *
@@ -307,7 +355,7 @@ export const binaryGenerationOptionsObject = v.object({
307
355
  */
308
356
  outputSize: v.optional(binaryOutputSizeSchema),
309
357
  /** Render at this multiple of the integration's native size. Needs `upscale`. */
310
- upscale: v.optional(v.pipe(v.number(), v.integer(), v.minValue(2), v.maxValue(8))),
358
+ upscale: v.optional(binaryUpscaleFactorSchema),
311
359
  /** Deliver an alpha channel rather than a background. Needs `transparent-background`. */
312
360
  transparentBackground: v.optional(v.literal(true)),
313
361
  /** Deliver a seamlessly tiling image. Needs `tileable`. */
@@ -462,4 +510,205 @@ export function binaryCapabilityProviders(required, selected) {
462
510
  }
463
511
  return out;
464
512
  }
513
+ // ---------------------------------------------------------------------------
514
+ // The VALUE axis: not "can this endpoint be asked", which is the capability above, but "will it
515
+ // take the value this step is asking for".
516
+ //
517
+ // The capability axis is a yes/no, and for several real endpoints the honest answer is "yes, at
518
+ // one of these". Grok Imagine and Nano Banana take an aspect ratio from a closed picklist while
519
+ // Flux and Retro Diffusion honour any ratio at all, and all four declare `aspect-ratio`, so a
520
+ // step asking for `7:3` is admitted against every one of them and served by two. Nothing reports
521
+ // the crop: the modality is covered, the format is covered, the upload succeeded. That is the
522
+ // silent wrong artifact the capability axis exists to prevent, arriving through the capability
523
+ // axis, and no wording of a yes/no fixes it.
524
+ //
525
+ // What the platform will NOT do is negotiate. A "closest supported value" rule turns a refusal
526
+ // into a substitution chosen by whoever wrote the fallback, which is the failure this axis is
527
+ // about. A step either asks for something the endpoint takes or it is told, by name, that it
528
+ // does not.
529
+ // ---------------------------------------------------------------------------
530
+ /**
531
+ * The values an integration ACCEPTS for the generation options whose domain is enumerable.
532
+ *
533
+ * A sibling of `capabilities` rather than a change to it, so a definition that declares only tags
534
+ * keeps working unchanged and absent goes on meaning "only the coarse facts are known".
535
+ *
536
+ * **Only the options with a CLOSED domain appear here, and each entry is a SET.** A range is
537
+ * deliberately unrepresentable: `min`/`max`/`step`/`multiple-of` is a constraint language, and
538
+ * the moment one exists it grows to cover Flux's "any pair up to 4 MP in multiples of 32", which
539
+ * is the `resolutionRange` discriminator the design record refuses. An endpoint with a genuine
540
+ * range declares the capability, states no set, and puts its limits in `guidance`: its steps are
541
+ * then judged exactly as they were before this field existed.
542
+ *
543
+ * **An empty list is refused rather than read as "accepts nothing".** Absent is the one spelling
544
+ * of "not stated", so a `[]` that fell out of a filter would otherwise refuse every value the
545
+ * endpoint has, silently, on a declaration whose author meant to say nothing at all.
546
+ */
547
+ export const binaryGeneratorAcceptsSchema = v.object({
548
+ /** The aspect ratios it takes, when it takes a closed set of them. Compared in LOWEST TERMS. */
549
+ aspectRatios: v.optional(v.pipe(v.array(binaryAspectRatioSchema), v.minLength(1), v.maxLength(64))),
550
+ /** The exact `WxH` pairs it renders, when its size parameter is a closed list. */
551
+ outputSizes: v.optional(v.pipe(v.array(binaryOutputSizeSchema), v.minLength(1), v.maxLength(64))),
552
+ /** The upscale factors it takes, when it takes a closed set of them. */
553
+ upscaleFactors: v.optional(v.pipe(v.array(binaryUpscaleFactorSchema), v.minLength(1), v.maxLength(8))),
554
+ });
555
+ /**
556
+ * One value option's three parts, as the ONE table every reader folds over: which capability
557
+ * gates it, how to read the step's request, and how to read an integration's accepted set.
558
+ *
559
+ * A `Record` over the union, so a member added to {@link BinaryValueOption} fails the typecheck
560
+ * here rather than shipping as an option nothing checks. The capability is restated rather than
561
+ * read out of {@link BINARY_OPTION_CAPABILITIES}, whose values are LISTS ("any of these", which
562
+ * is what `edit` and `referenceImages` need); `binary-capabilities.test.ts` pins that each entry
563
+ * here names exactly the one capability that table maps its option to, so the two cannot drift.
564
+ *
565
+ * Values are compared as STRINGS, in the spelling each renders to below, because that is also
566
+ * what a refusal has to say back to a human. The one normalisation is the ratio's: `1920:1080`
567
+ * and `16:9` are the same shape asked for twice, and refusing the first against an endpoint that
568
+ * declared the second would be a false refusal over spelling.
569
+ */
570
+ const BINARY_VALUE_OPTIONS = {
571
+ aspectRatio: {
572
+ capability: 'aspect-ratio',
573
+ requested: (options) => options.aspectRatio ? reduceAspectRatio(options.aspectRatio) : undefined,
574
+ accepted: (accepts) => accepts.aspectRatios?.map(reduceAspectRatio),
575
+ },
576
+ outputSize: {
577
+ capability: 'exact-size',
578
+ requested: (options) => (options.outputSize ? formatOutputSize(options.outputSize) : undefined),
579
+ accepted: (accepts) => accepts.outputSizes?.map(formatOutputSize),
580
+ },
581
+ upscale: {
582
+ capability: 'upscale',
583
+ requested: (options) => (options.upscale === undefined ? undefined : String(options.upscale)),
584
+ accepted: (accepts) => accepts.upscaleFactors?.map(String),
585
+ },
586
+ };
587
+ /** `WxH`, the spelling the brief and every refusal already use for a size. */
588
+ function formatOutputSize(size) {
589
+ return `${size.width}x${size.height}`;
590
+ }
591
+ /**
592
+ * An aspect ratio in lowest terms, so `1920:1080` and `16:9` compare equal.
593
+ *
594
+ * Total by construction: the string has already passed {@link binaryAspectRatioSchema} at both
595
+ * ends (a step's field and an integration's declaration), and a value that somehow has not is
596
+ * returned unchanged rather than dropped, which compares as itself and cannot silently match.
597
+ */
598
+ function reduceAspectRatio(ratio) {
599
+ const match = /^([1-9][0-9]{0,3}):([1-9][0-9]{0,3})$/.exec(ratio.trim());
600
+ if (!match)
601
+ return ratio;
602
+ let a = Number(match[1]);
603
+ let b = Number(match[2]);
604
+ while (b !== 0)
605
+ [a, b] = [b, a % b];
606
+ return `${Number(match[1]) / a}:${Number(match[2]) / a}`;
607
+ }
608
+ /**
609
+ * Judge the VALUES a step asks for against the sets its selected integrations accept.
610
+ *
611
+ * Judged per option and PER DECLARER, over the integrations that declare the gating capability
612
+ * (one that declares none of it is already the coarse axis's answer, and counting it here would
613
+ * report one fault twice). Each declarer is in one of three states, and the disposition is a
614
+ * function of the whole set rather than of the first agreeable member:
615
+ *
616
+ * - **Nobody stated a set.** SILENT. This is the state every registration is in until somebody
617
+ * audits an endpoint, and it is exactly what the platform knew before this field existed. An
618
+ * advisory that fired here would ride nearly every step with an aspect ratio, which is how a
619
+ * line stops being read.
620
+ * - **Every declarer that stated a set contains the value.** Covered, and a declarer that stated
621
+ * nothing beside them stays the pre-field unknown rather than a finding.
622
+ * - **Some stated set contains it and another stated set EXCLUDES it.** PARTIAL. The step is
623
+ * servable and is not refused, for the reason {@link binaryCapabilityCoverage} treats one
624
+ * declarer as covering a capability: which integration renders which artifact is the agent's
625
+ * call, not the platform's. But an excluding set is a DEFINITE fact about a definite endpoint,
626
+ * so it is named rather than absorbed. Absorbing it is the exact silent crop this axis exists
627
+ * to prevent, and it inverted the reporting: the LESS informed selection (a declarer that
628
+ * stated nothing) raised an advisory, so declaring an accurate second set bought silence.
629
+ * - **No stated set contains it, and some declarer stated none.** UNVERIFIABLE. One integration
630
+ * refuses the value and another has not said, so the step may well be served: reported, never
631
+ * refused, the same disposition {@link binaryCapabilityCoverage} gives its own third state.
632
+ * - **No stated set contains it, and every declarer stated one.** UNACCEPTED, and this is the
633
+ * refusal the axis exists for: every endpoint that could serve the option has enumerated what
634
+ * it takes, and this is not among them.
635
+ *
636
+ * Takes the step's OPTIONS rather than a pre-derived requirement list, unlike its neighbours,
637
+ * because the judgement needs the value and not only the capability it implies. It takes each
638
+ * integration's `id` for the same reason {@link binaryCapabilityProviders} does: a partial
639
+ * finding whose remedy is routing is unusable without naming who to route around.
640
+ */
641
+ export function binaryValueCoverage(options, selected) {
642
+ const unaccepted = [];
643
+ const partial = [];
644
+ const unverifiable = [];
645
+ if (!options)
646
+ return { unaccepted, partial, unverifiable };
647
+ for (const [key, entry] of Object.entries(BINARY_VALUE_OPTIONS)) {
648
+ const option = key;
649
+ const requested = entry.requested(options);
650
+ if (requested === undefined)
651
+ continue;
652
+ const declarers = selected.filter((generator) => (generator.capabilities ?? []).includes(entry.capability));
653
+ const stated = [];
654
+ const refusedBy = [];
655
+ let accepting = 0;
656
+ let silent = false;
657
+ for (const generator of declarers) {
658
+ const values = generator.accepts ? entry.accepted(generator.accepts) : undefined;
659
+ if (!values) {
660
+ silent = true;
661
+ continue;
662
+ }
663
+ stated.push(values);
664
+ if (values.includes(requested))
665
+ accepting += 1;
666
+ else
667
+ refusedBy.push(generator.id);
668
+ }
669
+ if (stated.length === 0)
670
+ continue;
671
+ if (accepting > 0) {
672
+ if (refusedBy.length > 0)
673
+ partial.push({ option, requested, refusedBy });
674
+ continue;
675
+ }
676
+ if (silent) {
677
+ unverifiable.push(option);
678
+ continue;
679
+ }
680
+ unaccepted.push({ option, requested, accepted: [...new Set(stated.flat())] });
681
+ }
682
+ return { unaccepted, partial, unverifiable };
683
+ }
684
+ /**
685
+ * The value sets a definition states for options its capabilities do NOT declare.
686
+ *
687
+ * A definition saying which aspect ratios it accepts while declaring no `aspect-ratio` has stated
688
+ * two contradicting facts about one endpoint, and every reader believes a different half:
689
+ * {@link binaryValueCoverage} judges only over the capability's declarers and never sees the set,
690
+ * the agent's brief renders the set as fact beside the integration's formats, and admission
691
+ * refuses every step asking for the option at all. So the accurate half is unreachable and the
692
+ * step is refused for lacking a capability the same registration was documenting.
693
+ *
694
+ * Derived from the same table the coverage rule folds over, so an option added to
695
+ * {@link BinaryValueOption} is checked here with no second edit. Lives beside that table rather
696
+ * than in the boot validator for the reason the table is private: a caller re-deriving which
697
+ * capability gates which set is the drift this returns instead.
698
+ */
699
+ export function binaryAcceptsWithoutCapability(declaration) {
700
+ const accepts = declaration.accepts;
701
+ if (!accepts)
702
+ return [];
703
+ const declared = declaration.capabilities ?? [];
704
+ const missing = [];
705
+ for (const [key, entry] of Object.entries(BINARY_VALUE_OPTIONS)) {
706
+ if (!entry.accepted(accepts))
707
+ continue;
708
+ if (declared.includes(entry.capability))
709
+ continue;
710
+ missing.push({ option: key, capability: entry.capability });
711
+ }
712
+ return missing;
713
+ }
465
714
  //# sourceMappingURL=binary-capabilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary-capabilities.js","sourceRoot":"","sources":["../src/binary-capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-capabilities.js","sourceRoot":"","sources":["../src/binary-capabilities.ts"],"names":[],"mappings":"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"}