eval-quality 0.2.0 → 0.3.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/README.md +3 -3
- package/corpus/dev/README.md +3 -2
- package/corpus/dev/compile-seal-example/brief.json +1 -1
- package/corpus/dev/compile-seal-example/contract.json +1 -1
- package/corpus/dev/contracts/absent-collection-locations.json +1 -1
- package/corpus/dev/contracts/absent-sibling-groups.json +1 -1
- package/corpus/dev/contracts/absent-success-indicator.json +1 -1
- package/corpus/dev/contracts/empty-channel-roles.json +1 -1
- package/corpus/dev/contracts/empty-collection-locations.json +1 -1
- package/corpus/dev/contracts/empty-request-shapes.json +1 -1
- package/corpus/dev/contracts/empty-sibling-groups.json +1 -1
- package/corpus/dev/contracts/fragment-selection.json +1 -0
- package/corpus/dev/contracts/no-collection-quantifier.json +1 -1
- package/corpus/dev/contracts/no-operation-inventory.json +1 -1
- package/corpus/dev/contracts/no-read-back-relation.json +1 -1
- package/corpus/dev/contracts/no-state-change-marker.json +1 -1
- package/corpus/dev/contracts/no-type-violating-step.json +1 -1
- package/corpus/dev/contracts/per-key-split-oracles.json +1 -1
- package/corpus/dev/contracts/review-corpus.json +1 -0
- package/corpus/dev/contracts/satisfied-declarations.json +1 -1
- package/corpus/dev/contracts/single-required-response-key.json +1 -1
- package/corpus/dev/contracts/split-indicator-oracle.json +1 -1
- package/corpus/dev/contracts/unaddressed-parameter-sibling.json +1 -1
- package/corpus/dev/contracts/unnamed-reference-set.json +1 -1
- package/corpus/dev/contracts/wrong-cardinality-form.json +1 -1
- package/corpus/dev/index.json +1 -1
- package/dist/cli/render.d.ts +2 -5
- package/dist/cli/render.js +51 -1
- package/dist/core/compile/bindings.d.ts +26 -7
- package/dist/core/compile/bindings.js +49 -32
- package/dist/core/compile/compile.d.ts +12 -0
- package/dist/core/compile/compile.js +28 -1
- package/dist/core/compile/excluded-content.d.ts +11 -0
- package/dist/core/compile/excluded-content.js +42 -0
- package/dist/core/compile/expression-legality.d.ts +2 -2
- package/dist/core/compile/expression-legality.js +58 -12
- package/dist/core/compile/interface-inventory.d.ts +34 -1
- package/dist/core/compile/interface-inventory.js +88 -11
- package/dist/core/compile/reachability.d.ts +12 -2
- package/dist/core/compile/reachability.js +123 -36
- package/dist/core/compile/schema-version.d.ts +2 -0
- package/dist/core/compile/schema-version.js +25 -0
- package/dist/core/compile/sensitivity-witness.d.ts +31 -12
- package/dist/core/compile/sensitivity-witness.js +110 -23
- package/dist/core/compile/step-reference.d.ts +2 -0
- package/dist/core/compile/step-reference.js +49 -0
- package/dist/core/coverage/operations.d.ts +62 -0
- package/dist/core/coverage/operations.js +57 -0
- package/dist/core/coverage/relevance.d.ts +4 -2
- package/dist/core/coverage/relevance.js +22 -23
- package/dist/core/coverage/satisfaction.d.ts +2 -2
- package/dist/core/coverage/satisfaction.js +73 -48
- package/dist/core/declared-inputs.d.ts +83 -4
- package/dist/core/declared-inputs.js +105 -8
- package/dist/core/evaluate/evidence-resolution.d.ts +9 -12
- package/dist/core/evaluate/evidence-resolution.js +70 -10
- package/dist/core/evaluate/operators.d.ts +22 -0
- package/dist/core/evaluate/operators.js +17 -1
- package/dist/core/evaluate/resolution.d.ts +14 -3
- package/dist/core/evaluate/resolution.js +63 -3
- package/dist/core/excluded-content.d.ts +65 -0
- package/dist/core/excluded-content.js +113 -0
- package/dist/core/failure-codes.d.ts +2 -2
- package/dist/core/failure-codes.js +5 -2
- package/dist/core/ingest/conditions.d.ts +1 -1
- package/dist/core/ingest/ingest.js +8 -0
- package/dist/core/preflight/plan.d.ts +7 -5
- package/dist/core/preflight/plan.js +75 -32
- package/dist/core/preflight/projection.d.ts +6 -3
- package/dist/core/preflight/projection.js +22 -2
- package/dist/core/preflight/reduce.js +47 -7
- package/dist/core/preflight/witness-evidence.d.ts +5 -5
- package/dist/core/preflight/witness-evidence.js +63 -20
- package/dist/core/schemas/artifact.d.ts +683 -35
- package/dist/core/schemas/constraint-ledger.js +11 -0
- package/dist/core/schemas/defect-signature.d.ts +438 -16
- package/dist/core/schemas/defect-signature.js +58 -10
- package/dist/core/schemas/eval-contract.d.ts +517 -12
- package/dist/core/schemas/eval-contract.js +18 -2
- package/dist/core/schemas/evidence-artifact.d.ts +14 -4
- package/dist/core/schemas/evidence-artifact.js +1 -1
- package/dist/core/schemas/interface.d.ts +741 -13
- package/dist/core/schemas/interface.js +120 -7
- package/dist/core/schemas/isolation-manifest.js +16 -9
- package/dist/core/schemas/plan.d.ts +217 -3
- package/dist/core/schemas/plan.js +22 -1
- package/dist/core/schemas/pointer.d.ts +47 -1
- package/dist/core/schemas/pointer.js +89 -8
- package/dist/core/schemas/port-messages.d.ts +194 -10
- package/dist/core/schemas/port-messages.js +73 -6
- package/dist/core/schemas/probe-body.d.ts +18 -0
- package/dist/core/schemas/probe-body.js +13 -0
- package/dist/core/schemas/probe.d.ts +122 -3
- package/dist/core/schemas/probe.js +1 -1
- package/dist/core/schemas/sealed-run-record.d.ts +131 -9
- package/dist/core/schemas/sealed-run-record.js +56 -11
- package/dist/core/schemas/sensitivity-witness.d.ts +108 -6
- package/dist/core/schemas/sensitivity-witness.js +61 -5
- package/dist/core/score/bindings.d.ts +2 -2
- package/dist/core/score/bindings.js +25 -13
- package/dist/core/score/qualification.d.ts +5 -5
- package/dist/core/score/qualification.js +67 -37
- package/dist/core/score/quotation.d.ts +1 -24
- package/dist/core/score/quotation.js +29 -4
- package/dist/core/score/score.js +28 -2
- package/dist/core/score/strength.d.ts +9 -0
- package/dist/core/score/strength.js +35 -1
- package/dist/core/score/witness.d.ts +21 -0
- package/dist/core/score/witness.js +9 -4
- package/dist/core/seal/derived-reference.d.ts +2 -9
- package/dist/core/seal/derived-reference.js +62 -23
- package/dist/core/seal/plan-index.d.ts +18 -3
- package/dist/core/seal/plan-index.js +44 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/ports/environment-probe-port.d.ts +60 -4
- package/dist/testing/probe-conformance.d.ts +29 -0
- package/dist/testing/probe-conformance.js +34 -5
- package/package.json +1 -1
- package/schemas/eval-contract.schema.json +1356 -464
- package/schemas/evidence-artifact.schema.json +59 -29
- package/schemas/isolation-manifest.schema.json +17 -10
- package/schemas/probe.schema.json +197 -71
- package/schemas/rubric.schema.json +1 -1
- package/schemas/sealed-run-record.schema.json +296 -39
|
@@ -85,7 +85,8 @@ export const PathTemplate = z
|
|
|
85
85
|
.string()
|
|
86
86
|
.regex(PATH_TEMPLATE_PATTERN)
|
|
87
87
|
.describe('A path template whose parameters are spelled `{name}` in braces. The `:name` spelling is rejected: AD-40 resolves a defect signature by comparing method and path template, and that comparison is not implementable against an unstated syntax.');
|
|
88
|
-
export const Operation = z
|
|
88
|
+
export const Operation = z
|
|
89
|
+
.strictObject({
|
|
89
90
|
operationId: Identifier,
|
|
90
91
|
method: HttpMethod,
|
|
91
92
|
pathTemplate: PathTemplate,
|
|
@@ -96,6 +97,91 @@ export const Operation = z.strictObject({
|
|
|
96
97
|
responseDescriptor: ResponseDescriptor,
|
|
97
98
|
volatilePointers: z.array(DescriptorPointer),
|
|
98
99
|
sensitivityWitness: SensitivityWitness.nullable().describe('AD-10, mandatory per declared operation rather than per interface. `null` is legal only for an operation declaring no keys in any request channel; AD-10 exempts that operation and requires the exemption to be recorded, which pre-flight does as an `exempt` check. An input-bearing operation declaring `null` fails a strict compilation under `undeclared-mandatory-input`, alongside the other declaration-completeness check that code already gates.'),
|
|
100
|
+
})
|
|
101
|
+
.meta({
|
|
102
|
+
id: 'Operation',
|
|
103
|
+
description: "AD-19's per-operation declaration inventory for an interface that speaks HTTP. Carried by the `api`, `web`, and `mcp` branches alike, so the export names it once instead of inlining three copies that could drift apart.",
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* AD-35 applied to a command: the operation names a logical executable and the
|
|
107
|
+
* caller maps it to something runnable outside the contract. `Identifier`'s
|
|
108
|
+
* charset admits no slash, dot, or colon, so `/usr/local/bin/tool`, `./tool`,
|
|
109
|
+
* and `http://host/tool` are parse errors rather than compile findings. That is
|
|
110
|
+
* what makes AD-35 structural here instead of advisory.
|
|
111
|
+
*
|
|
112
|
+
* The subcommand path is a list of segments rather than one string for the
|
|
113
|
+
* reason `PathTemplate` spells parameters in braces and nothing else: AD-40
|
|
114
|
+
* compares identities as segments, and a single string would force two
|
|
115
|
+
* implementations to agree on a separator no field declares.
|
|
116
|
+
*/
|
|
117
|
+
export const CommandInvocation = z.strictObject({
|
|
118
|
+
executable: Identifier.describe('A logical executable name, never a filesystem path, a URL, a host, or a port (AD-35). The caller maps it to an authorized target through configuration outside the contract.'),
|
|
119
|
+
subcommandPath: z
|
|
120
|
+
.array(Identifier)
|
|
121
|
+
.describe('The subcommand segments after the executable, outermost first. Empty is legal and means the executable is invoked with no subcommand.'),
|
|
122
|
+
});
|
|
123
|
+
/**
|
|
124
|
+
* The command counterpart of `RequestShape`, built as a four-key strict object
|
|
125
|
+
* for the reason the comment above `RequestShape` gives: a record over a
|
|
126
|
+
* channel enum demands every member at parse time, and the partial spelling
|
|
127
|
+
* that would relax it is the one the Consistency Conventions ban.
|
|
128
|
+
*/
|
|
129
|
+
export const CommandRequestShape = z.strictObject({
|
|
130
|
+
argument: KeyedShapeDescriptor.describe("Positional arguments, keyed by the name the contract gives each position. The key is the author's own label; position is not encoded here, because no AD-31 predicate reads argument order."),
|
|
131
|
+
option: KeyedShapeDescriptor,
|
|
132
|
+
environment: KeyedShapeDescriptor.describe('AD-18: an environment channel declaration names a variable and its type and never carries a credential value. The same rule the header channel carries, for the channel that plays the same role off an HTTP interface.'),
|
|
133
|
+
stdin: KeyedShapeDescriptor,
|
|
134
|
+
});
|
|
135
|
+
/**
|
|
136
|
+
* Which output channel the operation's one response descriptor describes.
|
|
137
|
+
*
|
|
138
|
+
* Tagged on `kind` rather than spelled as a bare channel name because `stdout`
|
|
139
|
+
* is itself a legal `Identifier`: an untagged root could not tell the stream
|
|
140
|
+
* from an artifact genuinely named `stdout`, which is exactly the ambiguity the
|
|
141
|
+
* two members below would otherwise share.
|
|
142
|
+
*/
|
|
143
|
+
export const CommandDescriptorChannel = z.discriminatedUnion('kind', [
|
|
144
|
+
z.strictObject({
|
|
145
|
+
kind: z.literal('stream'),
|
|
146
|
+
channel: z.enum(['stdout', 'stderr']),
|
|
147
|
+
}),
|
|
148
|
+
z.strictObject({
|
|
149
|
+
kind: z.literal('artifact'),
|
|
150
|
+
artifactId: Identifier.describe('One of the identifiers this operation declares in `artifacts`. A name absent from that list fails compilation under `unresolved-artifact-reference` rather than resolving absent, because a dangling declaration is an authoring fault the compiler can see.'),
|
|
151
|
+
}),
|
|
152
|
+
]);
|
|
153
|
+
/**
|
|
154
|
+
* A command-kind operation. It carries exactly one `ResponseDescriptor`, the
|
|
155
|
+
* same shape an api operation carries, and `descriptorChannel` says which
|
|
156
|
+
* output channel that descriptor describes.
|
|
157
|
+
*
|
|
158
|
+
* One descriptor rather than one per output channel: AD-19 fixes the descriptor
|
|
159
|
+
* per operation so that `requiredKeys` has a truthful value, and AD-20 rule 2
|
|
160
|
+
* reads "the required keys of the response descriptor belonging to the
|
|
161
|
+
* operation that step invokes" as its denominator. Several descriptors leave
|
|
162
|
+
* that phrase with several referents, which is the defect AD-19 already records
|
|
163
|
+
* one level up for an interface-wide union. An operation whose stream and whose
|
|
164
|
+
* written file both need declared structure is two operations.
|
|
165
|
+
*
|
|
166
|
+
* There is no declared success value space for the exit code. AD-19 already
|
|
167
|
+
* declares one nominated success indicator per operation, and an exit-code
|
|
168
|
+
* assertion is an ordinary oracle over `/interactions/{stepId}/exit-code`,
|
|
169
|
+
* which the pointer grammar carries as a scalar channel.
|
|
170
|
+
*/
|
|
171
|
+
export const CommandOperation = z.strictObject({
|
|
172
|
+
operationId: Identifier,
|
|
173
|
+
invocation: CommandInvocation,
|
|
174
|
+
stateChangeMarker: z
|
|
175
|
+
.boolean()
|
|
176
|
+
.describe('AD-19: whether the operation is intended to change state. AD-20 rule 7 relevance reads it, and AD-10 selects the sensitivity channel by it. Both values are legal and neither is a default.'),
|
|
177
|
+
requestShape: CommandRequestShape,
|
|
178
|
+
artifacts: z
|
|
179
|
+
.array(Identifier)
|
|
180
|
+
.describe("The files the operation writes, as bare declared identifiers with existence semantics only. No descriptor and no keys of their own: an artifact pointer's identifier segment resolves against this list, and structure comes from the operation's one response descriptor when `descriptorChannel` nominates that artifact. A pointer naming an identifier absent here fails compilation under `unresolved-artifact-reference`."),
|
|
181
|
+
descriptorChannel: CommandDescriptorChannel,
|
|
182
|
+
responseDescriptor: ResponseDescriptor,
|
|
183
|
+
volatilePointers: z.array(DescriptorPointer),
|
|
184
|
+
sensitivityWitness: SensitivityWitness.nullable().describe("AD-10, mandatory per declared operation rather than per interface, on the api operation's own terms. `null` is legal only for an operation declaring no keys in any request channel, which for a command means no argument, no option, no environment variable, and no standard input. An input-bearing operation declaring `null` fails a strict compilation under `undeclared-mandatory-input`."),
|
|
99
185
|
});
|
|
100
186
|
/**
|
|
101
187
|
* AD-19's four interface kinds, exported once so nothing else respells them:
|
|
@@ -106,10 +192,37 @@ export const Operation = z.strictObject({
|
|
|
106
192
|
*/
|
|
107
193
|
export const INTERFACE_KINDS = ['api', 'web', 'cli', 'mcp'];
|
|
108
194
|
export const InterfaceKind = z.enum(INTERFACE_KINDS);
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
195
|
+
const LOGICAL_ID_DESCRIPTION = "AD-35: a logical identifier for the interface, never a URL, host, or port. Mapping it to a target is the caller's, outside the contract.";
|
|
196
|
+
const OPERATIONS_DESCRIPTION = 'No uniqueness constraint: two operations colliding on their transport identity after parameter-name erasure is `duplicate-operation-signature`, a coded compile-time error, and a schema that deduped them would delete it.';
|
|
197
|
+
// `web` and `mcp` carry the api operation shape unchanged. A two-member union
|
|
198
|
+
// would make either one a parse failure, and a parse failure carries no AD-5
|
|
199
|
+
// code, no artifact path, and no name for the kind that is unsupported, which
|
|
200
|
+
// is the opposite of AD-10's "fails compilation honestly under
|
|
201
|
+
// `unsupported-interface-kind`".
|
|
202
|
+
const apiShapedInterface = (kind) => z.strictObject({
|
|
203
|
+
logicalId: Identifier.describe(LOGICAL_ID_DESCRIPTION),
|
|
204
|
+
kind: z.literal(kind),
|
|
205
|
+
operations: z.array(Operation).describe(OPERATIONS_DESCRIPTION),
|
|
115
206
|
});
|
|
207
|
+
/**
|
|
208
|
+
* Discriminated on `kind`, so an operation shape cannot be smuggled onto the
|
|
209
|
+
* wrong interface: a `cli` interface declaring `method` and an `api` interface
|
|
210
|
+
* declaring `invocation` are both parse errors.
|
|
211
|
+
*/
|
|
212
|
+
export const PermittedInterface = z.discriminatedUnion('kind', [
|
|
213
|
+
apiShapedInterface('api'),
|
|
214
|
+
apiShapedInterface('web'),
|
|
215
|
+
apiShapedInterface('mcp'),
|
|
216
|
+
z.strictObject({
|
|
217
|
+
logicalId: Identifier.describe(LOGICAL_ID_DESCRIPTION),
|
|
218
|
+
kind: z.literal('cli'),
|
|
219
|
+
operations: z.array(CommandOperation).describe(OPERATIONS_DESCRIPTION),
|
|
220
|
+
}),
|
|
221
|
+
]);
|
|
222
|
+
/**
|
|
223
|
+
* One interface's operations widened to the element union. TypeScript will not
|
|
224
|
+
* iterate `iface.operations` directly, because the union's branches give it a
|
|
225
|
+
* union of array types whose `map` signatures do not unify; this is the one
|
|
226
|
+
* place that widening is spelled, so no call site invents its own.
|
|
227
|
+
*/
|
|
228
|
+
export const operationsOf = (iface) => iface.operations;
|
|
@@ -56,11 +56,17 @@ const accountingShape = Object.fromEntries(FORBIDDEN_INPUT_FLOOR.map((member) =>
|
|
|
56
56
|
* reasoning behind `RequestShape`'s four-key object.
|
|
57
57
|
*/
|
|
58
58
|
export const ForbiddenInputAccountingMap = z.strictObject(accountingShape);
|
|
59
|
+
/**
|
|
60
|
+
* A label a reader has to be able to act on. Empty is not a mount, a network
|
|
61
|
+
* target, or a tool call, and an empty entry renders as a basis line with
|
|
62
|
+
* nothing after its colon.
|
|
63
|
+
*/
|
|
64
|
+
const NonEmptyLabel = z.string().min(1);
|
|
59
65
|
export const IsolationManifest = z
|
|
60
66
|
.strictObject({
|
|
61
67
|
...lineageFields,
|
|
62
68
|
runId: z.string().min(1),
|
|
63
|
-
contractId: Identifier.describe('The prior art\'s `taskId`, renamed. "Task" is experiment vocabulary with no product meaning, and the manifest keeps an identifier
|
|
69
|
+
contractId: Identifier.describe('The prior art\'s `taskId`, renamed. "Task" is experiment vocabulary with no product meaning, and the manifest keeps an identifier so a reader can say which contract the run was isolated for. It is a label and not a second operand for any check: `core/ingest` matches this artifact to a run on `runId`, `contractDigest`, and `evaluatorConfigurationDigest`, which is the whole of the agreement the two artifacts make. Nothing in the pipeline carries a contract identifier to compare this against, since the sealed run record pins its contract by digest and the eval contract is not among ingest\'s inputs.'),
|
|
64
70
|
conditionArm: z
|
|
65
71
|
.string()
|
|
66
72
|
.min(1)
|
|
@@ -70,21 +76,22 @@ export const IsolationManifest = z
|
|
|
70
76
|
contractDigest: Digest,
|
|
71
77
|
evaluatorConfigurationDigest: Digest.describe('Added here and absent from the prior art. AD-32 requires this digest to agree between the manifest and the run record, which was previously an agreement rule asserted over two fields that did not exist. Required and non-nullable on both, which is what makes the substitution cost two contradictions rather than one omission. The agreement itself is a cross-artifact rule no schema can see.'),
|
|
72
78
|
workspaceIdentity: z.string().min(1),
|
|
73
|
-
allowedMounts: z.array(
|
|
79
|
+
allowedMounts: z.array(NonEmptyLabel),
|
|
74
80
|
observedMounts: z
|
|
75
|
-
.array(
|
|
76
|
-
.describe('Observed mounts, network targets, and tool calls exceeding their allowlist is a violation AD-16 has `core/ingest` record; it is a cross-field rule with no AD-5 code and the schema admits it.'),
|
|
77
|
-
networkAllowlist: z.array(
|
|
78
|
-
observedNetworkTargets: z.array(
|
|
79
|
-
toolAllowlist: z.array(
|
|
80
|
-
observedToolCalls: z.array(
|
|
81
|
+
.array(NonEmptyLabel)
|
|
82
|
+
.describe('Observed mounts, network targets, and tool calls exceeding their allowlist is a violation AD-16 has `core/ingest` record; it is a cross-field rule with no AD-5 code and the schema admits it. Each entry is non-empty: an empty string is not a mount, and it renders as a basis line naming nothing after its colon.'),
|
|
83
|
+
networkAllowlist: z.array(NonEmptyLabel),
|
|
84
|
+
observedNetworkTargets: z.array(NonEmptyLabel),
|
|
85
|
+
toolAllowlist: z.array(NonEmptyLabel),
|
|
86
|
+
observedToolCalls: z.array(NonEmptyLabel),
|
|
81
87
|
resourceCeilings: ResourceCeilings,
|
|
82
88
|
actualResourceUse: ActualResourceUse,
|
|
83
89
|
forbiddenInputAccounting: ForbiddenInputAccountingMap.describe('The field AD-16 adds and the prior art lacks: "the isolation manifest\'s required fields … account for each forbidden input by name". Seven keys, generated from `FORBIDDEN_INPUT_FLOOR` so the floor has one home.'),
|
|
84
90
|
violation: z
|
|
85
91
|
.string()
|
|
92
|
+
.min(1)
|
|
86
93
|
.nullable()
|
|
87
|
-
.describe("The sixteenth of the prior art's sixteen required members, and the one that is not a description of the run: a non-null violation invalidates it. AD-16 says the schema is \"seeded from the prior art's fifteen\"; the prior art's `required` array has sixteen. Settled by construction: the fifteen are the fields describing the run and this is the invalidation outcome. All sixteen are carried."),
|
|
94
|
+
.describe("The sixteenth of the prior art's sixteen required members, and the one that is not a description of the run: a non-null violation invalidates it. Non-empty when present, on `QuotedEvidence.quote`'s precedent: `null` is the spelling for no violation, so an empty string is a violation that names nothing while still invalidating the run and rendering a blank basis entry. AD-16 says the schema is \"seeded from the prior art's fifteen\"; the prior art's `required` array has sixteen. Settled by construction: the fifteen are the fields describing the run and this is the invalidation outcome. All sixteen are carried."),
|
|
88
95
|
})
|
|
89
96
|
.meta({
|
|
90
97
|
id: 'IsolationManifest',
|
|
@@ -85,7 +85,7 @@ export declare const BindingChannel: z.ZodNullable<z.ZodRecord<z.ZodString, z.Zo
|
|
|
85
85
|
* requires every member at parse time and fails five of the Gate C fixture's
|
|
86
86
|
* six steps, all of which bind a subset of the channels.
|
|
87
87
|
*/
|
|
88
|
-
export declare const
|
|
88
|
+
export declare const ApiInputBinding: z.ZodObject<{
|
|
89
89
|
path: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
90
90
|
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
91
91
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -135,6 +135,171 @@ export declare const InputBinding: z.ZodObject<{
|
|
|
135
135
|
principal: z.ZodString;
|
|
136
136
|
}, z.core.$strict>]>>>;
|
|
137
137
|
}, z.core.$strict>;
|
|
138
|
+
/** The same shape over the four channels a command-kind operation accepts. */
|
|
139
|
+
export declare const CommandInputBinding: z.ZodObject<{
|
|
140
|
+
argument: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
141
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
142
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
143
|
+
matcher: z.ZodEnum<{
|
|
144
|
+
any: "any";
|
|
145
|
+
"type-violating": "type-violating";
|
|
146
|
+
}>;
|
|
147
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
148
|
+
captured: z.ZodString;
|
|
149
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
150
|
+
principal: z.ZodString;
|
|
151
|
+
}, z.core.$strict>]>>>;
|
|
152
|
+
option: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
153
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
154
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
155
|
+
matcher: z.ZodEnum<{
|
|
156
|
+
any: "any";
|
|
157
|
+
"type-violating": "type-violating";
|
|
158
|
+
}>;
|
|
159
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
160
|
+
captured: z.ZodString;
|
|
161
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
162
|
+
principal: z.ZodString;
|
|
163
|
+
}, z.core.$strict>]>>>;
|
|
164
|
+
environment: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
165
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
166
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
167
|
+
matcher: z.ZodEnum<{
|
|
168
|
+
any: "any";
|
|
169
|
+
"type-violating": "type-violating";
|
|
170
|
+
}>;
|
|
171
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
172
|
+
captured: z.ZodString;
|
|
173
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
174
|
+
principal: z.ZodString;
|
|
175
|
+
}, z.core.$strict>]>>>;
|
|
176
|
+
stdin: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
177
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
178
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
179
|
+
matcher: z.ZodEnum<{
|
|
180
|
+
any: "any";
|
|
181
|
+
"type-violating": "type-violating";
|
|
182
|
+
}>;
|
|
183
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
184
|
+
captured: z.ZodString;
|
|
185
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
186
|
+
principal: z.ZodString;
|
|
187
|
+
}, z.core.$strict>]>>>;
|
|
188
|
+
}, z.core.$strict>;
|
|
189
|
+
/**
|
|
190
|
+
* A plain union rather than a discriminated one, and the agreement between a
|
|
191
|
+
* step's bound channels and its operation's kind is a compile-time check
|
|
192
|
+
* rather than a schema refinement.
|
|
193
|
+
*
|
|
194
|
+
* A step names an `operationId` and nothing else; the kind of the interface
|
|
195
|
+
* declaring that operation lives in a different subtree of the same document.
|
|
196
|
+
* That is the cross-subtree constraint the `{ principal }` comment above
|
|
197
|
+
* already records as unrepresentable in the export. Adding a `kind` field to
|
|
198
|
+
* the step itself was the other option and duplicates a fact the operation
|
|
199
|
+
* already carries, which makes a disagreeing step a second inconsistency to
|
|
200
|
+
* check rather than one fewer.
|
|
201
|
+
*/
|
|
202
|
+
export declare const InputBinding: z.ZodUnion<readonly [z.ZodObject<{
|
|
203
|
+
path: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
204
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
205
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
206
|
+
matcher: z.ZodEnum<{
|
|
207
|
+
any: "any";
|
|
208
|
+
"type-violating": "type-violating";
|
|
209
|
+
}>;
|
|
210
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
211
|
+
captured: z.ZodString;
|
|
212
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
213
|
+
principal: z.ZodString;
|
|
214
|
+
}, z.core.$strict>]>>>;
|
|
215
|
+
query: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
216
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
217
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
218
|
+
matcher: z.ZodEnum<{
|
|
219
|
+
any: "any";
|
|
220
|
+
"type-violating": "type-violating";
|
|
221
|
+
}>;
|
|
222
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
223
|
+
captured: z.ZodString;
|
|
224
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
225
|
+
principal: z.ZodString;
|
|
226
|
+
}, z.core.$strict>]>>>;
|
|
227
|
+
header: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
228
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
229
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
230
|
+
matcher: z.ZodEnum<{
|
|
231
|
+
any: "any";
|
|
232
|
+
"type-violating": "type-violating";
|
|
233
|
+
}>;
|
|
234
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
235
|
+
captured: z.ZodString;
|
|
236
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
237
|
+
principal: z.ZodString;
|
|
238
|
+
}, z.core.$strict>]>>>;
|
|
239
|
+
body: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
240
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
241
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
242
|
+
matcher: z.ZodEnum<{
|
|
243
|
+
any: "any";
|
|
244
|
+
"type-violating": "type-violating";
|
|
245
|
+
}>;
|
|
246
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
247
|
+
captured: z.ZodString;
|
|
248
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
249
|
+
principal: z.ZodString;
|
|
250
|
+
}, z.core.$strict>]>>>;
|
|
251
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
252
|
+
argument: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
253
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
254
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
255
|
+
matcher: z.ZodEnum<{
|
|
256
|
+
any: "any";
|
|
257
|
+
"type-violating": "type-violating";
|
|
258
|
+
}>;
|
|
259
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
260
|
+
captured: z.ZodString;
|
|
261
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
262
|
+
principal: z.ZodString;
|
|
263
|
+
}, z.core.$strict>]>>>;
|
|
264
|
+
option: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
265
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
266
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
267
|
+
matcher: z.ZodEnum<{
|
|
268
|
+
any: "any";
|
|
269
|
+
"type-violating": "type-violating";
|
|
270
|
+
}>;
|
|
271
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
272
|
+
captured: z.ZodString;
|
|
273
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
274
|
+
principal: z.ZodString;
|
|
275
|
+
}, z.core.$strict>]>>>;
|
|
276
|
+
environment: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
277
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
278
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
279
|
+
matcher: z.ZodEnum<{
|
|
280
|
+
any: "any";
|
|
281
|
+
"type-violating": "type-violating";
|
|
282
|
+
}>;
|
|
283
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
284
|
+
captured: z.ZodString;
|
|
285
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
286
|
+
principal: z.ZodString;
|
|
287
|
+
}, z.core.$strict>]>>>;
|
|
288
|
+
stdin: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
289
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
290
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
291
|
+
matcher: z.ZodEnum<{
|
|
292
|
+
any: "any";
|
|
293
|
+
"type-violating": "type-violating";
|
|
294
|
+
}>;
|
|
295
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
296
|
+
captured: z.ZodString;
|
|
297
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
298
|
+
principal: z.ZodString;
|
|
299
|
+
}, z.core.$strict>]>>>;
|
|
300
|
+
}, z.core.$strict>]>;
|
|
301
|
+
export type InputBinding = z.infer<typeof InputBinding>;
|
|
302
|
+
export type BindingChannel = z.infer<typeof BindingChannel>;
|
|
138
303
|
/**
|
|
139
304
|
* AD-39's declared selector cardinality (owed item 2): what a step means when
|
|
140
305
|
* its selector matches more than one observation was not decided at the
|
|
@@ -167,7 +332,7 @@ export declare const SelectorCardinality: z.ZodEnum<{
|
|
|
167
332
|
export declare const InteractionStep: z.ZodObject<{
|
|
168
333
|
stepId: z.ZodString;
|
|
169
334
|
operationId: z.ZodString;
|
|
170
|
-
inputBinding: z.ZodObject<{
|
|
335
|
+
inputBinding: z.ZodUnion<readonly [z.ZodObject<{
|
|
171
336
|
path: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
172
337
|
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
173
338
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -216,7 +381,56 @@ export declare const InteractionStep: z.ZodObject<{
|
|
|
216
381
|
}, z.core.$strict>, z.ZodObject<{
|
|
217
382
|
principal: z.ZodString;
|
|
218
383
|
}, z.core.$strict>]>>>;
|
|
219
|
-
}, z.core.$strict
|
|
384
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
385
|
+
argument: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
386
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
387
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
388
|
+
matcher: z.ZodEnum<{
|
|
389
|
+
any: "any";
|
|
390
|
+
"type-violating": "type-violating";
|
|
391
|
+
}>;
|
|
392
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
393
|
+
captured: z.ZodString;
|
|
394
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
395
|
+
principal: z.ZodString;
|
|
396
|
+
}, z.core.$strict>]>>>;
|
|
397
|
+
option: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
398
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
399
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
400
|
+
matcher: z.ZodEnum<{
|
|
401
|
+
any: "any";
|
|
402
|
+
"type-violating": "type-violating";
|
|
403
|
+
}>;
|
|
404
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
405
|
+
captured: z.ZodString;
|
|
406
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
407
|
+
principal: z.ZodString;
|
|
408
|
+
}, z.core.$strict>]>>>;
|
|
409
|
+
environment: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
410
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
411
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
412
|
+
matcher: z.ZodEnum<{
|
|
413
|
+
any: "any";
|
|
414
|
+
"type-violating": "type-violating";
|
|
415
|
+
}>;
|
|
416
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
417
|
+
captured: z.ZodString;
|
|
418
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
419
|
+
principal: z.ZodString;
|
|
420
|
+
}, z.core.$strict>]>>>;
|
|
421
|
+
stdin: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
422
|
+
literal: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
423
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
424
|
+
matcher: z.ZodEnum<{
|
|
425
|
+
any: "any";
|
|
426
|
+
"type-violating": "type-violating";
|
|
427
|
+
}>;
|
|
428
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
429
|
+
captured: z.ZodString;
|
|
430
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
431
|
+
principal: z.ZodString;
|
|
432
|
+
}, z.core.$strict>]>>>;
|
|
433
|
+
}, z.core.$strict>]>;
|
|
220
434
|
after: z.ZodNullable<z.ZodString>;
|
|
221
435
|
cardinality: z.ZodEnum<{
|
|
222
436
|
any: "any";
|
|
@@ -80,12 +80,33 @@ export const BindingChannel = BindingChannelMap.nullable().meta({
|
|
|
80
80
|
* requires every member at parse time and fails five of the Gate C fixture's
|
|
81
81
|
* six steps, all of which bind a subset of the channels.
|
|
82
82
|
*/
|
|
83
|
-
export const
|
|
83
|
+
export const ApiInputBinding = z.strictObject({
|
|
84
84
|
path: BindingChannel,
|
|
85
85
|
query: BindingChannel,
|
|
86
86
|
header: BindingChannel,
|
|
87
87
|
body: BindingChannel,
|
|
88
88
|
});
|
|
89
|
+
/** The same shape over the four channels a command-kind operation accepts. */
|
|
90
|
+
export const CommandInputBinding = z.strictObject({
|
|
91
|
+
argument: BindingChannel,
|
|
92
|
+
option: BindingChannel,
|
|
93
|
+
environment: BindingChannel,
|
|
94
|
+
stdin: BindingChannel,
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* A plain union rather than a discriminated one, and the agreement between a
|
|
98
|
+
* step's bound channels and its operation's kind is a compile-time check
|
|
99
|
+
* rather than a schema refinement.
|
|
100
|
+
*
|
|
101
|
+
* A step names an `operationId` and nothing else; the kind of the interface
|
|
102
|
+
* declaring that operation lives in a different subtree of the same document.
|
|
103
|
+
* That is the cross-subtree constraint the `{ principal }` comment above
|
|
104
|
+
* already records as unrepresentable in the export. Adding a `kind` field to
|
|
105
|
+
* the step itself was the other option and duplicates a fact the operation
|
|
106
|
+
* already carries, which makes a disagreeing step a second inconsistency to
|
|
107
|
+
* check rather than one fewer.
|
|
108
|
+
*/
|
|
109
|
+
export const InputBinding = z.union([ApiInputBinding, CommandInputBinding]);
|
|
89
110
|
/**
|
|
90
111
|
* AD-39's declared selector cardinality (owed item 2): what a step means when
|
|
91
112
|
* its selector matches more than one observation was not decided at the
|
|
@@ -7,9 +7,10 @@ import { z } from 'zod';
|
|
|
7
7
|
* are exported here because the Sealed Run Record's quoted evidence needs to
|
|
8
8
|
* name a channel by one shared spelling.
|
|
9
9
|
*/
|
|
10
|
-
export declare const EVIDENCE_CHANNELS: readonly ['response-body', 'response-headers', 'response-status', 'call-inputs', 'stdout', 'stderr', 'exit-code'];
|
|
10
|
+
export declare const EVIDENCE_CHANNELS: readonly ['response-body', 'response-headers', 'response-status', 'call-inputs', 'stdout', 'stderr', 'exit-code', 'artifact'];
|
|
11
11
|
export type EvidenceChannelName = (typeof EVIDENCE_CHANNELS)[number];
|
|
12
12
|
export declare const EvidenceChannel: z.ZodEnum<{
|
|
13
|
+
artifact: "artifact";
|
|
13
14
|
"call-inputs": "call-inputs";
|
|
14
15
|
"exit-code": "exit-code";
|
|
15
16
|
"response-body": "response-body";
|
|
@@ -31,9 +32,54 @@ export declare const TransportChannel: z.ZodEnum<{
|
|
|
31
32
|
path: "path";
|
|
32
33
|
query: "query";
|
|
33
34
|
}>;
|
|
35
|
+
/**
|
|
36
|
+
* The four channels a command-kind operation accepts input on. They sit beside
|
|
37
|
+
* the transport channels because this module owns channel vocabulary, and the
|
|
38
|
+
* request shape that declares them has to name them without forward-declaring
|
|
39
|
+
* a tuple it does not own.
|
|
40
|
+
*
|
|
41
|
+
* `stdin` is the command analogue of `body` and inherits its asymmetry: a
|
|
42
|
+
* request shape declares it as a key map, while one witness leg supplies it as
|
|
43
|
+
* a tagged body value.
|
|
44
|
+
*/
|
|
45
|
+
export declare const COMMAND_CHANNELS: readonly ['argument', 'option', 'environment', 'stdin'];
|
|
46
|
+
export type CommandChannelName = (typeof COMMAND_CHANNELS)[number];
|
|
47
|
+
/**
|
|
48
|
+
* Every channel `call-inputs` may take as its next segment, both kinds
|
|
49
|
+
* together. A pointer is parsed with no contract in hand, so the grammar
|
|
50
|
+
* admits all eight and the question of which four a given operation may use is
|
|
51
|
+
* answered by reachability, which has the operation.
|
|
52
|
+
*/
|
|
53
|
+
export declare const INPUT_CHANNELS: readonly ["path", "query", "header", "body", "argument", "option", "environment", "stdin"];
|
|
54
|
+
export type InputChannelName = (typeof INPUT_CHANNELS)[number];
|
|
34
55
|
export declare const TAIL_BEARING_CHANNELS: readonly ["response-body", "response-headers", "stdout", "stderr"];
|
|
35
56
|
export declare const SCALAR_CHANNELS: readonly ["response-status", "exit-code"];
|
|
36
57
|
export declare const TRANSPORT_ROOTED_CHANNEL: "call-inputs";
|
|
58
|
+
export declare const IDENTIFIER_ROOTED_CHANNEL: "artifact";
|
|
59
|
+
/**
|
|
60
|
+
* The response-side channels each kind produces, and neither produces the
|
|
61
|
+
* other's. Declared here rather than rebuilt from a description, so a channel
|
|
62
|
+
* added to the vocabulary has to be assigned to a side and a test can assert
|
|
63
|
+
* the two partition the response side exactly.
|
|
64
|
+
*
|
|
65
|
+
* `call-inputs` belongs to neither: it carries what was sent rather than what
|
|
66
|
+
* came back, and both kinds have it.
|
|
67
|
+
*/
|
|
68
|
+
export declare const API_RESPONSE_CHANNELS: readonly ["response-body", "response-headers", "response-status"];
|
|
69
|
+
export declare const COMMAND_RESPONSE_CHANNELS: readonly ["stdout", "stderr", "exit-code", "artifact"];
|
|
70
|
+
/**
|
|
71
|
+
* Every channel but the identifier-rooted one, in the vocabulary's own order.
|
|
72
|
+
*
|
|
73
|
+
* Spelled out and typed against the enum rather than filtered from it: a filter
|
|
74
|
+
* widens to `EvidenceChannelName[]` and `z.enum` needs a tuple, and the whole
|
|
75
|
+
* point of the list is that adding a ninth channel has to be a decision about
|
|
76
|
+
* which side of this line it falls on rather than something a filter absorbs.
|
|
77
|
+
* `tests/schemas/pointer.test.ts` asserts it partitions the vocabulary with
|
|
78
|
+
* `IDENTIFIER_ROOTED_CHANNEL` exactly.
|
|
79
|
+
*/
|
|
80
|
+
export declare const NON_IDENTIFIER_ROOTED_CHANNELS: readonly ["response-body", "response-headers", "response-status", "call-inputs", "stdout", "stderr", "exit-code"];
|
|
81
|
+
/** Every channel that carries what came back, whichever kind produced it. */
|
|
82
|
+
export declare const RESPONSE_SIDE_CHANNELS: readonly ["response-body", "response-headers", "response-status", "stdout", "stderr", "exit-code", "artifact"];
|
|
37
83
|
export declare const INTERACTION_POINTER_PATTERN: RegExp;
|
|
38
84
|
export declare const BOUND_ELEMENT_POINTER_PATTERN: RegExp;
|
|
39
85
|
export declare const DESCRIPTOR_POINTER_PATTERN: RegExp;
|