@substrat-run/contracts 0.162.0 → 0.164.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.
@@ -0,0 +1,213 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Inbound mail vocabulary (#2611): what a vertical sees of a message somebody mailed to one of its
4
+ * scopes, and what crosses the relay when a scope asks for, rotates or gives up its address.
5
+ *
6
+ * The platform receives on a subdomain of its own (`in.substrat.run`), through Cloudflare Email
7
+ * Routing into the control plane, because a hosted vertical cannot bind an email route. An address
8
+ * is a **capability**: `mail+<slug>-<token>@<domain>`, minted for one scope, delivering into the one
9
+ * operation the vertical declares for it. It is backed by its own `mail-in` connection, so it is
10
+ * revoked, rotated and audited the way every connection is, and delivery is the connection's door
11
+ * (`getConnectorScope`, #97): the event actor is `{ connection }`, never the person who asked for
12
+ * the address.
13
+ *
14
+ * A vertical opts in by declaring a landing in its manifest:
15
+ *
16
+ * ```ts
17
+ * connections: [{ provider: 'mail-in', operation: 'docs/receive-mail', permission: 'docs:receive-mail' }]
18
+ * ```
19
+ *
20
+ * The connection is granted that key on the address's scope, and on nothing else. The entity the
21
+ * message lands as must be an attachment target writable with the same key, since the attachment
22
+ * bytes land as the same connection.
23
+ */
24
+ /** The provider slug a mail-in connection carries. */
25
+ export declare const MAIL_IN_PROVIDER = "mail-in";
26
+ /** The largest raw message accepted, as Email Routing measures it. A bigger one is refused at SMTP time. */
27
+ export declare const MAIL_IN_MAX_MESSAGE_BYTES: number;
28
+ /** The most attachments one message lands. Past it the rest are named on the message and not landed. */
29
+ export declare const MAIL_IN_MAX_ATTACHMENTS = 20;
30
+ /** The most characters of the text body the message change carries; the rest is cut and said to be. */
31
+ export declare const MAIL_IN_MAX_TEXT_CHARS: number;
32
+ /** The most addresses an allowlist holds. */
33
+ export declare const MAIL_IN_MAX_ALLOWLIST = 20;
34
+ /** An address's sender allowlist entry: a whole address, or `@domain` for any address there. */
35
+ export declare const mailInAllowEntry: z.ZodString;
36
+ /** What the platform made of the message's authentication, as Cloudflare stamped it. */
37
+ export declare const mailInAuthResult: z.ZodEnum<{
38
+ fail: "fail";
39
+ none: "none";
40
+ pass: "pass";
41
+ unknown: "unknown";
42
+ }>;
43
+ export type MailInAuthResult = z.infer<typeof mailInAuthResult>;
44
+ /**
45
+ * What a delivery lands through the address's operation, one change per invoke — parsed with this
46
+ * schema on the way out, as `fileSourceChange` is.
47
+ *
48
+ * - `message`: the message arrived. Header metadata and the text body, never bytes. Each attachment
49
+ * is named with its `index`; when the operation answers `{ entity }`, each one's bytes land on
50
+ * that entity and an `attachment` change follows per file. Answer anything else and no bytes land.
51
+ * - `attachment`: one file's bytes landed as `attachment` on the entity the message change named.
52
+ *
53
+ * Delivery is **at least once**, keyed by `messageId` (and `index` within it): an operation upserts,
54
+ * and may see either change twice.
55
+ */
56
+ export declare const mailInChange: z.ZodDiscriminatedUnion<[z.ZodObject<{
57
+ connectionId: z.core.$ZodBranded<z.ZodString, "ConnectionId", "out">;
58
+ messageId: z.ZodString;
59
+ change: z.ZodLiteral<"message">;
60
+ headerMessageId: z.ZodNullable<z.ZodString>;
61
+ to: z.ZodString;
62
+ envelopeFrom: z.ZodString;
63
+ from: z.ZodNullable<z.ZodObject<{
64
+ address: z.ZodString;
65
+ name: z.ZodNullable<z.ZodString>;
66
+ }, z.core.$strip>>;
67
+ replyTo: z.ZodNullable<z.ZodObject<{
68
+ address: z.ZodString;
69
+ name: z.ZodNullable<z.ZodString>;
70
+ }, z.core.$strip>>;
71
+ recipients: z.ZodObject<{
72
+ to: z.ZodArray<z.ZodString>;
73
+ cc: z.ZodArray<z.ZodString>;
74
+ }, z.core.$strip>;
75
+ subject: z.ZodNullable<z.ZodString>;
76
+ date: z.ZodNullable<z.ZodString>;
77
+ inReplyTo: z.ZodNullable<z.ZodString>;
78
+ references: z.ZodArray<z.ZodString>;
79
+ text: z.ZodNullable<z.ZodString>;
80
+ textTruncated: z.ZodBoolean;
81
+ hasHtml: z.ZodBoolean;
82
+ authentication: z.ZodObject<{
83
+ spf: z.ZodEnum<{
84
+ fail: "fail";
85
+ none: "none";
86
+ pass: "pass";
87
+ unknown: "unknown";
88
+ }>;
89
+ dkim: z.ZodEnum<{
90
+ fail: "fail";
91
+ none: "none";
92
+ pass: "pass";
93
+ unknown: "unknown";
94
+ }>;
95
+ dmarc: z.ZodEnum<{
96
+ fail: "fail";
97
+ none: "none";
98
+ pass: "pass";
99
+ unknown: "unknown";
100
+ }>;
101
+ }, z.core.$strip>;
102
+ attachments: z.ZodArray<z.ZodObject<{
103
+ index: z.ZodNumber;
104
+ filename: z.ZodString;
105
+ contentType: z.ZodString;
106
+ size: z.ZodNumber;
107
+ lands: z.ZodBoolean;
108
+ }, z.core.$strip>>;
109
+ receivedAt: z.core.$ZodBranded<z.ZodString, "Instant", "out">;
110
+ }, z.core.$strip>, z.ZodObject<{
111
+ connectionId: z.core.$ZodBranded<z.ZodString, "ConnectionId", "out">;
112
+ messageId: z.ZodString;
113
+ change: z.ZodLiteral<"attachment">;
114
+ index: z.ZodNumber;
115
+ attachment: z.ZodObject<{
116
+ id: z.ZodString;
117
+ filename: z.ZodString;
118
+ contentType: z.ZodString;
119
+ size: z.ZodNumber;
120
+ sha256: z.ZodString;
121
+ }, z.core.$strip>;
122
+ }, z.core.$strip>], "change">;
123
+ export type MailInChange = z.infer<typeof mailInChange>;
124
+ /**
125
+ * What the operation answers to a `message` change: the entity its attachments land on. Parsed by
126
+ * the platform, not the vertical, so an answer carrying more than `entity` is accepted.
127
+ */
128
+ export declare const mailInMessageAnswer: z.ZodObject<{
129
+ entity: z.ZodOptional<z.ZodNullable<z.ZodObject<{
130
+ entityType: z.ZodString;
131
+ entityId: z.ZodString;
132
+ }, z.core.$strip>>>;
133
+ }, z.core.$loose>;
134
+ export type MailInMessageAnswer = z.infer<typeof mailInMessageAnswer>;
135
+ /** One scope's address, as the relay and the dashboard show it. */
136
+ export declare const mailInAddress: z.ZodObject<{
137
+ address: z.ZodString;
138
+ connectionId: z.core.$ZodBranded<z.ZodString, "ConnectionId", "out">;
139
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
140
+ scopeId: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
141
+ vertical: z.ZodString;
142
+ operation: z.ZodString;
143
+ permission: z.ZodString;
144
+ allowlist: z.ZodArray<z.ZodString>;
145
+ createdAt: z.core.$ZodBranded<z.ZodString, "Instant", "out">;
146
+ createdBy: z.ZodString;
147
+ stats: z.ZodObject<{
148
+ received: z.ZodNumber;
149
+ delivered: z.ZodNumber;
150
+ rejected: z.ZodNumber;
151
+ deadLettered: z.ZodNumber;
152
+ pending: z.ZodNumber;
153
+ lastReceivedAt: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "Instant", "out">>;
154
+ lastRejectedAt: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "Instant", "out">>;
155
+ lastRejectReason: z.ZodNullable<z.ZodString>;
156
+ }, z.core.$strip>;
157
+ }, z.core.$strip>;
158
+ export type MailInAddress = z.infer<typeof mailInAddress>;
159
+ /**
160
+ * The relay a vertical's worker calls (`/internal/mail-in/address`) for its own scope's address.
161
+ * `get` reads; `request` mints one when the scope has none (and answers the live one when it has);
162
+ * `rotate` replaces the address, carrying the allowlist and any mail still in flight; `revoke`
163
+ * gives it up. `allowlist` on `request` or `rotate` replaces the list; absent keeps it.
164
+ */
165
+ export declare const mailInRelayRequest: z.ZodObject<{
166
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
167
+ scopeId: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
168
+ action: z.ZodEnum<{
169
+ get: "get";
170
+ request: "request";
171
+ revoke: "revoke";
172
+ rotate: "rotate";
173
+ }>;
174
+ createdBy: z.ZodOptional<z.ZodString>;
175
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
176
+ }, z.core.$strip>;
177
+ /**
178
+ * The request's type, narrowed to what the relay admits: `createdBy` may be left out of a `get` only.
179
+ * The schema stays one object so the relay answers a missing `createdBy` in its own words.
180
+ */
181
+ export type MailInRelayRequest = Omit<z.input<typeof mailInRelayRequest>, 'action' | 'createdBy'> & ({
182
+ action: 'get';
183
+ createdBy?: string;
184
+ } | {
185
+ action: 'request' | 'rotate' | 'revoke';
186
+ createdBy: string;
187
+ });
188
+ export declare const mailInRelayResult: z.ZodObject<{
189
+ address: z.ZodNullable<z.ZodObject<{
190
+ address: z.ZodString;
191
+ connectionId: z.core.$ZodBranded<z.ZodString, "ConnectionId", "out">;
192
+ tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
193
+ scopeId: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
194
+ vertical: z.ZodString;
195
+ operation: z.ZodString;
196
+ permission: z.ZodString;
197
+ allowlist: z.ZodArray<z.ZodString>;
198
+ createdAt: z.core.$ZodBranded<z.ZodString, "Instant", "out">;
199
+ createdBy: z.ZodString;
200
+ stats: z.ZodObject<{
201
+ received: z.ZodNumber;
202
+ delivered: z.ZodNumber;
203
+ rejected: z.ZodNumber;
204
+ deadLettered: z.ZodNumber;
205
+ pending: z.ZodNumber;
206
+ lastReceivedAt: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "Instant", "out">>;
207
+ lastRejectedAt: z.ZodNullable<z.core.$ZodBranded<z.ZodString, "Instant", "out">>;
208
+ lastRejectReason: z.ZodNullable<z.ZodString>;
209
+ }, z.core.$strip>;
210
+ }, z.core.$strip>>;
211
+ }, z.core.$strip>;
212
+ export type MailInRelayResult = z.infer<typeof mailInRelayResult>;
213
+ //# sourceMappingURL=mail-in.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-in.d.ts","sourceRoot":"","sources":["../src/mail-in.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,4GAA4G;AAC5G,eAAO,MAAM,yBAAyB,QAAmB,CAAC;AAC1D,wGAAwG;AACxG,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,uGAAuG;AACvG,eAAO,MAAM,sBAAsB,QAAY,CAAC;AAChD,6CAA6C;AAC7C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,aAKuD,CAAC;AAErF,wFAAwF;AACxF,eAAO,MAAM,gBAAgB;;;;;EAA8C,CAAC;AAC5E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAchE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA8CvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;iBAAsE,CAAC;AACvG,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,mEAAmE;AACnE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;iBAsBxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAO7B,CAAC;AACH;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,GAC/F,CAAC;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3G,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;iBAAkD,CAAC;AACjF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,158 @@
1
+ import { z } from 'zod';
2
+ import { attachmentRecord } from './attachments.js';
3
+ import { connectionId } from './connections.js';
4
+ import { entityRef } from './events.js';
5
+ import { instant, scopeId, tenantId } from './ids.js';
6
+ /**
7
+ * Inbound mail vocabulary (#2611): what a vertical sees of a message somebody mailed to one of its
8
+ * scopes, and what crosses the relay when a scope asks for, rotates or gives up its address.
9
+ *
10
+ * The platform receives on a subdomain of its own (`in.substrat.run`), through Cloudflare Email
11
+ * Routing into the control plane, because a hosted vertical cannot bind an email route. An address
12
+ * is a **capability**: `mail+<slug>-<token>@<domain>`, minted for one scope, delivering into the one
13
+ * operation the vertical declares for it. It is backed by its own `mail-in` connection, so it is
14
+ * revoked, rotated and audited the way every connection is, and delivery is the connection's door
15
+ * (`getConnectorScope`, #97): the event actor is `{ connection }`, never the person who asked for
16
+ * the address.
17
+ *
18
+ * A vertical opts in by declaring a landing in its manifest:
19
+ *
20
+ * ```ts
21
+ * connections: [{ provider: 'mail-in', operation: 'docs/receive-mail', permission: 'docs:receive-mail' }]
22
+ * ```
23
+ *
24
+ * The connection is granted that key on the address's scope, and on nothing else. The entity the
25
+ * message lands as must be an attachment target writable with the same key, since the attachment
26
+ * bytes land as the same connection.
27
+ */
28
+ /** The provider slug a mail-in connection carries. */
29
+ export const MAIL_IN_PROVIDER = 'mail-in';
30
+ /** The largest raw message accepted, as Email Routing measures it. A bigger one is refused at SMTP time. */
31
+ export const MAIL_IN_MAX_MESSAGE_BYTES = 25 * 1024 * 1024;
32
+ /** The most attachments one message lands. Past it the rest are named on the message and not landed. */
33
+ export const MAIL_IN_MAX_ATTACHMENTS = 20;
34
+ /** The most characters of the text body the message change carries; the rest is cut and said to be. */
35
+ export const MAIL_IN_MAX_TEXT_CHARS = 64 * 1024;
36
+ /** The most addresses an allowlist holds. */
37
+ export const MAIL_IN_MAX_ALLOWLIST = 20;
38
+ /** An address's sender allowlist entry: a whole address, or `@domain` for any address there. */
39
+ export const mailInAllowEntry = z
40
+ .string()
41
+ .trim()
42
+ .toLowerCase()
43
+ .max(254)
44
+ .regex(/^([^\s@]+@[^\s@]+\.[^\s@]+|@[^\s@]+\.[^\s@]+)$/, 'an address, or @domain');
45
+ /** What the platform made of the message's authentication, as Cloudflare stamped it. */
46
+ export const mailInAuthResult = z.enum(['pass', 'fail', 'none', 'unknown']);
47
+ const mailbox = z.object({ address: z.string(), name: z.string().nullable() });
48
+ const commonChange = {
49
+ /** The mail-in connection the address is — the actor of everything the delivery writes. */
50
+ connectionId,
51
+ /**
52
+ * The platform's id for this message: the hash it is deduplicated on (its `Message-ID`, or its
53
+ * bytes when it has none). A landing operation keys on it, since delivery is at least once.
54
+ */
55
+ messageId: z.string().min(1),
56
+ };
57
+ /**
58
+ * What a delivery lands through the address's operation, one change per invoke — parsed with this
59
+ * schema on the way out, as `fileSourceChange` is.
60
+ *
61
+ * - `message`: the message arrived. Header metadata and the text body, never bytes. Each attachment
62
+ * is named with its `index`; when the operation answers `{ entity }`, each one's bytes land on
63
+ * that entity and an `attachment` change follows per file. Answer anything else and no bytes land.
64
+ * - `attachment`: one file's bytes landed as `attachment` on the entity the message change named.
65
+ *
66
+ * Delivery is **at least once**, keyed by `messageId` (and `index` within it): an operation upserts,
67
+ * and may see either change twice.
68
+ */
69
+ export const mailInChange = z.discriminatedUnion('change', [
70
+ z.object({
71
+ change: z.literal('message'),
72
+ ...commonChange,
73
+ /** The message's own `Message-ID` header, as sent. */
74
+ headerMessageId: z.string().nullable(),
75
+ /** The address it was delivered to — the scope's mail-in address. */
76
+ to: z.string(),
77
+ /** The envelope sender (`MAIL FROM`), which a forwarder rewrites. */
78
+ envelopeFrom: z.string(),
79
+ /** The `From:` header. */
80
+ from: mailbox.nullable(),
81
+ replyTo: mailbox.nullable(),
82
+ /**
83
+ * Who the message was addressed to, as its `To:` and `Cc:` headers say — the sender's text,
84
+ * lowercased addresses only. Distinct from `to`, which is the address it was delivered to.
85
+ */
86
+ recipients: z.object({ to: z.array(z.string()), cc: z.array(z.string()) }),
87
+ subject: z.string().nullable(),
88
+ /** The `Date:` header, as an instant when it parses. */
89
+ date: z.string().nullable(),
90
+ inReplyTo: z.string().nullable(),
91
+ references: z.array(z.string()),
92
+ text: z.string().nullable(),
93
+ textTruncated: z.boolean(),
94
+ /** Whether an HTML body came with it. Its markup is not carried. */
95
+ hasHtml: z.boolean(),
96
+ authentication: z.object({ spf: mailInAuthResult, dkim: mailInAuthResult, dmarc: mailInAuthResult }),
97
+ attachments: z.array(z.object({
98
+ index: z.number().int().nonnegative(),
99
+ filename: z.string(),
100
+ contentType: z.string(),
101
+ size: z.number().int().nonnegative(),
102
+ /** False past {@link MAIL_IN_MAX_ATTACHMENTS}: named here, never landed. */
103
+ lands: z.boolean(),
104
+ })),
105
+ receivedAt: instant,
106
+ }),
107
+ z.object({
108
+ change: z.literal('attachment'),
109
+ ...commonChange,
110
+ index: z.number().int().nonnegative(),
111
+ attachment: attachmentRecord.pick({ id: true, filename: true, contentType: true, size: true, sha256: true }),
112
+ }),
113
+ ]);
114
+ /**
115
+ * What the operation answers to a `message` change: the entity its attachments land on. Parsed by
116
+ * the platform, not the vertical, so an answer carrying more than `entity` is accepted.
117
+ */
118
+ export const mailInMessageAnswer = z.object({ entity: entityRef.nullable().optional() }).passthrough();
119
+ /** One scope's address, as the relay and the dashboard show it. */
120
+ export const mailInAddress = z.object({
121
+ address: z.string(),
122
+ connectionId,
123
+ tenantId,
124
+ scopeId,
125
+ vertical: z.string(),
126
+ operation: z.string(),
127
+ permission: z.string(),
128
+ allowlist: z.array(z.string()),
129
+ createdAt: instant,
130
+ createdBy: z.string(),
131
+ /** Counts only — never an address the mail came from. */
132
+ stats: z.object({
133
+ received: z.number().int().nonnegative(),
134
+ delivered: z.number().int().nonnegative(),
135
+ rejected: z.number().int().nonnegative(),
136
+ deadLettered: z.number().int().nonnegative(),
137
+ pending: z.number().int().nonnegative(),
138
+ lastReceivedAt: instant.nullable(),
139
+ lastRejectedAt: instant.nullable(),
140
+ lastRejectReason: z.string().nullable(),
141
+ }),
142
+ });
143
+ /**
144
+ * The relay a vertical's worker calls (`/internal/mail-in/address`) for its own scope's address.
145
+ * `get` reads; `request` mints one when the scope has none (and answers the live one when it has);
146
+ * `rotate` replaces the address, carrying the allowlist and any mail still in flight; `revoke`
147
+ * gives it up. `allowlist` on `request` or `rotate` replaces the list; absent keeps it.
148
+ */
149
+ export const mailInRelayRequest = z.object({
150
+ tenantId,
151
+ scopeId,
152
+ action: z.enum(['get', 'request', 'rotate', 'revoke']),
153
+ /** The principal whose in-scope `ctx.check` authorized the act. Required for every action but `get`. */
154
+ createdBy: z.string().min(1).optional(),
155
+ allowlist: z.array(mailInAllowEntry).max(MAIL_IN_MAX_ALLOWLIST).optional(),
156
+ });
157
+ export const mailInRelayResult = z.object({ address: mailInAddress.nullable() });
158
+ //# sourceMappingURL=mail-in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-in.js","sourceRoot":"","sources":["../src/mail-in.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,24 @@ export declare const vertical: z.ZodObject<{
66
66
  ownerGrants: z.ZodOptional<z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>>;
67
67
  provides: z.ZodOptional<z.ZodArray<z.ZodString>>;
68
68
  requires: z.ZodOptional<z.ZodArray<z.ZodString>>;
69
+ connectors: z.ZodOptional<z.ZodArray<z.ZodObject<{
70
+ provider: z.ZodString;
71
+ label: z.ZodString;
72
+ description: z.ZodString;
73
+ monogram: z.ZodOptional<z.ZodString>;
74
+ fields: z.ZodArray<z.ZodObject<{
75
+ key: z.ZodString;
76
+ label: z.ZodString;
77
+ secret: z.ZodBoolean;
78
+ placeholder: z.ZodOptional<z.ZodString>;
79
+ optional: z.ZodOptional<z.ZodLiteral<true>>;
80
+ }, z.core.$strict>>;
81
+ grants: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
82
+ events: z.ZodArray<z.ZodString>;
83
+ sweeps: z.ZodBoolean;
84
+ binds: z.ZodBoolean;
85
+ dispatches: z.ZodBoolean;
86
+ }, z.core.$strict>>>;
69
87
  surfaces: z.ZodOptional<z.ZodArray<z.ZodObject<{
70
88
  name: z.ZodString;
71
89
  label: z.ZodString;
@@ -120,6 +138,24 @@ export declare const registerVerticalInput: z.ZodObject<{
120
138
  ownerGrants: z.ZodOptional<z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>>;
121
139
  provides: z.ZodOptional<z.ZodArray<z.ZodString>>;
122
140
  requires: z.ZodOptional<z.ZodArray<z.ZodString>>;
141
+ connectors: z.ZodOptional<z.ZodArray<z.ZodObject<{
142
+ provider: z.ZodString;
143
+ label: z.ZodString;
144
+ description: z.ZodString;
145
+ monogram: z.ZodOptional<z.ZodString>;
146
+ fields: z.ZodArray<z.ZodObject<{
147
+ key: z.ZodString;
148
+ label: z.ZodString;
149
+ secret: z.ZodBoolean;
150
+ placeholder: z.ZodOptional<z.ZodString>;
151
+ optional: z.ZodOptional<z.ZodLiteral<true>>;
152
+ }, z.core.$strict>>;
153
+ grants: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
154
+ events: z.ZodArray<z.ZodString>;
155
+ sweeps: z.ZodBoolean;
156
+ binds: z.ZodBoolean;
157
+ dispatches: z.ZodBoolean;
158
+ }, z.core.$strict>>>;
123
159
  surfaces: z.ZodOptional<z.ZodArray<z.ZodObject<{
124
160
  name: z.ZodString;
125
161
  label: z.ZodString;
@@ -334,7 +370,8 @@ export type BindAcknowledgement = z.infer<typeof bindAcknowledgement>;
334
370
  /**
335
371
  * #2333: the `reason` on the promote gate's two refusals of a review binding (both
336
372
  * `precondition_failed`): `stale`, the binding's base or digest no longer holds, and `unbound`, a
337
- * migration acknowledgement sent without one. A client answers either by reading the review again.
373
+ * permission or migration acknowledgement sent without one. A client answers either by reading
374
+ * the review again.
338
375
  */
339
376
  export declare const PROMOTE_REVIEW_REASONS: {
340
377
  readonly stale: 'promote_review_stale';
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/registry.js CHANGED
@@ -3,6 +3,7 @@ import { instant, permissionKey, tenantId, verticalSlug } from './ids.js';
3
3
  import { envVarSpec, capability, lifecycleHold } from './manifest.js';
4
4
  import { declaredSurface } from './routing.js';
5
5
  import { platformScriptCollision, platformScriptRefusal } from './script-names.js';
6
+ import { verticalConnectorDeclarations } from './vertical-connector.js';
6
7
  /**
7
8
  * The vertical + version registry (#31 step 1; D-33's milestone one).
8
9
  *
@@ -66,6 +67,12 @@ export const vertical = z.object({
66
67
  ownerGrants: z.array(permissionKey).optional(),
67
68
  provides: z.array(capability).optional(),
68
69
  requires: z.array(capability).optional(),
70
+ /**
71
+ * The vertical-defined connectors its latest push declared (vertical-connectors.md §7.2), as
72
+ * `requires` is carried: what the dashboard renders a credential form from. The platform RUNS a
73
+ * connector from the running version's stored manifest, never from this. Optional and additive.
74
+ */
75
+ connectors: verticalConnectorDeclarations.optional(),
69
76
  /**
70
77
  * The surfaces the vertical declares it serves (K-26 multi-surface; labels only —
71
78
  * nothing platform-side branches on them). Rides the same install_spec bag as the
@@ -176,7 +183,7 @@ export const verticalServingState = z.object({
176
183
  migrationTag: z.string().min(1),
177
184
  });
178
185
  export const registerVerticalInput = vertical
179
- .pick({ slug: true, name: true, source: true, envSpec: true, entitlements: true, ownerGrants: true, provides: true, requires: true, provisions: true, sendsEmail: true, lifecycle: true, surfaces: true, listed: true })
186
+ .pick({ slug: true, name: true, source: true, envSpec: true, entitlements: true, ownerGrants: true, provides: true, requires: true, connectors: true, provisions: true, sendsEmail: true, lifecycle: true, surfaces: true, listed: true })
180
187
  .extend({
181
188
  /**
182
189
  * #1923: a slug that would deploy under one of the platform's own script names is refused
@@ -389,9 +396,8 @@ export const promotionAcknowledgement = z.object({
389
396
  * The host recomputes the digest from its own stored rows and refuses (`precondition_failed`,
390
397
  * reason `promote_review_stale`) when the channel no longer points at `base` or the digest
391
398
  * differs. The sent digest is only ever compared, never read as the diff. A consumed
392
- * `migrationChange` without a binding is refused too (`promote_review_unbound`); a
393
- * permission-only acknowledgement without one is still honoured, so an older client keeps
394
- * promoting wherever no migration — and so no declared data loss — is involved.
399
+ * `permissionChange` or `migrationChange` without a binding is refused too
400
+ * (`promote_review_unbound`).
395
401
  */
396
402
  review: z
397
403
  .object({
@@ -411,7 +417,8 @@ export const bindAcknowledgement = promotionAcknowledgement.pick({ exportBreak:
411
417
  /**
412
418
  * #2333: the `reason` on the promote gate's two refusals of a review binding (both
413
419
  * `precondition_failed`): `stale`, the binding's base or digest no longer holds, and `unbound`, a
414
- * migration acknowledgement sent without one. A client answers either by reading the review again.
420
+ * permission or migration acknowledgement sent without one. A client answers either by reading
421
+ * the review again.
415
422
  */
416
423
  export const PROMOTE_REVIEW_REASONS = {
417
424
  stale: 'promote_review_stale',
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}