@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.
- package/dist/binary-capabilities.d.ts +166 -0
- package/dist/binary-capabilities.d.ts.map +1 -1
- package/dist/binary-capabilities.js +267 -18
- package/dist/binary-capabilities.js.map +1 -1
- package/dist/binary-generators.d.ts +130 -4
- package/dist/binary-generators.d.ts.map +1 -1
- package/dist/binary-generators.js +96 -4
- package/dist/binary-generators.js.map +1 -1
- package/dist/debug-api.d.ts +2 -2
- package/dist/execution.d.ts +22 -10
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +5 -2
- package/dist/execution.js.map +1 -1
- package/dist/pipeline-environment-lifecycle.d.ts +12 -10
- package/dist/pipeline-environment-lifecycle.d.ts.map +1 -1
- package/dist/pipeline-environment-lifecycle.js +13 -11
- package/dist/pipeline-environment-lifecycle.js.map +1 -1
- package/dist/routes/agent-runs.d.ts +2 -2
- package/dist/routes/bug-hunt.d.ts +2 -2
- package/dist/routes/debug-api.d.ts +1 -1
- package/dist/routes/execution.d.ts +9 -9
- package/dist/routes/human-review.d.ts +1 -1
- package/dist/routes/human-test.d.ts +5 -5
- package/dist/routes/public-evidence.d.ts +16 -0
- package/dist/routes/public-evidence.d.ts.map +1 -1
- package/dist/routes/visual-confirm.d.ts +3 -3
- package/dist/routes/workspaces.d.ts +30 -2
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/run-evidence.d.ts +114 -1
- package/dist/run-evidence.d.ts.map +1 -1
- package/dist/run-evidence.js +170 -0
- package/dist/run-evidence.js.map +1 -1
- package/dist/run-outcome.d.ts +135 -2
- package/dist/run-outcome.d.ts.map +1 -1
- package/dist/run-outcome.js +277 -3
- package/dist/run-outcome.js.map +1 -1
- package/dist/snapshot.d.ts +15 -1
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/tool-servers.d.ts +9 -7
- package/dist/tool-servers.d.ts.map +1 -1
- package/dist/tool-servers.js +8 -5
- package/dist/tool-servers.js.map +1 -1
- 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":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAuB5B
|
|
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
|
-
*
|
|
84
|
-
*
|
|
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
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
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
|
-
*
|
|
95
|
-
*
|
|
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
|
-
*
|
|
114
|
-
* wants multiples of 32; Retro Diffusion's range moves with the style
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
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(
|
|
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(
|
|
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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"}
|