@aventara/core 1.0.0-rc.0 → 1.0.0-rc.1

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 (242) hide show
  1. package/CHANGELOG.md +1140 -0
  2. package/README.md +224 -57
  3. package/dist/adapters/adapter-discovery-diagnostic.d.ts +4 -4
  4. package/dist/adapters/adapter-field.d.ts +11 -11
  5. package/dist/adapters/adapter-identifier.d.ts +6 -6
  6. package/dist/adapters/adapter-model.d.ts +9 -9
  7. package/dist/adapters/adapter-operation-executor.interface.d.ts +4 -4
  8. package/dist/adapters/adapter-operation.d.ts +3 -3
  9. package/dist/adapters/adapter-resource.d.ts +18 -9
  10. package/dist/adapters/adapter-sql-statement.d.ts +19 -0
  11. package/dist/adapters/adapter-transaction-executor.interface.d.ts +19 -0
  12. package/dist/adapters/adapter.interface.d.ts +49 -29
  13. package/dist/avz/avz-check.factory.d.ts +83 -0
  14. package/dist/avz/avz-check.factory.js +116 -0
  15. package/dist/avz/avz-check.registry.d.ts +35 -0
  16. package/dist/avz/avz-check.registry.js +9 -0
  17. package/dist/avz/avz.d.ts +203 -0
  18. package/dist/{json → avz}/avz.js +150 -8
  19. package/dist/{json → avz}/index.d.ts +2 -1
  20. package/dist/{json → avz}/json-shape.registry.d.ts +7 -7
  21. package/dist/{json → avz}/zod-issue.translator.d.ts +8 -2
  22. package/dist/{json → avz}/zod-issue.translator.js +7 -0
  23. package/dist/compiler/contract-compiler-diagnostic.d.ts +31 -5
  24. package/dist/compiler/contract.compiler.d.ts +18 -18
  25. package/dist/compiler/contract.compiler.js +548 -441
  26. package/dist/compiler/create-requirements.projector.d.ts +49 -0
  27. package/dist/compiler/create-requirements.projector.js +423 -0
  28. package/dist/compiler/field-validator.compiler.d.ts +47 -0
  29. package/dist/compiler/field-validator.compiler.js +238 -0
  30. package/dist/config/any-framework-config.d.ts +19 -12
  31. package/dist/config/config-diagnostic.d.ts +11 -4
  32. package/dist/config/config-layer.d.ts +15 -6
  33. package/dist/config/config.resolver.d.ts +74 -31
  34. package/dist/config/config.resolver.js +108 -44
  35. package/dist/config/config.validator.d.ts +7 -7
  36. package/dist/config/config.validator.js +581 -72
  37. package/dist/config/define-resource.d.ts +57 -0
  38. package/dist/config/define-resource.js +14 -0
  39. package/dist/config/effective-fields.d.ts +19 -23
  40. package/dist/config/entrypoint.normalizer.d.ts +1 -1
  41. package/dist/config/exact-framework-config.d.ts +280 -0
  42. package/dist/config/field-compute.resolver.d.ts +19 -0
  43. package/dist/config/field-compute.resolver.js +115 -0
  44. package/dist/config/field-pipeline-config.d.ts +47 -0
  45. package/dist/config/forced-operation.validator.d.ts +10 -0
  46. package/dist/config/forced-operation.validator.js +66 -0
  47. package/dist/config/framework-config.d.ts +110 -39
  48. package/dist/config/framework-exemptions-config.d.ts +91 -0
  49. package/dist/config/framework-exemptions-config.js +1 -0
  50. package/dist/config/framework-field-definition.d.ts +78 -0
  51. package/dist/config/framework-field-definition.js +28 -0
  52. package/dist/config/framework-resources-config.d.ts +116 -0
  53. package/dist/config/framework-resources-config.js +1 -0
  54. package/dist/config/pipeline-config.d.ts +56 -20
  55. package/dist/config/pipeline-tree.resolver.d.ts +79 -0
  56. package/dist/config/pipeline-tree.resolver.js +220 -0
  57. package/dist/config/stage-type.eraser.d.ts +65 -0
  58. package/dist/config/stage-type.eraser.js +1 -0
  59. package/dist/contracts/capability.d.ts +11 -11
  60. package/dist/contracts/client-contract-structure.validator.d.ts +323 -28
  61. package/dist/contracts/client-contract-structure.validator.js +152 -8
  62. package/dist/contracts/contract-canonicalizer.d.ts +19 -3
  63. package/dist/contracts/contract-canonicalizer.js +141 -28
  64. package/dist/contracts/contract-hash.d.ts +12 -7
  65. package/dist/contracts/contract-hash.js +3 -2
  66. package/dist/contracts/contract-limits.d.ts +4 -1
  67. package/dist/contracts/contract-limits.js +1 -0
  68. package/dist/contracts/contract-lookup.d.ts +5 -5
  69. package/dist/contracts/contract-protocol.d.ts +4 -4
  70. package/dist/contracts/contract.d.ts +24 -16
  71. package/dist/contracts/create-requirements.d.ts +35 -0
  72. package/dist/contracts/create-requirements.js +1 -0
  73. package/dist/contracts/enum-definition.d.ts +1 -1
  74. package/dist/contracts/field-check.d.ts +101 -0
  75. package/dist/contracts/field-check.js +1 -0
  76. package/dist/contracts/field.d.ts +52 -42
  77. package/dist/contracts/identifier.d.ts +4 -4
  78. package/dist/contracts/json-shape.d.ts +12 -1
  79. package/dist/contracts/lifecycle-trait.d.ts +2 -2
  80. package/dist/contracts/resource-operations.d.ts +28 -28
  81. package/dist/contracts/resource.d.ts +15 -9
  82. package/dist/contracts/scalar-value-type.d.ts +15 -15
  83. package/dist/contracts/scalar.d.ts +3 -3
  84. package/dist/contracts/transaction-capability.d.ts +1 -1
  85. package/dist/contracts/wire-scalar-format.d.ts +4 -4
  86. package/dist/framework/contract-view.d.ts +213 -147
  87. package/dist/framework/framework-construction.error.d.ts +10 -10
  88. package/dist/framework/framework-construction.error.js +2 -2
  89. package/dist/framework/framework.d.ts +47 -23
  90. package/dist/framework/framework.factory.d.ts +8 -6
  91. package/dist/framework/framework.factory.js +40 -20
  92. package/dist/framework/operation-facade.d.ts +123 -52
  93. package/dist/framework/operation-facade.js +9 -1
  94. package/dist/index.d.ts +55 -50
  95. package/dist/index.js +6 -6
  96. package/dist/internal.d.ts +15 -10
  97. package/dist/internal.js +3 -1
  98. package/dist/operations/operation-arguments.d.ts +267 -202
  99. package/dist/operations/operation-call.d.ts +27 -28
  100. package/dist/operations/operation-identity.d.ts +10 -10
  101. package/dist/operations/operation-result.d.ts +21 -21
  102. package/dist/operations/operation-validator-core.d.ts +6 -6
  103. package/dist/operations/operation-validator-core.js +13 -2
  104. package/dist/operations/operation-validator.d.ts +9 -9
  105. package/dist/operations/projection-scope.resolver.d.ts +6 -6
  106. package/dist/operations/structural-limits.walker.d.ts +6 -6
  107. package/dist/operations/structural-limits.walker.js +145 -0
  108. package/dist/operations/validation-code.d.ts +11 -6
  109. package/dist/operations/validation-code.js +4 -0
  110. package/dist/operations/write-scope.resolver.d.ts +6 -6
  111. package/dist/protocol/absent-route.responder.d.ts +13 -12
  112. package/dist/protocol/absent-route.responder.js +19 -19
  113. package/dist/protocol/contract-document.responder.d.ts +3 -3
  114. package/dist/protocol/contract-document.responder.js +2 -2
  115. package/dist/protocol/http-request.decoder.d.ts +17 -13
  116. package/dist/protocol/http-request.decoder.js +10 -10
  117. package/dist/protocol/http-request.reader.d.ts +3 -3
  118. package/dist/protocol/http-response.encoder.d.ts +4 -4
  119. package/dist/protocol/http-response.encoder.js +94 -55
  120. package/dist/protocol/http-status.table.d.ts +2 -2
  121. package/dist/protocol/operation-response.guard.d.ts +2 -2
  122. package/dist/protocol/protocol-surface.d.ts +4 -4
  123. package/dist/protocol/protocol.binder.d.ts +50 -27
  124. package/dist/protocol/protocol.binder.js +12 -9
  125. package/dist/protocol/protocol.handler.d.ts +22 -13
  126. package/dist/protocol/protocol.handler.js +44 -9
  127. package/dist/protocol/unmounted-route.error.d.ts +4 -4
  128. package/dist/protocol/unmounted-route.error.js +2 -2
  129. package/dist/runtime/caller-data.copier.d.ts +5 -5
  130. package/dist/runtime/caller-data.copier.js +13 -13
  131. package/dist/runtime/caller-data.door.d.ts +6 -6
  132. package/dist/runtime/caller-data.door.js +6 -4
  133. package/dist/runtime/computed-read-runtime.d.ts +7 -6
  134. package/dist/runtime/computed-read-runtime.js +61 -48
  135. package/dist/runtime/computed-value.error.d.ts +6 -6
  136. package/dist/runtime/computed-value.error.js +3 -3
  137. package/dist/runtime/context-executor.runtime.d.ts +59 -0
  138. package/dist/runtime/context-executor.runtime.js +275 -0
  139. package/dist/runtime/create-requirement.d.ts +10 -81
  140. package/dist/runtime/create-requirement.js +80 -57
  141. package/dist/runtime/decimal.d.ts +2 -2
  142. package/dist/runtime/decimal.js +1 -1
  143. package/dist/runtime/diagnostics-reporter.d.ts +53 -27
  144. package/dist/runtime/diagnostics-reporter.js +24 -0
  145. package/dist/runtime/error-boundary.d.ts +65 -8
  146. package/dist/runtime/error-boundary.js +45 -19
  147. package/dist/runtime/execution-options.d.ts +10 -2
  148. package/dist/runtime/field-check.evaluator.d.ts +29 -0
  149. package/dist/runtime/field-check.evaluator.js +521 -0
  150. package/dist/runtime/field-compute.d.ts +64 -0
  151. package/dist/runtime/field-compute.js +1 -0
  152. package/dist/runtime/field-stage.plan.d.ts +15 -0
  153. package/dist/runtime/field-stage.plan.js +27 -0
  154. package/dist/runtime/field-stage.runtime.d.ts +35 -0
  155. package/dist/runtime/field-stage.runtime.js +143 -0
  156. package/dist/runtime/field-validator.runtime.d.ts +11 -0
  157. package/dist/runtime/field-validator.runtime.js +87 -0
  158. package/dist/runtime/framework-error-class.table.d.ts +33 -0
  159. package/dist/runtime/framework-error-class.table.js +25 -0
  160. package/dist/runtime/framework-error.d.ts +68 -8
  161. package/dist/runtime/framework-error.factory.d.ts +4 -0
  162. package/dist/runtime/framework-error.factory.js +15 -0
  163. package/dist/runtime/framework-error.js +23 -2
  164. package/dist/runtime/interceptor-next.error.d.ts +5 -0
  165. package/dist/runtime/interceptor-next.error.js +6 -0
  166. package/dist/runtime/json-value.d.ts +3 -3
  167. package/dist/runtime/level-lifecycle.runtime.d.ts +25 -0
  168. package/dist/runtime/level-lifecycle.runtime.js +42 -0
  169. package/dist/runtime/misuse-reporter.d.ts +12 -12
  170. package/dist/runtime/mutation-planner.d.ts +19 -10
  171. package/dist/runtime/mutation-planner.js +54 -30
  172. package/dist/runtime/nested-write.walker.d.ts +32 -0
  173. package/dist/runtime/nested-write.walker.js +73 -0
  174. package/dist/runtime/operation-request.d.ts +33 -6
  175. package/dist/runtime/operation-response.d.ts +17 -17
  176. package/dist/runtime/operation-runtime.d.ts +113 -25
  177. package/dist/runtime/operation-runtime.js +395 -74
  178. package/dist/runtime/outcome-mapper.d.ts +16 -5
  179. package/dist/runtime/outcome-mapper.js +23 -6
  180. package/dist/runtime/output-validator.d.ts +10 -10
  181. package/dist/runtime/output-validator.js +3 -3
  182. package/dist/runtime/owned-execution.registry.d.ts +6 -6
  183. package/dist/runtime/pipe-output.validator.d.ts +33 -18
  184. package/dist/runtime/pipe-output.validator.js +12 -12
  185. package/dist/runtime/pipeline.d.ts +196 -34
  186. package/dist/runtime/readonly-value.d.ts +32 -0
  187. package/dist/runtime/readonly-value.js +141 -0
  188. package/dist/runtime/request-envelope.validator.d.ts +3 -3
  189. package/dist/runtime/request-envelope.validator.js +12 -7
  190. package/dist/runtime/request-id.d.ts +1 -1
  191. package/dist/runtime/request-state.d.ts +14 -0
  192. package/dist/runtime/request-state.js +1 -0
  193. package/dist/runtime/request-state.resolver.d.ts +12 -0
  194. package/dist/runtime/request-state.resolver.js +20 -0
  195. package/dist/runtime/scalar-runtime.d.ts +31 -16
  196. package/dist/runtime/scalar-runtime.js +16 -18
  197. package/dist/transactions/deferred-operation.d.ts +35 -20
  198. package/dist/transactions/operation-arguments-encoder.d.ts +3 -3
  199. package/dist/transactions/operation-arguments-encoder.js +2 -2
  200. package/dist/transactions/sql-statement.d.ts +77 -0
  201. package/dist/transactions/sql-statement.js +47 -0
  202. package/dist/transactions/sql-statement.validator.d.ts +44 -0
  203. package/dist/transactions/sql-statement.validator.js +134 -0
  204. package/dist/transactions/transaction-envelope.d.ts +4 -4
  205. package/dist/transactions/transaction-integrity-error.d.ts +6 -6
  206. package/dist/transactions/transaction-integrity-error.js +5 -2
  207. package/dist/transactions/transaction-plan-assembler.d.ts +21 -11
  208. package/dist/transactions/transaction-plan-assembler.js +148 -34
  209. package/dist/transactions/transaction-plan-validator.d.ts +29 -20
  210. package/dist/transactions/transaction-plan-validator.js +70 -38
  211. package/dist/transactions/transaction-reference-collector.d.ts +5 -5
  212. package/dist/transactions/transaction-reference-resolver.d.ts +19 -2
  213. package/dist/transactions/transaction-reference-resolver.js +26 -14
  214. package/dist/transactions/transaction-reference-validator.d.ts +34 -4
  215. package/dist/transactions/transaction-reference-validator.js +58 -26
  216. package/dist/transactions/transaction-reference.d.ts +13 -13
  217. package/dist/transactions/transaction-request.d.ts +18 -5
  218. package/dist/transactions/transaction-response.d.ts +6 -6
  219. package/dist/transactions/transaction-runtime.d.ts +8 -7
  220. package/dist/transactions/transaction-runtime.js +166 -50
  221. package/dist/transactions/transaction-settlement.runtime.d.ts +51 -0
  222. package/dist/transactions/transaction-settlement.runtime.js +120 -0
  223. package/dist/transactions/transaction-slot-path-error.d.ts +4 -4
  224. package/dist/transactions/transaction-slot-path-error.js +2 -2
  225. package/dist/transactions/transaction-slot-writer.js +2 -2
  226. package/dist/transactions/transaction-stage.runtime.d.ts +81 -0
  227. package/dist/transactions/transaction-stage.runtime.js +123 -0
  228. package/package.json +6 -5
  229. package/src/runtime/field-check.evaluator.ts +720 -0
  230. package/dist/config/define-fields.d.ts +0 -42
  231. package/dist/config/define-fields.js +0 -3
  232. package/dist/config/framework-behaviors-config.d.ts +0 -30
  233. package/dist/config/framework-fields-config.d.ts +0 -42
  234. package/dist/config/framework-restrictions-config.d.ts +0 -142
  235. package/dist/json/avz.d.ts +0 -96
  236. package/dist/runtime/field-behavior.d.ts +0 -48
  237. /package/dist/{config/framework-behaviors-config.js → adapters/adapter-sql-statement.js} +0 -0
  238. /package/dist/{config/framework-fields-config.js → adapters/adapter-transaction-executor.interface.js} +0 -0
  239. /package/dist/{json → avz}/index.js +0 -0
  240. /package/dist/{json → avz}/json-shape.registry.js +0 -0
  241. /package/dist/config/{framework-restrictions-config.js → exact-framework-config.js} +0 -0
  242. /package/dist/{runtime/field-behavior.js → config/field-pipeline-config.js} +0 -0
@@ -1,15 +1,15 @@
1
- import type { WriteScope } from "../contracts/capability.js";
2
- import type { Contract } from "../contracts/contract.js";
3
- import type { Resource } from "../contracts/resource.js";
4
- import type { OperationIdentity } from "./operation-identity.js";
1
+ import type { AvWriteScope } from "../contracts/capability.js";
2
+ import type { AvContract } from "../contracts/contract.js";
3
+ import type { AvResource } from "../contracts/resource.js";
4
+ import type { AvOperationIdentity } from "./operation-identity.js";
5
5
  /**
6
6
  * Which write position one request's top-level `data` (or `create`/`update`)
7
7
  * argument sits in, read off the variant the Resource advertises. `"nested"`
8
8
  * wherever nothing narrower is stated.
9
9
  */
10
- export declare function resolveWriteScope(resource: Resource<Contract> | undefined, request: OperationIdentity): WriteScope;
10
+ export declare function resolveWriteScope(resource: AvResource<AvContract> | undefined, request: AvOperationIdentity): AvWriteScope;
11
11
  /**
12
12
  * The position a write NESTED beneath an admitted relation directive sits in: the
13
13
  * unrestricted one, at every depth, under every top-level scope.
14
14
  */
15
- export declare const NESTED_WRITE_SCOPE: WriteScope;
15
+ export declare const NESTED_WRITE_SCOPE: AvWriteScope;
@@ -1,8 +1,9 @@
1
- import type { FrameworkContracts } from "../compiler/contract.compiler.js";
2
- import { type OperationIdentity } from "../operations/operation-identity.js";
3
- import { type FrameworkDiagnosticsSink } from "../runtime/diagnostics-reporter.js";
1
+ import type { AvContracts } from "../compiler/contract.compiler.js";
2
+ import type { RemoteRequestOrigin } from "../config/config-layer.js";
3
+ import { type AvOperationIdentity } from "../operations/operation-identity.js";
4
+ import { type AvDiagnosticsSink } from "../runtime/diagnostics-reporter.js";
4
5
  import type { ClientProtocolIdentity } from "../runtime/operation-request.js";
5
- import { type OperationFailureResponse } from "../runtime/operation-response.js";
6
+ import { type AvOperationFailureResponse } from "../runtime/operation-response.js";
6
7
  import type { AvProtocolRequest } from "./http-request.decoder.js";
7
8
  import { type ReadRequest } from "./http-request.reader.js";
8
9
  import { type AvProtocolResponse } from "./http-response.encoder.js";
@@ -23,10 +24,10 @@ export type OperationRouteSegments = {
23
24
  /** What a route check resolves to: the operation it names, or the answer that refuses it. */
24
25
  export type OperationRouteResolution = {
25
26
  readonly ok: true;
26
- readonly operation: OperationIdentity;
27
+ readonly operation: AvOperationIdentity;
27
28
  } | {
28
29
  readonly ok: false;
29
- readonly failure: OperationFailureResponse;
30
+ readonly failure: AvOperationFailureResponse;
30
31
  };
31
32
  /**
32
33
  * An operation route `/_resources/<resource>/<family>/<variant>` under one client
@@ -35,7 +36,7 @@ export type OperationRouteResolution = {
35
36
  * is a standard operation the Resource advertises, read through
36
37
  * `isOperationVariantAvailable` alone.
37
38
  */
38
- export declare function resolveOperationRoute(contracts: FrameworkContracts, protocol: ClientProtocolIdentity, route: OperationRouteSegments): OperationRouteResolution;
39
+ export declare function resolveOperationRoute(contracts: AvContracts, protocol: ClientProtocolIdentity, route: OperationRouteSegments, origin?: RemoteRequestOrigin): OperationRouteResolution;
39
40
  /**
40
41
  * The `/_transactions` route under one client protocol identity: version → hash → the
41
42
  * ClientContract's transaction capability. The route exists only when that capability
@@ -43,7 +44,7 @@ export declare function resolveOperationRoute(contracts: FrameworkContracts, pro
43
44
  * it — and is otherwise absent with core's own refusal of a plan. `undefined` when the
44
45
  * route is there.
45
46
  */
46
- export declare function transactionsRouteFailure(contracts: FrameworkContracts, protocol: ClientProtocolIdentity): OperationFailureResponse | undefined;
47
+ export declare function transactionsRouteFailure(contracts: AvContracts, protocol: ClientProtocolIdentity, origin?: RemoteRequestOrigin): AvOperationFailureResponse | undefined;
47
48
  /**
48
49
  * What a route's checks before its body resolve to: the route a request
49
50
  * reaches, or the framework response that answers it instead.
@@ -63,9 +64,9 @@ type RouteCheck<Route> = ({
63
64
  * for both route styles: `decodeOperation` reads the body only after it passes,
64
65
  * `answerAbsent` never.
65
66
  */
66
- export declare function checkOperationRoute(contracts: FrameworkContracts, read: ReadRequest): RouteCheck<{
67
+ export declare function checkOperationRoute(contracts: AvContracts, read: ReadRequest, origin?: RemoteRequestOrigin): RouteCheck<{
67
68
  readonly resource: string;
68
- readonly operation: OperationIdentity;
69
+ readonly operation: AvOperationIdentity;
69
70
  }>;
70
71
  /**
71
72
  * `/_transactions`' checks before its body: the path (`A2000` unless exactly
@@ -73,12 +74,12 @@ export declare function checkOperationRoute(contracts: FrameworkContracts, read:
73
74
  * {@link transactionsRouteFailure} — version, hash, `"interactive"` — and the
74
75
  * method (`A2012`, `Allow: POST`).
75
76
  */
76
- export declare function checkTransactionsRoute(contracts: FrameworkContracts, read: ReadRequest): RouteCheck<object>;
77
+ export declare function checkTransactionsRoute(contracts: AvContracts, read: ReadRequest, origin?: RemoteRequestOrigin): RouteCheck<object>;
77
78
  /**
78
79
  * `protocol.answerAbsent(request)` — the fallback a host that mounts one route per
79
80
  * `protocol.surface()` entry mounts for every path it did not. Never a catch-all into
80
81
  * framework handling: it reads no body, runs no pipeline, calls no Adapter, and takes
81
82
  * only the compiled Contracts. In order:
82
83
  */
83
- export declare function answerAbsentRequest(contracts: FrameworkContracts, received: AvProtocolRequest, sink?: FrameworkDiagnosticsSink): AvProtocolResponse | undefined;
84
+ export declare function answerAbsentRequest(contracts: AvContracts, received: AvProtocolRequest, sink?: AvDiagnosticsSink, origin?: RemoteRequestOrigin): AvProtocolResponse | undefined;
84
85
  export {};
@@ -12,13 +12,13 @@ import { CONTRACT_ROUTE, GET_ONLY, isProtocolPath, operationRouteSegments, POST_
12
12
  import { encodeOperationResponse, } from "./http-response.encoder.js";
13
13
  import { identityHeadersMissing, transportFailure, } from "./protocol-failure.js";
14
14
  import { missingIdentityHeaders } from "./protocol-headers.js";
15
- import { UnmountedRouteError } from "./unmounted-route.error.js";
16
- export function resolveOperationRoute(contracts, protocol, route) {
17
- const identityFailure = protocolIdentityFailure(contracts, protocol);
15
+ import { AvUnmountedRouteError } from "./unmounted-route.error.js";
16
+ export function resolveOperationRoute(contracts, protocol, route, origin = "client") {
17
+ const identityFailure = protocolIdentityFailure(contracts, protocol, origin);
18
18
  if (identityFailure !== undefined) {
19
19
  return { ok: false, failure: identityFailure };
20
20
  }
21
- const resource = lookupResource(contracts.client, route.resource);
21
+ const resource = lookupResource(contracts[origin], route.resource);
22
22
  if (resource === undefined) {
23
23
  return {
24
24
  ok: false,
@@ -32,19 +32,19 @@ export function resolveOperationRoute(contracts, protocol, route) {
32
32
  return {
33
33
  ok: false,
34
34
  failure: mapValidationOutcome([
35
- operationUnavailableIssue(contracts.client, route),
35
+ operationUnavailableIssue(contracts[origin], route),
36
36
  ]),
37
37
  };
38
38
  }
39
39
  return { ok: true, operation };
40
40
  }
41
- export function transactionsRouteFailure(contracts, protocol) {
42
- return (protocolIdentityFailure(contracts, protocol) ??
43
- (contracts.client.transactions === "interactive"
41
+ export function transactionsRouteFailure(contracts, protocol, origin = "client") {
42
+ return (protocolIdentityFailure(contracts, protocol, origin) ??
43
+ (contracts[origin].transactions === "interactive"
44
44
  ? undefined
45
45
  : transactionsUnavailableFailure()));
46
46
  }
47
- export function checkOperationRoute(contracts, read) {
47
+ export function checkOperationRoute(contracts, read, origin = "client") {
48
48
  const segments = operationRouteSegments(read.request.path);
49
49
  if (segments === undefined) {
50
50
  return refusedWith(transportFailure("A2000", read.requestId));
@@ -52,7 +52,7 @@ export function checkOperationRoute(contracts, read) {
52
52
  if (read.protocol === undefined) {
53
53
  return refusedWith(identityFailureOf(read));
54
54
  }
55
- const route = resolveOperationRoute(contracts, read.protocol, segments);
55
+ const route = resolveOperationRoute(contracts, read.protocol, segments, origin);
56
56
  if (!route.ok) {
57
57
  return refusedWith(encodeOperationResponse(route.failure, read.requestId));
58
58
  }
@@ -65,14 +65,14 @@ export function checkOperationRoute(contracts, read) {
65
65
  }
66
66
  : refusedWith(transportFailure("A2012", read.requestId, POST_ONLY));
67
67
  }
68
- export function checkTransactionsRoute(contracts, read) {
68
+ export function checkTransactionsRoute(contracts, read, origin = "client") {
69
69
  if (read.request.path !== TRANSACTIONS_ROUTE) {
70
70
  return refusedWith(transportFailure("A2000", read.requestId));
71
71
  }
72
72
  if (read.protocol === undefined) {
73
73
  return refusedWith(identityFailureOf(read));
74
74
  }
75
- const absent = transactionsRouteFailure(contracts, read.protocol);
75
+ const absent = transactionsRouteFailure(contracts, read.protocol, origin);
76
76
  if (absent !== undefined) {
77
77
  return refusedWith(encodeOperationResponse(absent, read.requestId));
78
78
  }
@@ -86,7 +86,7 @@ function identityFailureOf(read) {
86
86
  function refusedWith(response) {
87
87
  return { ok: false, response };
88
88
  }
89
- export function answerAbsentRequest(contracts, received, sink) {
89
+ export function answerAbsentRequest(contracts, received, sink, origin = "client") {
90
90
  const read = readRequest(received);
91
91
  if (!read.ok) {
92
92
  return read.response;
@@ -101,30 +101,30 @@ export function answerAbsentRequest(contracts, received, sink) {
101
101
  : transportFailure("A2012", read.requestId, GET_ONLY);
102
102
  }
103
103
  if (path === TRANSACTIONS_ROUTE) {
104
- const route = checkTransactionsRoute(contracts, read);
104
+ const route = checkTransactionsRoute(contracts, read, origin);
105
105
  if (!route.ok) {
106
106
  return route.response;
107
107
  }
108
108
  createReporter(sink, {
109
109
  kind: "transaction",
110
- origin: "client",
110
+ origin,
111
111
  requestId: read.requestId,
112
- })(new UnmountedRouteError("transactions", `POST ${TRANSACTIONS_ROUTE}`), "A3000");
112
+ })(new AvUnmountedRouteError("transactions", `POST ${TRANSACTIONS_ROUTE}`), "A3000");
113
113
  return unmounted(read.requestId);
114
114
  }
115
- const route = checkOperationRoute(contracts, read);
115
+ const route = checkOperationRoute(contracts, read, origin);
116
116
  if (!route.ok) {
117
117
  return route.response;
118
118
  }
119
119
  const { family, variant } = route.operation;
120
120
  createReporter(sink, {
121
121
  kind: "operation",
122
- origin: "client",
122
+ origin,
123
123
  resource: route.resource,
124
124
  family,
125
125
  variant,
126
126
  requestId: read.requestId,
127
- })(new UnmountedRouteError(`${route.resource}.${family}.${variant}`, `POST ${path}`), "A3000");
127
+ })(new AvUnmountedRouteError(`${route.resource}.${family}.${variant}`, `POST ${path}`), "A3000");
128
128
  return unmounted(read.requestId);
129
129
  }
130
130
  function unmounted(requestId) {
@@ -1,4 +1,4 @@
1
- import type { ClientContract } from "../contracts/contract.js";
1
+ import type { AvContractClient } from "../contracts/contract.js";
2
2
  import type { AvProtocolRequest } from "./http-request.decoder.js";
3
3
  import type { AvProtocolResponse } from "./http-response.encoder.js";
4
4
  /**
@@ -11,9 +11,9 @@ export type ContractDocument = {
11
11
  readonly etag: string;
12
12
  };
13
13
  /** The bound ClientContract as the document `_contract` serves. */
14
- export declare function contractDocumentOf(client: ClientContract): ContractDocument;
14
+ export declare function contractDocumentOf(client: AvContractClient): ContractDocument;
15
15
  /**
16
- * `protocol.encodeContract(request)`: the `GET <entrypoint>/_contract` responder. In
16
+ * `protocol.encodeContract(request)`: the `GET <api>/_contract` responder. In
17
17
  * order:
18
18
  */
19
19
  export declare function encodeContractRequest(document: ContractDocument, received: AvProtocolRequest): AvProtocolResponse;
@@ -1,10 +1,10 @@
1
- import { canonicalizeContract } from "../contracts/contract-canonicalizer.js";
1
+ import { canonicalContractTextOf } from "../contracts/contract-canonicalizer.js";
2
2
  import { CONTRACT_ROUTE, GET_ONLY, readRequest, } from "./http-request.reader.js";
3
3
  import { transportFailure } from "./protocol-failure.js";
4
4
  import { headers, headerValue } from "./protocol-headers.js";
5
5
  export function contractDocumentOf(client) {
6
6
  return Object.freeze({
7
- body: canonicalizeContract(client),
7
+ body: canonicalContractTextOf(client),
8
8
  etag: `"${client.protocol.hash}"`,
9
9
  });
10
10
  }
@@ -1,15 +1,16 @@
1
- import type { FrameworkContracts } from "../compiler/contract.compiler.js";
2
- import type { ClientOperationRequest } from "../runtime/operation-request.js";
3
- import type { ClientTransactionRequest } from "../transactions/transaction-request.js";
1
+ import type { AvContracts } from "../compiler/contract.compiler.js";
2
+ import type { RemoteRequestOrigin } from "../config/config-layer.js";
3
+ import type { RemoteOperationRequest } from "../runtime/operation-request.js";
4
+ import type { AgentTransactionRequest, ClientTransactionRequest } from "../transactions/transaction-request.js";
4
5
  import type { AvProtocolResponse } from "./http-response.encoder.js";
5
6
  /** One HTTP request as a host hands it to the protocol. */
6
7
  export type AvProtocolRequest = {
7
8
  /** The HTTP method as received. Anything but `POST` on a framework route is `A2012`. */
8
9
  readonly method: string;
9
10
  /**
10
- * The request path RELATIVE to the configured entrypoint, as received (not yet
11
- * URL-decoded): `/_resources/users/find/many`, `/_transactions`, `/_contract` —
12
- * the space `protocol.surface()`'s paths live in.
11
+ * The request path relative to the configured `api` mount path, as received (not yet
12
+ * URL-decoded): `/_resources/users/find/many`, `/_transactions`, `/_contract`,
13
+ * in the same form as the paths `protocol.surface()` returns.
13
14
  */
14
15
  readonly path: string;
15
16
  /**
@@ -19,8 +20,8 @@ export type AvProtocolRequest = {
19
20
  */
20
21
  readonly headers: Readonly<Record<string, string | readonly string[] | undefined>>;
21
22
  /**
22
- * The body, in one of two explicitly named arms — the decoder never guesses which
23
- * one it was given:
23
+ * The body, in one of two explicitly named arms, so the decoder never guesses
24
+ * which one it was given:
24
25
  */
25
26
  readonly body: {
26
27
  readonly kind: "raw";
@@ -45,19 +46,22 @@ type Decoded<Request> = {
45
46
  readonly response: AvProtocolResponse;
46
47
  readonly requestId: string;
47
48
  };
48
- /** What `protocol.decodeOperation` answers. */
49
- export type DecodedOperation = Decoded<ClientOperationRequest>;
49
+ /**
50
+ * What `protocol.decodeOperation` answers: a client-origin request, or an
51
+ * agent-origin one from a binding made with `{ origin: "agent" }`.
52
+ */
53
+ export type DecodedOperation = Decoded<RemoteOperationRequest>;
50
54
  /** `protocol.decodeOperation`'s success value: the request `framework.execute` takes. */
51
55
  export type DecodedOperationRequest = Extract<DecodedOperation, {
52
56
  ok: true;
53
57
  }>;
54
58
  /** What `protocol.decodeTransaction` answers. */
55
- export type DecodedTransaction = Decoded<ClientTransactionRequest>;
59
+ export type DecodedTransaction = Decoded<ClientTransactionRequest | AgentTransactionRequest>;
56
60
  /**
57
61
  * `protocol.decodeOperation(request)` — one operation route's HTTP request as
58
62
  * the client-origin request `framework.execute` takes, or its answer.
59
63
  */
60
- export declare function decodeOperationRequest(contracts: FrameworkContracts, received: AvProtocolRequest): DecodedOperation;
64
+ export declare function decodeOperationRequest(contracts: AvContracts, received: AvProtocolRequest, origin?: RemoteRequestOrigin): DecodedOperation;
61
65
  /**
62
66
  * `protocol.decodeTransaction(request)` — the `/_transactions` request as the client-
63
67
  * origin plan request `framework.executeTransaction` takes, or its answer. The same
@@ -66,7 +70,7 @@ export declare function decodeOperationRequest(contracts: FrameworkContracts, re
66
70
  * the plan then runs under ClientContract rules: the plan is client origin and cannot
67
71
  * say otherwise. The body is the plan verbatim.
68
72
  */
69
- export declare function decodeTransactionRequest(contracts: FrameworkContracts, received: AvProtocolRequest): DecodedTransaction;
73
+ export declare function decodeTransactionRequest(contracts: AvContracts, received: AvProtocolRequest, origin?: RemoteRequestOrigin): DecodedTransaction;
70
74
  /**
71
75
  * Whether `value` is a body this decoder parsed from raw content. Only the protocol's
72
76
  * own shortcuts ask, about a request they have just decoded, before any host code
@@ -2,21 +2,21 @@ import { checkOperationRoute, checkTransactionsRoute, } from "./absent-route.res
2
2
  import { readRequest } from "./http-request.reader.js";
3
3
  import { transportFailure, } from "./protocol-failure.js";
4
4
  import { headerValue } from "./protocol-headers.js";
5
- export function decodeOperationRequest(contracts, received) {
5
+ export function decodeOperationRequest(contracts, received, origin = "client") {
6
6
  const read = readRequest(received);
7
7
  if (!read.ok) {
8
8
  return read;
9
9
  }
10
- const route = checkOperationRoute(contracts, read);
10
+ const route = checkOperationRoute(contracts, read, origin);
11
11
  if (!route.ok) {
12
12
  return refused(route.response, read.requestId);
13
13
  }
14
- const body = readBody(read, contracts);
14
+ const body = readBody(read, contracts, origin);
15
15
  return body.ok
16
16
  ? {
17
17
  ok: true,
18
18
  request: {
19
- origin: "client",
19
+ origin,
20
20
  requestId: read.requestId,
21
21
  resource: route.resource,
22
22
  ...route.operation,
@@ -28,21 +28,21 @@ export function decodeOperationRequest(contracts, received) {
28
28
  }
29
29
  : refused(body.response, read.requestId);
30
30
  }
31
- export function decodeTransactionRequest(contracts, received) {
31
+ export function decodeTransactionRequest(contracts, received, origin = "client") {
32
32
  const read = readRequest(received);
33
33
  if (!read.ok) {
34
34
  return read;
35
35
  }
36
- const route = checkTransactionsRoute(contracts, read);
36
+ const route = checkTransactionsRoute(contracts, read, origin);
37
37
  if (!route.ok) {
38
38
  return refused(route.response, read.requestId);
39
39
  }
40
- const body = readBody(read, contracts);
40
+ const body = readBody(read, contracts, origin);
41
41
  return body.ok
42
42
  ? {
43
43
  ok: true,
44
44
  request: {
45
- origin: "client",
45
+ origin,
46
46
  requestId: read.requestId,
47
47
  protocol: route.protocol,
48
48
  transport: transportOf(read),
@@ -58,8 +58,8 @@ function refused(response, requestId) {
58
58
  function transportOf(read) {
59
59
  return { method: "POST", headers: read.headers };
60
60
  }
61
- function readBody(read, contracts) {
62
- const code = bodyValue(read.request.body, headerValue(read.headers, "content-type"), contracts.client.limits.maxRequestBytes);
61
+ function readBody(read, contracts, origin) {
62
+ const code = bodyValue(read.request.body, headerValue(read.headers, "content-type"), contracts[origin].limits.maxRequestBytes);
63
63
  return typeof code === "string"
64
64
  ? { ok: false, response: transportFailure(code, read.requestId) }
65
65
  : { ok: true, value: code.value };
@@ -2,9 +2,9 @@ import type { ClientProtocolIdentity } from "../runtime/operation-request.js";
2
2
  import type { OperationRouteSegments } from "./absent-route.responder.js";
3
3
  import type { AvProtocolRequest } from "./http-request.decoder.js";
4
4
  import type { AvProtocolResponse } from "./http-response.encoder.js";
5
- /** `POST <entrypoint>/_transactions`. */
5
+ /** `POST <api>/_transactions`. */
6
6
  export declare const TRANSACTIONS_ROUTE = "/_transactions";
7
- /** `GET <entrypoint>/_contract`. */
7
+ /** `GET <api>/_contract`. */
8
8
  export declare const CONTRACT_ROUTE = "/_contract";
9
9
  /** The methods an operation or `/_transactions` route accepts: `POST`, only. */
10
10
  export declare const POST_ONLY: readonly string[];
@@ -12,7 +12,7 @@ export declare const POST_ONLY: readonly string[];
12
12
  export declare const GET_ONLY: readonly string[];
13
13
  /**
14
14
  * Whether a path lies in the protocol's namespace: underscore-prefixed paths beneath
15
- * the entrypoint are reserved for framework facilities; every other path is the
15
+ * the `api` mount path are reserved for framework facilities; every other path is the
16
16
  * host's.
17
17
  */
18
18
  export declare function isProtocolPath(path: string): boolean;
@@ -1,5 +1,5 @@
1
- import { type OperationResponse } from "../runtime/operation-response.js";
2
- import type { TransactionResponse } from "../transactions/transaction-response.js";
1
+ import { type AvOperationResponse } from "../runtime/operation-response.js";
2
+ import type { AvTransactionResponse } from "../transactions/transaction-response.js";
3
3
  /**
4
4
  * One HTTP response as the protocol hands it to a host: what the encoders
5
5
  * (`protocol.encodeOperation` / `encodeTransaction`) and `protocol.failure`
@@ -28,7 +28,7 @@ export type UnencodableReport = (error: unknown, operation?: number) => void;
28
28
  * `requestId` is echoed as `Aventara-Request-Id` — pass the id the request ran under,
29
29
  * which the decoder supplies.
30
30
  */
31
- export declare function encodeOperationResponse(response: OperationResponse, requestId: string, report?: UnencodableReport): AvProtocolResponse;
31
+ export declare function encodeOperationResponse(response: AvOperationResponse, requestId: string, report?: UnencodableReport): AvProtocolResponse;
32
32
  /**
33
33
  * `protocol.encodeTransaction(response, requestId)`: the same for a plan's response. A
34
34
  * committed plan is `200 A1009` — even when it created something — with each
@@ -37,4 +37,4 @@ export declare function encodeOperationResponse(response: OperationResponse, req
37
37
  * status. A step whose result cannot be encoded answers `A3003` → 500 naming that step
38
38
  * as `cause.operation`, as every internal failure inside a plan does.
39
39
  */
40
- export declare function encodeTransactionResponse(response: TransactionResponse, requestId: string, report?: UnencodableReport): AvProtocolResponse;
40
+ export declare function encodeTransactionResponse(response: AvTransactionResponse, requestId: string, report?: UnencodableReport): AvProtocolResponse;
@@ -1,16 +1,16 @@
1
1
  import { encodeBase64, WIRE_SCALAR_PATTERNS, } from "../contracts/wire-scalar-format.js";
2
- import { Decimal } from "../runtime/decimal.js";
2
+ import { AvDecimal } from "../runtime/decimal.js";
3
3
  import { SERIALIZATION_FAILURE_MESSAGE } from "../runtime/error-boundary.js";
4
4
  import { operationFailure, } from "../runtime/operation-response.js";
5
5
  import { httpStatus } from "./http-status.table.js";
6
6
  import { headers } from "./protocol-headers.js";
7
7
  export function encodeOperationResponse(response, requestId, report) {
8
8
  try {
9
- return written(response, toWire(response.data, new Set()), requestId);
9
+ return written(response, toWireText(response.data), requestId);
10
10
  }
11
11
  catch (error) {
12
12
  report?.(error);
13
- return written(serializationFailure(), null, requestId);
13
+ return written(serializationFailure(), "null", requestId);
14
14
  }
15
15
  }
16
16
  export function encodeTransactionResponse(response, requestId, report) {
@@ -25,13 +25,16 @@ export function encodeTransactionResponse(response, requestId, report) {
25
25
  }
26
26
  const steps = [];
27
27
  for (step = 0; step < data.length; step += 1) {
28
- steps.push(toWireElement(data, step, new Set()));
28
+ if (!Object.hasOwn(data, step)) {
29
+ throw unencodable(data);
30
+ }
31
+ steps.push(toWireText(data[step]));
29
32
  }
30
- return written(response, steps, requestId);
33
+ return written(response, `[${steps.join(",")}]`, requestId);
31
34
  }
32
35
  catch (error) {
33
36
  report?.(error, step);
34
- return written(serializationFailure(step), null, requestId);
37
+ return written(serializationFailure(step), "null", requestId);
35
38
  }
36
39
  }
37
40
  function serializationFailure(operation) {
@@ -51,82 +54,118 @@ function written(response, wireData, requestId) {
51
54
  "Content-Type": "application/json",
52
55
  [headers.requestId]: requestId,
53
56
  },
54
- body: JSON.stringify({ data: wireData, code, cause }),
57
+ body: `{"data":${wireData},${JSON.stringify({ code, cause }).slice(1)}`,
55
58
  };
56
59
  }
57
60
  function unencodable(value) {
58
61
  return new TypeError("A result value has no wire form.", { cause: value });
59
62
  }
60
- function toWire(value, ancestors) {
63
+ function toWireText(value) {
64
+ const output = [];
65
+ const ancestors = new Set();
66
+ const stack = [{ kind: "value", value }];
67
+ while (stack.length > 0) {
68
+ const task = stack.pop();
69
+ if (task.kind === "text") {
70
+ output.push(task.text);
71
+ continue;
72
+ }
73
+ if (task.kind === "leave") {
74
+ ancestors.delete(task.container);
75
+ continue;
76
+ }
77
+ const current = task.value;
78
+ const scalar = scalarWireText(current);
79
+ if (scalar !== undefined) {
80
+ output.push(scalar);
81
+ continue;
82
+ }
83
+ const container = current;
84
+ if (ancestors.has(container)) {
85
+ throw unencodable(container);
86
+ }
87
+ ancestors.add(container);
88
+ stack.push({ kind: "leave", container });
89
+ if (Array.isArray(container)) {
90
+ pushList(stack, container);
91
+ }
92
+ else {
93
+ pushRecord(stack, container);
94
+ }
95
+ }
96
+ return output.join("");
97
+ }
98
+ function pushList(stack, list) {
99
+ const tasks = [{ kind: "text", text: "[" }];
100
+ for (let index = 0; index < list.length; index += 1) {
101
+ if (!Object.hasOwn(list, index)) {
102
+ throw unencodable(list);
103
+ }
104
+ if (index > 0) {
105
+ tasks.push({ kind: "text", text: "," });
106
+ }
107
+ tasks.push({ kind: "value", value: list[index] });
108
+ }
109
+ tasks.push({ kind: "text", text: "]" });
110
+ pushReversed(stack, tasks);
111
+ }
112
+ function pushRecord(stack, record) {
113
+ const prototype = Object.getPrototypeOf(record);
114
+ if (prototype !== Object.prototype && prototype !== null) {
115
+ throw unencodable(record);
116
+ }
117
+ const tasks = [{ kind: "text", text: "{" }];
118
+ for (const key of Object.keys(record)) {
119
+ const member = record[key];
120
+ if (member === undefined) {
121
+ continue;
122
+ }
123
+ tasks.push({
124
+ kind: "text",
125
+ text: `${tasks.length > 1 ? "," : ""}${JSON.stringify(key)}:`,
126
+ });
127
+ tasks.push({ kind: "value", value: member });
128
+ }
129
+ tasks.push({ kind: "text", text: "}" });
130
+ pushReversed(stack, tasks);
131
+ }
132
+ function pushReversed(stack, tasks) {
133
+ for (let index = tasks.length - 1; index >= 0; index -= 1) {
134
+ stack.push(tasks[index]);
135
+ }
136
+ }
137
+ function scalarWireText(value) {
61
138
  switch (typeof value) {
62
139
  case "string":
63
140
  case "boolean":
64
- return value;
141
+ return JSON.stringify(value);
65
142
  case "number":
66
143
  if (Number.isFinite(value)) {
67
- return value;
144
+ return JSON.stringify(value);
68
145
  }
69
146
  throw unencodable(value);
70
147
  case "bigint":
71
- return value.toString(10);
148
+ return JSON.stringify(value.toString(10));
72
149
  case "object":
73
150
  break;
74
151
  default:
75
152
  throw unencodable(value);
76
153
  }
77
154
  if (value === null) {
78
- return null;
155
+ return "null";
79
156
  }
80
157
  if (value instanceof Date) {
81
158
  const wire = Number.isNaN(value.getTime()) ? "" : value.toISOString();
82
159
  if (!WIRE_SCALAR_PATTERNS.datetime.test(wire)) {
83
160
  throw unencodable(value);
84
161
  }
85
- return wire;
162
+ return JSON.stringify(wire);
86
163
  }
87
- if (value instanceof Decimal) {
88
- return value.toString();
164
+ if (value instanceof AvDecimal) {
165
+ return JSON.stringify(value.toString());
89
166
  }
90
167
  if (value instanceof Uint8Array) {
91
- return encodeBase64(value);
92
- }
93
- if (ancestors.has(value)) {
94
- throw unencodable(value);
95
- }
96
- ancestors.add(value);
97
- try {
98
- return Array.isArray(value)
99
- ? toWireList(value, ancestors)
100
- : toWireRecord(value, ancestors);
101
- }
102
- finally {
103
- ancestors.delete(value);
104
- }
105
- }
106
- function toWireList(list, ancestors) {
107
- const wire = [];
108
- for (let index = 0; index < list.length; index += 1) {
109
- wire.push(toWireElement(list, index, ancestors));
110
- }
111
- return wire;
112
- }
113
- function toWireElement(list, index, ancestors) {
114
- if (!Object.hasOwn(list, index)) {
115
- throw unencodable(list);
116
- }
117
- return toWire(list[index], ancestors);
118
- }
119
- function toWireRecord(record, ancestors) {
120
- const prototype = Object.getPrototypeOf(record);
121
- if (prototype !== Object.prototype && prototype !== null) {
122
- throw unencodable(record);
123
- }
124
- const members = [];
125
- for (const key of Object.keys(record)) {
126
- const member = record[key];
127
- if (member !== undefined) {
128
- members.push([key, toWire(member, ancestors)]);
129
- }
168
+ return JSON.stringify(encodeBase64(value));
130
169
  }
131
- return Object.fromEntries(members);
170
+ return undefined;
132
171
  }
@@ -1,7 +1,7 @@
1
- import type { OperationCode } from "../runtime/operation-response.js";
1
+ import type { AvOperationCode } from "../runtime/operation-response.js";
2
2
  /**
3
3
  * `AvProtocol.httpStatus` — the HTTP status each A-code carries, as passive data.
4
4
  */
5
5
  export declare const httpStatus: {
6
- readonly [C in OperationCode]: number;
6
+ readonly [C in AvOperationCode]: number;
7
7
  };
@@ -1,5 +1,5 @@
1
- import { type OperationResponse } from "../runtime/operation-response.js";
1
+ import { type AvOperationResponse } from "../runtime/operation-response.js";
2
2
  /**
3
3
  * The HTTP status plays no part — a code is read even at an unexpected status.
4
4
  */
5
- export declare function isOperationResponse(value: unknown): value is OperationResponse;
5
+ export declare function isOperationResponse(value: unknown): value is AvOperationResponse;