@cat-factory/contracts 0.274.0 → 0.275.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/dist/accountSettings.d.ts +156 -22
- package/dist/accountSettings.d.ts.map +1 -1
- package/dist/accountSettings.js +48 -5
- package/dist/accountSettings.js.map +1 -1
- package/dist/errors.d.ts +16 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/notification-routing.d.ts +100 -0
- package/dist/notification-routing.d.ts.map +1 -0
- package/dist/notification-routing.js +155 -0
- package/dist/notification-routing.js.map +1 -0
- package/dist/routes/accounts.d.ts +81 -15
- package/dist/routes/accounts.d.ts.map +1 -1
- package/dist/routes/notifications.d.ts +76 -0
- package/dist/routes/notifications.d.ts.map +1 -1
- package/dist/routes/notifications.js +15 -0
- package/dist/routes/notifications.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,10 +3,18 @@ import * as v from 'valibot';
|
|
|
3
3
|
* Where an account's binary artifacts (UI screenshots + reference designs) are stored.
|
|
4
4
|
* `off` disables storage (the visual-confirmation gate passes through). `fs`/`s3`/`db` are
|
|
5
5
|
* Node/local only (S3 is deliberately not offered on the Worker — the AWS SDK does not belong
|
|
6
|
-
* in the Worker bundle); `r2` is Cloudflare only.
|
|
7
|
-
*
|
|
6
|
+
* in the Worker bundle); `r2` is Cloudflare only. `custom` selects a store the DEPLOYMENT
|
|
7
|
+
* defined in code and registered on the app-owned `BinaryStoreRegistry`, named by
|
|
8
|
+
* {@link contentStorageCustomConfigSchema}. Which of these a runtime actually supports (and
|
|
9
|
+
* which custom stores it registers) is surfaced to the UI via
|
|
10
|
+
* {@link contentStorageCapabilitySchema}.
|
|
11
|
+
*
|
|
12
|
+
* The member is `custom` rather than the store's own id so this stays a CLOSED picklist: every
|
|
13
|
+
* reader of a backend (the UI's label map, the resolver's branch) is exhaustive over it, and a
|
|
14
|
+
* deployment's store ids are by definition unknown to them. Which store is a second question,
|
|
15
|
+
* asked of the registry, and answered in the config beside it.
|
|
8
16
|
*/
|
|
9
|
-
export declare const contentStorageBackendSchema: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
17
|
+
export declare const contentStorageBackendSchema: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
10
18
|
export type ContentStorageBackend = v.InferOutput<typeof contentStorageBackendSchema>;
|
|
11
19
|
/** Non-secret S3 connection settings (the access keys live in the sealed secrets blob). */
|
|
12
20
|
export declare const contentStorageS3ConfigSchema: v.ObjectSchema<{
|
|
@@ -25,9 +33,19 @@ export declare const contentStorageFsConfigSchema: v.ObjectSchema<{
|
|
|
25
33
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
26
34
|
}, undefined>;
|
|
27
35
|
export type ContentStorageFsConfig = v.InferOutput<typeof contentStorageFsConfigSchema>;
|
|
36
|
+
/**
|
|
37
|
+
* Which DEPLOYMENT-REGISTERED store the `custom` backend means. The id is the one the deployment
|
|
38
|
+
* registered on its `BinaryStoreRegistry`; the platform knows nothing else about it, because
|
|
39
|
+
* everything else about a custom store (its client, its credentials, its addressing) lives in
|
|
40
|
+
* the deployment's own code rather than in per-account settings.
|
|
41
|
+
*/
|
|
42
|
+
export declare const contentStorageCustomConfigSchema: v.ObjectSchema<{
|
|
43
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
44
|
+
}, undefined>;
|
|
45
|
+
export type ContentStorageCustomConfig = v.InferOutput<typeof contentStorageCustomConfigSchema>;
|
|
28
46
|
/** Non-secret content-storage config: which backend + its non-secret connection settings. */
|
|
29
|
-
export declare const contentStorageConfigSchema: v.ObjectSchema<{
|
|
30
|
-
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
47
|
+
export declare const contentStorageConfigSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
48
|
+
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
31
49
|
readonly fs: v.OptionalSchema<v.ObjectSchema<{
|
|
32
50
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
33
51
|
}, undefined>, undefined>;
|
|
@@ -41,7 +59,25 @@ export declare const contentStorageConfigSchema: v.ObjectSchema<{
|
|
|
41
59
|
/** Force path-style addressing (needed by most S3-compatible stores). */
|
|
42
60
|
readonly forcePathStyle: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
43
61
|
}, undefined>, undefined>;
|
|
44
|
-
|
|
62
|
+
readonly custom: v.OptionalSchema<v.ObjectSchema<{
|
|
63
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
64
|
+
}, undefined>, undefined>;
|
|
65
|
+
}, undefined>, v.CheckAction<{
|
|
66
|
+
backend: "custom" | "db" | "fs" | "off" | "r2" | "s3";
|
|
67
|
+
fs?: {
|
|
68
|
+
basePath?: string | undefined;
|
|
69
|
+
} | undefined;
|
|
70
|
+
s3?: {
|
|
71
|
+
region: string;
|
|
72
|
+
bucket: string;
|
|
73
|
+
prefix?: string | undefined;
|
|
74
|
+
endpoint?: string | undefined;
|
|
75
|
+
forcePathStyle?: boolean | undefined;
|
|
76
|
+
} | undefined;
|
|
77
|
+
custom?: {
|
|
78
|
+
storeId: string;
|
|
79
|
+
} | undefined;
|
|
80
|
+
}, "Select which registered store the custom content-storage backend means.">]>;
|
|
45
81
|
export type ContentStorageConfig = v.InferOutput<typeof contentStorageConfigSchema>;
|
|
46
82
|
/**
|
|
47
83
|
* Non-secret per-account config. Holds the content-storage backend selection (the S3 access
|
|
@@ -49,8 +85,8 @@ export type ContentStorageConfig = v.InferOutput<typeof contentStorageConfigSche
|
|
|
49
85
|
* non-secret tuning can be added without a migration.
|
|
50
86
|
*/
|
|
51
87
|
export declare const accountSettingsConfigSchema: v.ObjectSchema<{
|
|
52
|
-
readonly contentStorage: v.OptionalSchema<v.ObjectSchema<{
|
|
53
|
-
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
88
|
+
readonly contentStorage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
89
|
+
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
54
90
|
readonly fs: v.OptionalSchema<v.ObjectSchema<{
|
|
55
91
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
56
92
|
}, undefined>, undefined>;
|
|
@@ -64,7 +100,25 @@ export declare const accountSettingsConfigSchema: v.ObjectSchema<{
|
|
|
64
100
|
/** Force path-style addressing (needed by most S3-compatible stores). */
|
|
65
101
|
readonly forcePathStyle: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
66
102
|
}, undefined>, undefined>;
|
|
67
|
-
|
|
103
|
+
readonly custom: v.OptionalSchema<v.ObjectSchema<{
|
|
104
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
105
|
+
}, undefined>, undefined>;
|
|
106
|
+
}, undefined>, v.CheckAction<{
|
|
107
|
+
backend: "custom" | "db" | "fs" | "off" | "r2" | "s3";
|
|
108
|
+
fs?: {
|
|
109
|
+
basePath?: string | undefined;
|
|
110
|
+
} | undefined;
|
|
111
|
+
s3?: {
|
|
112
|
+
region: string;
|
|
113
|
+
bucket: string;
|
|
114
|
+
prefix?: string | undefined;
|
|
115
|
+
endpoint?: string | undefined;
|
|
116
|
+
forcePathStyle?: boolean | undefined;
|
|
117
|
+
} | undefined;
|
|
118
|
+
custom?: {
|
|
119
|
+
storeId: string;
|
|
120
|
+
} | undefined;
|
|
121
|
+
}, "Select which registered store the custom content-storage backend means.">]>, undefined>;
|
|
68
122
|
/**
|
|
69
123
|
* Account-wide model-family allow/block policy (see {@link modelFamilyPolicySchema}).
|
|
70
124
|
* Absent / `off` ⇒ no restriction. Only settable on runtimes that support it
|
|
@@ -231,8 +285,8 @@ export declare function parseAccountSettingsSecrets(raw: unknown): AccountSettin
|
|
|
231
285
|
*/
|
|
232
286
|
export declare const updateAccountSettingsSchema: v.ObjectSchema<{
|
|
233
287
|
readonly config: v.OptionalSchema<v.ObjectSchema<{
|
|
234
|
-
readonly contentStorage: v.OptionalSchema<v.ObjectSchema<{
|
|
235
|
-
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
288
|
+
readonly contentStorage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
289
|
+
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
236
290
|
readonly fs: v.OptionalSchema<v.ObjectSchema<{
|
|
237
291
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
238
292
|
}, undefined>, undefined>;
|
|
@@ -246,7 +300,25 @@ export declare const updateAccountSettingsSchema: v.ObjectSchema<{
|
|
|
246
300
|
/** Force path-style addressing (needed by most S3-compatible stores). */
|
|
247
301
|
readonly forcePathStyle: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
248
302
|
}, undefined>, undefined>;
|
|
249
|
-
|
|
303
|
+
readonly custom: v.OptionalSchema<v.ObjectSchema<{
|
|
304
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
305
|
+
}, undefined>, undefined>;
|
|
306
|
+
}, undefined>, v.CheckAction<{
|
|
307
|
+
backend: "custom" | "db" | "fs" | "off" | "r2" | "s3";
|
|
308
|
+
fs?: {
|
|
309
|
+
basePath?: string | undefined;
|
|
310
|
+
} | undefined;
|
|
311
|
+
s3?: {
|
|
312
|
+
region: string;
|
|
313
|
+
bucket: string;
|
|
314
|
+
prefix?: string | undefined;
|
|
315
|
+
endpoint?: string | undefined;
|
|
316
|
+
forcePathStyle?: boolean | undefined;
|
|
317
|
+
} | undefined;
|
|
318
|
+
custom?: {
|
|
319
|
+
storeId: string;
|
|
320
|
+
} | undefined;
|
|
321
|
+
}, "Select which registered store the custom content-storage backend means.">]>, undefined>;
|
|
250
322
|
/**
|
|
251
323
|
* Account-wide model-family allow/block policy (see {@link modelFamilyPolicySchema}).
|
|
252
324
|
* Absent / `off` ⇒ no restriction. Only settable on runtimes that support it
|
|
@@ -347,13 +419,20 @@ export type UpdateAccountSettingsInput = v.InferOutput<typeof updateAccountSetti
|
|
|
347
419
|
/** Non-secret content-storage presence/status for display — NEVER secret values. */
|
|
348
420
|
export declare const contentStorageSummarySchema: v.ObjectSchema<{
|
|
349
421
|
/** The explicitly-selected backend, or null when the account uses the runtime default. */
|
|
350
|
-
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
422
|
+
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
351
423
|
/** Configured S3 bucket (non-secret), when the s3 backend is selected. */
|
|
352
424
|
readonly bucket: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
353
425
|
/** Configured filesystem base path (non-secret), when the fs backend is selected. */
|
|
354
426
|
readonly basePath: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
355
427
|
/** Whether S3 access keys are stored (the keys themselves are never returned). */
|
|
356
428
|
readonly s3CredentialsConfigured: v.BooleanSchema<undefined>;
|
|
429
|
+
/**
|
|
430
|
+
* The deployment-registered store id, when the `custom` backend is selected. Carried in the
|
|
431
|
+
* summary rather than derived from `backend` alone because "custom" names nothing a reader can
|
|
432
|
+
* check: an account pointed at a store this build no longer registers looks identical to a
|
|
433
|
+
* working one until the id itself is on screen beside the registered set.
|
|
434
|
+
*/
|
|
435
|
+
readonly customStoreId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
357
436
|
}, undefined>;
|
|
358
437
|
export type ContentStorageSummary = v.InferOutput<typeof contentStorageSummarySchema>;
|
|
359
438
|
/** Non-secret presence/status for display — NEVER secret values. */
|
|
@@ -364,13 +443,20 @@ export declare const accountSettingsSummarySchema: v.ObjectSchema<{
|
|
|
364
443
|
readonly webSearch: v.NullableSchema<v.PicklistSchema<["brave", "searxng"], undefined>, undefined>;
|
|
365
444
|
readonly contentStorage: v.ObjectSchema<{
|
|
366
445
|
/** The explicitly-selected backend, or null when the account uses the runtime default. */
|
|
367
|
-
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
446
|
+
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
368
447
|
/** Configured S3 bucket (non-secret), when the s3 backend is selected. */
|
|
369
448
|
readonly bucket: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
370
449
|
/** Configured filesystem base path (non-secret), when the fs backend is selected. */
|
|
371
450
|
readonly basePath: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
372
451
|
/** Whether S3 access keys are stored (the keys themselves are never returned). */
|
|
373
452
|
readonly s3CredentialsConfigured: v.BooleanSchema<undefined>;
|
|
453
|
+
/**
|
|
454
|
+
* The deployment-registered store id, when the `custom` backend is selected. Carried in the
|
|
455
|
+
* summary rather than derived from `backend` alone because "custom" names nothing a reader can
|
|
456
|
+
* check: an account pointed at a store this build no longer registers looks identical to a
|
|
457
|
+
* working one until the id itself is on screen beside the registered set.
|
|
458
|
+
*/
|
|
459
|
+
readonly customStoreId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
374
460
|
}, undefined>;
|
|
375
461
|
}, undefined>;
|
|
376
462
|
export type AccountSettingsSummary = v.InferOutput<typeof accountSettingsSummarySchema>;
|
|
@@ -380,15 +466,27 @@ export type AccountSettingsSummary = v.InferOutput<typeof accountSettingsSummary
|
|
|
380
466
|
* on Node/local, `r2` on Cloudflare) and shows the effective default.
|
|
381
467
|
*/
|
|
382
468
|
export declare const contentStorageCapabilitySchema: v.ObjectSchema<{
|
|
383
|
-
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
384
|
-
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
469
|
+
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
470
|
+
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
471
|
+
/**
|
|
472
|
+
* The stores THIS process registered in code, each selectable as `backend: 'custom'` with its
|
|
473
|
+
* id. Empty on a deployment that registers none, which is why `custom` appears in
|
|
474
|
+
* {@link supportedBackends} only when this list does not: a picker entry leading to an empty
|
|
475
|
+
* list is an invitation to configure something that cannot resolve.
|
|
476
|
+
*/
|
|
477
|
+
readonly customStores: v.ArraySchema<v.ObjectSchema<{
|
|
478
|
+
readonly id: v.StringSchema<undefined>;
|
|
479
|
+
readonly name: v.StringSchema<undefined>;
|
|
480
|
+
readonly summary: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
481
|
+
}, undefined>, undefined>;
|
|
385
482
|
}, undefined>;
|
|
483
|
+
export type ContentStorageCustomStore = v.InferOutput<typeof contentStorageCapabilitySchema>['customStores'][number];
|
|
386
484
|
export type ContentStorageCapability = v.InferOutput<typeof contentStorageCapabilitySchema>;
|
|
387
485
|
/** What `GET /accounts/:id/settings` returns — config + summary + runtime capability, never secrets. */
|
|
388
486
|
export declare const accountSettingsViewSchema: v.ObjectSchema<{
|
|
389
487
|
readonly config: v.ObjectSchema<{
|
|
390
|
-
readonly contentStorage: v.OptionalSchema<v.ObjectSchema<{
|
|
391
|
-
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
488
|
+
readonly contentStorage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
489
|
+
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
392
490
|
readonly fs: v.OptionalSchema<v.ObjectSchema<{
|
|
393
491
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
394
492
|
}, undefined>, undefined>;
|
|
@@ -402,7 +500,25 @@ export declare const accountSettingsViewSchema: v.ObjectSchema<{
|
|
|
402
500
|
/** Force path-style addressing (needed by most S3-compatible stores). */
|
|
403
501
|
readonly forcePathStyle: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
404
502
|
}, undefined>, undefined>;
|
|
405
|
-
|
|
503
|
+
readonly custom: v.OptionalSchema<v.ObjectSchema<{
|
|
504
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
505
|
+
}, undefined>, undefined>;
|
|
506
|
+
}, undefined>, v.CheckAction<{
|
|
507
|
+
backend: "custom" | "db" | "fs" | "off" | "r2" | "s3";
|
|
508
|
+
fs?: {
|
|
509
|
+
basePath?: string | undefined;
|
|
510
|
+
} | undefined;
|
|
511
|
+
s3?: {
|
|
512
|
+
region: string;
|
|
513
|
+
bucket: string;
|
|
514
|
+
prefix?: string | undefined;
|
|
515
|
+
endpoint?: string | undefined;
|
|
516
|
+
forcePathStyle?: boolean | undefined;
|
|
517
|
+
} | undefined;
|
|
518
|
+
custom?: {
|
|
519
|
+
storeId: string;
|
|
520
|
+
} | undefined;
|
|
521
|
+
}, "Select which registered store the custom content-storage backend means.">]>, undefined>;
|
|
406
522
|
/**
|
|
407
523
|
* Account-wide model-family allow/block policy (see {@link modelFamilyPolicySchema}).
|
|
408
524
|
* Absent / `off` ⇒ no restriction. Only settable on runtimes that support it
|
|
@@ -479,18 +595,36 @@ export declare const accountSettingsViewSchema: v.ObjectSchema<{
|
|
|
479
595
|
readonly webSearch: v.NullableSchema<v.PicklistSchema<["brave", "searxng"], undefined>, undefined>;
|
|
480
596
|
readonly contentStorage: v.ObjectSchema<{
|
|
481
597
|
/** The explicitly-selected backend, or null when the account uses the runtime default. */
|
|
482
|
-
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
598
|
+
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
483
599
|
/** Configured S3 bucket (non-secret), when the s3 backend is selected. */
|
|
484
600
|
readonly bucket: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
485
601
|
/** Configured filesystem base path (non-secret), when the fs backend is selected. */
|
|
486
602
|
readonly basePath: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
487
603
|
/** Whether S3 access keys are stored (the keys themselves are never returned). */
|
|
488
604
|
readonly s3CredentialsConfigured: v.BooleanSchema<undefined>;
|
|
605
|
+
/**
|
|
606
|
+
* The deployment-registered store id, when the `custom` backend is selected. Carried in the
|
|
607
|
+
* summary rather than derived from `backend` alone because "custom" names nothing a reader can
|
|
608
|
+
* check: an account pointed at a store this build no longer registers looks identical to a
|
|
609
|
+
* working one until the id itself is on screen beside the registered set.
|
|
610
|
+
*/
|
|
611
|
+
readonly customStoreId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
489
612
|
}, undefined>;
|
|
490
613
|
}, undefined>;
|
|
491
614
|
readonly contentStorageCapability: v.ObjectSchema<{
|
|
492
|
-
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
493
|
-
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
615
|
+
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
616
|
+
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
617
|
+
/**
|
|
618
|
+
* The stores THIS process registered in code, each selectable as `backend: 'custom'` with its
|
|
619
|
+
* id. Empty on a deployment that registers none, which is why `custom` appears in
|
|
620
|
+
* {@link supportedBackends} only when this list does not: a picker entry leading to an empty
|
|
621
|
+
* list is an invitation to configure something that cannot resolve.
|
|
622
|
+
*/
|
|
623
|
+
readonly customStores: v.ArraySchema<v.ObjectSchema<{
|
|
624
|
+
readonly id: v.StringSchema<undefined>;
|
|
625
|
+
readonly name: v.StringSchema<undefined>;
|
|
626
|
+
readonly summary: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
627
|
+
}, undefined>, undefined>;
|
|
494
628
|
}, undefined>;
|
|
495
629
|
}, undefined>;
|
|
496
630
|
export type AccountSettingsView = v.InferOutput<typeof accountSettingsViewSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountSettings.d.ts","sourceRoot":"","sources":["../src/accountSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B
|
|
1
|
+
{"version":3,"file":"accountSettings.d.ts","sourceRoot":"","sources":["../src/accountSettings.ts"],"names":[],"mappings":"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"}
|
package/dist/accountSettings.js
CHANGED
|
@@ -14,10 +14,18 @@ import { platformAlertSettingsSchema } from './observability.js';
|
|
|
14
14
|
* Where an account's binary artifacts (UI screenshots + reference designs) are stored.
|
|
15
15
|
* `off` disables storage (the visual-confirmation gate passes through). `fs`/`s3`/`db` are
|
|
16
16
|
* Node/local only (S3 is deliberately not offered on the Worker — the AWS SDK does not belong
|
|
17
|
-
* in the Worker bundle); `r2` is Cloudflare only.
|
|
18
|
-
*
|
|
17
|
+
* in the Worker bundle); `r2` is Cloudflare only. `custom` selects a store the DEPLOYMENT
|
|
18
|
+
* defined in code and registered on the app-owned `BinaryStoreRegistry`, named by
|
|
19
|
+
* {@link contentStorageCustomConfigSchema}. Which of these a runtime actually supports (and
|
|
20
|
+
* which custom stores it registers) is surfaced to the UI via
|
|
21
|
+
* {@link contentStorageCapabilitySchema}.
|
|
22
|
+
*
|
|
23
|
+
* The member is `custom` rather than the store's own id so this stays a CLOSED picklist: every
|
|
24
|
+
* reader of a backend (the UI's label map, the resolver's branch) is exhaustive over it, and a
|
|
25
|
+
* deployment's store ids are by definition unknown to them. Which store is a second question,
|
|
26
|
+
* asked of the registry, and answered in the config beside it.
|
|
19
27
|
*/
|
|
20
|
-
export const contentStorageBackendSchema = v.picklist(['off', 'fs', 's3', 'r2', 'db']);
|
|
28
|
+
export const contentStorageBackendSchema = v.picklist(['off', 'fs', 's3', 'r2', 'db', 'custom']);
|
|
21
29
|
/** Non-secret S3 connection settings (the access keys live in the sealed secrets blob). */
|
|
22
30
|
export const contentStorageS3ConfigSchema = v.object({
|
|
23
31
|
region: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(120)),
|
|
@@ -33,12 +41,28 @@ export const contentStorageS3ConfigSchema = v.object({
|
|
|
33
41
|
export const contentStorageFsConfigSchema = v.object({
|
|
34
42
|
basePath: v.optional(v.pipe(v.string(), v.trim(), v.maxLength(1024))),
|
|
35
43
|
});
|
|
44
|
+
/**
|
|
45
|
+
* Which DEPLOYMENT-REGISTERED store the `custom` backend means. The id is the one the deployment
|
|
46
|
+
* registered on its `BinaryStoreRegistry`; the platform knows nothing else about it, because
|
|
47
|
+
* everything else about a custom store (its client, its credentials, its addressing) lives in
|
|
48
|
+
* the deployment's own code rather than in per-account settings.
|
|
49
|
+
*/
|
|
50
|
+
export const contentStorageCustomConfigSchema = v.object({
|
|
51
|
+
storeId: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(63)),
|
|
52
|
+
});
|
|
36
53
|
/** Non-secret content-storage config: which backend + its non-secret connection settings. */
|
|
37
|
-
export const contentStorageConfigSchema = v.object({
|
|
54
|
+
export const contentStorageConfigSchema = v.pipe(v.object({
|
|
38
55
|
backend: contentStorageBackendSchema,
|
|
39
56
|
fs: v.optional(contentStorageFsConfigSchema),
|
|
40
57
|
s3: v.optional(contentStorageS3ConfigSchema),
|
|
41
|
-
|
|
58
|
+
custom: v.optional(contentStorageCustomConfigSchema),
|
|
59
|
+
}),
|
|
60
|
+
// Refused at the WRITE boundary rather than resolved to "no storage" at run time: `custom` with
|
|
61
|
+
// no store named is the one content-storage config that cannot mean anything at all, where a
|
|
62
|
+
// `s3` selection missing its bucket is still a coherent statement about an account whose
|
|
63
|
+
// connection settings are half-entered. Saving it would leave an account reading as configured
|
|
64
|
+
// and storing nothing.
|
|
65
|
+
v.check((input) => input.backend !== 'custom' || Boolean(input.custom?.storeId), 'Select which registered store the custom content-storage backend means.'));
|
|
42
66
|
/**
|
|
43
67
|
* Non-secret per-account config. Holds the content-storage backend selection (the S3 access
|
|
44
68
|
* keys live in the sealed secrets blob). Retained as an object so forward-compatible
|
|
@@ -190,6 +214,13 @@ export const contentStorageSummarySchema = v.object({
|
|
|
190
214
|
basePath: v.nullable(v.string()),
|
|
191
215
|
/** Whether S3 access keys are stored (the keys themselves are never returned). */
|
|
192
216
|
s3CredentialsConfigured: v.boolean(),
|
|
217
|
+
/**
|
|
218
|
+
* The deployment-registered store id, when the `custom` backend is selected. Carried in the
|
|
219
|
+
* summary rather than derived from `backend` alone because "custom" names nothing a reader can
|
|
220
|
+
* check: an account pointed at a store this build no longer registers looks identical to a
|
|
221
|
+
* working one until the id itself is on screen beside the registered set.
|
|
222
|
+
*/
|
|
223
|
+
customStoreId: v.nullable(v.string()),
|
|
193
224
|
});
|
|
194
225
|
/** Non-secret presence/status for display — NEVER secret values. */
|
|
195
226
|
export const accountSettingsSummarySchema = v.object({
|
|
@@ -207,6 +238,17 @@ export const accountSettingsSummarySchema = v.object({
|
|
|
207
238
|
export const contentStorageCapabilitySchema = v.object({
|
|
208
239
|
supportedBackends: v.array(contentStorageBackendSchema),
|
|
209
240
|
defaultBackend: contentStorageBackendSchema,
|
|
241
|
+
/**
|
|
242
|
+
* The stores THIS process registered in code, each selectable as `backend: 'custom'` with its
|
|
243
|
+
* id. Empty on a deployment that registers none, which is why `custom` appears in
|
|
244
|
+
* {@link supportedBackends} only when this list does not: a picker entry leading to an empty
|
|
245
|
+
* list is an invitation to configure something that cannot resolve.
|
|
246
|
+
*/
|
|
247
|
+
customStores: v.array(v.object({
|
|
248
|
+
id: v.string(),
|
|
249
|
+
name: v.string(),
|
|
250
|
+
summary: v.optional(v.string()),
|
|
251
|
+
})),
|
|
210
252
|
});
|
|
211
253
|
/** What `GET /accounts/:id/settings` returns — config + summary + runtime capability, never secrets. */
|
|
212
254
|
export const accountSettingsViewSchema = v.object({
|
|
@@ -232,6 +274,7 @@ export function accountSettingsSummary(secrets, config) {
|
|
|
232
274
|
bucket: cs?.s3?.bucket ?? null,
|
|
233
275
|
basePath: cs?.fs?.basePath ?? null,
|
|
234
276
|
s3CredentialsConfigured: Boolean(secrets.s3),
|
|
277
|
+
customStoreId: cs?.custom?.storeId ?? null,
|
|
235
278
|
},
|
|
236
279
|
};
|
|
237
280
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountSettings.js","sourceRoot":"","sources":["../src/accountSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAA;AAEhE,8EAA8E;AAC9E,mFAAmF;AACnF,wFAAwF;AACxF,oFAAoF;AACpF,sFAAsF;AACtF,yFAAyF;AACzF,uFAAuF;AACvF,8EAA8E;AAE9E,+EAA+E;AAE/E
|
|
1
|
+
{"version":3,"file":"accountSettings.js","sourceRoot":"","sources":["../src/accountSettings.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -59,8 +59,23 @@ export type ConflictReason = (typeof CONFLICT_REASONS)[number];
|
|
|
59
59
|
* BOTH remedies rather than picking one: retry if the key
|
|
60
60
|
* service is unreachable, re-connect the source if the row
|
|
61
61
|
* itself has drifted.
|
|
62
|
+
* - `vcs_capability_unsupported` : the workspace's source-control provider does not offer
|
|
63
|
+
* the operation at all (kernel's
|
|
64
|
+
* `VcsCapabilityUnsupportedError`, raised by the
|
|
65
|
+
* provider-routing VCS client when a call lands on the
|
|
66
|
+
* provider whose client lacks it). A PERMANENT property of
|
|
67
|
+
* the provider that was connected, which is why it cannot
|
|
68
|
+
* ride the generic copy: no amount of operator wiring
|
|
69
|
+
* changes it, so telling someone their deployment is
|
|
70
|
+
* misconfigured sends them to a build with nothing wrong
|
|
71
|
+
* in it. `details` carries `provider` and `operation`.
|
|
72
|
+
*
|
|
73
|
+
* Its sibling `vcs_client_unconfigured` (no client wired for the routed connection's provider) is
|
|
74
|
+
* deliberately NOT here. That one IS a wiring gap, so the generic copy states it correctly, and
|
|
75
|
+
* this list is a short set of exceptions to that copy rather than a second vocabulary mirroring
|
|
76
|
+
* every reason the backend emits.
|
|
62
77
|
*/
|
|
63
|
-
export declare const UNAVAILABLE_REASONS: readonly ['binary_generators_unreachable', 'foundational_builtins_unreachable', 'connection_credentials_unreadable'];
|
|
78
|
+
export declare const UNAVAILABLE_REASONS: readonly ['binary_generators_unreachable', 'foundational_builtins_unreachable', 'connection_credentials_unreadable', 'vcs_capability_unsupported'];
|
|
64
79
|
export type UnavailableReason = (typeof UNAVAILABLE_REASONS)[number];
|
|
65
80
|
/**
|
|
66
81
|
* Machine-readable reasons a `review` task's target pull request is refused at creation
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,YAC7B,WAAW,EACX,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,CACN,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,iJAA+C,CAAA;AAE3E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,YAC3B,wBAAwB,EAKxB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EAMpB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAKhB,uBAAuB,EAOvB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAK7B,yBAAyB,EAGzB,0BAA0B,EAG1B,6BAA6B,EAG7B,sBAAsB,EAGtB,0BAA0B,EAI1B,iCAAiC,EAKjC,0CAA0C,EAK1C,iCAAiC,EAGjC,sBAAsB,EAGtB,oBAAoB,EAGpB,4BAA4B,EAG5B,iBAAiB,EAMjB,4BAA4B,EAK5B,kBAAkB,EAIlB,qBAAqB,EAKrB,0BAA0B,EAO1B,4BAA4B,EAG5B,sCAAsC,EAItC,uCAAuC,EAKvC,6BAA6B,EAS7B,+BAA+B,EAY/B,iCAAiC,EAOjC,oCAAoC,EAOpC,uBAAuB,EAKvB,uBAAuB,EAUvB,mBAAmB,CACX,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,YAC7B,WAAW,EACX,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,CACN,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,iJAA+C,CAAA;AAE3E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,YAC3B,wBAAwB,EAKxB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EAMpB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAKhB,uBAAuB,EAOvB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAK7B,yBAAyB,EAGzB,0BAA0B,EAG1B,6BAA6B,EAG7B,sBAAsB,EAGtB,0BAA0B,EAI1B,iCAAiC,EAKjC,0CAA0C,EAK1C,iCAAiC,EAGjC,sBAAsB,EAGtB,oBAAoB,EAGpB,4BAA4B,EAG5B,iBAAiB,EAMjB,4BAA4B,EAK5B,kBAAkB,EAIlB,qBAAqB,EAKrB,0BAA0B,EAO1B,4BAA4B,EAG5B,sCAAsC,EAItC,uCAAuC,EAKvC,6BAA6B,EAS7B,+BAA+B,EAY/B,iCAAiC,EAOjC,oCAAoC,EAOpC,uBAAuB,EAKvB,uBAAuB,EAUvB,mBAAmB,CACX,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,mBAAmB,YAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,mCAAmC,EACnC,4BAA4B,CACpB,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEpE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,YAAI,qBAAqB,EAAE,yBAAyB,CAAU,CAAA;AAEhG,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA"}
|
package/dist/errors.js
CHANGED
|
@@ -233,11 +233,27 @@ export const CONFLICT_REASONS = [
|
|
|
233
233
|
* BOTH remedies rather than picking one: retry if the key
|
|
234
234
|
* service is unreachable, re-connect the source if the row
|
|
235
235
|
* itself has drifted.
|
|
236
|
+
* - `vcs_capability_unsupported` : the workspace's source-control provider does not offer
|
|
237
|
+
* the operation at all (kernel's
|
|
238
|
+
* `VcsCapabilityUnsupportedError`, raised by the
|
|
239
|
+
* provider-routing VCS client when a call lands on the
|
|
240
|
+
* provider whose client lacks it). A PERMANENT property of
|
|
241
|
+
* the provider that was connected, which is why it cannot
|
|
242
|
+
* ride the generic copy: no amount of operator wiring
|
|
243
|
+
* changes it, so telling someone their deployment is
|
|
244
|
+
* misconfigured sends them to a build with nothing wrong
|
|
245
|
+
* in it. `details` carries `provider` and `operation`.
|
|
246
|
+
*
|
|
247
|
+
* Its sibling `vcs_client_unconfigured` (no client wired for the routed connection's provider) is
|
|
248
|
+
* deliberately NOT here. That one IS a wiring gap, so the generic copy states it correctly, and
|
|
249
|
+
* this list is a short set of exceptions to that copy rather than a second vocabulary mirroring
|
|
250
|
+
* every reason the backend emits.
|
|
236
251
|
*/
|
|
237
252
|
export const UNAVAILABLE_REASONS = [
|
|
238
253
|
'binary_generators_unreachable',
|
|
239
254
|
'foundational_builtins_unreachable',
|
|
240
255
|
'connection_credentials_unreadable',
|
|
256
|
+
'vcs_capability_unsupported',
|
|
241
257
|
];
|
|
242
258
|
/**
|
|
243
259
|
* Machine-readable reasons a `review` task's target pull request is refused at creation
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ export * from './agent-settings.js';
|
|
|
98
98
|
export * from './modelPolicy.js';
|
|
99
99
|
export * from './service-fragment-defaults.js';
|
|
100
100
|
export * from './notifications.js';
|
|
101
|
+
export * from './notification-routing.js';
|
|
101
102
|
export * from './slack.js';
|
|
102
103
|
export * from './observability.js';
|
|
103
104
|
export * from './reports.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -98,6 +98,7 @@ export * from './agent-settings.js';
|
|
|
98
98
|
export * from './modelPolicy.js';
|
|
99
99
|
export * from './service-fragment-defaults.js';
|
|
100
100
|
export * from './notifications.js';
|
|
101
|
+
export * from './notification-routing.js';
|
|
101
102
|
export * from './slack.js';
|
|
102
103
|
export * from './observability.js';
|
|
103
104
|
export * from './reports.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { type NotificationType } from './notifications.js';
|
|
3
|
+
/**
|
|
4
|
+
* A channel the notification manager routes. See the module comment for why the
|
|
5
|
+
* destination-configured transports (Slack, outbound webhooks) are deliberately absent.
|
|
6
|
+
*/
|
|
7
|
+
export declare const notificationDeliveryChannelSchema: v.PicklistSchema<["in_app", "email"], undefined>;
|
|
8
|
+
export type NotificationDeliveryChannel = v.InferOutput<typeof notificationDeliveryChannelSchema>;
|
|
9
|
+
/** Every routed channel, in the order the settings UI renders its columns. */
|
|
10
|
+
export declare const NOTIFICATION_DELIVERY_CHANNELS: readonly ["in_app", "email"];
|
|
11
|
+
/**
|
|
12
|
+
* The types email is ON for by default: the ones where something is STOPPED and stays
|
|
13
|
+
* stopped until a human acts, or where the deployment itself is degraded. Email is the
|
|
14
|
+
* channel that reaches someone who is not looking at the board, so its default has to be
|
|
15
|
+
* the set worth interrupting them over.
|
|
16
|
+
*
|
|
17
|
+
* Deliberately EXCLUDED, though they are human-actionable: the per-step review parks
|
|
18
|
+
* (`requirement_review`, `human_review`, `judge_review`, `pr_review_ready`,
|
|
19
|
+
* `fork_decision_pending`, `followup_pending`, …). Several of them arrive on nearly every
|
|
20
|
+
* task, so mailing them by default is the firehose that gets a sender's domain filtered and
|
|
21
|
+
* teaches people to ignore the channel. A workspace that wants them turns them on per type,
|
|
22
|
+
* which is what the manager is for.
|
|
23
|
+
*
|
|
24
|
+
* `budget_threshold` is out for the same reason `budget_paused` is in: the warning is
|
|
25
|
+
* proactive and recurring, the pause has already stopped work.
|
|
26
|
+
*/
|
|
27
|
+
export declare const HIGH_IMPACT_NOTIFICATION_TYPES: readonly ["merge_review", "decision_required", "ci_failed", "test_failed", "release_regression", "platform_health", "infra_unreachable", "budget_paused", "key_drift"];
|
|
28
|
+
/** Whether a type is one of the high-impact events email carries by default (see above). */
|
|
29
|
+
export declare function isHighImpactNotificationType(type: NotificationType): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* One type's routing OVERRIDES. Every cell is optional and absent means "never chosen",
|
|
32
|
+
* which resolves to {@link defaultNotificationRoute}. Adding a channel to the union
|
|
33
|
+
* therefore leaves every stored row valid, and the new channel arrives on its default
|
|
34
|
+
* rather than as a `false` no human picked.
|
|
35
|
+
*/
|
|
36
|
+
export declare const notificationChannelOverridesSchema: v.ObjectSchema<{
|
|
37
|
+
readonly in_app: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
38
|
+
readonly email: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
39
|
+
}, undefined>;
|
|
40
|
+
export type NotificationChannelOverrides = v.InferOutput<typeof notificationChannelOverridesSchema>;
|
|
41
|
+
/** A workspace's per-type routing overrides. Types absent from the map are fully default. */
|
|
42
|
+
export declare const notificationRoutingMatrixSchema: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
|
|
43
|
+
readonly in_app: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
44
|
+
readonly email: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
45
|
+
}, undefined>, undefined>;
|
|
46
|
+
export type NotificationRoutingMatrix = v.InferOutput<typeof notificationRoutingMatrixSchema>;
|
|
47
|
+
/** A workspace's notification manager settings, as served. */
|
|
48
|
+
export declare const notificationSettingsSchema: v.ObjectSchema<{
|
|
49
|
+
readonly matrix: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
|
|
50
|
+
readonly in_app: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
51
|
+
readonly email: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
52
|
+
}, undefined>, undefined>;
|
|
53
|
+
/** Epoch ms of the last write; `0` when the workspace has never configured routing. */
|
|
54
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
55
|
+
}, undefined>;
|
|
56
|
+
export type NotificationSettings = v.InferOutput<typeof notificationSettingsSchema>;
|
|
57
|
+
/** Replace a workspace's routing matrix (a full replace, like the Slack routing write). */
|
|
58
|
+
export declare const updateNotificationSettingsSchema: v.ObjectSchema<{
|
|
59
|
+
readonly matrix: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
|
|
60
|
+
readonly in_app: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
61
|
+
readonly email: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
62
|
+
}, undefined>, undefined>;
|
|
63
|
+
}, undefined>;
|
|
64
|
+
export type UpdateNotificationSettingsInput = v.InferOutput<typeof updateNotificationSettingsSchema>;
|
|
65
|
+
/**
|
|
66
|
+
* The shipped default for one (type, channel) — what applies until a workspace overrides it.
|
|
67
|
+
*
|
|
68
|
+
* `in_app` is ON for every type: the inbox is where a human-actionable card lives, and the
|
|
69
|
+
* push is what makes it appear without a reload. Turning it off is a legitimate "stop
|
|
70
|
+
* interrupting me about this kind" choice, and it never hides anything: the card is persisted
|
|
71
|
+
* either way and is still in the inbox on the next snapshot.
|
|
72
|
+
*
|
|
73
|
+
* `email` is ON only for {@link HIGH_IMPACT_NOTIFICATION_TYPES}, so a deployment that connects
|
|
74
|
+
* a sender does not start mailing its members about every step of every run.
|
|
75
|
+
*/
|
|
76
|
+
export declare function defaultNotificationRoute(type: NotificationType, channel: NotificationDeliveryChannel): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Whether a workspace delivers `type` on `channel`: its override when it has one, else the
|
|
79
|
+
* shipped default. THE routing decision — the engine gates delivery on it and the settings UI
|
|
80
|
+
* renders the toggle from it, so neither can state something the other does not do.
|
|
81
|
+
*/
|
|
82
|
+
export declare function isNotificationRouted(matrix: NotificationRoutingMatrix | null | undefined, type: NotificationType, channel: NotificationDeliveryChannel): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Decode a persisted routing matrix, dropping only what this build cannot read.
|
|
85
|
+
*
|
|
86
|
+
* Per TYPE rather than through {@link notificationRoutingMatrixSchema}, because a row written by
|
|
87
|
+
* an older build can name a notification type (or a channel) that has since been retired, and a
|
|
88
|
+
* single strict parse would then discard EVERY override in the row — silently unmuting every
|
|
89
|
+
* other type at once. Dropping the one unreadable cell leaves the workspace's other choices
|
|
90
|
+
* standing, and the dropped one falls back to the shipped default, which is what an un-overridden
|
|
91
|
+
* cell already means. Nothing renders a retired name, so there is none to state.
|
|
92
|
+
*
|
|
93
|
+
* A value that is not an object at all resolves to "no overrides" rather than throwing: the
|
|
94
|
+
* caller is on the delivery path, where a throw could only cost the human the notification they
|
|
95
|
+
* are waiting for.
|
|
96
|
+
*/
|
|
97
|
+
export declare function decodeNotificationRoutingMatrix(raw: unknown): NotificationRoutingMatrix;
|
|
98
|
+
/** The resolved routing for one type across every channel (the settings UI's row). */
|
|
99
|
+
export declare function resolveNotificationRouting(matrix: NotificationRoutingMatrix | null | undefined, type: NotificationType): Record<NotificationDeliveryChannel, boolean>;
|
|
100
|
+
//# sourceMappingURL=notification-routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-routing.d.ts","sourceRoot":"","sources":["../src/notification-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAwBlF;;;GAGG;AACH,eAAO,MAAM,iCAAiC,kDAAkC,CAAA;AAChF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iCAAiC,CAAC,CAAA;AAEjG,8EAA8E;AAC9E,eAAO,MAAM,8BAA8B,8BAGgB,CAAA;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,wKAkBK,CAAA;AAIhD,4FAA4F;AAC5F,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAE5E;AAED;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC;;;aAG7C,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAEnG,6FAA6F;AAC7F,eAAO,MAAM,+BAA+B;;;yBAG3C,CAAA;AACD,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F,8DAA8D;AAC9D,eAAO,MAAM,0BAA0B;;;;;IAErC,uFAAuF;;aAEvF,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF,2FAA2F;AAC3F,eAAO,MAAM,gCAAgC;;;;;aAE3C,CAAA;AACF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAEpG;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,EACpD,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAET;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,yBAAyB,CAYvF;AAED,sFAAsF;AACtF,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,EACpD,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAK9C"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { notificationTypeSchema } from './notifications.js';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// The notification MANAGER: which notification types a workspace delivers on which
|
|
5
|
+
// channel. The routing rule lives here, in contracts, because both sides have to
|
|
6
|
+
// AGREE about the same answer — the engine decides whether to deliver, and the
|
|
7
|
+
// settings UI has to render the very same resolved state (including the shipped
|
|
8
|
+
// default a workspace has never overridden). A rule restated on each side drifts,
|
|
9
|
+
// and here the drift is silent: the toggle says "on" while nothing is sent.
|
|
10
|
+
//
|
|
11
|
+
// Scope, and why these two channels and not the others:
|
|
12
|
+
// - `in_app` and `email` are workspace-wide YES/NO per type: there is nothing to
|
|
13
|
+
// configure beyond "send it or don't", so a matrix is the whole story.
|
|
14
|
+
// - Slack and the outbound webhooks are DESTINATION-configured — a Slack route
|
|
15
|
+
// carries the channel it posts to, a webhook endpoint carries its own `types`
|
|
16
|
+
// filter — so "which types" is answered where the destination is declared. A
|
|
17
|
+
// second switch here would be a place to look that does not decide.
|
|
18
|
+
//
|
|
19
|
+
// A cell is an OVERRIDE, not the value: absent means "this workspace has never said",
|
|
20
|
+
// which resolves to the shipped default for that (type, channel). That is what lets a
|
|
21
|
+
// new notification type, or a new channel, arrive with a sensible default instead of
|
|
22
|
+
// reading as an explicit `false` nobody chose.
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/**
|
|
25
|
+
* A channel the notification manager routes. See the module comment for why the
|
|
26
|
+
* destination-configured transports (Slack, outbound webhooks) are deliberately absent.
|
|
27
|
+
*/
|
|
28
|
+
export const notificationDeliveryChannelSchema = v.picklist(['in_app', 'email']);
|
|
29
|
+
/** Every routed channel, in the order the settings UI renders its columns. */
|
|
30
|
+
export const NOTIFICATION_DELIVERY_CHANNELS = [
|
|
31
|
+
'in_app',
|
|
32
|
+
'email',
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* The types email is ON for by default: the ones where something is STOPPED and stays
|
|
36
|
+
* stopped until a human acts, or where the deployment itself is degraded. Email is the
|
|
37
|
+
* channel that reaches someone who is not looking at the board, so its default has to be
|
|
38
|
+
* the set worth interrupting them over.
|
|
39
|
+
*
|
|
40
|
+
* Deliberately EXCLUDED, though they are human-actionable: the per-step review parks
|
|
41
|
+
* (`requirement_review`, `human_review`, `judge_review`, `pr_review_ready`,
|
|
42
|
+
* `fork_decision_pending`, `followup_pending`, …). Several of them arrive on nearly every
|
|
43
|
+
* task, so mailing them by default is the firehose that gets a sender's domain filtered and
|
|
44
|
+
* teaches people to ignore the channel. A workspace that wants them turns them on per type,
|
|
45
|
+
* which is what the manager is for.
|
|
46
|
+
*
|
|
47
|
+
* `budget_threshold` is out for the same reason `budget_paused` is in: the warning is
|
|
48
|
+
* proactive and recurring, the pause has already stopped work.
|
|
49
|
+
*/
|
|
50
|
+
export const HIGH_IMPACT_NOTIFICATION_TYPES = [
|
|
51
|
+
// A run finished but its PR needs a human merge decision.
|
|
52
|
+
'merge_review',
|
|
53
|
+
// An iterative gate spent its budget and parked on a human decision — the run waits
|
|
54
|
+
// indefinitely, so nobody learns it stopped unless they are watching the board.
|
|
55
|
+
'decision_required',
|
|
56
|
+
// The machine gave up: CI is still red / the tester still withholds its greenlight.
|
|
57
|
+
'ci_failed',
|
|
58
|
+
'test_failed',
|
|
59
|
+
// Production regressed after a deploy.
|
|
60
|
+
'release_regression',
|
|
61
|
+
// Deployment-level: aggregate run health, a dead infrastructure connection, runs paused
|
|
62
|
+
// by the spend safeguard, credentials that no longer decrypt. Each stops (or is about to
|
|
63
|
+
// stop) work for everyone, and none of them has anyone watching a board.
|
|
64
|
+
'platform_health',
|
|
65
|
+
'infra_unreachable',
|
|
66
|
+
'budget_paused',
|
|
67
|
+
'key_drift',
|
|
68
|
+
];
|
|
69
|
+
const HIGH_IMPACT_SET = new Set(HIGH_IMPACT_NOTIFICATION_TYPES);
|
|
70
|
+
/** Whether a type is one of the high-impact events email carries by default (see above). */
|
|
71
|
+
export function isHighImpactNotificationType(type) {
|
|
72
|
+
return HIGH_IMPACT_SET.has(type);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* One type's routing OVERRIDES. Every cell is optional and absent means "never chosen",
|
|
76
|
+
* which resolves to {@link defaultNotificationRoute}. Adding a channel to the union
|
|
77
|
+
* therefore leaves every stored row valid, and the new channel arrives on its default
|
|
78
|
+
* rather than as a `false` no human picked.
|
|
79
|
+
*/
|
|
80
|
+
export const notificationChannelOverridesSchema = v.object({
|
|
81
|
+
in_app: v.optional(v.boolean()),
|
|
82
|
+
email: v.optional(v.boolean()),
|
|
83
|
+
});
|
|
84
|
+
/** A workspace's per-type routing overrides. Types absent from the map are fully default. */
|
|
85
|
+
export const notificationRoutingMatrixSchema = v.record(notificationTypeSchema, notificationChannelOverridesSchema);
|
|
86
|
+
/** A workspace's notification manager settings, as served. */
|
|
87
|
+
export const notificationSettingsSchema = v.object({
|
|
88
|
+
matrix: notificationRoutingMatrixSchema,
|
|
89
|
+
/** Epoch ms of the last write; `0` when the workspace has never configured routing. */
|
|
90
|
+
updatedAt: v.number(),
|
|
91
|
+
});
|
|
92
|
+
/** Replace a workspace's routing matrix (a full replace, like the Slack routing write). */
|
|
93
|
+
export const updateNotificationSettingsSchema = v.object({
|
|
94
|
+
matrix: notificationRoutingMatrixSchema,
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* The shipped default for one (type, channel) — what applies until a workspace overrides it.
|
|
98
|
+
*
|
|
99
|
+
* `in_app` is ON for every type: the inbox is where a human-actionable card lives, and the
|
|
100
|
+
* push is what makes it appear without a reload. Turning it off is a legitimate "stop
|
|
101
|
+
* interrupting me about this kind" choice, and it never hides anything: the card is persisted
|
|
102
|
+
* either way and is still in the inbox on the next snapshot.
|
|
103
|
+
*
|
|
104
|
+
* `email` is ON only for {@link HIGH_IMPACT_NOTIFICATION_TYPES}, so a deployment that connects
|
|
105
|
+
* a sender does not start mailing its members about every step of every run.
|
|
106
|
+
*/
|
|
107
|
+
export function defaultNotificationRoute(type, channel) {
|
|
108
|
+
return channel === 'in_app' ? true : isHighImpactNotificationType(type);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Whether a workspace delivers `type` on `channel`: its override when it has one, else the
|
|
112
|
+
* shipped default. THE routing decision — the engine gates delivery on it and the settings UI
|
|
113
|
+
* renders the toggle from it, so neither can state something the other does not do.
|
|
114
|
+
*/
|
|
115
|
+
export function isNotificationRouted(matrix, type, channel) {
|
|
116
|
+
return matrix?.[type]?.[channel] ?? defaultNotificationRoute(type, channel);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Decode a persisted routing matrix, dropping only what this build cannot read.
|
|
120
|
+
*
|
|
121
|
+
* Per TYPE rather than through {@link notificationRoutingMatrixSchema}, because a row written by
|
|
122
|
+
* an older build can name a notification type (or a channel) that has since been retired, and a
|
|
123
|
+
* single strict parse would then discard EVERY override in the row — silently unmuting every
|
|
124
|
+
* other type at once. Dropping the one unreadable cell leaves the workspace's other choices
|
|
125
|
+
* standing, and the dropped one falls back to the shipped default, which is what an un-overridden
|
|
126
|
+
* cell already means. Nothing renders a retired name, so there is none to state.
|
|
127
|
+
*
|
|
128
|
+
* A value that is not an object at all resolves to "no overrides" rather than throwing: the
|
|
129
|
+
* caller is on the delivery path, where a throw could only cost the human the notification they
|
|
130
|
+
* are waiting for.
|
|
131
|
+
*/
|
|
132
|
+
export function decodeNotificationRoutingMatrix(raw) {
|
|
133
|
+
if (!raw || typeof raw !== 'object')
|
|
134
|
+
return {};
|
|
135
|
+
const matrix = {};
|
|
136
|
+
for (const [type, cell] of Object.entries(raw)) {
|
|
137
|
+
const parsedType = v.safeParse(notificationTypeSchema, type);
|
|
138
|
+
if (!parsedType.success)
|
|
139
|
+
continue;
|
|
140
|
+
// `v.object` drops unknown entries, so a retired CHANNEL costs its own cell and nothing else.
|
|
141
|
+
const parsedCell = v.safeParse(notificationChannelOverridesSchema, cell);
|
|
142
|
+
if (!parsedCell.success)
|
|
143
|
+
continue;
|
|
144
|
+
matrix[parsedType.output] = parsedCell.output;
|
|
145
|
+
}
|
|
146
|
+
return matrix;
|
|
147
|
+
}
|
|
148
|
+
/** The resolved routing for one type across every channel (the settings UI's row). */
|
|
149
|
+
export function resolveNotificationRouting(matrix, type) {
|
|
150
|
+
return {
|
|
151
|
+
in_app: isNotificationRouted(matrix, type, 'in_app'),
|
|
152
|
+
email: isNotificationRouted(matrix, type, 'email'),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=notification-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-routing.js","sourceRoot":"","sources":["../src/notification-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -872,8 +872,8 @@ export declare const getAccountSettingsContract: {
|
|
|
872
872
|
}, undefined>;
|
|
873
873
|
readonly 200: v.ObjectSchema<{
|
|
874
874
|
readonly config: v.ObjectSchema<{
|
|
875
|
-
readonly contentStorage: v.OptionalSchema<v.ObjectSchema<{
|
|
876
|
-
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
875
|
+
readonly contentStorage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
876
|
+
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
877
877
|
readonly fs: v.OptionalSchema<v.ObjectSchema<{
|
|
878
878
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
879
879
|
}, undefined>, undefined>;
|
|
@@ -884,7 +884,25 @@ export declare const getAccountSettingsContract: {
|
|
|
884
884
|
readonly endpoint: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
885
885
|
readonly forcePathStyle: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
886
886
|
}, undefined>, undefined>;
|
|
887
|
-
|
|
887
|
+
readonly custom: v.OptionalSchema<v.ObjectSchema<{
|
|
888
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
889
|
+
}, undefined>, undefined>;
|
|
890
|
+
}, undefined>, v.CheckAction<{
|
|
891
|
+
backend: "custom" | "db" | "fs" | "off" | "r2" | "s3";
|
|
892
|
+
fs?: {
|
|
893
|
+
basePath?: string | undefined;
|
|
894
|
+
} | undefined;
|
|
895
|
+
s3?: {
|
|
896
|
+
region: string;
|
|
897
|
+
bucket: string;
|
|
898
|
+
prefix?: string | undefined;
|
|
899
|
+
endpoint?: string | undefined;
|
|
900
|
+
forcePathStyle?: boolean | undefined;
|
|
901
|
+
} | undefined;
|
|
902
|
+
custom?: {
|
|
903
|
+
storeId: string;
|
|
904
|
+
} | undefined;
|
|
905
|
+
}, "Select which registered store the custom content-storage backend means.">]>, undefined>;
|
|
888
906
|
readonly modelPolicy: v.OptionalSchema<v.ObjectSchema<{
|
|
889
907
|
readonly mode: v.PicklistSchema<["off", "blocklist", "allowlist"], undefined>;
|
|
890
908
|
readonly families: v.ArraySchema<v.PicklistSchema<["llama", "qwen", "kimi", "deepseek", "glm", "claude", "openai", "gemini"], undefined>, undefined>;
|
|
@@ -926,15 +944,21 @@ export declare const getAccountSettingsContract: {
|
|
|
926
944
|
readonly figmaOAuthConfigured: v.BooleanSchema<undefined>;
|
|
927
945
|
readonly webSearch: v.NullableSchema<v.PicklistSchema<["brave", "searxng"], undefined>, undefined>;
|
|
928
946
|
readonly contentStorage: v.ObjectSchema<{
|
|
929
|
-
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
947
|
+
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
930
948
|
readonly bucket: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
931
949
|
readonly basePath: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
932
950
|
readonly s3CredentialsConfigured: v.BooleanSchema<undefined>;
|
|
951
|
+
readonly customStoreId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
933
952
|
}, undefined>;
|
|
934
953
|
}, undefined>;
|
|
935
954
|
readonly contentStorageCapability: v.ObjectSchema<{
|
|
936
|
-
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
937
|
-
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
955
|
+
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
956
|
+
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
957
|
+
readonly customStores: v.ArraySchema<v.ObjectSchema<{
|
|
958
|
+
readonly id: v.StringSchema<undefined>;
|
|
959
|
+
readonly name: v.StringSchema<undefined>;
|
|
960
|
+
readonly summary: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
961
|
+
}, undefined>, undefined>;
|
|
938
962
|
}, undefined>;
|
|
939
963
|
}, undefined>;
|
|
940
964
|
};
|
|
@@ -949,8 +973,8 @@ export declare const updateAccountSettingsContract: {
|
|
|
949
973
|
}) => string;
|
|
950
974
|
readonly requestBodySchema: v.ObjectSchema<{
|
|
951
975
|
readonly config: v.OptionalSchema<v.ObjectSchema<{
|
|
952
|
-
readonly contentStorage: v.OptionalSchema<v.ObjectSchema<{
|
|
953
|
-
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
976
|
+
readonly contentStorage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
977
|
+
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
954
978
|
readonly fs: v.OptionalSchema<v.ObjectSchema<{
|
|
955
979
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
956
980
|
}, undefined>, undefined>;
|
|
@@ -961,7 +985,25 @@ export declare const updateAccountSettingsContract: {
|
|
|
961
985
|
readonly endpoint: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
962
986
|
readonly forcePathStyle: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
963
987
|
}, undefined>, undefined>;
|
|
964
|
-
|
|
988
|
+
readonly custom: v.OptionalSchema<v.ObjectSchema<{
|
|
989
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
990
|
+
}, undefined>, undefined>;
|
|
991
|
+
}, undefined>, v.CheckAction<{
|
|
992
|
+
backend: "custom" | "db" | "fs" | "off" | "r2" | "s3";
|
|
993
|
+
fs?: {
|
|
994
|
+
basePath?: string | undefined;
|
|
995
|
+
} | undefined;
|
|
996
|
+
s3?: {
|
|
997
|
+
region: string;
|
|
998
|
+
bucket: string;
|
|
999
|
+
prefix?: string | undefined;
|
|
1000
|
+
endpoint?: string | undefined;
|
|
1001
|
+
forcePathStyle?: boolean | undefined;
|
|
1002
|
+
} | undefined;
|
|
1003
|
+
custom?: {
|
|
1004
|
+
storeId: string;
|
|
1005
|
+
} | undefined;
|
|
1006
|
+
}, "Select which registered store the custom content-storage backend means.">]>, undefined>;
|
|
965
1007
|
readonly modelPolicy: v.OptionalSchema<v.ObjectSchema<{
|
|
966
1008
|
readonly mode: v.PicklistSchema<["off", "blocklist", "allowlist"], undefined>;
|
|
967
1009
|
readonly families: v.ArraySchema<v.PicklistSchema<["llama", "qwen", "kimi", "deepseek", "glm", "claude", "openai", "gemini"], undefined>, undefined>;
|
|
@@ -1049,8 +1091,8 @@ export declare const updateAccountSettingsContract: {
|
|
|
1049
1091
|
}, undefined>;
|
|
1050
1092
|
readonly 200: v.ObjectSchema<{
|
|
1051
1093
|
readonly config: v.ObjectSchema<{
|
|
1052
|
-
readonly contentStorage: v.OptionalSchema<v.ObjectSchema<{
|
|
1053
|
-
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
1094
|
+
readonly contentStorage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
1095
|
+
readonly backend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
1054
1096
|
readonly fs: v.OptionalSchema<v.ObjectSchema<{
|
|
1055
1097
|
readonly basePath: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 1024, undefined>]>, undefined>;
|
|
1056
1098
|
}, undefined>, undefined>;
|
|
@@ -1061,7 +1103,25 @@ export declare const updateAccountSettingsContract: {
|
|
|
1061
1103
|
readonly endpoint: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
1062
1104
|
readonly forcePathStyle: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1063
1105
|
}, undefined>, undefined>;
|
|
1064
|
-
|
|
1106
|
+
readonly custom: v.OptionalSchema<v.ObjectSchema<{
|
|
1107
|
+
readonly storeId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 63, undefined>]>;
|
|
1108
|
+
}, undefined>, undefined>;
|
|
1109
|
+
}, undefined>, v.CheckAction<{
|
|
1110
|
+
backend: "custom" | "db" | "fs" | "off" | "r2" | "s3";
|
|
1111
|
+
fs?: {
|
|
1112
|
+
basePath?: string | undefined;
|
|
1113
|
+
} | undefined;
|
|
1114
|
+
s3?: {
|
|
1115
|
+
region: string;
|
|
1116
|
+
bucket: string;
|
|
1117
|
+
prefix?: string | undefined;
|
|
1118
|
+
endpoint?: string | undefined;
|
|
1119
|
+
forcePathStyle?: boolean | undefined;
|
|
1120
|
+
} | undefined;
|
|
1121
|
+
custom?: {
|
|
1122
|
+
storeId: string;
|
|
1123
|
+
} | undefined;
|
|
1124
|
+
}, "Select which registered store the custom content-storage backend means.">]>, undefined>;
|
|
1065
1125
|
readonly modelPolicy: v.OptionalSchema<v.ObjectSchema<{
|
|
1066
1126
|
readonly mode: v.PicklistSchema<["off", "blocklist", "allowlist"], undefined>;
|
|
1067
1127
|
readonly families: v.ArraySchema<v.PicklistSchema<["llama", "qwen", "kimi", "deepseek", "glm", "claude", "openai", "gemini"], undefined>, undefined>;
|
|
@@ -1103,15 +1163,21 @@ export declare const updateAccountSettingsContract: {
|
|
|
1103
1163
|
readonly figmaOAuthConfigured: v.BooleanSchema<undefined>;
|
|
1104
1164
|
readonly webSearch: v.NullableSchema<v.PicklistSchema<["brave", "searxng"], undefined>, undefined>;
|
|
1105
1165
|
readonly contentStorage: v.ObjectSchema<{
|
|
1106
|
-
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
1166
|
+
readonly backend: v.NullableSchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
1107
1167
|
readonly bucket: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1108
1168
|
readonly basePath: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1109
1169
|
readonly s3CredentialsConfigured: v.BooleanSchema<undefined>;
|
|
1170
|
+
readonly customStoreId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1110
1171
|
}, undefined>;
|
|
1111
1172
|
}, undefined>;
|
|
1112
1173
|
readonly contentStorageCapability: v.ObjectSchema<{
|
|
1113
|
-
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>, undefined>;
|
|
1114
|
-
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db"], undefined>;
|
|
1174
|
+
readonly supportedBackends: v.ArraySchema<v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>, undefined>;
|
|
1175
|
+
readonly defaultBackend: v.PicklistSchema<["off", "fs", "s3", "r2", "db", "custom"], undefined>;
|
|
1176
|
+
readonly customStores: v.ArraySchema<v.ObjectSchema<{
|
|
1177
|
+
readonly id: v.StringSchema<undefined>;
|
|
1178
|
+
readonly name: v.StringSchema<undefined>;
|
|
1179
|
+
readonly summary: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1180
|
+
}, undefined>, undefined>;
|
|
1115
1181
|
}, undefined>;
|
|
1116
1182
|
}, undefined>;
|
|
1117
1183
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/routes/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiD5B,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI/B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAA;AAIF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMjC,CAAA;AAeF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOvC,CAAA;AAYF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASlC,CAAA;AAIF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQnC,CAAA;AAIF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtC,CAAA;AAIF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM5B,CAAA;AAIF,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/routes/accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -308,4 +308,80 @@ export declare const dismissNotificationContract: {
|
|
|
308
308
|
}, undefined>;
|
|
309
309
|
};
|
|
310
310
|
};
|
|
311
|
+
export declare const getNotificationSettingsContract: {
|
|
312
|
+
readonly method: "get";
|
|
313
|
+
readonly pathResolver: () => string;
|
|
314
|
+
readonly responsesByStatusCode: {
|
|
315
|
+
readonly '4xx': v.ObjectSchema<{
|
|
316
|
+
readonly error: v.ObjectSchema<{
|
|
317
|
+
readonly code: v.StringSchema<undefined>;
|
|
318
|
+
readonly message: v.StringSchema<undefined>;
|
|
319
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
320
|
+
readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
321
|
+
readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
322
|
+
readonly message: v.StringSchema<undefined>;
|
|
323
|
+
}, undefined>, undefined>, undefined>;
|
|
324
|
+
}, undefined>;
|
|
325
|
+
}, undefined>;
|
|
326
|
+
readonly '5xx': v.ObjectSchema<{
|
|
327
|
+
readonly error: v.ObjectSchema<{
|
|
328
|
+
readonly code: v.StringSchema<undefined>;
|
|
329
|
+
readonly message: v.StringSchema<undefined>;
|
|
330
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
331
|
+
readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
332
|
+
readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
333
|
+
readonly message: v.StringSchema<undefined>;
|
|
334
|
+
}, undefined>, undefined>, undefined>;
|
|
335
|
+
}, undefined>;
|
|
336
|
+
}, undefined>;
|
|
337
|
+
readonly 200: v.ObjectSchema<{
|
|
338
|
+
readonly matrix: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
|
|
339
|
+
readonly in_app: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
340
|
+
readonly email: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
341
|
+
}, undefined>, undefined>;
|
|
342
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
343
|
+
}, undefined>;
|
|
344
|
+
};
|
|
345
|
+
};
|
|
346
|
+
export declare const updateNotificationSettingsContract: {
|
|
347
|
+
readonly method: "put";
|
|
348
|
+
readonly pathResolver: () => string;
|
|
349
|
+
readonly requestBodySchema: v.ObjectSchema<{
|
|
350
|
+
readonly matrix: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
|
|
351
|
+
readonly in_app: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
352
|
+
readonly email: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
353
|
+
}, undefined>, undefined>;
|
|
354
|
+
}, undefined>;
|
|
355
|
+
readonly responsesByStatusCode: {
|
|
356
|
+
readonly '4xx': v.ObjectSchema<{
|
|
357
|
+
readonly error: v.ObjectSchema<{
|
|
358
|
+
readonly code: v.StringSchema<undefined>;
|
|
359
|
+
readonly message: v.StringSchema<undefined>;
|
|
360
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
361
|
+
readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
362
|
+
readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
363
|
+
readonly message: v.StringSchema<undefined>;
|
|
364
|
+
}, undefined>, undefined>, undefined>;
|
|
365
|
+
}, undefined>;
|
|
366
|
+
}, undefined>;
|
|
367
|
+
readonly '5xx': v.ObjectSchema<{
|
|
368
|
+
readonly error: v.ObjectSchema<{
|
|
369
|
+
readonly code: v.StringSchema<undefined>;
|
|
370
|
+
readonly message: v.StringSchema<undefined>;
|
|
371
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
372
|
+
readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
373
|
+
readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
374
|
+
readonly message: v.StringSchema<undefined>;
|
|
375
|
+
}, undefined>, undefined>, undefined>;
|
|
376
|
+
}, undefined>;
|
|
377
|
+
}, undefined>;
|
|
378
|
+
readonly 200: v.ObjectSchema<{
|
|
379
|
+
readonly matrix: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
|
|
380
|
+
readonly in_app: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
381
|
+
readonly email: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
382
|
+
}, undefined>, undefined>;
|
|
383
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
384
|
+
}, undefined>;
|
|
385
|
+
};
|
|
386
|
+
};
|
|
311
387
|
//# sourceMappingURL=notifications.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQlC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA;AAMF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK7C,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
|
|
2
2
|
import * as v from 'valibot';
|
|
3
3
|
import { actNotificationSchema, notificationSchema } from '../notifications.js';
|
|
4
|
+
import { notificationSettingsSchema, updateNotificationSettingsSchema, } from '../notification-routing.js';
|
|
4
5
|
import { errorResponses, singleStringParam } from './_shared.js';
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
6
7
|
// Notification inbox route contracts. Mounted under `/workspaces/:workspaceId`,
|
|
@@ -30,4 +31,18 @@ export const dismissNotificationContract = defineApiContract({
|
|
|
30
31
|
requestBodySchema: ContractNoBody,
|
|
31
32
|
responsesByStatusCode: { 200: notificationSchema, ...errorResponses },
|
|
32
33
|
});
|
|
34
|
+
// ---- the notification manager (per-workspace channel routing) --------------
|
|
35
|
+
// Which types this board delivers on which channel. Readable by any member (the settings
|
|
36
|
+
// surface renders the resolved state); the write is admin-tier, gated at the controller.
|
|
37
|
+
export const getNotificationSettingsContract = defineApiContract({
|
|
38
|
+
method: 'get',
|
|
39
|
+
pathResolver: () => '/notification-settings',
|
|
40
|
+
responsesByStatusCode: { 200: notificationSettingsSchema, ...errorResponses },
|
|
41
|
+
});
|
|
42
|
+
export const updateNotificationSettingsContract = defineApiContract({
|
|
43
|
+
method: 'put',
|
|
44
|
+
pathResolver: () => '/notification-settings',
|
|
45
|
+
requestBodySchema: updateNotificationSettingsSchema,
|
|
46
|
+
responsesByStatusCode: { 200: notificationSettingsSchema, ...errorResponses },
|
|
47
|
+
});
|
|
33
48
|
//# sourceMappingURL=notifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhE,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAE9E,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;AAC1D,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;AAEhE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACzD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,gBAAgB;IACpC,qBAAqB,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,cAAc,EAAE;CAC1E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACvD,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,kBAAkB,cAAc,MAAM;IAC5E,oFAAoF;IACpF,kFAAkF;IAClF,iBAAiB,EAAE,qBAAqB;IACxC,qBAAqB,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE;CACtE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;IAC3D,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,kBAAkB,cAAc,UAAU;IAChF,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE;CACtE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhE,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAE9E,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;AAC1D,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;AAEhE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACzD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,gBAAgB;IACpC,qBAAqB,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,cAAc,EAAE;CAC1E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACvD,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,kBAAkB,cAAc,MAAM;IAC5E,oFAAoF;IACpF,kFAAkF;IAClF,iBAAiB,EAAE,qBAAqB;IACxC,qBAAqB,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE;CACtE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;IAC3D,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,kBAAkB,cAAc,UAAU;IAChF,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE;CACtE,CAAC,CAAA;AAEF,+EAA+E;AAC/E,yFAAyF;AACzF,yFAAyF;AAEzF,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,CAAC;IAC/D,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,wBAAwB;IAC5C,qBAAqB,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,GAAG,cAAc,EAAE;CAC9E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,iBAAiB,CAAC;IAClE,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,wBAAwB;IAC5C,iBAAiB,EAAE,gCAAgC;IACnD,qBAAqB,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,GAAG,cAAc,EAAE;CAC9E,CAAC,CAAA"}
|