@cat-factory/contracts 0.34.0 → 0.35.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 (209) hide show
  1. package/dist/api-keys.d.ts +17 -0
  2. package/dist/api-keys.d.ts.map +1 -1
  3. package/dist/api-keys.js +2 -0
  4. package/dist/api-keys.js.map +1 -1
  5. package/dist/github.d.ts +14 -0
  6. package/dist/github.d.ts.map +1 -1
  7. package/dist/github.js +13 -0
  8. package/dist/github.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/observability.d.ts +63 -0
  14. package/dist/observability.d.ts.map +1 -1
  15. package/dist/observability.js +57 -0
  16. package/dist/observability.js.map +1 -1
  17. package/dist/requests.d.ts +7 -0
  18. package/dist/requests.d.ts.map +1 -1
  19. package/dist/requests.js +2 -0
  20. package/dist/requests.js.map +1 -1
  21. package/dist/routes/_shared.d.ts +49 -0
  22. package/dist/routes/_shared.d.ts.map +1 -0
  23. package/dist/routes/_shared.js +34 -0
  24. package/dist/routes/_shared.js.map +1 -0
  25. package/dist/routes/accounts.d.ts +775 -0
  26. package/dist/routes/accounts.d.ts.map +1 -0
  27. package/dist/routes/accounts.js +145 -0
  28. package/dist/routes/accounts.js.map +1 -0
  29. package/dist/routes/agent-runs.d.ts +659 -0
  30. package/dist/routes/agent-runs.d.ts.map +1 -0
  31. package/dist/routes/agent-runs.js +33 -0
  32. package/dist/routes/agent-runs.js.map +1 -0
  33. package/dist/routes/api-keys.d.ts +245 -0
  34. package/dist/routes/api-keys.d.ts.map +1 -0
  35. package/dist/routes/api-keys.js +49 -0
  36. package/dist/routes/api-keys.js.map +1 -0
  37. package/dist/routes/auth.d.ts +411 -0
  38. package/dist/routes/auth.d.ts.map +1 -0
  39. package/dist/routes/auth.js +129 -0
  40. package/dist/routes/auth.js.map +1 -0
  41. package/dist/routes/board.d.ts +1260 -0
  42. package/dist/routes/board.d.ts.map +1 -0
  43. package/dist/routes/board.js +85 -0
  44. package/dist/routes/board.js.map +1 -0
  45. package/dist/routes/bootstrap.d.ts +395 -0
  46. package/dist/routes/bootstrap.d.ts.map +1 -0
  47. package/dist/routes/bootstrap.js +56 -0
  48. package/dist/routes/bootstrap.js.map +1 -0
  49. package/dist/routes/brainstorm.d.ts +482 -0
  50. package/dist/routes/brainstorm.d.ts.map +1 -0
  51. package/dist/routes/brainstorm.js +69 -0
  52. package/dist/routes/brainstorm.js.map +1 -0
  53. package/dist/routes/clarity.d.ts +462 -0
  54. package/dist/routes/clarity.d.ts.map +1 -0
  55. package/dist/routes/clarity.js +67 -0
  56. package/dist/routes/clarity.js.map +1 -0
  57. package/dist/routes/consensus.d.ts +71 -0
  58. package/dist/routes/consensus.d.ts.map +1 -0
  59. package/dist/routes/consensus.js +23 -0
  60. package/dist/routes/consensus.js.map +1 -0
  61. package/dist/routes/documents.d.ts +449 -0
  62. package/dist/routes/documents.d.ts.map +1 -0
  63. package/dist/routes/documents.js +89 -0
  64. package/dist/routes/documents.js.map +1 -0
  65. package/dist/routes/environments.d.ts +715 -0
  66. package/dist/routes/environments.d.ts.map +1 -0
  67. package/dist/routes/environments.js +82 -0
  68. package/dist/routes/environments.js.map +1 -0
  69. package/dist/routes/execution.d.ts +2768 -0
  70. package/dist/routes/execution.d.ts.map +1 -0
  71. package/dist/routes/execution.js +119 -0
  72. package/dist/routes/execution.js.map +1 -0
  73. package/dist/routes/followUp.d.ts +277 -0
  74. package/dist/routes/followUp.d.ts.map +1 -0
  75. package/dist/routes/followUp.js +47 -0
  76. package/dist/routes/followUp.js.map +1 -0
  77. package/dist/routes/fragment-library.d.ts +594 -0
  78. package/dist/routes/fragment-library.d.ts.map +1 -0
  79. package/dist/routes/fragment-library.js +102 -0
  80. package/dist/routes/fragment-library.js.map +1 -0
  81. package/dist/routes/github.d.ts +807 -0
  82. package/dist/routes/github.d.ts.map +1 -0
  83. package/dist/routes/github.js +157 -0
  84. package/dist/routes/github.js.map +1 -0
  85. package/dist/routes/human-review.d.ts +290 -0
  86. package/dist/routes/human-review.d.ts.map +1 -0
  87. package/dist/routes/human-review.js +20 -0
  88. package/dist/routes/human-review.js.map +1 -0
  89. package/dist/routes/human-test.d.ts +1435 -0
  90. package/dist/routes/human-test.d.ts.map +1 -0
  91. package/dist/routes/human-test.js +48 -0
  92. package/dist/routes/human-test.js.map +1 -0
  93. package/dist/routes/incident-enrichment.d.ts +110 -0
  94. package/dist/routes/incident-enrichment.d.ts.map +1 -0
  95. package/dist/routes/incident-enrichment.js +26 -0
  96. package/dist/routes/incident-enrichment.js.map +1 -0
  97. package/dist/routes/index.d.ts +47 -0
  98. package/dist/routes/index.d.ts.map +1 -0
  99. package/dist/routes/index.js +50 -0
  100. package/dist/routes/index.js.map +1 -0
  101. package/dist/routes/kaizen.d.ts +113 -0
  102. package/dist/routes/kaizen.d.ts.map +1 -0
  103. package/dist/routes/kaizen.js +22 -0
  104. package/dist/routes/kaizen.js.map +1 -0
  105. package/dist/routes/localModels.d.ts +163 -0
  106. package/dist/routes/localModels.d.ts.map +1 -0
  107. package/dist/routes/localModels.js +41 -0
  108. package/dist/routes/localModels.js.map +1 -0
  109. package/dist/routes/localSettings.d.ts +93 -0
  110. package/dist/routes/localSettings.d.ts.map +1 -0
  111. package/dist/routes/localSettings.js +22 -0
  112. package/dist/routes/localSettings.js.map +1 -0
  113. package/dist/routes/merge.d.ts +197 -0
  114. package/dist/routes/merge.d.ts.map +1 -0
  115. package/dist/routes/merge.js +36 -0
  116. package/dist/routes/merge.js.map +1 -0
  117. package/dist/routes/model-presets.d.ts +162 -0
  118. package/dist/routes/model-presets.d.ts.map +1 -0
  119. package/dist/routes/model-presets.js +36 -0
  120. package/dist/routes/model-presets.js.map +1 -0
  121. package/dist/routes/models.d.ts +123 -0
  122. package/dist/routes/models.d.ts.map +1 -0
  123. package/dist/routes/models.js +25 -0
  124. package/dist/routes/models.js.map +1 -0
  125. package/dist/routes/notifications.d.ts +213 -0
  126. package/dist/routes/notifications.d.ts.map +1 -0
  127. package/dist/routes/notifications.js +31 -0
  128. package/dist/routes/notifications.js.map +1 -0
  129. package/dist/routes/openrouter.d.ts +145 -0
  130. package/dist/routes/openrouter.d.ts.map +1 -0
  131. package/dist/routes/openrouter.js +32 -0
  132. package/dist/routes/openrouter.js.map +1 -0
  133. package/dist/routes/personal-subscriptions.d.ts +124 -0
  134. package/dist/routes/personal-subscriptions.d.ts.map +1 -0
  135. package/dist/routes/personal-subscriptions.js +32 -0
  136. package/dist/routes/personal-subscriptions.js.map +1 -0
  137. package/dist/routes/pipelines.d.ts +457 -0
  138. package/dist/routes/pipelines.d.ts.map +1 -0
  139. package/dist/routes/pipelines.js +51 -0
  140. package/dist/routes/pipelines.js.map +1 -0
  141. package/dist/routes/prompt-fragments.d.ts +52 -0
  142. package/dist/routes/prompt-fragments.d.ts.map +1 -0
  143. package/dist/routes/prompt-fragments.js +14 -0
  144. package/dist/routes/prompt-fragments.js.map +1 -0
  145. package/dist/routes/provisioning-logs.d.ts +45 -0
  146. package/dist/routes/provisioning-logs.d.ts.map +1 -0
  147. package/dist/routes/provisioning-logs.js +14 -0
  148. package/dist/routes/provisioning-logs.js.map +1 -0
  149. package/dist/routes/recurring.d.ts +309 -0
  150. package/dist/routes/recurring.d.ts.map +1 -0
  151. package/dist/routes/recurring.js +50 -0
  152. package/dist/routes/recurring.js.map +1 -0
  153. package/dist/routes/release.d.ts +218 -0
  154. package/dist/routes/release.d.ts.map +1 -0
  155. package/dist/routes/release.js +47 -0
  156. package/dist/routes/release.js.map +1 -0
  157. package/dist/routes/requirements.d.ts +901 -0
  158. package/dist/routes/requirements.d.ts.map +1 -0
  159. package/dist/routes/requirements.js +96 -0
  160. package/dist/routes/requirements.js.map +1 -0
  161. package/dist/routes/runners.d.ts +442 -0
  162. package/dist/routes/runners.d.ts.map +1 -0
  163. package/dist/routes/runners.js +47 -0
  164. package/dist/routes/runners.js.map +1 -0
  165. package/dist/routes/sandbox.d.ts +898 -0
  166. package/dist/routes/sandbox.d.ts.map +1 -0
  167. package/dist/routes/sandbox.js +119 -0
  168. package/dist/routes/sandbox.js.map +1 -0
  169. package/dist/routes/service-fragment-defaults.d.ts +66 -0
  170. package/dist/routes/service-fragment-defaults.d.ts.map +1 -0
  171. package/dist/routes/service-fragment-defaults.js +20 -0
  172. package/dist/routes/service-fragment-defaults.js.map +1 -0
  173. package/dist/routes/services.d.ts +224 -0
  174. package/dist/routes/services.d.ts.map +1 -0
  175. package/dist/routes/services.js +44 -0
  176. package/dist/routes/services.js.map +1 -0
  177. package/dist/routes/slack.d.ts +332 -0
  178. package/dist/routes/slack.d.ts.map +1 -0
  179. package/dist/routes/slack.js +72 -0
  180. package/dist/routes/slack.js.map +1 -0
  181. package/dist/routes/spec.d.ts +76 -0
  182. package/dist/routes/spec.d.ts.map +1 -0
  183. package/dist/routes/spec.js +17 -0
  184. package/dist/routes/spec.js.map +1 -0
  185. package/dist/routes/tasks.d.ts +723 -0
  186. package/dist/routes/tasks.d.ts.map +1 -0
  187. package/dist/routes/tasks.js +108 -0
  188. package/dist/routes/tasks.js.map +1 -0
  189. package/dist/routes/tracker.d.ts +77 -0
  190. package/dist/routes/tracker.d.ts.map +1 -0
  191. package/dist/routes/tracker.js +20 -0
  192. package/dist/routes/tracker.js.map +1 -0
  193. package/dist/routes/user-secret.d.ts +231 -0
  194. package/dist/routes/user-secret.d.ts.map +1 -0
  195. package/dist/routes/user-secret.js +49 -0
  196. package/dist/routes/user-secret.js.map +1 -0
  197. package/dist/routes/vendor-credentials.d.ts +120 -0
  198. package/dist/routes/vendor-credentials.d.ts.map +1 -0
  199. package/dist/routes/vendor-credentials.js +33 -0
  200. package/dist/routes/vendor-credentials.js.map +1 -0
  201. package/dist/routes/workspace-settings.d.ts +93 -0
  202. package/dist/routes/workspace-settings.d.ts.map +1 -0
  203. package/dist/routes/workspace-settings.js +20 -0
  204. package/dist/routes/workspace-settings.js.map +1 -0
  205. package/dist/routes/workspaces.d.ts +1309 -0
  206. package/dist/routes/workspaces.d.ts.map +1 -0
  207. package/dist/routes/workspaces.js +45 -0
  208. package/dist/routes/workspaces.js.map +1 -0
  209. package/package.json +3 -1
@@ -0,0 +1,332 @@
1
+ import { ContractNoBody } from '@toad-contracts/valibot';
2
+ import * as v from 'valibot';
3
+ export declare const getSlackConnectionContract: {
4
+ readonly method: "get";
5
+ readonly pathResolver: () => string;
6
+ readonly responsesByStatusCode: {
7
+ readonly '4xx': v.ObjectSchema<{
8
+ readonly error: v.ObjectSchema<{
9
+ readonly code: v.StringSchema<undefined>;
10
+ readonly message: v.StringSchema<undefined>;
11
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
12
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
13
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
14
+ readonly message: v.StringSchema<undefined>;
15
+ }, undefined>, undefined>, undefined>;
16
+ }, undefined>;
17
+ }, undefined>;
18
+ readonly '5xx': v.ObjectSchema<{
19
+ readonly error: v.ObjectSchema<{
20
+ readonly code: v.StringSchema<undefined>;
21
+ readonly message: v.StringSchema<undefined>;
22
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
23
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
24
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
25
+ readonly message: v.StringSchema<undefined>;
26
+ }, undefined>, undefined>, undefined>;
27
+ }, undefined>;
28
+ }, undefined>;
29
+ readonly 200: v.ObjectSchema<{
30
+ readonly connection: v.NullableSchema<v.ObjectSchema<{
31
+ readonly teamId: v.StringSchema<undefined>;
32
+ readonly teamName: v.StringSchema<undefined>;
33
+ readonly teamIconUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
34
+ readonly botUserId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
35
+ readonly scopes: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
36
+ readonly connectedAt: v.NumberSchema<undefined>;
37
+ }, undefined>, undefined>;
38
+ readonly oauthEnabled: v.BooleanSchema<undefined>;
39
+ }, undefined>;
40
+ };
41
+ };
42
+ export declare const getSlackInstallUrlContract: {
43
+ readonly method: "get";
44
+ readonly pathResolver: () => string;
45
+ readonly responsesByStatusCode: {
46
+ readonly '4xx': v.ObjectSchema<{
47
+ readonly error: v.ObjectSchema<{
48
+ readonly code: v.StringSchema<undefined>;
49
+ readonly message: v.StringSchema<undefined>;
50
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
51
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
52
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
53
+ readonly message: v.StringSchema<undefined>;
54
+ }, undefined>, undefined>, undefined>;
55
+ }, undefined>;
56
+ }, undefined>;
57
+ readonly '5xx': v.ObjectSchema<{
58
+ readonly error: v.ObjectSchema<{
59
+ readonly code: v.StringSchema<undefined>;
60
+ readonly message: v.StringSchema<undefined>;
61
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
62
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
63
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
64
+ readonly message: v.StringSchema<undefined>;
65
+ }, undefined>, undefined>, undefined>;
66
+ }, undefined>;
67
+ }, undefined>;
68
+ readonly 200: v.ObjectSchema<{
69
+ readonly url: v.StringSchema<undefined>;
70
+ }, undefined>;
71
+ };
72
+ };
73
+ export declare const connectSlackContract: {
74
+ readonly method: "post";
75
+ readonly pathResolver: () => string;
76
+ readonly requestBodySchema: v.ObjectSchema<{
77
+ readonly token: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
78
+ }, undefined>;
79
+ readonly responsesByStatusCode: {
80
+ readonly '4xx': v.ObjectSchema<{
81
+ readonly error: v.ObjectSchema<{
82
+ readonly code: v.StringSchema<undefined>;
83
+ readonly message: v.StringSchema<undefined>;
84
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
85
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
86
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
87
+ readonly message: v.StringSchema<undefined>;
88
+ }, undefined>, undefined>, undefined>;
89
+ }, undefined>;
90
+ }, undefined>;
91
+ readonly '5xx': v.ObjectSchema<{
92
+ readonly error: v.ObjectSchema<{
93
+ readonly code: v.StringSchema<undefined>;
94
+ readonly message: v.StringSchema<undefined>;
95
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
96
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
97
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
98
+ readonly message: v.StringSchema<undefined>;
99
+ }, undefined>, undefined>, undefined>;
100
+ }, undefined>;
101
+ }, undefined>;
102
+ readonly 201: v.ObjectSchema<{
103
+ readonly teamId: v.StringSchema<undefined>;
104
+ readonly teamName: v.StringSchema<undefined>;
105
+ readonly teamIconUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
106
+ readonly botUserId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
107
+ readonly scopes: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
108
+ readonly connectedAt: v.NumberSchema<undefined>;
109
+ }, undefined>;
110
+ };
111
+ };
112
+ export declare const disconnectSlackContract: {
113
+ readonly method: "delete";
114
+ readonly pathResolver: () => string;
115
+ readonly responsesByStatusCode: {
116
+ readonly '4xx': v.ObjectSchema<{
117
+ readonly error: v.ObjectSchema<{
118
+ readonly code: v.StringSchema<undefined>;
119
+ readonly message: v.StringSchema<undefined>;
120
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
121
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
122
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
123
+ readonly message: v.StringSchema<undefined>;
124
+ }, undefined>, undefined>, undefined>;
125
+ }, undefined>;
126
+ }, undefined>;
127
+ readonly '5xx': v.ObjectSchema<{
128
+ readonly error: v.ObjectSchema<{
129
+ readonly code: v.StringSchema<undefined>;
130
+ readonly message: v.StringSchema<undefined>;
131
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
132
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
133
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
134
+ readonly message: v.StringSchema<undefined>;
135
+ }, undefined>, undefined>, undefined>;
136
+ }, undefined>;
137
+ }, undefined>;
138
+ readonly 204: typeof ContractNoBody;
139
+ };
140
+ };
141
+ export declare const listSlackChannelsContract: {
142
+ readonly method: "get";
143
+ readonly pathResolver: () => string;
144
+ readonly responsesByStatusCode: {
145
+ readonly '4xx': v.ObjectSchema<{
146
+ readonly error: v.ObjectSchema<{
147
+ readonly code: v.StringSchema<undefined>;
148
+ readonly message: v.StringSchema<undefined>;
149
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
150
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
151
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
152
+ readonly message: v.StringSchema<undefined>;
153
+ }, undefined>, undefined>, undefined>;
154
+ }, undefined>;
155
+ }, undefined>;
156
+ readonly '5xx': v.ObjectSchema<{
157
+ readonly error: v.ObjectSchema<{
158
+ readonly code: v.StringSchema<undefined>;
159
+ readonly message: v.StringSchema<undefined>;
160
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
161
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
162
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
163
+ readonly message: v.StringSchema<undefined>;
164
+ }, undefined>, undefined>, undefined>;
165
+ }, undefined>;
166
+ }, undefined>;
167
+ readonly 200: v.ObjectSchema<{
168
+ readonly channels: v.ArraySchema<v.ObjectSchema<{
169
+ readonly id: v.StringSchema<undefined>;
170
+ readonly name: v.StringSchema<undefined>;
171
+ readonly isPrivate: v.BooleanSchema<undefined>;
172
+ }, undefined>, undefined>;
173
+ }, undefined>;
174
+ };
175
+ };
176
+ export declare const getSlackSettingsContract: {
177
+ readonly method: "get";
178
+ readonly pathResolver: () => string;
179
+ readonly responsesByStatusCode: {
180
+ readonly '4xx': v.ObjectSchema<{
181
+ readonly error: v.ObjectSchema<{
182
+ readonly code: v.StringSchema<undefined>;
183
+ readonly message: v.StringSchema<undefined>;
184
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
185
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
186
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
187
+ readonly message: v.StringSchema<undefined>;
188
+ }, undefined>, undefined>, undefined>;
189
+ }, undefined>;
190
+ }, undefined>;
191
+ readonly '5xx': v.ObjectSchema<{
192
+ readonly error: v.ObjectSchema<{
193
+ readonly code: v.StringSchema<undefined>;
194
+ readonly message: v.StringSchema<undefined>;
195
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
196
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
197
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
198
+ readonly message: v.StringSchema<undefined>;
199
+ }, undefined>, undefined>, undefined>;
200
+ }, undefined>;
201
+ }, undefined>;
202
+ readonly 200: v.ObjectSchema<{
203
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "human_review", "followup_pending"], undefined>, v.ObjectSchema<{
204
+ readonly enabled: v.BooleanSchema<undefined>;
205
+ readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
206
+ }, undefined>, undefined>;
207
+ readonly mentionsEnabled: v.BooleanSchema<undefined>;
208
+ readonly updatedAt: v.NumberSchema<undefined>;
209
+ }, undefined>;
210
+ };
211
+ };
212
+ export declare const updateSlackSettingsContract: {
213
+ readonly method: "put";
214
+ readonly pathResolver: () => string;
215
+ readonly requestBodySchema: v.ObjectSchema<{
216
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "human_review", "followup_pending"], undefined>, v.ObjectSchema<{
217
+ readonly enabled: v.BooleanSchema<undefined>;
218
+ readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
219
+ }, undefined>, undefined>;
220
+ readonly mentionsEnabled: v.BooleanSchema<undefined>;
221
+ }, undefined>;
222
+ readonly responsesByStatusCode: {
223
+ readonly '4xx': v.ObjectSchema<{
224
+ readonly error: v.ObjectSchema<{
225
+ readonly code: v.StringSchema<undefined>;
226
+ readonly message: v.StringSchema<undefined>;
227
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
228
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
229
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
230
+ readonly message: v.StringSchema<undefined>;
231
+ }, undefined>, undefined>, undefined>;
232
+ }, undefined>;
233
+ }, undefined>;
234
+ readonly '5xx': v.ObjectSchema<{
235
+ readonly error: v.ObjectSchema<{
236
+ readonly code: v.StringSchema<undefined>;
237
+ readonly message: v.StringSchema<undefined>;
238
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
239
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
240
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
241
+ readonly message: v.StringSchema<undefined>;
242
+ }, undefined>, undefined>, undefined>;
243
+ }, undefined>;
244
+ }, undefined>;
245
+ readonly 200: v.ObjectSchema<{
246
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "human_review", "followup_pending"], undefined>, v.ObjectSchema<{
247
+ readonly enabled: v.BooleanSchema<undefined>;
248
+ readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
249
+ }, undefined>, undefined>;
250
+ readonly mentionsEnabled: v.BooleanSchema<undefined>;
251
+ readonly updatedAt: v.NumberSchema<undefined>;
252
+ }, undefined>;
253
+ };
254
+ };
255
+ export declare const getSlackMemberMappingContract: {
256
+ readonly method: "get";
257
+ readonly pathResolver: () => string;
258
+ readonly responsesByStatusCode: {
259
+ readonly '4xx': v.ObjectSchema<{
260
+ readonly error: v.ObjectSchema<{
261
+ readonly code: v.StringSchema<undefined>;
262
+ readonly message: v.StringSchema<undefined>;
263
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
264
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
265
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
266
+ readonly message: v.StringSchema<undefined>;
267
+ }, undefined>, undefined>, undefined>;
268
+ }, undefined>;
269
+ }, undefined>;
270
+ readonly '5xx': v.ObjectSchema<{
271
+ readonly error: v.ObjectSchema<{
272
+ readonly code: v.StringSchema<undefined>;
273
+ readonly message: v.StringSchema<undefined>;
274
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
275
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
276
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
277
+ readonly message: v.StringSchema<undefined>;
278
+ }, undefined>, undefined>, undefined>;
279
+ }, undefined>;
280
+ }, undefined>;
281
+ readonly 200: v.ObjectSchema<{
282
+ readonly entries: v.ArraySchema<v.ObjectSchema<{
283
+ readonly userId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
284
+ readonly slackUserId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
285
+ readonly role: v.OptionalSchema<v.PicklistSchema<["product", "engineering"], undefined>, undefined>;
286
+ }, undefined>, undefined>;
287
+ }, undefined>;
288
+ };
289
+ };
290
+ export declare const updateSlackMemberMappingContract: {
291
+ readonly method: "put";
292
+ readonly pathResolver: () => string;
293
+ readonly requestBodySchema: v.ObjectSchema<{
294
+ readonly entries: v.ArraySchema<v.ObjectSchema<{
295
+ readonly userId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
296
+ readonly slackUserId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
297
+ readonly role: v.OptionalSchema<v.PicklistSchema<["product", "engineering"], undefined>, undefined>;
298
+ }, undefined>, undefined>;
299
+ }, undefined>;
300
+ readonly responsesByStatusCode: {
301
+ readonly '4xx': v.ObjectSchema<{
302
+ readonly error: v.ObjectSchema<{
303
+ readonly code: v.StringSchema<undefined>;
304
+ readonly message: v.StringSchema<undefined>;
305
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
306
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
307
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
308
+ readonly message: v.StringSchema<undefined>;
309
+ }, undefined>, undefined>, undefined>;
310
+ }, undefined>;
311
+ }, undefined>;
312
+ readonly '5xx': v.ObjectSchema<{
313
+ readonly error: v.ObjectSchema<{
314
+ readonly code: v.StringSchema<undefined>;
315
+ readonly message: v.StringSchema<undefined>;
316
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
317
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
318
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
319
+ readonly message: v.StringSchema<undefined>;
320
+ }, undefined>, undefined>, undefined>;
321
+ }, undefined>;
322
+ }, undefined>;
323
+ readonly 200: v.ObjectSchema<{
324
+ readonly entries: v.ArraySchema<v.ObjectSchema<{
325
+ readonly userId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
326
+ readonly slackUserId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
327
+ readonly role: v.OptionalSchema<v.PicklistSchema<["product", "engineering"], undefined>, undefined>;
328
+ }, undefined>, undefined>;
329
+ }, undefined>;
330
+ };
331
+ };
332
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/routes/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgC5B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIrC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIrC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAIF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtC,CAAA;AAIF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIxC,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK3C,CAAA"}
@@ -0,0 +1,72 @@
1
+ import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
2
+ import * as v from 'valibot';
3
+ import { connectSlackByTokenSchema, slackChannelSchema, slackConnectionSchema, slackMemberMappingEntrySchema, slackNotificationSettingsSchema, updateSlackMemberMappingSchema, updateSlackSettingsSchema, } from '../slack.js';
4
+ import { errorResponses } from './_shared.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Workspace-scoped Slack route contracts. Mounted under `/workspaces/:workspaceId`,
7
+ // so the paths here are relative to that prefix. The public OAuth callback
8
+ // (`slackOAuthController`, mounted at `/slack`) returns a browser redirect and is
9
+ // not modelled as an API contract. See SlackController.
10
+ // ---------------------------------------------------------------------------
11
+ // Response wrappers that exist only inline in the controller today.
12
+ const slackConnectionViewSchema = v.object({
13
+ connection: v.nullable(slackConnectionSchema),
14
+ oauthEnabled: v.boolean(),
15
+ });
16
+ const slackInstallUrlSchema = v.object({ url: v.string() });
17
+ const slackChannelsViewSchema = v.object({ channels: v.array(slackChannelSchema) });
18
+ const slackMemberMappingViewSchema = v.object({
19
+ entries: v.array(slackMemberMappingEntrySchema),
20
+ });
21
+ // ---- connection (per-account) ---------------------------------------------
22
+ export const getSlackConnectionContract = defineApiContract({
23
+ method: 'get',
24
+ pathResolver: () => '/slack/connection',
25
+ responsesByStatusCode: { 200: slackConnectionViewSchema, ...errorResponses },
26
+ });
27
+ export const getSlackInstallUrlContract = defineApiContract({
28
+ method: 'get',
29
+ pathResolver: () => '/slack/install-url',
30
+ responsesByStatusCode: { 200: slackInstallUrlSchema, ...errorResponses },
31
+ });
32
+ export const connectSlackContract = defineApiContract({
33
+ method: 'post',
34
+ pathResolver: () => '/slack/connect',
35
+ requestBodySchema: connectSlackByTokenSchema,
36
+ responsesByStatusCode: { 201: slackConnectionSchema, ...errorResponses },
37
+ });
38
+ export const disconnectSlackContract = defineApiContract({
39
+ method: 'delete',
40
+ pathResolver: () => '/slack/connection',
41
+ responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
42
+ });
43
+ export const listSlackChannelsContract = defineApiContract({
44
+ method: 'get',
45
+ pathResolver: () => '/slack/channels',
46
+ responsesByStatusCode: { 200: slackChannelsViewSchema, ...errorResponses },
47
+ });
48
+ // ---- routing (per-workspace) ----------------------------------------------
49
+ export const getSlackSettingsContract = defineApiContract({
50
+ method: 'get',
51
+ pathResolver: () => '/slack/settings',
52
+ responsesByStatusCode: { 200: slackNotificationSettingsSchema, ...errorResponses },
53
+ });
54
+ export const updateSlackSettingsContract = defineApiContract({
55
+ method: 'put',
56
+ pathResolver: () => '/slack/settings',
57
+ requestBodySchema: updateSlackSettingsSchema,
58
+ responsesByStatusCode: { 200: slackNotificationSettingsSchema, ...errorResponses },
59
+ });
60
+ // ---- member mapping (per-account) -----------------------------------------
61
+ export const getSlackMemberMappingContract = defineApiContract({
62
+ method: 'get',
63
+ pathResolver: () => '/slack/member-mapping',
64
+ responsesByStatusCode: { 200: slackMemberMappingViewSchema, ...errorResponses },
65
+ });
66
+ export const updateSlackMemberMappingContract = defineApiContract({
67
+ method: 'put',
68
+ pathResolver: () => '/slack/member-mapping',
69
+ requestBodySchema: updateSlackMemberMappingSchema,
70
+ responsesByStatusCode: { 200: slackMemberMappingViewSchema, ...errorResponses },
71
+ });
72
+ //# sourceMappingURL=slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/routes/slack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import * as v from 'valibot';
2
+ export declare const getServiceSpecContract: {
3
+ readonly method: "get";
4
+ readonly requestPathParamsSchema: v.ObjectSchema<{
5
+ readonly blockId: v.StringSchema<undefined>;
6
+ }, undefined> & import("@toad-contracts/core").ObjectKeysCarrier;
7
+ readonly pathResolver: ({ blockId }: {
8
+ blockId: string;
9
+ }) => string;
10
+ readonly responsesByStatusCode: {
11
+ readonly '4xx': v.ObjectSchema<{
12
+ readonly error: v.ObjectSchema<{
13
+ readonly code: v.StringSchema<undefined>;
14
+ readonly message: v.StringSchema<undefined>;
15
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
16
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
17
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
18
+ readonly message: v.StringSchema<undefined>;
19
+ }, undefined>, undefined>, undefined>;
20
+ }, undefined>;
21
+ }, undefined>;
22
+ readonly '5xx': v.ObjectSchema<{
23
+ readonly error: v.ObjectSchema<{
24
+ readonly code: v.StringSchema<undefined>;
25
+ readonly message: v.StringSchema<undefined>;
26
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
27
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
28
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
29
+ readonly message: v.StringSchema<undefined>;
30
+ }, undefined>, undefined>, undefined>;
31
+ }, undefined>;
32
+ }, undefined>;
33
+ readonly 200: v.ObjectSchema<{
34
+ readonly present: v.BooleanSchema<undefined>;
35
+ readonly spec: v.NullableSchema<v.ObjectSchema<{
36
+ readonly service: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
37
+ readonly summary: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, "">;
38
+ readonly modules: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
39
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
40
+ readonly summary: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, "">;
41
+ readonly groups: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
42
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
43
+ readonly summary: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, "">;
44
+ readonly requirements: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
45
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
46
+ readonly title: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
47
+ readonly statement: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
48
+ readonly kind: v.PicklistSchema<["functional", "nonfunctional", "constraint"], undefined>;
49
+ readonly priority: v.PicklistSchema<["must", "should", "could"], undefined>;
50
+ readonly sourceBlockIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, readonly []>;
51
+ readonly acceptance: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
52
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
53
+ readonly given: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
54
+ readonly when: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
55
+ readonly outcome: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
56
+ }, undefined>, undefined>, readonly []>;
57
+ }, undefined>, undefined>, readonly []>;
58
+ readonly rules: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
59
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
60
+ readonly rule: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
61
+ readonly rationale: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, "">;
62
+ readonly sourceBlockIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, readonly []>;
63
+ }, undefined>, undefined>, readonly []>;
64
+ }, undefined>, undefined>, readonly []>;
65
+ }, undefined>, undefined>, readonly []>;
66
+ }, undefined>, undefined>;
67
+ readonly features: v.ArraySchema<v.ObjectSchema<{
68
+ readonly module: v.StringSchema<undefined>;
69
+ readonly group: v.StringSchema<undefined>;
70
+ readonly path: v.StringSchema<undefined>;
71
+ readonly content: v.StringSchema<undefined>;
72
+ }, undefined>, undefined>;
73
+ }, undefined>;
74
+ };
75
+ };
76
+ //# sourceMappingURL=spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/routes/spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAW5B,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKjC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { defineApiContract, withObjectKeys } from '@toad-contracts/valibot';
2
+ import * as v from 'valibot';
3
+ import { serviceSpecViewSchema } from '../spec.js';
4
+ import { errorResponses } from './_shared.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Service-spec read route contract. See ServiceSpecController in
7
+ // @cat-factory/server. Mounted under `/workspaces/:workspaceId`, so the path here
8
+ // is relative to that prefix and `workspaceId` is NOT a contract param (the
9
+ // handler reads it via `param(c, 'workspaceId')`).
10
+ // ---------------------------------------------------------------------------
11
+ export const getServiceSpecContract = defineApiContract({
12
+ method: 'get',
13
+ requestPathParamsSchema: withObjectKeys(v.object({ blockId: v.string() })),
14
+ pathResolver: ({ blockId }) => `/blocks/${blockId}/spec`,
15
+ responsesByStatusCode: { 200: serviceSpecViewSchema, ...errorResponses },
16
+ });
17
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/routes/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,8EAA8E;AAC9E,iEAAiE;AACjE,kFAAkF;AAClF,4EAA4E;AAC5E,mDAAmD;AACnD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,WAAW,OAAO,OAAO;IACxD,qBAAqB,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,cAAc,EAAE;CACzE,CAAC,CAAA"}