@serve.zone/interfaces 30.12.0 → 30.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-09-15 - 30.13.0
4
+
5
+ ### Features
6
+
7
+ - widen `TMailSubmissionErrorCode` with the CoreMail error codes an application can act on (`AUTHENTICATION_FAILED`, `CAPABILITY_DENIED`, `INVALID_REQUEST`, `INVALID_MAILBOX`, `INVALID_SENDER`, `INVALID_RECIPIENT`, `INVALID_HEADER`, `PAYLOAD_LIMIT_EXCEEDED`, `QUOTA_EXCEEDED`, `IDEMPOTENCY_CONFLICT`, `STATE_CONFLICT`, `NOT_FOUND`), so the CoreMail-fronted submission path can pass them through unchanged (mail)
8
+ - Add the CoreMail SMTP submission surface: `TCoreMailSubmissionSource` with an optional `ICoreMailSubmission.source`, and an optional `ICoreMailDesiredState.smtp` listener with secret-key-only TLS material, validated by `normalizeCoreMailDesiredState` while an omitted listener keeps existing canonical bytes and digests.
9
+ - Add per-service CoreMail mail statistics with `normalizeCoreMailServiceMailStatistics` and the control-session `coreMailGetServiceMailStatistics` request.
10
+ - Add the dcrouter-side CoreMail gateway peer provisioning requests `listCoreMailGatewayPeers`, `syncCoreMailGatewayPeer` and `deleteCoreMailGatewayPeer`.
11
+ - Widen mail inbound targeting with a `coreMail` target type, an `IMailCoreMailTarget` reference and the matching `IServiceMailInboundConfig.targetType` member.
12
+ - Add the shared strict normalizers `normalizeCoreMailGatewayMessage` and `normalizeCoreMailConnectionInfo` so every gateway peer digests identical envelope and source bytes.
13
+ - Document the routing-handle envelope digest binding on gateway resolve and inbound handoff, and the monotonic, terminal-on-unknown outbound status contract.
14
+
3
15
  ## 2026-09-15 - 30.12.0
4
16
 
5
17
  ### Features
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '30.12.0',
6
+ version: '30.13.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
@@ -14,6 +14,11 @@ export type TCoreMailCredentialVerifierFormat = 'argon2id-v1';
14
14
  export type TCoreMailPartKind = 'text' | 'html' | 'attachment';
15
15
  export type TCoreMailTransferMethod = 'PUT' | 'GET';
16
16
  export type TCoreMailSubmissionState = 'preparing' | 'uploading' | 'ready' | 'accepted' | 'queued' | 'delivering' | 'delivered' | 'deferred' | 'failed' | 'deadLettered';
17
+ /**
18
+ * Entry point that produced an outbound submission. `api` is the authenticated
19
+ * workload TypedRequest surface, `smtp` is the CoreMail submission listener.
20
+ */
21
+ export type TCoreMailSubmissionSource = 'api' | 'smtp';
17
22
  export type TCoreMailInboundDeliveryState = 'pending' | 'fetching' | 'fetched' | 'acknowledged';
18
23
  export type TCoreMailInboundAckOutcome = 'processed' | 'discarded';
19
24
  export type TCoreMailRecipientAction = 'accept' | 'reject' | 'defer' | 'unhandled';
@@ -90,6 +95,8 @@ export interface ICoreMailSubmission {
90
95
  idempotencyKey: string;
91
96
  submissionDigest: TCoreMailSha256;
92
97
  state: TCoreMailSubmissionState;
98
+ /** Entry point that produced this submission. Omitted means an API submission. */
99
+ source?: TCoreMailSubmissionSource;
93
100
  parts: ICoreMailPartStatus[];
94
101
  transportMessageId?: string;
95
102
  attempts: number;
@@ -187,11 +194,36 @@ export interface ICoreMailRuntimeKeyReference {
187
194
  secretKey: string;
188
195
  acceptUntil?: number;
189
196
  }
197
+ export interface ICoreMailSmtpTlsDesiredState {
198
+ /** Keys in CoreMail's resolved runtime secret material holding PEM text, never plaintext values. */
199
+ certificatePemSecretKey: string;
200
+ privateKeyPemSecretKey: string;
201
+ }
202
+ /**
203
+ * Desired state for CoreMail's own SMTP submission listener (MSA).
204
+ *
205
+ * SMTP AUTH uses the binding identity directly: the username is the
206
+ * `bindingId` and the password is any current or retiring credential secret of
207
+ * that binding, so credential rotation windows behave exactly as they do for
208
+ * the workload TypedRequest surface. The listener stays unavailable until the
209
+ * referenced PEM material resolves; an enabled listener without resolvable
210
+ * certificate and private key material never accepts submissions.
211
+ */
212
+ export interface ICoreMailSmtpDesiredState {
213
+ enabled: boolean;
214
+ /** Listener port inside the CoreMail workload. */
215
+ port: number;
216
+ /** Advertised EHLO hostname. */
217
+ hostname: string;
218
+ tls: ICoreMailSmtpTlsDesiredState;
219
+ }
190
220
  export interface ICoreMailDesiredState {
191
221
  schemaVersion: 2;
192
222
  configEpoch: number;
193
223
  bindings: ICoreMailBindingDesiredState[];
194
224
  gateway: ICoreMailGatewayDesiredState;
225
+ /** Optional SMTP submission listener. An omitted listener keeps the API-only surface. */
226
+ smtp?: ICoreMailSmtpDesiredState;
195
227
  cursorKeys: ICoreMailRuntimeKeyReference[];
196
228
  }
197
229
  export interface ICoreMailReplicaIdentity {
@@ -221,6 +253,33 @@ export interface ICoreMailReconciliationStatus {
221
253
  updatedAt: number;
222
254
  errorCode?: TCoreMailErrorCode;
223
255
  }
256
+ export interface ICoreMailOutboundMailCounters {
257
+ submittedApi: number;
258
+ submittedSmtp: number;
259
+ delivered: number;
260
+ deferred: number;
261
+ failed: number;
262
+ deadLettered: number;
263
+ }
264
+ export interface ICoreMailInboundMailCounters {
265
+ received: number;
266
+ acknowledgedProcessed: number;
267
+ acknowledgedDiscarded: number;
268
+ }
269
+ /**
270
+ * Per-service mail counters for one UTC calendar day, reported over the
271
+ * authenticated CoreMail control session.
272
+ */
273
+ export interface ICoreMailServiceMailStatistics {
274
+ tenantId: string;
275
+ serviceId: string;
276
+ bindingId: string;
277
+ /** UTC calendar day, `YYYY-MM-DD`. */
278
+ dayUtc: string;
279
+ outbound: ICoreMailOutboundMailCounters;
280
+ inbound: ICoreMailInboundMailCounters;
281
+ updatedAt: number;
282
+ }
224
283
  export interface ICoreMailRecipientResolution {
225
284
  recipient: string;
226
285
  action: TCoreMailRecipientAction;
@@ -237,6 +296,14 @@ export interface ICoreMailGatewayMessageDescriptor {
237
296
  contentType: 'message/rfc822';
238
297
  };
239
298
  }
299
+ /**
300
+ * dcrouter-reported delivery status for one accepted transport message.
301
+ *
302
+ * `updatedAt` must be monotonic per `transportMessageId`. A
303
+ * `transportMessageId` the gateway can never recognize again must be reported
304
+ * as a terminal `failed` status instead of an error, because CoreMail retries
305
+ * errors indefinitely.
306
+ */
240
307
  export interface ICoreMailGatewayOutboundStatus {
241
308
  transportMessageId: string;
242
309
  state: Extract<TCoreMailSubmissionState, 'accepted' | 'queued' | 'delivering' | 'delivered' | 'deferred' | 'failed' | 'deadLettered'>;
@@ -101,4 +101,4 @@ export const coreMailRuntimeKeys = Object.freeze({
101
101
  controlCredentialSecret: 'COREMAIL_CONTROL_CREDENTIAL_SECRET',
102
102
  gatewayCredentialSecret: 'COREMAIL_GATEWAY_CREDENTIAL',
103
103
  });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL2NvcmVtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFpVUgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUMsbUJBQW1CLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDOUIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJO0lBQ2xDLGFBQWEsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUk7SUFDOUIsYUFBYSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSTtJQUM5QixlQUFlLEVBQUUsRUFBRTtJQUNuQixlQUFlLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJO0lBQ2pDLHdCQUF3QixFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSTtJQUMxQyxnQkFBZ0IsRUFBRSxHQUFHLEdBQUcsSUFBSTtJQUM1QixtQkFBbUIsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUk7SUFDckMsY0FBYyxFQUFFLEdBQUc7SUFDbkIsZUFBZSxFQUFFLEdBQUc7SUFDcEIsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDM0IsV0FBVyxFQUFFLEtBQUs7SUFDbEIseUJBQXlCLEVBQUUsRUFBRTtJQUM3QixrQkFBa0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7SUFDakMsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQ2pDLHVCQUF1QixFQUFFLEVBQUUsR0FBRyxJQUFJO0lBQ2xDLHFCQUFxQixFQUFFLEVBQUUsR0FBRyxJQUFJO0lBQ2hDLHdCQUF3QixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtDQUMvQixDQUFDLENBQUM7QUFFWixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFD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
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL2NvcmVtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUF5WUgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUMsbUJBQW1CLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDOUIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJO0lBQ2xDLGFBQWEsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUk7SUFDOUIsYUFBYSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSTtJQUM5QixlQUFlLEVBQUUsRUFBRTtJQUNuQixlQUFlLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJO0lBQ2pDLHdCQUF3QixFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSTtJQUMxQyxnQkFBZ0IsRUFBRSxHQUFHLEdBQUcsSUFBSTtJQUM1QixtQkFBbUIsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUk7SUFDckMsY0FBYyxFQUFFLEdBQUc7SUFDbkIsZUFBZSxFQUFFLEdBQUc7SUFDcEIsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDM0IsV0FBVyxFQUFFLEtBQUs7SUFDbEIseUJBQXlCLEVBQUUsRUFBRTtJQUM3QixrQkFBa0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7SUFDakMsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQ2pDLHVCQUF1QixFQUFFLEVBQUUsR0FBRyxJQUFJO0lBQ2xDLHFCQUFxQixFQUFFLEVBQUUsR0FBRyxJQUFJO0lBQ2hDLHdCQUF3QixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtDQUMvQixDQUFDLENBQUM7QUFFWixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFD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
@@ -1,4 +1,5 @@
1
- import { type ICoreMailBindingCredentialVerifier, type ICoreMailControlBootstrap, type ICoreMailDesiredState, type ICoreMailDownloadGrant, type ICoreMailEnvelope, type ICoreMailErrorData, type ICoreMailGatewayOutboundStatus, type ICoreMailGatewayPeerDesiredState, type ICoreMailInboundDelivery, type ICoreMailInboundDeliveryPage, type ICoreMailOutboundMessageDescriptor, type ICoreMailRecipientResolution, type ICoreMailRuntimeKeyReference, type ICoreMailReconciliationStatus, type ICoreMailReplicaIdentity, type ICoreMailSubmission, type ICoreMailTransferGrant, type ICoreMailUploadGrant, type TCoreMailCapability, type TCoreMailBindingState, type TCoreMailErrorCode, type TCoreMailSha256, type TCoreMailWorkloadOperation } from './coremail.js';
1
+ import { type ICoreMailBindingCredentialVerifier, type ICoreMailControlBootstrap, type ICoreMailDesiredState, type ICoreMailDownloadGrant, type ICoreMailEnvelope, type ICoreMailErrorData, type ICoreMailGatewayMessageDescriptor, type ICoreMailGatewayOutboundStatus, type ICoreMailGatewayPeerDesiredState, type ICoreMailInboundDelivery, type ICoreMailInboundDeliveryPage, type ICoreMailOutboundMessageDescriptor, type ICoreMailRecipientResolution, type ICoreMailRuntimeKeyReference, type ICoreMailReconciliationStatus, type ICoreMailReplicaIdentity, type ICoreMailServiceMailStatistics, type ICoreMailSubmission, type ICoreMailTransferGrant, type ICoreMailUploadGrant, type TCoreMailCapability, type TCoreMailBindingState, type TCoreMailErrorCode, type TCoreMailSha256, type TCoreMailWorkloadOperation } from './coremail.js';
2
+ import type { IMailConnectionInfo } from './mail.js';
2
3
  export declare const coreMailCanonicalJsonRules: Readonly<{
3
4
  version: 1;
4
5
  encoding: "utf-8";
@@ -29,6 +30,7 @@ export declare const coreMailContractLimits: Readonly<{
29
30
  readonly maximumContentIdBytes: 256;
30
31
  readonly maximumBearerTokenBytes: 1024;
31
32
  readonly maximumRecipientResolutionMessageBytes: 512;
33
+ readonly maximumConnectionInfoFieldBytes: 512;
32
34
  }>;
33
35
  export declare class CoreMailContractError extends Error {
34
36
  readonly code: TCoreMailErrorCode;
@@ -59,3 +61,19 @@ export declare const createCoreMailDesiredStateDigest: (valueArg: unknown) => Pr
59
61
  export declare const verifyCoreMailDesiredStateDigest: (valueArg: unknown, digestArg: unknown) => Promise<boolean>;
60
62
  export declare const normalizeCoreMailControlBootstrap: (valueArg: unknown) => ICoreMailControlBootstrap;
61
63
  export declare const normalizeCoreMailGatewayPeerDesiredState: (valueArg: unknown) => ICoreMailGatewayPeerDesiredState;
64
+ export declare const normalizeCoreMailServiceMailStatistics: (valueArg: unknown, pathArg?: string) => ICoreMailServiceMailStatistics;
65
+ /**
66
+ * Strict gateway message descriptor normalization.
67
+ *
68
+ * CoreMail digests the normalized envelope together with the normalized
69
+ * connection source, so the emitted field set and order is part of the
70
+ * contract and must not change.
71
+ */
72
+ export declare const normalizeCoreMailGatewayMessage: (valueArg: unknown, pathArg?: string) => ICoreMailGatewayMessageDescriptor;
73
+ /**
74
+ * Strict connection-source normalization for gateway resolve and handoff
75
+ * requests. CoreMail binds routing handles to a digest of the normalized
76
+ * envelope and this normalized source, so the emitted field set and order is
77
+ * part of the contract and must not change.
78
+ */
79
+ export declare const normalizeCoreMailConnectionInfo: (valueArg: unknown, pathArg?: string) => IMailConnectionInfo;