@aventara/core 1.0.0-rc.4 → 1.0.0-rc.9

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 (89) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/ERRORS.md +2 -2
  3. package/README.md +80 -7
  4. package/dist/adapters/adapter-field.d.ts +8 -0
  5. package/dist/adapters/adapter-identifier.d.ts +9 -0
  6. package/dist/adapters/adapter-identifier.js +6 -1
  7. package/dist/adapters/adapter-operation.d.ts +12 -6
  8. package/dist/compiler/contract-compiler-diagnostic.guidance.js +2 -2
  9. package/dist/compiler/contract.compiler.js +26 -3
  10. package/dist/config/config.resolver.d.ts +2 -0
  11. package/dist/config/config.resolver.js +7 -2
  12. package/dist/config/config.validator.js +36 -12
  13. package/dist/config/exact-framework-config.d.ts +11 -1
  14. package/dist/config/framework-config.d.ts +14 -1
  15. package/dist/contracts/contract-canonicalizer.js +2 -0
  16. package/dist/contracts/contract.d.ts +15 -1
  17. package/dist/contracts/field.d.ts +17 -0
  18. package/dist/contracts/scalar-value-type.d.ts +3 -1
  19. package/dist/framework/contract-view.d.ts +9 -1
  20. package/dist/framework/framework-construction.error.d.ts +2 -1
  21. package/dist/framework/framework-construction.error.js +13 -1
  22. package/dist/framework/framework.d.ts +26 -5
  23. package/dist/framework/framework.factory.js +29 -10
  24. package/dist/framework/operation-facade.d.ts +59 -12
  25. package/dist/index.d.ts +8 -4
  26. package/dist/internal.d.ts +2 -2
  27. package/dist/internal.js +2 -0
  28. package/dist/operations/operation-arguments.d.ts +43 -27
  29. package/dist/operations/operation-call.d.ts +2 -2
  30. package/dist/operations/operation-result.d.ts +1 -1
  31. package/dist/policy/access-provider.interface.d.ts +36 -0
  32. package/dist/policy/access-provider.interface.js +1 -0
  33. package/dist/policy/access-provider.registry.d.ts +9 -0
  34. package/dist/policy/access-provider.registry.js +10 -0
  35. package/dist/policy/policy-admission.js +12 -3
  36. package/dist/policy/policy-after-update.runtime.js +5 -4
  37. package/dist/policy/policy-engine.d.ts +11 -4
  38. package/dist/policy/policy-nested-write.runtime.js +11 -7
  39. package/dist/policy/policy-read.runtime.d.ts +0 -2
  40. package/dist/policy/policy-read.runtime.js +18 -9
  41. package/dist/policy/policy-request.d.ts +7 -3
  42. package/dist/policy/policy-request.js +14 -3
  43. package/dist/policy/policy-session.d.ts +14 -4
  44. package/dist/policy/policy-session.js +12 -11
  45. package/dist/policy/policy-startup.validator.js +13 -15
  46. package/dist/policy/policy-write.runtime.d.ts +7 -0
  47. package/dist/policy/policy-write.runtime.js +23 -8
  48. package/dist/prebuilt/core-version.generated.d.ts +1 -1
  49. package/dist/prebuilt/core-version.generated.js +1 -1
  50. package/dist/prebuilt/prebuilt-changes.d.ts +28 -0
  51. package/dist/prebuilt/prebuilt-changes.js +65 -0
  52. package/dist/prebuilt/prebuilt-contracts.loader.js +11 -56
  53. package/dist/prebuilt/prebuilt-inputs.fingerprint.js +16 -1
  54. package/dist/protocol/absent-route.responder.d.ts +4 -4
  55. package/dist/protocol/http-request.decoder.d.ts +2 -2
  56. package/dist/protocol/http-request.reader.d.ts +2 -2
  57. package/dist/protocol/http-response.encoder.js +2 -2
  58. package/dist/protocol/protocol-headers.d.ts +3 -3
  59. package/dist/runtime/caller-data.copier.js +3 -4
  60. package/dist/runtime/computed-read-runtime.js +2 -7
  61. package/dist/runtime/context-executor.runtime.d.ts +2 -2
  62. package/dist/runtime/core-class.brand.d.ts +10 -0
  63. package/dist/runtime/core-class.brand.js +21 -0
  64. package/dist/runtime/create-requirement.js +1 -1
  65. package/dist/runtime/decimal.d.ts +14 -0
  66. package/dist/runtime/decimal.js +21 -0
  67. package/dist/runtime/diagnostics-reporter.d.ts +5 -5
  68. package/dist/runtime/diagnostics-reporter.js +13 -1
  69. package/dist/runtime/framework-error.js +9 -0
  70. package/dist/runtime/operation-request.d.ts +9 -9
  71. package/dist/runtime/operation-runtime.d.ts +8 -8
  72. package/dist/runtime/operation-runtime.js +30 -9
  73. package/dist/runtime/owned-execution.registry.d.ts +2 -2
  74. package/dist/runtime/readonly-value.d.ts +1 -1
  75. package/dist/runtime/readonly-value.js +2 -2
  76. package/dist/runtime/referential-action.d.ts +1 -1
  77. package/dist/runtime/scalar-runtime.js +4 -5
  78. package/dist/transactions/operation-arguments-encoder.js +8 -3
  79. package/dist/transactions/sql-statement.d.ts +2 -2
  80. package/dist/transactions/sql-statement.validator.js +2 -2
  81. package/dist/transactions/transaction-integrity-error.js +2 -0
  82. package/dist/transactions/transaction-plan-assembler.d.ts +11 -4
  83. package/dist/transactions/transaction-plan-assembler.js +17 -2
  84. package/dist/transactions/transaction-plan-validator.d.ts +5 -5
  85. package/dist/transactions/transaction-request.d.ts +8 -8
  86. package/dist/transactions/transaction-runtime.d.ts +2 -2
  87. package/dist/transactions/transaction-runtime.js +12 -7
  88. package/dist/transactions/transaction-slot-path-error.js +2 -0
  89. package/package.json +1 -1
@@ -2,6 +2,7 @@ import type { AvAdapter } from "../adapters/adapter.interface.js";
2
2
  import type { AvAdapterModel } from "../adapters/adapter-model.js";
3
3
  import type { AvContractLimits } from "../contracts/contract-limits.js";
4
4
  import type { AvTransactionCapability } from "../contracts/transaction-capability.js";
5
+ import type { AvAccessProvider } from "../policy/access-provider.interface.js";
5
6
  import type { AvPolicyEngine } from "../policy/policy-engine.js";
6
7
  import type { AvPrebuiltContracts } from "../prebuilt/prebuilt-contracts.js";
7
8
  import type { AvDiagnosticsSink } from "../runtime/diagnostics-reporter.js";
@@ -90,12 +91,24 @@ export type AvConfig<M extends AvAdapterModel = AvAdapterModel, Cfg = AvConfigAn
90
91
  */
91
92
  readonly policy?: {
92
93
  readonly engine: AvPolicyEngine;
93
- /** The request's principal, from its `ctx.$state` and its layer; `null` for an anonymous caller. */
94
+ /**
95
+ * The request's principal, from its `ctx.$state` and its layer; `null` for
96
+ * an anonymous caller. It may answer with a promise (rc.5), which is
97
+ * awaited; a throw or a rejection answers `A3000`.
98
+ */
94
99
  readonly principal: (facts: {
95
100
  readonly $state: AvState;
96
101
  readonly $origin: AvRequestOrigin;
97
102
  }) => unknown;
98
103
  };
104
+ /**
105
+ * The access provider (Aventara Access, or one written by hand): its
106
+ * `policy` engine checks every client and agent request, with
107
+ * `ctx.$state.me` as the principal, and the host seeds each request's
108
+ * `ctx.$state` with its `state`. Not together with `policy`, nor with a
109
+ * host's own `state` option.
110
+ */
111
+ readonly access?: AvAccessProvider;
99
112
  readonly diagnostics?: AvDiagnosticsSink;
100
113
  /** Told about every caller value refused as unreadable or not plain data. */
101
114
  readonly misuse?: AvMisuseSink;
@@ -1,3 +1,4 @@
1
+ import { brandCoreClass } from "../runtime/core-class.brand.js";
1
2
  import { FILTER_MODES, PROJECTION_SCOPES, WRITE_SCOPES } from "./capability.js";
2
3
  import { LIFECYCLE_TRAITS } from "./lifecycle-trait.js";
3
4
  import { projectionScopeOf, writeScopeOf } from "./resource-operations.js";
@@ -5,6 +6,7 @@ const PAGINATION_ORDER = ["limit", "offset", "cursor"];
5
6
  const REDUCER_ORDER = ["$count"];
6
7
  export class AvCanonicalJsonError extends TypeError {
7
8
  }
9
+ brandCoreClass(AvCanonicalJsonError, "AvCanonicalJsonError");
8
10
  function compareCodeUnits(left, right) {
9
11
  if (left === right) {
10
12
  return 0;
@@ -1,6 +1,7 @@
1
1
  import type { AvContractLimits } from "./contract-limits.js";
2
2
  import type { AvContractClientProtocol } from "./contract-protocol.js";
3
3
  import type { AvEnumDefinition } from "./enum-definition.js";
4
+ import type { AvCoreField } from "./field.js";
4
5
  import type { ReferenceWriteLimit } from "./reference-write-limit.js";
5
6
  import type { AvResource } from "./resource.js";
6
7
  import type { AvScalarRegistry } from "./scalar.js";
@@ -24,8 +25,21 @@ export interface AvContract {
24
25
  */
25
26
  readonly referenceWrites?: ReferenceWriteLimit;
26
27
  }
27
- /** The Contract compiled from the root configuration. */
28
+ /**
29
+ * The Contract compiled from the root configuration. Its relation fields also
30
+ * state the target's fields their reference names (`references`), which no
31
+ * other Contract carries.
32
+ */
28
33
  export interface AvContractCore extends AvContract {
34
+ /** The Resources, by name. */
35
+ readonly resources: Readonly<Record<string, AvCoreResource>>;
36
+ }
37
+ /**
38
+ * A Resource as the Core Contract states it: its fields are
39
+ * {@link AvCoreField}s, so its relation fields carry `references`.
40
+ */
41
+ export interface AvCoreResource extends AvResource<AvContractCore> {
42
+ readonly fields: Readonly<Record<string, AvCoreField<AvContractCore>>>;
29
43
  }
30
44
  /** The Contract in-process calls run under (`framework.application`). */
31
45
  export interface AvContractApplication extends AvContract {
@@ -176,3 +176,20 @@ export type AvRelationField<C extends AvContract> = {
176
176
  };
177
177
  /** One field of a Resource: a scalar or a relation. */
178
178
  export type AvField<C extends AvContract> = AvScalarField<C> | AvRelationField<C>;
179
+ /**
180
+ * A relation field as the Core Contract states it: an {@link AvRelationField}
181
+ * and, on the end that holds the reference, the target's fields it names.
182
+ */
183
+ export type AvCoreRelationField<C extends AvContract> = AvRelationField<C> & {
184
+ /**
185
+ * The target's scalar fields that `referenceFields` name, pair by pair in the
186
+ * same order (`Post.author`: `referenceFields: ["authorId"]`,
187
+ * `references: ["id"]`). Present only beside a `referenceFields` the
188
+ * Contract states whole, and only when every one of them is a scalar field
189
+ * the Core Contract shows on the target; absent on the end that holds no
190
+ * reference, where the other end (`inverse`) states the pairs.
191
+ */
192
+ readonly references?: readonly [string, ...string[]];
193
+ };
194
+ /** One field of a Resource as the Core Contract states it. */
195
+ export type AvCoreField<C extends AvContract> = AvScalarField<C> | AvCoreRelationField<C>;
@@ -78,5 +78,7 @@ type ListValue<List, Atom> = [List] extends [false] ? Atom : [List] extends [tru
78
78
  * - `list: true` → `readonly T[]`, whose entries are never `null`;
79
79
  * - `nullable: true` → `| null`, on the whole value, list or not.
80
80
  */
81
- export type AvScalarValueType<C extends AvContract, Field extends AvScalarField<C>, Forms extends ScalarForms = AvApplicationScalarForms> = ListValue<Field["list"], FieldAtom<C, Field, Forms>> | (true extends Field["nullable"] ? null : never);
81
+ export type AvScalarValueType<C extends AvContract, Field extends AvScalarField<C>, Forms extends ScalarForms = AvApplicationScalarForms> = [
82
+ ListValue<Field["list"], FieldAtom<C, Field, Forms>> | (true extends Field["nullable"] ? null : never)
83
+ ] extends [infer Value] ? Value : never;
82
84
  export {};
@@ -104,8 +104,16 @@ type PolicyEngineOf<Cfg> = (NonNullable<(Cfg & {
104
104
  })["policy"]> & {
105
105
  readonly engine?: unknown;
106
106
  })["engine"];
107
+ /** The configuration's `access.policy`, read by indexed access. */
108
+ type AccessEngineOf<Cfg> = ((Cfg & {
109
+ readonly access?: {
110
+ readonly policy?: unknown;
111
+ };
112
+ })["access"] & {
113
+ readonly policy?: unknown;
114
+ })["policy"];
107
115
  /** The configuration's policy engine's `governed` set, when its type states one. */
108
- type GovernedBlock<Cfg> = LiteralRecord<(NonNullable<PolicyEngineOf<Cfg>> & {
116
+ type GovernedBlock<Cfg> = LiteralRecord<(NonNullable<PolicyEngineOf<Cfg>> & AccessEngineOf<Cfg> & {
109
117
  readonly governed?: unknown;
110
118
  })["governed"]>;
111
119
  /** The names `Governed` lists for Resource `R`, or `never`. */
@@ -15,7 +15,8 @@ export type AvConstructionDiagnostic = ConstructionProblem & {
15
15
  };
16
16
  /**
17
17
  * Thrown by {@link createFramework} when construction fails: `stage` says
18
- * where, and `diagnostics` lists every problem found there.
18
+ * where, and `diagnostics` lists every problem found there. The message names
19
+ * the first of them and how many more there are.
19
20
  */
20
21
  export declare class AvConstructionError extends Error {
21
22
  readonly stage: AvConstructionStage;
@@ -1,14 +1,25 @@
1
+ import { brandCoreClass } from "../runtime/core-class.brand.js";
1
2
  import { errorDocsUrl } from "../runtime/error.catalog.js";
2
3
  const FRAMEWORK_CONSTRUCTION_MESSAGES = {
3
4
  configuration: "Aventara framework configuration validation failed",
4
5
  discovery: "Aventara adapter discovery validation failed",
5
6
  "contract-compilation": "Aventara contract compilation failed",
6
7
  };
8
+ function constructionMessage(stage, diagnostics) {
9
+ const base = FRAMEWORK_CONSTRUCTION_MESSAGES[stage];
10
+ const [first] = diagnostics;
11
+ if (first === undefined) {
12
+ return base;
13
+ }
14
+ const where = first.path === "" ? "" : ` at ${first.path}`;
15
+ const more = diagnostics.length > 1 ? ` (+${diagnostics.length - 1} more)` : "";
16
+ return `${base}: ${first.code}${where}: ${first.message}${more}`;
17
+ }
7
18
  export class AvConstructionError extends Error {
8
19
  stage;
9
20
  diagnostics;
10
21
  constructor(stage, diagnostics) {
11
- super(FRAMEWORK_CONSTRUCTION_MESSAGES[stage]);
22
+ super(constructionMessage(stage, diagnostics));
12
23
  this.name = "AvConstructionError";
13
24
  this.stage = stage;
14
25
  this.diagnostics = diagnostics.map((diagnostic) => ({
@@ -17,3 +28,4 @@ export class AvConstructionError extends Error {
17
28
  }));
18
29
  }
19
30
  }
31
+ brandCoreClass(AvConstructionError, "AvConstructionError");
@@ -2,12 +2,12 @@ import type { AvAdapterModel } from "../adapters/adapter-model.js";
2
2
  import type { AvContracts } from "../compiler/contract.compiler.js";
3
3
  import type { AvConfigAny } from "../config/any-framework-config.js";
4
4
  import type { AvMcpEndpoint } from "../config/config.resolver.js";
5
- import type { FrameworkOperationRequest } from "../runtime/operation-request.js";
5
+ import type { AvOperationRequest } from "../runtime/operation-request.js";
6
6
  import type { AvOperationResponse } from "../runtime/operation-response.js";
7
7
  import type { AvTransactionRunner } from "../transactions/deferred-operation.js";
8
- import type { FrameworkTransactionRequest } from "../transactions/transaction-request.js";
8
+ import type { AvTransactionRequest } from "../transactions/transaction-request.js";
9
9
  import type { AvTransactionResponse } from "../transactions/transaction-response.js";
10
- import type { ApplicationOperations, ApplicationTransactionBuilders, ClientOperations, ClientTransactionBuilders } from "./operation-facade.js";
10
+ import type { ApplicationOperations, ApplicationTransactionBuilders, ClientOperations, ClientTransactionBuilders, ServerClientOperations, ServerClientTransactionBuilders } from "./operation-facade.js";
11
11
  /**
12
12
  * One Aventara instance, as returned by {@link createFramework}: its compiled
13
13
  * Contracts, typed in-process operations, transaction builders and the
@@ -50,6 +50,19 @@ export type AvFramework<M extends AvAdapterModel = AvAdapterModel, Cfg = AvConfi
50
50
  * failure thrown.
51
51
  */
52
52
  readonly client: ClientOperations<M, Cfg>;
53
+ /**
54
+ * The client layer for server code, taking application values:
55
+ * `framework.serverClient.<resource>.<family>.<variant>(args, options?)`.
56
+ *
57
+ * Typed and run exactly as {@link client} (the Client Contract's view, the
58
+ * client pipelines, validation, exposure and policy), but its arguments are
59
+ * the application forms: a `datetime` is a `Date`, a `bigint` a `bigint`, a
60
+ * `decimal` an `AvDecimal`, `bytes` a `Uint8Array`. Each call copies its
61
+ * arguments, encodes them into the wire forms `client` reads, and hands the
62
+ * same client-origin request to {@link execute}. Results are the same as
63
+ * `client`'s; the optional second argument is {@link AvExecutionOptions}.
64
+ */
65
+ readonly serverClient: ServerClientOperations<M, Cfg>;
53
66
  /**
54
67
  * Transaction builders under application rules:
55
68
  * `framework.appTx.<resource>.<family>.<variant>(args)` defers one operation
@@ -72,7 +85,15 @@ export type AvFramework<M extends AvAdapterModel = AvAdapterModel, Cfg = AvConfi
72
85
  * share one (`A2004`/`V1020` at the first step of the other origin).
73
86
  */
74
87
  readonly clientTx: ClientTransactionBuilders<M, Cfg>;
75
- execute(request: FrameworkOperationRequest): Promise<AvOperationResponse>;
88
+ /**
89
+ * The {@link clientTx} builders taking application values, as
90
+ * {@link serverClient} takes them: each handle's arguments are copied and
91
+ * encoded into the wire forms when it is built. Its handles are client-origin,
92
+ * so one {@link transaction} may hold them beside `clientTx` handles, never
93
+ * beside `appTx` ones.
94
+ */
95
+ readonly serverClientTx: ServerClientTransactionBuilders<M, Cfg>;
96
+ execute(request: AvOperationRequest): Promise<AvOperationResponse>;
76
97
  /**
77
98
  * Validates a whole transaction plan, then runs its operations one after
78
99
  * another inside one Adapter transaction. Answers `A1009` with each
@@ -83,7 +104,7 @@ export type AvFramework<M extends AvAdapterModel = AvAdapterModel, Cfg = AvConfi
83
104
  * Guards, pipes, hooks and interceptors run while the transaction is open, so
84
105
  * they should not perform network I/O or other slow work.
85
106
  */
86
- executeTransaction(request: FrameworkTransactionRequest): Promise<AvTransactionResponse>;
107
+ executeTransaction(request: AvTransactionRequest): Promise<AvTransactionResponse>;
87
108
  /**
88
109
  * Runs handles from `appTx`/`clientTx` as one transaction:
89
110
  * `framework.transaction([h1, h2, …], options?)`. Resolves each handle's
@@ -4,10 +4,11 @@ import { resolveFrameworkConfig, } from "../config/config.resolver.js";
4
4
  import { validateFrameworkConfig } from "../config/config.validator.js";
5
5
  import { validateForcedOperations } from "../config/forced-operation.validator.js";
6
6
  import { AVENTARA_PROTOCOL_VERSION } from "../contracts/contract-protocol.js";
7
+ import { recordAccessProvider } from "../policy/access-provider.registry.js";
7
8
  import { callerOf } from "../policy/policy-request.js";
8
9
  import { policyStartupDiagnostics } from "../policy/policy-startup.validator.js";
9
10
  import { loadPrebuiltContracts, warnStalePrebuilt, } from "../prebuilt/prebuilt-contracts.loader.js";
10
- import { copyEnvelopeAtDoor, refuseCallerData, } from "../runtime/caller-data.door.js";
11
+ import { copyAtDoor, copyEnvelopeAtDoor, refuseCallerData, } from "../runtime/caller-data.door.js";
11
12
  import { createDiagnosticsReporter, createTransactionDiagnosticsChannel, recordDiagnosticsSink, } from "../runtime/diagnostics-reporter.js";
12
13
  import { createMisuseReporter, } from "../runtime/misuse-reporter.js";
13
14
  import { internalFailure, operationFailure, } from "../runtime/operation-response.js";
@@ -16,6 +17,7 @@ import { recordOwnedExecution } from "../runtime/owned-execution.registry.js";
16
17
  import { validateOperationEnvelope, validateTransactionEnvelope, } from "../runtime/request-envelope.validator.js";
17
18
  import { requestIdOf } from "../runtime/request-id.js";
18
19
  import { stateOptionOf } from "../runtime/request-state.resolver.js";
20
+ import { encodeOperationArgumentsForWire } from "../transactions/operation-arguments-encoder.js";
19
21
  import { createTransactionPlanAssembler } from "../transactions/transaction-plan-assembler.js";
20
22
  import { createTransactionRuntime } from "../transactions/transaction-runtime.js";
21
23
  import { AvConstructionError } from "./framework-construction.error.js";
@@ -68,11 +70,21 @@ export async function createFramework(config) {
68
70
  const executeTransaction = createTransactionRuntime(runtimeDependencies, pipelineDependencies);
69
71
  const misuse = createMisuseReporter(resolvedConfig.misuse);
70
72
  const executeOperation = (request, caller) => executeTotally(execute, request, resolvedConfig.diagnostics, "caller", caller);
73
+ const executeApplicationValues = (request, caller) => executeTotally(encodingApplicationValues(execute, compilation.contracts.client), request, resolvedConfig.diagnostics, "caller", caller);
71
74
  const protocol = {
72
75
  version: AVENTARA_PROTOCOL_VERSION,
73
76
  hash: compilation.contracts.client.protocol.hash,
74
77
  };
75
78
  const assembler = createTransactionPlanAssembler(compilation.contracts, protocol, misuse);
79
+ const clientRequest = (resource, identity, args, requestId, state) => ({
80
+ ...identity,
81
+ origin: "client",
82
+ protocol,
83
+ requestId,
84
+ ...(state === undefined ? {} : { state }),
85
+ resource,
86
+ arguments: args,
87
+ });
76
88
  const framework = {
77
89
  api: resolvedConfig.api,
78
90
  mcp: resolvedConfig.mcp,
@@ -85,25 +97,20 @@ export async function createFramework(config) {
85
97
  resource,
86
98
  arguments: args,
87
99
  }), executeOperation),
88
- client: createOperationFacade(model, (resource, identity, args, requestId, state) => ({
89
- ...identity,
90
- origin: "client",
91
- protocol,
92
- requestId,
93
- ...(state === undefined ? {} : { state }),
94
- resource,
95
- arguments: args,
96
- }), executeOperation),
100
+ client: createOperationFacade(model, clientRequest, executeOperation),
101
+ serverClient: createOperationFacade(model, clientRequest, executeApplicationValues),
97
102
  appTx: Object.freeze({
98
103
  ...createOperationTree(model, (resource, identity) => (args) => assembler.defer("application", resource, identity, args === undefined ? {} : args)),
99
104
  [APPLICATION_SQL_BUILDER]: (strings, ...values) => assembler.deferSql(strings, values),
100
105
  }),
101
106
  clientTx: createOperationTree(model, (resource, identity) => (args) => assembler.defer("client", resource, identity, args === undefined ? {} : args)),
107
+ serverClientTx: createOperationTree(model, (resource, identity) => (args) => assembler.defer("client", resource, identity, args === undefined ? {} : args, "application")),
102
108
  execute: (request) => executeRequestTotally(execute, request, resolvedConfig.diagnostics, misuse),
103
109
  executeTransaction: (request) => executeTransactionRequestTotally(executeTransaction, request, resolvedConfig.diagnostics, misuse),
104
110
  transaction: (async (operations, options) => settleOperation(await runTransactionTotally(executeTransaction, assembler, operations, requestIdOf(options), stateOptionOf(options), resolvedConfig.diagnostics, callerOf(options)))),
105
111
  };
106
112
  recordDiagnosticsSink(framework, resolvedConfig.diagnostics);
113
+ recordAccessProvider(framework, config.access);
107
114
  recordOwnedExecution(framework, {
108
115
  execute: (request, refused) => executeTotally(execute, request, resolvedConfig.diagnostics, refused === undefined ? "owned" : { refused }),
109
116
  executeTransaction: (request, refused) => executeTransactionTotally(executeTransaction, request, resolvedConfig.diagnostics, undefined, refused === undefined
@@ -129,6 +136,18 @@ async function prebuiltCompilation(prebuilt, model, config, resolved) {
129
136
  }
130
137
  return { ok: true, contracts: loaded.contracts };
131
138
  }
139
+ function encodingApplicationValues(execute, contract) {
140
+ return (request, report, _source, caller) => {
141
+ const copy = copyAtDoor(request.arguments);
142
+ if (!copy.ok) {
143
+ return execute(request, report, { refused: copy.error }, caller);
144
+ }
145
+ return execute({
146
+ ...request,
147
+ arguments: encodeOperationArgumentsForWire(contract, request, copy.value),
148
+ }, report, "owned", caller);
149
+ };
150
+ }
132
151
  async function executeTotally(execute, request, diagnostics, source, caller) {
133
152
  const report = createDiagnosticsReporter(diagnostics, request);
134
153
  try {
@@ -6,10 +6,10 @@ import type { AvOperationCall, AvOperationGrammar, DeferredArguments, DeferredPl
6
6
  import type { AvOperationIdentity } from "../operations/operation-identity.js";
7
7
  import { type PolicyCaller } from "../policy/policy-request.js";
8
8
  import type { AvExecutionOptions } from "../runtime/execution-options.js";
9
- import type { FrameworkOperationRequest } from "../runtime/operation-request.js";
9
+ import type { AvOperationRequest } from "../runtime/operation-request.js";
10
10
  import type { AvOperationResponse } from "../runtime/operation-response.js";
11
11
  import type { AvState } from "../runtime/request-state.js";
12
- import type { SqlStatementBuilder } from "../transactions/sql-statement.js";
12
+ import type { AvSqlStatementBuilder } from "../transactions/sql-statement.js";
13
13
  import type { AvTransactionResponse } from "../transactions/transaction-response.js";
14
14
  import type { AvContractApplicationView, ClientContractView } from "./contract-view.js";
15
15
  /**
@@ -20,8 +20,8 @@ import type { AvContractApplicationView, ClientContractView } from "./contract-v
20
20
  type OpaqueSurface = {
21
21
  readonly [resource: string]: unknown;
22
22
  };
23
- /** The four typed surfaces of an `AvFramework`, named by the member that holds each. */
24
- type FacadeSurface = "application" | "client" | "appTx" | "clientTx";
23
+ /** The typed surfaces of an `AvFramework`, named by the member that holds each. */
24
+ type FacadeSurface = "application" | "client" | "serverClient" | "appTx" | "clientTx" | "serverClientTx";
25
25
  /** `framework.application.<Resource>.<family>.<variant>` when the variant takes a `select` or `include`. */
26
26
  export type AvApplicationProjectingCall<in out C extends AvContract, in out R extends AvResourceKey<C>, in out I extends AvOperationIdentity> = ProjectingCall<C, R, I, AvOperationArgumentsFor<C, R, I, AvApplicationScalarForms>, AvApplicationScalarForms, AvExecutionOptions>;
27
27
  /** `framework.application.<Resource>.<family>.<variant>` when it does not (the `count` variants). */
@@ -38,13 +38,28 @@ export type AvAppTxPlainCall<in out C extends AvContract, in out R extends AvRes
38
38
  export type AvClientTxProjectingCall<in out C extends AvContract, in out R extends AvResourceKey<C>, in out I extends AvOperationIdentity> = DeferredProjectingCall<C, R, I, DeferredArguments<C, R, I, AvWireScalarForms, AvApplicationScalarForms>, AvApplicationScalarForms, "client">;
39
39
  /** `framework.clientTx.<Resource>.<family>.<variant>` when it does not. */
40
40
  export type AvClientTxPlainCall<in out C extends AvContract, in out R extends AvResourceKey<C>, in out I extends AvOperationIdentity> = DeferredPlainCall<C, R, I, DeferredArguments<C, R, I, AvWireScalarForms, AvApplicationScalarForms>, AvApplicationScalarForms, "client">;
41
+ /**
42
+ * `framework.serverClient.<Resource>.<family>.<variant>` when the variant takes a `select` or `include`:
43
+ * the Client Contract's view, application forms in.
44
+ */
45
+ export type AvServerClientProjectingCall<in out C extends AvContract, in out R extends AvResourceKey<C>, in out I extends AvOperationIdentity> = ProjectingCall<C, R, I, AvOperationArgumentsFor<C, R, I, AvApplicationScalarForms>, AvApplicationScalarForms, AvExecutionOptions>;
46
+ /** `framework.serverClient.<Resource>.<family>.<variant>` when it does not. */
47
+ export type AvServerClientPlainCall<in out C extends AvContract, in out R extends AvResourceKey<C>, in out I extends AvOperationIdentity> = PlainCall<C, R, I, AvOperationArgumentsFor<C, R, I, AvApplicationScalarForms>, AvApplicationScalarForms, AvExecutionOptions>;
48
+ /**
49
+ * `framework.serverClientTx.<Resource>.<family>.<variant>` when the variant takes a `select` or `include`:
50
+ * the Client Contract's view, application forms in, a client-origin handle out.
51
+ */
52
+ export type AvServerClientTxProjectingCall<in out C extends AvContract, in out R extends AvResourceKey<C>, in out I extends AvOperationIdentity> = DeferredProjectingCall<C, R, I, DeferredArguments<C, R, I, AvApplicationScalarForms, AvApplicationScalarForms>, AvApplicationScalarForms, "client">;
53
+ /** `framework.serverClientTx.<Resource>.<family>.<variant>` when it does not. */
54
+ export type AvServerClientTxPlainCall<in out C extends AvContract, in out R extends AvResourceKey<C>, in out I extends AvOperationIdentity> = DeferredPlainCall<C, R, I, DeferredArguments<C, R, I, AvApplicationScalarForms, AvApplicationScalarForms>, AvApplicationScalarForms, "client">;
41
55
  /**
42
56
  * One variant on a surface: a direct call (application or wire forms), or a
43
- * deferred one for a transaction (`appTx`, `clientTx`), projecting when its
44
- * arguments carry a `select` (as `AvOperationCall` and `AvDeferredOperationCall`
45
- * decide it).
57
+ * deferred one for a transaction (`appTx`, `clientTx`, `serverClientTx`),
58
+ * projecting when its arguments carry a `select` (as `AvOperationCall` and
59
+ * `AvDeferredOperationCall` decide it). `serverClient` and `serverClientTx` take
60
+ * the application forms over the Client Contract's view.
46
61
  */
47
- type SurfaceCall<C extends AvContract, R extends AvResourceKey<C>, I extends AvOperationIdentity, S extends FacadeSurface> = S extends "application" ? "select" extends keyof AvOperationArgumentsFor<C, R, I, AvApplicationScalarForms> ? AvApplicationProjectingCall<C, R, I> : AvApplicationPlainCall<C, R, I> : S extends "client" ? "select" extends keyof AvOperationArgumentsFor<C, R, I, AvWireScalarForms> ? AvClientProjectingCall<C, R, I> : AvClientPlainCall<C, R, I> : S extends "appTx" ? "select" extends keyof DeferredArguments<C, R, I, AvApplicationScalarForms, AvApplicationScalarForms> ? AvAppTxProjectingCall<C, R, I> : AvAppTxPlainCall<C, R, I> : "select" extends keyof DeferredArguments<C, R, I, AvWireScalarForms, AvApplicationScalarForms> ? AvClientTxProjectingCall<C, R, I> : AvClientTxPlainCall<C, R, I>;
62
+ type SurfaceCall<C extends AvContract, R extends AvResourceKey<C>, I extends AvOperationIdentity, S extends FacadeSurface> = S extends "application" ? "select" extends keyof AvOperationArgumentsFor<C, R, I, AvApplicationScalarForms> ? AvApplicationProjectingCall<C, R, I> : AvApplicationPlainCall<C, R, I> : S extends "client" ? "select" extends keyof AvOperationArgumentsFor<C, R, I, AvWireScalarForms> ? AvClientProjectingCall<C, R, I> : AvClientPlainCall<C, R, I> : S extends "serverClient" ? "select" extends keyof AvOperationArgumentsFor<C, R, I, AvApplicationScalarForms> ? AvServerClientProjectingCall<C, R, I> : AvServerClientPlainCall<C, R, I> : S extends "appTx" ? "select" extends keyof DeferredArguments<C, R, I, AvApplicationScalarForms, AvApplicationScalarForms> ? AvAppTxProjectingCall<C, R, I> : AvAppTxPlainCall<C, R, I> : S extends "clientTx" ? "select" extends keyof DeferredArguments<C, R, I, AvWireScalarForms, AvApplicationScalarForms> ? AvClientTxProjectingCall<C, R, I> : AvClientTxPlainCall<C, R, I> : "select" extends keyof DeferredArguments<C, R, I, AvApplicationScalarForms, AvApplicationScalarForms> ? AvServerClientTxProjectingCall<C, R, I> : AvServerClientTxPlainCall<C, R, I>;
48
63
  /** The families view `C` advertises on Resource `R`. */
49
64
  type FamilyKey<C extends AvContract, R extends AvResourceKey<C>> = keyof AvOperationGrammar<C>[R];
50
65
  /** One family node of surface `S`; the public names below are its four instances. */
@@ -55,10 +70,14 @@ type FamilyNode<C extends AvContract, S extends FacadeSurface, R extends AvResou
55
70
  export type AvApplicationFamilyFacade<in out C extends AvContract, in out R extends AvResourceKey<C>, in out F extends FamilyKey<C, R>> = FamilyNode<C, "application", R, F>;
56
71
  /** `framework.client.<Resource>.<family>`: one direct call per variant, wire forms. */
57
72
  export type AvClientFamilyFacade<in out C extends AvContract, in out R extends AvResourceKey<C>, in out F extends FamilyKey<C, R>> = FamilyNode<C, "client", R, F>;
73
+ /** `framework.serverClient.<Resource>.<family>`: one direct call per variant, application forms. */
74
+ export type AvServerClientFamilyFacade<in out C extends AvContract, in out R extends AvResourceKey<C>, in out F extends FamilyKey<C, R>> = FamilyNode<C, "serverClient", R, F>;
58
75
  /** `framework.appTx.<Resource>.<family>`: one deferred operation per variant. */
59
76
  export type AvAppTxFamilyFacade<in out C extends AvContract, in out R extends AvResourceKey<C>, in out F extends FamilyKey<C, R>> = FamilyNode<C, "appTx", R, F>;
60
77
  /** `framework.clientTx.<Resource>.<family>`: one deferred operation per variant. */
61
78
  export type AvClientTxFamilyFacade<in out C extends AvContract, in out R extends AvResourceKey<C>, in out F extends FamilyKey<C, R>> = FamilyNode<C, "clientTx", R, F>;
79
+ /** `framework.serverClientTx.<Resource>.<family>`: one deferred operation per variant, application forms. */
80
+ export type AvServerClientTxFamilyFacade<in out C extends AvContract, in out R extends AvResourceKey<C>, in out F extends FamilyKey<C, R>> = FamilyNode<C, "serverClientTx", R, F>;
62
81
  /** `framework.application.<Resource>`: one {@link AvApplicationFamilyFacade} per family. */
63
82
  export type AvApplicationResourceFacade<in out C extends AvContract, in out R extends AvResourceKey<C>> = {
64
83
  readonly [F in FamilyKey<C, R>]: AvApplicationFamilyFacade<C, R, F>;
@@ -67,6 +86,10 @@ export type AvApplicationResourceFacade<in out C extends AvContract, in out R ex
67
86
  export type AvClientResourceFacade<in out C extends AvContract, in out R extends AvResourceKey<C>> = {
68
87
  readonly [F in FamilyKey<C, R>]: AvClientFamilyFacade<C, R, F>;
69
88
  };
89
+ /** `framework.serverClient.<Resource>`: one {@link AvServerClientFamilyFacade} per family. */
90
+ export type AvServerClientResourceFacade<in out C extends AvContract, in out R extends AvResourceKey<C>> = {
91
+ readonly [F in FamilyKey<C, R>]: AvServerClientFamilyFacade<C, R, F>;
92
+ };
70
93
  /** `framework.appTx.<Resource>`: one {@link AvAppTxFamilyFacade} per family. */
71
94
  export type AvAppTxResourceFacade<in out C extends AvContract, in out R extends AvResourceKey<C>> = {
72
95
  readonly [F in FamilyKey<C, R>]: AvAppTxFamilyFacade<C, R, F>;
@@ -75,6 +98,10 @@ export type AvAppTxResourceFacade<in out C extends AvContract, in out R extends
75
98
  export type AvClientTxResourceFacade<in out C extends AvContract, in out R extends AvResourceKey<C>> = {
76
99
  readonly [F in FamilyKey<C, R>]: AvClientTxFamilyFacade<C, R, F>;
77
100
  };
101
+ /** `framework.serverClientTx.<Resource>`: one {@link AvServerClientTxFamilyFacade} per family. */
102
+ export type AvServerClientTxResourceFacade<in out C extends AvContract, in out R extends AvResourceKey<C>> = {
103
+ readonly [F in FamilyKey<C, R>]: AvServerClientTxFamilyFacade<C, R, F>;
104
+ };
78
105
  /**
79
106
  * `framework.application`: one {@link AvApplicationResourceFacade} per Resource
80
107
  * of `C`, the Application Contract's view.
@@ -89,14 +116,21 @@ export type AvApplicationFacade<C extends AvContract> = {
89
116
  export type AvClientFacade<C extends AvContract> = {
90
117
  readonly [R in AvResourceKey<C>]: AvClientResourceFacade<C, R>;
91
118
  };
119
+ /**
120
+ * `framework.serverClient`: one {@link AvServerClientResourceFacade} per Resource
121
+ * of `C`, the Client Contract's view, taking application forms.
122
+ */
123
+ export type AvServerClientFacade<C extends AvContract> = {
124
+ readonly [R in AvResourceKey<C>]: AvServerClientResourceFacade<C, R>;
125
+ };
92
126
  /** `framework.appTx.$sql`: the developer SQL step only an application transaction has. */
93
127
  type ApplicationSqlStep = {
94
128
  /**
95
129
  * A developer SQL step, written only as a tagged template:
96
130
  * ``framework.appTx.$sql<Row>`select … ${value}` ``. Every interpolated value
97
- * is bound as a parameter. See {@link SqlStatementBuilder}.
131
+ * is bound as a parameter. See {@link AvSqlStatementBuilder}.
98
132
  */
99
- readonly $sql: SqlStatementBuilder;
133
+ readonly $sql: AvSqlStatementBuilder;
100
134
  };
101
135
  /**
102
136
  * `framework.appTx`: one {@link AvAppTxResourceFacade} per Resource of `C`, the
@@ -112,18 +146,31 @@ export type AvAppTxFacade<C extends AvContract> = {
112
146
  export type AvClientTxFacade<C extends AvContract> = {
113
147
  readonly [R in AvResourceKey<C>]: AvClientTxResourceFacade<C, R>;
114
148
  };
149
+ /**
150
+ * `framework.serverClientTx`: one {@link AvServerClientTxResourceFacade} per
151
+ * Resource of `C`, the Client Contract's view, taking application forms.
152
+ */
153
+ export type AvServerClientTxFacade<C extends AvContract> = {
154
+ readonly [R in AvResourceKey<C>]: AvServerClientTxResourceFacade<C, R>;
155
+ };
115
156
  type ApplicationSurface<C> = C extends AvContract ? string extends AvResourceKey<C> ? OpaqueSurface : AvApplicationFacade<C> : never;
116
157
  type ClientSurface<C> = C extends AvContract ? string extends AvResourceKey<C> ? OpaqueSurface : AvClientFacade<C> : never;
158
+ type ServerClientSurface<C> = C extends AvContract ? string extends AvResourceKey<C> ? OpaqueSurface : AvServerClientFacade<C> : never;
117
159
  type ApplicationDeferredSurface<C> = C extends AvContract ? string extends AvResourceKey<C> ? OpaqueSurface & ApplicationSqlStep : AvAppTxFacade<C> : never;
118
160
  type ClientDeferredSurface<C> = C extends AvContract ? string extends AvResourceKey<C> ? OpaqueSurface : AvClientTxFacade<C> : never;
161
+ type ServerClientDeferredSurface<C> = C extends AvContract ? string extends AvResourceKey<C> ? OpaqueSurface : AvServerClientTxFacade<C> : never;
119
162
  /** `framework.application`'s type: {@link AvApplicationFacade}, or opaque. */
120
163
  export type ApplicationOperations<M extends AvAdapterModel, Cfg> = ApplicationSurface<AvContractApplicationView<M, Cfg>>;
121
164
  /** `framework.client`'s type: {@link AvClientFacade}, or opaque. */
122
165
  export type ClientOperations<M extends AvAdapterModel, Cfg> = ClientSurface<ClientContractView<M, Cfg>>;
166
+ /** `framework.serverClient`'s type: {@link AvServerClientFacade}, or opaque. */
167
+ export type ServerClientOperations<M extends AvAdapterModel, Cfg> = ServerClientSurface<ClientContractView<M, Cfg>>;
123
168
  /** `framework.appTx`'s type: {@link AvAppTxFacade}, or opaque with `$sql`. */
124
169
  export type ApplicationTransactionBuilders<M extends AvAdapterModel, Cfg> = ApplicationDeferredSurface<AvContractApplicationView<M, Cfg>>;
125
170
  /** `framework.clientTx`'s type: {@link AvClientTxFacade}, or opaque. */
126
171
  export type ClientTransactionBuilders<M extends AvAdapterModel, Cfg> = ClientDeferredSurface<ClientContractView<M, Cfg>>;
172
+ /** `framework.serverClientTx`'s type: {@link AvServerClientTxFacade}, or opaque. */
173
+ export type ServerClientTransactionBuilders<M extends AvAdapterModel, Cfg> = ServerClientDeferredSurface<ClientContractView<M, Cfg>>;
127
174
  /**
128
175
  * The Resources of a pipeline ctx: `ctx.<Resource>.<family>.<variant>(args)`,
129
176
  * application-origin, resolving the operation's data.
@@ -149,8 +196,8 @@ type ComputeReadFacade<C> = C extends AvContract ? string extends AvResourceKey<
149
196
  };
150
197
  } : never;
151
198
  /** Builds the request one façade call hands to `execute`, under its request id and state. */
152
- export type FacadeRequest = (resource: string, identity: AvOperationIdentity, args: unknown, requestId: string, state: AvState | undefined) => FrameworkOperationRequest;
153
- type FacadeExecutor = (request: FrameworkOperationRequest, caller: PolicyCaller | undefined) => Promise<AvOperationResponse>;
199
+ export type FacadeRequest = (resource: string, identity: AvOperationIdentity, args: unknown, requestId: string, state: AvState | undefined) => AvOperationRequest;
200
+ type FacadeExecutor = (request: AvOperationRequest, caller: PolicyCaller | undefined) => Promise<AvOperationResponse>;
154
201
  /**
155
202
  * Builds a façade over `model`, the same object its types are read from, so a
156
203
  * call that type-checks always reaches `execute`: a Resource, variant or field
package/dist/index.d.ts CHANGED
@@ -13,12 +13,12 @@ export type { AvConfigExact } from "./config/exact-framework-config.js";
13
13
  export type { AvConfig, AvConfigAddedFieldDefinition, AvConfigAgentLayer, AvConfigAny, AvConfigExemptions, AvConfigFamily, AvConfigFieldDefinition, AvConfigFieldLifecycleTrait, AvConfigKnownFieldDefinition, AvConfigLayer, AvConfigLayerAny, AvConfigLayerKind, AvConfigLimits, AvConfigMcp, AvConfigOperations, AvConfigOperationsExemption, AvConfigOverlayField, AvConfigRelationFieldExemption, AvConfigResource, AvConfigResourceExemption, AvConfigResourceFields, AvConfigResourceKey, AvConfigResources, AvConfigResourcesAny, AvConfigResourceTransactions, AvConfigRootField, AvConfigScalarFieldExemption, AvConfigScalarTypeRef, AvConfigVariant, AvFieldCompute, AvRelationFieldCapabilityName, AvRelationFieldPipeline, AvScalarFieldCapabilityName, AvScalarFieldPipeline, AvZCheck, AvZFormat, } from "./config/framework-config.js";
14
14
  export type { AvPipeline, AvTransactionPipeline, } from "./config/pipeline-config.js";
15
15
  export type { AvPaginationCapability, AvProjectionScope, AvRelationFilterCapability, AvRelationMutationDirective, AvRelationReducer, AvScalarFilterOperator, AvScalarMutationDirective, AvWriteScope, } from "./contracts/capability.js";
16
- export type { AvContract, AvContractAgent, AvContractApplication, AvContractClient, AvContractCore, } from "./contracts/contract.js";
16
+ export type { AvContract, AvContractAgent, AvContractApplication, AvContractClient, AvContractCore, AvCoreResource, } from "./contracts/contract.js";
17
17
  export type { AvContractLimits } from "./contracts/contract-limits.js";
18
18
  export type { AvContractClientProtocol, AvContractHash, AvContractProtocol, } from "./contracts/contract-protocol.js";
19
19
  export type { AvCreateRequirementGroup, AvCreateRequirements, } from "./contracts/create-requirements.js";
20
20
  export type { AvEnumDefinition } from "./contracts/enum-definition.js";
21
- export type { AvField, AvProjectionScopes, AvRelationField, AvRelationFieldCapabilities, AvRelationMutationCapability, AvRelationProjectionCapability, AvRelationReducerCapability, AvScalarField, AvScalarFieldCapabilities, AvScalarFormat, AvScopedRelationMutations, AvScopedRelationReducers, AvWriteScopes, } from "./contracts/field.js";
21
+ export type { AvCoreField, AvCoreRelationField, AvField, AvProjectionScopes, AvRelationField, AvRelationFieldCapabilities, AvRelationMutationCapability, AvRelationProjectionCapability, AvRelationReducerCapability, AvScalarField, AvScalarFieldCapabilities, AvScalarFormat, AvScopedRelationMutations, AvScopedRelationReducers, AvWriteScopes, } from "./contracts/field.js";
22
22
  export type { AvFieldCheck } from "./contracts/field-check.js";
23
23
  export type { AvIdentifier, AvScalarFieldKey } from "./contracts/identifier.js";
24
24
  export type { AvLifecycleTrait } from "./contracts/lifecycle-trait.js";
@@ -32,12 +32,13 @@ export { createFramework } from "./framework/framework.factory.js";
32
32
  export type { AvFramework } from "./framework/framework.js";
33
33
  export type { AvConstructionDiagnostic, AvConstructionStage, } from "./framework/framework-construction.error.js";
34
34
  export { AvConstructionError } from "./framework/framework-construction.error.js";
35
- export type { AvApplicationFacade, AvApplicationFamilyFacade, AvApplicationPlainCall, AvApplicationProjectingCall, AvApplicationResourceFacade, AvAppTxFacade, AvAppTxFamilyFacade, AvAppTxPlainCall, AvAppTxProjectingCall, AvAppTxResourceFacade, AvClientFacade, AvClientFamilyFacade, AvClientPlainCall, AvClientProjectingCall, AvClientResourceFacade, AvClientTxFacade, AvClientTxFamilyFacade, AvClientTxPlainCall, AvClientTxProjectingCall, AvClientTxResourceFacade, } from "./framework/operation-facade.js";
36
- export type { AvCreateDataInput, AvCursorInput, AvFieldKey, AvIncludeInput, AvNullsOrder, AvOperationArgumentMap, AvOperationArgumentsFor, AvOrderByEntry, AvOrderByInput, AvProjectionEntry, AvRelationProjectionInput, AvResourceKey, AvScalarOrderInput, AvSelectInput, AvSortDirection, AvUniqueWhereInput, AvUpdateDataInput, AvWhereInput, } from "./operations/operation-arguments.js";
35
+ export type { AvApplicationFacade, AvApplicationFamilyFacade, AvApplicationPlainCall, AvApplicationProjectingCall, AvApplicationResourceFacade, AvAppTxFacade, AvAppTxFamilyFacade, AvAppTxPlainCall, AvAppTxProjectingCall, AvAppTxResourceFacade, AvClientFacade, AvClientFamilyFacade, AvClientPlainCall, AvClientProjectingCall, AvClientResourceFacade, AvClientTxFacade, AvClientTxFamilyFacade, AvClientTxPlainCall, AvClientTxProjectingCall, AvClientTxResourceFacade, AvServerClientFacade, AvServerClientFamilyFacade, AvServerClientPlainCall, AvServerClientProjectingCall, AvServerClientResourceFacade, AvServerClientTxFacade, AvServerClientTxFamilyFacade, AvServerClientTxPlainCall, AvServerClientTxProjectingCall, AvServerClientTxResourceFacade, } from "./framework/operation-facade.js";
36
+ export type { AvCreateDataInput, AvCursorInput, AvFieldKey, AvIncludeInput, AvNoAdvertisedMember, AvNullsOrder, AvOperationArgumentMap, AvOperationArgumentsFor, AvOrderByEntry, AvOrderByInput, AvProjectionEntry, AvRelationProjectionInput, AvResourceKey, AvScalarFilterOperands, AvScalarOrderInput, AvScalarWhereInput, AvSelectInput, AvSortDirection, AvUniqueWhereInput, AvUpdateDataInput, AvWhereInput, } from "./operations/operation-arguments.js";
37
37
  export type { AvDeferredOperationCall, AvOperationCall, AvOperationGrammar, AvOperationSlot, } from "./operations/operation-call.js";
38
38
  export type { AvOperationFamily, AvOperationIdentity, AvOperationVariant, } from "./operations/operation-identity.js";
39
39
  export type { AvOperationResultFor } from "./operations/operation-result.js";
40
40
  export type { AvValidationCode, AvValidationIssue, } from "./operations/validation-code.js";
41
+ export type { AvAccessProvider } from "./policy/access-provider.interface.js";
41
42
  export type { AvPolicyEngine, AvPolicyWhere, } from "./policy/policy-engine.js";
42
43
  export type { AvPrebuiltContracts } from "./prebuilt/prebuilt-contracts.js";
43
44
  export { AvDecimal } from "./runtime/decimal.js";
@@ -48,14 +49,17 @@ export type { AvComputeContext, AvComputeCreate, AvComputeRead, AvComputeUpdate,
48
49
  export { AvAuthError, AvConflictError, AvContractMismatchError, AvError, AvInternalError, AvNotFoundError, AvProtocolError, AvValidationError, } from "./runtime/framework-error.js";
49
50
  export type { AvJsonValue } from "./runtime/json-value.js";
50
51
  export type { AvMisuseEvent, AvMisuseSink, } from "./runtime/misuse-reporter.js";
52
+ export type { AvAgentOperationRequest, AvApplicationOperationRequest, AvClientOperationRequest, AvOperationRequest, AvRequestProtocol, } from "./runtime/operation-request.js";
51
53
  export type { AvCause, AvOperationCode, AvOperationErrorCode, AvOperationFailureResponse, AvOperationNoMatchResponse, AvOperationResponse, AvOperationSuccessCode, AvOperationSuccessDataCode, AvOperationSuccessResponse, } from "./runtime/operation-response.js";
52
54
  export type { AvAfterHook, AvBeforeHook, AvContext, AvFieldGuard, AvFieldPipe, AvFilter, AvGuard, AvInterceptor, AvPipe, AvTransactionAfterHook, AvTransactionBeforeHook, AvTransactionContext, AvTransactionFilter, AvTransactionGuard, AvTransactionInterceptor, AvTransactionPipe, AvTransactionStep, AvTransportContext, } from "./runtime/pipeline.js";
53
55
  export type { AvDeepReadonly } from "./runtime/readonly-value.js";
54
56
  export type { AvState } from "./runtime/request-state.js";
55
57
  export type { AvOperation, AvOperationHandle, AvOperationReferenceSurface, AvReferenceableField, AvReferenceBuilder, AvSingleRowResult, AvTransactionResults, AvTransactionRunner, } from "./transactions/deferred-operation.js";
58
+ export type { AvSqlStatementBuilder, AvSqlStatementValue, } from "./transactions/sql-statement.js";
56
59
  export type { AvTransactionIntegrityViolation } from "./transactions/transaction-integrity-error.js";
57
60
  export { AvTransactionIntegrityError } from "./transactions/transaction-integrity-error.js";
58
61
  export type { AvTransactionReference } from "./transactions/transaction-reference.js";
62
+ export type { AvAgentTransactionRequest, AvApplicationTransactionRequest, AvClientTransactionRequest, AvTransactionRequest, } from "./transactions/transaction-request.js";
59
63
  export type { AvTransactionCommittedResponse, AvTransactionResponse, } from "./transactions/transaction-response.js";
60
64
  export type { AvTransactionSlotPathViolation } from "./transactions/transaction-slot-path-error.js";
61
65
  export { AvTransactionSlotPathError } from "./transactions/transaction-slot-path-error.js";
@@ -32,12 +32,12 @@ export type { AvDatabaseRefusal } from "./operations/database-refusal.js";
32
32
  export { DATABASE_REFUSALS } from "./operations/database-refusal.js";
33
33
  export type { SemanticOperationArguments } from "./operations/operation-validator.js";
34
34
  export { VALIDATION_CODES } from "./operations/validation-code.js";
35
+ export { accessStateOf } from "./policy/access-provider.registry.js";
36
+ export { prebuiltFileChanges } from "./prebuilt/prebuilt-changes.js";
35
37
  export { emitPrebuiltContracts, prebuiltContractsOf, } from "./prebuilt/prebuilt-contracts.emitter.js";
36
38
  export { mcpFailureReporterOf } from "./runtime/diagnostics-reporter.js";
37
39
  export type { AvErrorClassName } from "./runtime/framework-error-class.table.js";
38
40
  export { FRAMEWORK_ERROR_CLASS_OF } from "./runtime/framework-error-class.table.js";
39
- export type { AgentOperationRequest, ApplicationOperationRequest, ClientOperationRequest, ClientProtocolIdentity, FrameworkOperationRequest, } from "./runtime/operation-request.js";
40
41
  export { OPERATION_CODES } from "./runtime/operation-response.js";
41
42
  export type { BuiltinNonRow, OperationFingerprint, } from "./transactions/deferred-operation.js";
42
43
  export { computeOperationFingerprint } from "./transactions/operation-fingerprint.js";
43
- export type { AgentTransactionRequest, ApplicationTransactionRequest, ClientTransactionRequest, FrameworkTransactionRequest, } from "./transactions/transaction-request.js";
package/dist/internal.js CHANGED
@@ -13,6 +13,8 @@ export { BUILT_IN_SCALARS } from "./contracts/scalar.js";
13
13
  export { TRANSACTION_CAPABILITIES } from "./contracts/transaction-capability.js";
14
14
  export { DATABASE_REFUSALS } from "./operations/database-refusal.js";
15
15
  export { VALIDATION_CODES } from "./operations/validation-code.js";
16
+ export { accessStateOf } from "./policy/access-provider.registry.js";
17
+ export { prebuiltFileChanges } from "./prebuilt/prebuilt-changes.js";
16
18
  export { emitPrebuiltContracts, prebuiltContractsOf, } from "./prebuilt/prebuilt-contracts.emitter.js";
17
19
  export { mcpFailureReporterOf } from "./runtime/diagnostics-reporter.js";
18
20
  export { FRAMEWORK_ERROR_CLASS_OF } from "./runtime/framework-error-class.table.js";