@cat-factory/contracts 0.273.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.
Files changed (52) hide show
  1. package/dist/accountSettings.d.ts +156 -22
  2. package/dist/accountSettings.d.ts.map +1 -1
  3. package/dist/accountSettings.js +48 -5
  4. package/dist/accountSettings.js.map +1 -1
  5. package/dist/errors.d.ts +16 -1
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +16 -0
  8. package/dist/errors.js.map +1 -1
  9. package/dist/execution.d.ts +22 -0
  10. package/dist/execution.d.ts.map +1 -1
  11. package/dist/human-verdict-gates.d.ts +139 -0
  12. package/dist/human-verdict-gates.d.ts.map +1 -1
  13. package/dist/human-verdict-gates.js +102 -0
  14. package/dist/human-verdict-gates.js.map +1 -1
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/notification-routing.d.ts +100 -0
  20. package/dist/notification-routing.d.ts.map +1 -0
  21. package/dist/notification-routing.js +155 -0
  22. package/dist/notification-routing.js.map +1 -0
  23. package/dist/routes/accounts.d.ts +81 -15
  24. package/dist/routes/accounts.d.ts.map +1 -1
  25. package/dist/routes/agent-runs.d.ts +22 -0
  26. package/dist/routes/agent-runs.d.ts.map +1 -1
  27. package/dist/routes/bug-hunt.d.ts +22 -0
  28. package/dist/routes/bug-hunt.d.ts.map +1 -1
  29. package/dist/routes/execution.d.ts +88 -0
  30. package/dist/routes/execution.d.ts.map +1 -1
  31. package/dist/routes/human-review.d.ts +11 -0
  32. package/dist/routes/human-review.d.ts.map +1 -1
  33. package/dist/routes/human-test.d.ts +55 -0
  34. package/dist/routes/human-test.d.ts.map +1 -1
  35. package/dist/routes/notifications.d.ts +76 -0
  36. package/dist/routes/notifications.d.ts.map +1 -1
  37. package/dist/routes/notifications.js +15 -0
  38. package/dist/routes/notifications.js.map +1 -1
  39. package/dist/routes/visual-confirm.d.ts +33 -0
  40. package/dist/routes/visual-confirm.d.ts.map +1 -1
  41. package/dist/routes/workspaces.d.ts +22 -0
  42. package/dist/routes/workspaces.d.ts.map +1 -1
  43. package/dist/run-evidence.d.ts +18 -0
  44. package/dist/run-evidence.d.ts.map +1 -1
  45. package/dist/run-evidence.js +23 -0
  46. package/dist/run-evidence.js.map +1 -1
  47. package/dist/run-outcome.d.ts.map +1 -1
  48. package/dist/run-outcome.js +12 -2
  49. package/dist/run-outcome.js.map +1 -1
  50. package/dist/snapshot.d.ts +11 -0
  51. package/dist/snapshot.d.ts.map +1 -1
  52. package/package.json +1 -1
@@ -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
- }, 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":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAMF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM3C,CAAA;AAQF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS7B,CAAA"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAMF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM3C,CAAA;AAQF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS7B,CAAA"}
@@ -336,8 +336,19 @@ export declare const retryAgentRunContract: {
336
336
  readonly view: v.StringSchema<undefined>;
337
337
  readonly actualArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
338
338
  readonly referenceArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
339
+ readonly referenceOrigin: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["upload", "design"], undefined>, undefined>, undefined>;
339
340
  }, undefined>, undefined>, undefined>;
340
341
  readonly degradedReason: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
342
+ readonly designReferences: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
343
+ readonly documents: v.NumberSchema<undefined>;
344
+ readonly images: v.NumberSchema<undefined>;
345
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
346
+ readonly gaps: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
347
+ readonly title: v.StringSchema<undefined>;
348
+ readonly reason: v.NullableSchema<v.PicklistSchema<["partial", "failed", "none", "storage_unavailable", "not_retained"], undefined>, undefined>;
349
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
350
+ }, undefined>, undefined>, undefined>;
351
+ }, undefined>, undefined>, undefined>;
341
352
  readonly attempts: v.NumberSchema<undefined>;
342
353
  readonly maxAttempts: v.NumberSchema<undefined>;
343
354
  readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
@@ -1549,8 +1560,19 @@ export declare const stopAgentRunContract: {
1549
1560
  readonly view: v.StringSchema<undefined>;
1550
1561
  readonly actualArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1551
1562
  readonly referenceArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1563
+ readonly referenceOrigin: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["upload", "design"], undefined>, undefined>, undefined>;
1552
1564
  }, undefined>, undefined>, undefined>;
1553
1565
  readonly degradedReason: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1566
+ readonly designReferences: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
1567
+ readonly documents: v.NumberSchema<undefined>;
1568
+ readonly images: v.NumberSchema<undefined>;
1569
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1570
+ readonly gaps: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1571
+ readonly title: v.StringSchema<undefined>;
1572
+ readonly reason: v.NullableSchema<v.PicklistSchema<["partial", "failed", "none", "storage_unavailable", "not_retained"], undefined>, undefined>;
1573
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1574
+ }, undefined>, undefined>, undefined>;
1575
+ }, undefined>, undefined>, undefined>;
1554
1576
  readonly attempts: v.NumberSchema<undefined>;
1555
1577
  readonly maxAttempts: v.NumberSchema<undefined>;
1556
1578
  readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runs.d.ts","sourceRoot":"","sources":["../../src/routes/agent-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsB5B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/B,CAAA"}
1
+ {"version":3,"file":"agent-runs.d.ts","sourceRoot":"","sources":["../../src/routes/agent-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsB5B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/B,CAAA"}
@@ -651,8 +651,19 @@ declare const adoptBugHuntResultSchema: v.ObjectSchema<{
651
651
  readonly view: v.StringSchema<undefined>;
652
652
  readonly actualArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
653
653
  readonly referenceArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
654
+ readonly referenceOrigin: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["upload", "design"], undefined>, undefined>, undefined>;
654
655
  }, undefined>, undefined>, undefined>;
655
656
  readonly degradedReason: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
657
+ readonly designReferences: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
658
+ readonly documents: v.NumberSchema<undefined>;
659
+ readonly images: v.NumberSchema<undefined>;
660
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
661
+ readonly gaps: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
662
+ readonly title: v.StringSchema<undefined>;
663
+ readonly reason: v.NullableSchema<v.PicklistSchema<["partial", "failed", "none", "storage_unavailable", "not_retained"], undefined>, undefined>;
664
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
665
+ }, undefined>, undefined>, undefined>;
666
+ }, undefined>, undefined>, undefined>;
656
667
  readonly attempts: v.NumberSchema<undefined>;
657
668
  readonly maxAttempts: v.NumberSchema<undefined>;
658
669
  readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
@@ -2281,8 +2292,19 @@ export declare const adoptBugHuntCandidateContract: {
2281
2292
  readonly view: v.StringSchema<undefined>;
2282
2293
  readonly actualArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
2283
2294
  readonly referenceArtifactId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
2295
+ readonly referenceOrigin: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["upload", "design"], undefined>, undefined>, undefined>;
2284
2296
  }, undefined>, undefined>, undefined>;
2285
2297
  readonly degradedReason: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
2298
+ readonly designReferences: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
2299
+ readonly documents: v.NumberSchema<undefined>;
2300
+ readonly images: v.NumberSchema<undefined>;
2301
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2302
+ readonly gaps: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
2303
+ readonly title: v.StringSchema<undefined>;
2304
+ readonly reason: v.NullableSchema<v.PicklistSchema<["partial", "failed", "none", "storage_unavailable", "not_retained"], undefined>, undefined>;
2305
+ readonly dropped: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2306
+ }, undefined>, undefined>, undefined>;
2307
+ }, undefined>, undefined>, undefined>;
2286
2308
  readonly attempts: v.NumberSchema<undefined>;
2287
2309
  readonly maxAttempts: v.NumberSchema<undefined>;
2288
2310
  readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
@@ -1 +1 @@
1
- {"version":3,"file":"bug-hunt.d.ts","sourceRoot":"","sources":["../../src/routes/bug-hunt.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA"}
1
+ {"version":3,"file":"bug-hunt.d.ts","sourceRoot":"","sources":["../../src/routes/bug-hunt.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA"}