@cat-factory/contracts 0.34.0 → 0.36.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 +58 -0
  22. package/dist/routes/_shared.d.ts.map +1 -0
  23. package/dist/routes/_shared.js +46 -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 +244 -0
  34. package/dist/routes/api-keys.d.ts.map +1 -0
  35. package/dist/routes/api-keys.js +48 -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 +1259 -0
  42. package/dist/routes/board.d.ts.map +1 -0
  43. package/dist/routes/board.js +84 -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 +289 -0
  86. package/dist/routes/human-review.d.ts.map +1 -0
  87. package/dist/routes/human-review.js +19 -0
  88. package/dist/routes/human-review.js.map +1 -0
  89. package/dist/routes/human-test.d.ts +1434 -0
  90. package/dist/routes/human-test.d.ts.map +1 -0
  91. package/dist/routes/human-test.js +47 -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 +112 -0
  102. package/dist/routes/kaizen.d.ts.map +1 -0
  103. package/dist/routes/kaizen.js +21 -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 +122 -0
  122. package/dist/routes/models.d.ts.map +1 -0
  123. package/dist/routes/models.js +24 -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 +144 -0
  130. package/dist/routes/openrouter.d.ts.map +1 -0
  131. package/dist/routes/openrouter.js +31 -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 +75 -0
  182. package/dist/routes/spec.d.ts.map +1 -0
  183. package/dist/routes/spec.js +16 -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,411 @@
1
+ import { ContractNoBody } from '@toad-contracts/valibot';
2
+ import * as v from 'valibot';
3
+ /**
4
+ * Local-mode facade signals surfaced to the SPA, present only on the local facade
5
+ * (the Worker/Node facades omit it). This is the single source of truth for the
6
+ * shape: the server's `AppConfig.localMode` derives its type from it (see
7
+ * `@cat-factory/server` config), and the SPA reads the inferred type directly.
8
+ */
9
+ export declare const localModeConfigSchema: v.ObjectSchema<{
10
+ /** True on the local-mode facade (a single developer running the whole product locally). */
11
+ readonly enabled: v.BooleanSchema<undefined>;
12
+ /**
13
+ * When local mode runs WITHOUT a GitHub PAT, a github.com URL with the needed scopes
14
+ * pre-selected so the developer can create one in a click. Absent once a PAT is set.
15
+ */
16
+ readonly githubPatSetupUrl: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
17
+ }, undefined>;
18
+ export type LocalModeConfig = v.InferOutput<typeof localModeConfigSchema>;
19
+ export declare const authConfigContract: {
20
+ readonly method: "get";
21
+ readonly pathResolver: () => string;
22
+ readonly responsesByStatusCode: {
23
+ readonly '4xx': v.ObjectSchema<{
24
+ readonly error: v.ObjectSchema<{
25
+ readonly code: v.StringSchema<undefined>;
26
+ readonly message: v.StringSchema<undefined>;
27
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
28
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
29
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
30
+ readonly message: v.StringSchema<undefined>;
31
+ }, undefined>, undefined>, undefined>;
32
+ }, undefined>;
33
+ }, undefined>;
34
+ readonly '5xx': v.ObjectSchema<{
35
+ readonly error: v.ObjectSchema<{
36
+ readonly code: v.StringSchema<undefined>;
37
+ readonly message: v.StringSchema<undefined>;
38
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
39
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
40
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
41
+ readonly message: v.StringSchema<undefined>;
42
+ }, undefined>, undefined>, undefined>;
43
+ }, undefined>;
44
+ }, undefined>;
45
+ readonly 200: v.ObjectSchema<{
46
+ readonly enabled: v.BooleanSchema<undefined>;
47
+ readonly providers: v.ObjectSchema<{
48
+ readonly github: v.BooleanSchema<undefined>;
49
+ readonly password: v.BooleanSchema<undefined>;
50
+ readonly google: v.BooleanSchema<undefined>;
51
+ }, undefined>;
52
+ readonly localMode: v.OptionalSchema<v.ObjectSchema<{
53
+ /** True on the local-mode facade (a single developer running the whole product locally). */
54
+ readonly enabled: v.BooleanSchema<undefined>;
55
+ /**
56
+ * When local mode runs WITHOUT a GitHub PAT, a github.com URL with the needed scopes
57
+ * pre-selected so the developer can create one in a click. Absent once a PAT is set.
58
+ */
59
+ readonly githubPatSetupUrl: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
60
+ }, undefined>, undefined>;
61
+ }, undefined>;
62
+ };
63
+ };
64
+ export declare const githubLoginContract: {
65
+ readonly method: "get";
66
+ readonly pathResolver: () => string;
67
+ readonly responsesByStatusCode: {
68
+ readonly '4xx': v.ObjectSchema<{
69
+ readonly error: v.ObjectSchema<{
70
+ readonly code: v.StringSchema<undefined>;
71
+ readonly message: v.StringSchema<undefined>;
72
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
73
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
74
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
75
+ readonly message: v.StringSchema<undefined>;
76
+ }, undefined>, undefined>, undefined>;
77
+ }, undefined>;
78
+ }, undefined>;
79
+ readonly '5xx': v.ObjectSchema<{
80
+ readonly error: v.ObjectSchema<{
81
+ readonly code: v.StringSchema<undefined>;
82
+ readonly message: v.StringSchema<undefined>;
83
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
84
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
85
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
86
+ readonly message: v.StringSchema<undefined>;
87
+ }, undefined>, undefined>, undefined>;
88
+ }, undefined>;
89
+ }, undefined>;
90
+ readonly 200: typeof ContractNoBody;
91
+ };
92
+ };
93
+ export declare const githubCallbackContract: {
94
+ readonly method: "get";
95
+ readonly pathResolver: () => string;
96
+ readonly responsesByStatusCode: {
97
+ readonly '4xx': v.ObjectSchema<{
98
+ readonly error: v.ObjectSchema<{
99
+ readonly code: v.StringSchema<undefined>;
100
+ readonly message: v.StringSchema<undefined>;
101
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
102
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
103
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
104
+ readonly message: v.StringSchema<undefined>;
105
+ }, undefined>, undefined>, undefined>;
106
+ }, undefined>;
107
+ }, undefined>;
108
+ readonly '5xx': v.ObjectSchema<{
109
+ readonly error: v.ObjectSchema<{
110
+ readonly code: v.StringSchema<undefined>;
111
+ readonly message: v.StringSchema<undefined>;
112
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
113
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
114
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
115
+ readonly message: v.StringSchema<undefined>;
116
+ }, undefined>, undefined>, undefined>;
117
+ }, undefined>;
118
+ }, undefined>;
119
+ readonly 200: typeof ContractNoBody;
120
+ };
121
+ };
122
+ export declare const googleLoginContract: {
123
+ readonly method: "get";
124
+ readonly pathResolver: () => string;
125
+ readonly responsesByStatusCode: {
126
+ readonly '4xx': v.ObjectSchema<{
127
+ readonly error: v.ObjectSchema<{
128
+ readonly code: v.StringSchema<undefined>;
129
+ readonly message: v.StringSchema<undefined>;
130
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
131
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
132
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
133
+ readonly message: v.StringSchema<undefined>;
134
+ }, undefined>, undefined>, undefined>;
135
+ }, undefined>;
136
+ }, undefined>;
137
+ readonly '5xx': v.ObjectSchema<{
138
+ readonly error: v.ObjectSchema<{
139
+ readonly code: v.StringSchema<undefined>;
140
+ readonly message: v.StringSchema<undefined>;
141
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
142
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
143
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
144
+ readonly message: v.StringSchema<undefined>;
145
+ }, undefined>, undefined>, undefined>;
146
+ }, undefined>;
147
+ }, undefined>;
148
+ readonly 200: typeof ContractNoBody;
149
+ };
150
+ };
151
+ export declare const googleCallbackContract: {
152
+ readonly method: "get";
153
+ readonly pathResolver: () => string;
154
+ readonly responsesByStatusCode: {
155
+ readonly '4xx': v.ObjectSchema<{
156
+ readonly error: v.ObjectSchema<{
157
+ readonly code: v.StringSchema<undefined>;
158
+ readonly message: v.StringSchema<undefined>;
159
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
160
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
161
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
162
+ readonly message: v.StringSchema<undefined>;
163
+ }, undefined>, undefined>, undefined>;
164
+ }, undefined>;
165
+ }, undefined>;
166
+ readonly '5xx': v.ObjectSchema<{
167
+ readonly error: v.ObjectSchema<{
168
+ readonly code: v.StringSchema<undefined>;
169
+ readonly message: v.StringSchema<undefined>;
170
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
171
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
172
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
173
+ readonly message: v.StringSchema<undefined>;
174
+ }, undefined>, undefined>, undefined>;
175
+ }, undefined>;
176
+ }, undefined>;
177
+ readonly 200: typeof ContractNoBody;
178
+ };
179
+ };
180
+ export declare const signupContract: {
181
+ readonly method: "post";
182
+ readonly pathResolver: () => string;
183
+ readonly requestBodySchema: v.ObjectSchema<{
184
+ readonly email: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.EmailAction<string, undefined>, v.MaxLengthAction<string, 320, undefined>]>;
185
+ readonly password: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 8, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
186
+ readonly name: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 120, undefined>]>, undefined>;
187
+ readonly invite: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
188
+ }, undefined>;
189
+ readonly responsesByStatusCode: {
190
+ readonly '4xx': v.ObjectSchema<{
191
+ readonly error: v.ObjectSchema<{
192
+ readonly code: v.StringSchema<undefined>;
193
+ readonly message: v.StringSchema<undefined>;
194
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
195
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
196
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
197
+ readonly message: v.StringSchema<undefined>;
198
+ }, undefined>, undefined>, undefined>;
199
+ }, undefined>;
200
+ }, undefined>;
201
+ readonly '5xx': v.ObjectSchema<{
202
+ readonly error: v.ObjectSchema<{
203
+ readonly code: v.StringSchema<undefined>;
204
+ readonly message: v.StringSchema<undefined>;
205
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
206
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
207
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
208
+ readonly message: v.StringSchema<undefined>;
209
+ }, undefined>, undefined>, undefined>;
210
+ }, undefined>;
211
+ }, undefined>;
212
+ readonly 201: v.ObjectSchema<{
213
+ readonly token: v.StringSchema<undefined>;
214
+ readonly user: v.ObjectSchema<{
215
+ readonly id: v.StringSchema<undefined>;
216
+ readonly login: v.StringSchema<undefined>;
217
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
218
+ readonly avatarUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
219
+ readonly email: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
220
+ }, undefined>;
221
+ }, undefined>;
222
+ };
223
+ };
224
+ export declare const passwordLoginContract: {
225
+ readonly method: "post";
226
+ readonly pathResolver: () => string;
227
+ readonly requestBodySchema: v.ObjectSchema<{
228
+ readonly email: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.EmailAction<string, undefined>, v.MaxLengthAction<string, 320, undefined>]>;
229
+ readonly password: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
230
+ }, undefined>;
231
+ readonly responsesByStatusCode: {
232
+ readonly '4xx': v.ObjectSchema<{
233
+ readonly error: v.ObjectSchema<{
234
+ readonly code: v.StringSchema<undefined>;
235
+ readonly message: v.StringSchema<undefined>;
236
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
237
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
238
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
239
+ readonly message: v.StringSchema<undefined>;
240
+ }, undefined>, undefined>, undefined>;
241
+ }, undefined>;
242
+ }, undefined>;
243
+ readonly '5xx': v.ObjectSchema<{
244
+ readonly error: v.ObjectSchema<{
245
+ readonly code: v.StringSchema<undefined>;
246
+ readonly message: v.StringSchema<undefined>;
247
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
248
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
249
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
250
+ readonly message: v.StringSchema<undefined>;
251
+ }, undefined>, undefined>, undefined>;
252
+ }, undefined>;
253
+ }, undefined>;
254
+ readonly 200: v.ObjectSchema<{
255
+ readonly token: v.StringSchema<undefined>;
256
+ readonly user: v.ObjectSchema<{
257
+ readonly id: v.StringSchema<undefined>;
258
+ readonly login: v.StringSchema<undefined>;
259
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
260
+ readonly avatarUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
261
+ readonly email: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
262
+ }, undefined>;
263
+ }, undefined>;
264
+ };
265
+ };
266
+ export declare const peekInvitationContract: {
267
+ readonly method: "get";
268
+ readonly requestPathParamsSchema: v.ObjectSchema<{
269
+ token: v.StringSchema<undefined>;
270
+ }, undefined> & import("@toad-contracts/core").ObjectKeysCarrier;
271
+ readonly pathResolver: ({ token }: {
272
+ token: string;
273
+ }) => string;
274
+ readonly responsesByStatusCode: {
275
+ readonly '4xx': v.ObjectSchema<{
276
+ readonly error: v.ObjectSchema<{
277
+ readonly code: v.StringSchema<undefined>;
278
+ readonly message: v.StringSchema<undefined>;
279
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
280
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
281
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
282
+ readonly message: v.StringSchema<undefined>;
283
+ }, undefined>, undefined>, undefined>;
284
+ }, undefined>;
285
+ }, undefined>;
286
+ readonly '5xx': v.ObjectSchema<{
287
+ readonly error: v.ObjectSchema<{
288
+ readonly code: v.StringSchema<undefined>;
289
+ readonly message: v.StringSchema<undefined>;
290
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
291
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
292
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
293
+ readonly message: v.StringSchema<undefined>;
294
+ }, undefined>, undefined>, undefined>;
295
+ }, undefined>;
296
+ }, undefined>;
297
+ readonly 200: v.UnionSchema<[v.ObjectSchema<{
298
+ readonly valid: v.LiteralSchema<false, undefined>;
299
+ }, undefined>, v.ObjectSchema<{
300
+ readonly valid: v.LiteralSchema<true, undefined>;
301
+ readonly email: v.StringSchema<undefined>;
302
+ readonly accountName: v.NullableSchema<v.StringSchema<undefined>, undefined>;
303
+ }, undefined>], undefined>;
304
+ };
305
+ };
306
+ export declare const acceptInvitationContract: {
307
+ readonly method: "post";
308
+ readonly requestPathParamsSchema: v.ObjectSchema<{
309
+ token: v.StringSchema<undefined>;
310
+ }, undefined> & import("@toad-contracts/core").ObjectKeysCarrier;
311
+ readonly pathResolver: ({ token }: {
312
+ token: string;
313
+ }) => string;
314
+ readonly requestBodySchema: typeof ContractNoBody;
315
+ readonly responsesByStatusCode: {
316
+ readonly '4xx': v.ObjectSchema<{
317
+ readonly error: v.ObjectSchema<{
318
+ readonly code: v.StringSchema<undefined>;
319
+ readonly message: v.StringSchema<undefined>;
320
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
321
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
322
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
323
+ readonly message: v.StringSchema<undefined>;
324
+ }, undefined>, undefined>, undefined>;
325
+ }, undefined>;
326
+ }, undefined>;
327
+ readonly '5xx': v.ObjectSchema<{
328
+ readonly error: v.ObjectSchema<{
329
+ readonly code: v.StringSchema<undefined>;
330
+ readonly message: v.StringSchema<undefined>;
331
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
332
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
333
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
334
+ readonly message: v.StringSchema<undefined>;
335
+ }, undefined>, undefined>, undefined>;
336
+ }, undefined>;
337
+ }, undefined>;
338
+ readonly 200: v.ObjectSchema<{
339
+ readonly accountId: v.StringSchema<undefined>;
340
+ }, undefined>;
341
+ };
342
+ };
343
+ export declare const meContract: {
344
+ readonly method: "get";
345
+ readonly pathResolver: () => string;
346
+ readonly responsesByStatusCode: {
347
+ readonly '4xx': v.ObjectSchema<{
348
+ readonly error: v.ObjectSchema<{
349
+ readonly code: v.StringSchema<undefined>;
350
+ readonly message: v.StringSchema<undefined>;
351
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
352
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
353
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
354
+ readonly message: v.StringSchema<undefined>;
355
+ }, undefined>, undefined>, undefined>;
356
+ }, undefined>;
357
+ }, undefined>;
358
+ readonly '5xx': v.ObjectSchema<{
359
+ readonly error: v.ObjectSchema<{
360
+ readonly code: v.StringSchema<undefined>;
361
+ readonly message: v.StringSchema<undefined>;
362
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
363
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
364
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
365
+ readonly message: v.StringSchema<undefined>;
366
+ }, undefined>, undefined>, undefined>;
367
+ }, undefined>;
368
+ }, undefined>;
369
+ readonly 200: v.ObjectSchema<{
370
+ readonly user: v.NullableSchema<v.ObjectSchema<{
371
+ readonly id: v.StringSchema<undefined>;
372
+ readonly login: v.StringSchema<undefined>;
373
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
374
+ readonly avatarUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
375
+ readonly email: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
376
+ }, undefined>, undefined>;
377
+ readonly enabled: v.BooleanSchema<undefined>;
378
+ }, undefined>;
379
+ };
380
+ };
381
+ export declare const logoutContract: {
382
+ readonly method: "post";
383
+ readonly pathResolver: () => string;
384
+ readonly requestBodySchema: typeof ContractNoBody;
385
+ readonly responsesByStatusCode: {
386
+ readonly '4xx': v.ObjectSchema<{
387
+ readonly error: v.ObjectSchema<{
388
+ readonly code: v.StringSchema<undefined>;
389
+ readonly message: v.StringSchema<undefined>;
390
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
391
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
392
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
393
+ readonly message: v.StringSchema<undefined>;
394
+ }, undefined>, undefined>, undefined>;
395
+ }, undefined>;
396
+ }, undefined>;
397
+ readonly '5xx': v.ObjectSchema<{
398
+ readonly error: v.ObjectSchema<{
399
+ readonly code: v.StringSchema<undefined>;
400
+ readonly message: v.StringSchema<undefined>;
401
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
402
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
403
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
404
+ readonly message: v.StringSchema<undefined>;
405
+ }, undefined>, undefined>, undefined>;
406
+ }, undefined>;
407
+ }, undefined>;
408
+ readonly 204: typeof ContractNoBody;
409
+ };
410
+ };
411
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsB5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;IAChC,4FAA4F;;IAE5F;;;OAGG;;aAEH,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAmCzE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA3C7B,4FAA4F;;gBAE5F;;;mBAGG;;;;;CA0CH,CAAA;AAIF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAIF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAIF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKzB,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAIF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAIF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIrB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKzB,CAAA"}
@@ -0,0 +1,129 @@
1
+ import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
2
+ import * as v from 'valibot';
3
+ import { passwordLoginSchema, signupSchema } from '../auth.js';
4
+ import { errorResponses, singleStringParam } from './_shared.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Authentication route contracts. Mounted under `/auth`, so the paths here are
7
+ // relative to that prefix. Public endpoints (no auth gate). The OAuth round-trip
8
+ // routes (`/login`, `/callback`, `/google/*`) return a browser redirect (or an
9
+ // inline error), so their success is modelled as `ContractNoBody`. The JSON
10
+ // endpoints (`/config`, `/me`, `/signup`, `/password-login`, invitations) carry
11
+ // proper response schemas. See AuthController in @cat-factory/server.
12
+ // ---------------------------------------------------------------------------
13
+ // Response wrappers that exist only inline in the controller today.
14
+ const sessionUserViewSchema = v.object({
15
+ id: v.string(),
16
+ login: v.string(),
17
+ name: v.nullable(v.string()),
18
+ avatarUrl: v.nullable(v.string()),
19
+ email: v.optional(v.nullable(v.string())),
20
+ });
21
+ /**
22
+ * Local-mode facade signals surfaced to the SPA, present only on the local facade
23
+ * (the Worker/Node facades omit it). This is the single source of truth for the
24
+ * shape: the server's `AppConfig.localMode` derives its type from it (see
25
+ * `@cat-factory/server` config), and the SPA reads the inferred type directly.
26
+ */
27
+ export const localModeConfigSchema = v.object({
28
+ /** True on the local-mode facade (a single developer running the whole product locally). */
29
+ enabled: v.boolean(),
30
+ /**
31
+ * When local mode runs WITHOUT a GitHub PAT, a github.com URL with the needed scopes
32
+ * pre-selected so the developer can create one in a click. Absent once a PAT is set.
33
+ */
34
+ githubPatSetupUrl: v.optional(v.string()),
35
+ });
36
+ const authConfigViewSchema = v.object({
37
+ enabled: v.boolean(),
38
+ providers: v.object({
39
+ github: v.boolean(),
40
+ password: v.boolean(),
41
+ google: v.boolean(),
42
+ }),
43
+ localMode: v.optional(localModeConfigSchema),
44
+ });
45
+ const meViewSchema = v.object({
46
+ user: v.nullable(sessionUserViewSchema),
47
+ enabled: v.boolean(),
48
+ });
49
+ const loginResultSchema = v.object({
50
+ token: v.string(),
51
+ user: sessionUserViewSchema,
52
+ });
53
+ const invitationPeekSchema = v.union([
54
+ v.object({ valid: v.literal(false) }),
55
+ v.object({
56
+ valid: v.literal(true),
57
+ email: v.string(),
58
+ accountName: v.nullable(v.string()),
59
+ }),
60
+ ]);
61
+ const acceptInvitationResultSchema = v.object({ accountId: v.string() });
62
+ const inviteTokenParams = singleStringParam('token');
63
+ export const authConfigContract = defineApiContract({
64
+ method: 'get',
65
+ pathResolver: () => '/config',
66
+ responsesByStatusCode: { 200: authConfigViewSchema, ...errorResponses },
67
+ });
68
+ // ---- GitHub OAuth (browser redirect) --------------------------------------
69
+ export const githubLoginContract = defineApiContract({
70
+ method: 'get',
71
+ pathResolver: () => '/login',
72
+ responsesByStatusCode: { 200: ContractNoBody, ...errorResponses },
73
+ });
74
+ export const githubCallbackContract = defineApiContract({
75
+ method: 'get',
76
+ pathResolver: () => '/callback',
77
+ responsesByStatusCode: { 200: ContractNoBody, ...errorResponses },
78
+ });
79
+ // ---- Google OAuth (browser redirect) --------------------------------------
80
+ export const googleLoginContract = defineApiContract({
81
+ method: 'get',
82
+ pathResolver: () => '/google/login',
83
+ responsesByStatusCode: { 200: ContractNoBody, ...errorResponses },
84
+ });
85
+ export const googleCallbackContract = defineApiContract({
86
+ method: 'get',
87
+ pathResolver: () => '/google/callback',
88
+ responsesByStatusCode: { 200: ContractNoBody, ...errorResponses },
89
+ });
90
+ // ---- Email / password -----------------------------------------------------
91
+ export const signupContract = defineApiContract({
92
+ method: 'post',
93
+ pathResolver: () => '/signup',
94
+ requestBodySchema: signupSchema,
95
+ responsesByStatusCode: { 201: loginResultSchema, ...errorResponses },
96
+ });
97
+ export const passwordLoginContract = defineApiContract({
98
+ method: 'post',
99
+ pathResolver: () => '/password-login',
100
+ requestBodySchema: passwordLoginSchema,
101
+ responsesByStatusCode: { 200: loginResultSchema, ...errorResponses },
102
+ });
103
+ // ---- Invitations (peek + accept) ------------------------------------------
104
+ export const peekInvitationContract = defineApiContract({
105
+ method: 'get',
106
+ requestPathParamsSchema: inviteTokenParams,
107
+ pathResolver: ({ token }) => `/invitations/${token}`,
108
+ responsesByStatusCode: { 200: invitationPeekSchema, ...errorResponses },
109
+ });
110
+ export const acceptInvitationContract = defineApiContract({
111
+ method: 'post',
112
+ requestPathParamsSchema: inviteTokenParams,
113
+ pathResolver: ({ token }) => `/invitations/${token}/accept`,
114
+ requestBodySchema: ContractNoBody,
115
+ responsesByStatusCode: { 200: acceptInvitationResultSchema, ...errorResponses },
116
+ });
117
+ // ---- Session --------------------------------------------------------------
118
+ export const meContract = defineApiContract({
119
+ method: 'get',
120
+ pathResolver: () => '/me',
121
+ responsesByStatusCode: { 200: meViewSchema, ...errorResponses },
122
+ });
123
+ export const logoutContract = defineApiContract({
124
+ method: 'post',
125
+ pathResolver: () => '/logout',
126
+ requestBodySchema: ContractNoBody,
127
+ responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
128
+ });
129
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"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"}