@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.
@@ -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. Which of these a runtime actually supports
7
- * is surfaced to the UI via {@link contentStorageCapabilitySchema}.
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
- }, undefined>;
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
- }, undefined>, undefined>;
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
- }, undefined>, undefined>;
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
- }, undefined>, undefined>;
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":"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"}
1
+ {"version":3,"file":"accountSettings.d.ts","sourceRoot":"","sources":["../src/accountSettings.ts"],"names":[],"mappings":"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"}
@@ -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. Which of these a runtime actually supports
18
- * is surfaced to the UI via {@link contentStorageCapabilitySchema}.
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":"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"}
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
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,mBAAmB,YAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,mCAAmC,CAC3B,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"}
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
@@ -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';
@@ -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":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAyB,MAAM,oBAAoB,CAAA;AAElF,8EAA8E;AAC9E,mFAAmF;AACnF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,kFAAkF;AAClF,4EAA4E;AAC5E,EAAE;AACF,wDAAwD;AACxD,mFAAmF;AACnF,2EAA2E;AAC3E,iFAAiF;AACjF,kFAAkF;AAClF,iFAAiF;AACjF,wEAAwE;AACxE,EAAE;AACF,sFAAsF;AACtF,sFAAsF;AACtF,qFAAqF;AACrF,+CAA+C;AAC/C,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AAGhF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,QAAQ;IACR,OAAO;CACkD,CAAA;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,0DAA0D;IAC1D,cAAc;IACd,oFAAoF;IACpF,gFAAgF;IAChF,mBAAmB;IACnB,oFAAoF;IACpF,WAAW;IACX,aAAa;IACb,uCAAuC;IACvC,oBAAoB;IACpB,wFAAwF;IACxF,yFAAyF;IACzF,yEAAyE;IACzE,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;IACf,WAAW;CACmC,CAAA;AAEhD,MAAM,eAAe,GAAkC,IAAI,GAAG,CAAC,8BAA8B,CAAC,CAAA;AAE9F,4FAA4F;AAC5F,MAAM,UAAU,4BAA4B,CAAC,IAAsB;IACjE,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CAC/B,CAAC,CAAA;AAGF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CACrD,sBAAsB,EACtB,kCAAkC,CACnC,CAAA;AAGD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,+BAA+B;IACvC,uFAAuF;IACvF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,MAAM,EAAE,+BAA+B;CACxC,CAAC,CAAA;AAGF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAsB,EACtB,OAAoC;IAEpC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAA;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAoD,EACpD,IAAsB,EACtB,OAAoC;IAEpC,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,+BAA+B,CAAC,GAAY;IAC1D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC9C,MAAM,MAAM,GAA8B,EAAE,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAA;QAC5D,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,SAAQ;QACjC,8FAA8F;QAC9F,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAA;QACxE,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,SAAQ;QACjC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAA;IAC/C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,0BAA0B,CACxC,MAAoD,EACpD,IAAsB;IAEtB,OAAO;QACL,MAAM,EAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;QACpD,KAAK,EAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;KACnD,CAAA;AACH,CAAC"}
@@ -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
- }, undefined>, undefined>;
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
- }, undefined>, undefined>;
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
- }, undefined>, undefined>;
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":"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"}
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;AAa5B,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQlC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/contracts",
3
- "version": "0.274.0",
3
+ "version": "0.275.0",
4
4
  "description": "Valibot wire contract shared between the Agent Architecture Board frontend and backend.",
5
5
  "repository": {
6
6
  "type": "git",