@cat-factory/contracts 0.35.0 → 0.37.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 (142) hide show
  1. package/dist/auth.d.ts +11 -0
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +9 -0
  4. package/dist/auth.js.map +1 -1
  5. package/dist/routes/_shared.d.ts +9 -0
  6. package/dist/routes/_shared.d.ts.map +1 -1
  7. package/dist/routes/_shared.js +12 -0
  8. package/dist/routes/_shared.js.map +1 -1
  9. package/dist/routes/accounts.d.ts +13 -13
  10. package/dist/routes/accounts.js +2 -2
  11. package/dist/routes/accounts.js.map +1 -1
  12. package/dist/routes/agent-runs.d.ts +2 -2
  13. package/dist/routes/agent-runs.d.ts.map +1 -1
  14. package/dist/routes/agent-runs.js +3 -3
  15. package/dist/routes/agent-runs.js.map +1 -1
  16. package/dist/routes/api-keys.d.ts +154 -155
  17. package/dist/routes/api-keys.d.ts.map +1 -1
  18. package/dist/routes/api-keys.js +3 -4
  19. package/dist/routes/api-keys.js.map +1 -1
  20. package/dist/routes/auth.d.ts +67 -2
  21. package/dist/routes/auth.d.ts.map +1 -1
  22. package/dist/routes/auth.js +20 -4
  23. package/dist/routes/auth.js.map +1 -1
  24. package/dist/routes/board.d.ts +853 -854
  25. package/dist/routes/board.d.ts.map +1 -1
  26. package/dist/routes/board.js +3 -4
  27. package/dist/routes/board.js.map +1 -1
  28. package/dist/routes/bootstrap.d.ts +3 -3
  29. package/dist/routes/bootstrap.d.ts.map +1 -1
  30. package/dist/routes/bootstrap.js +4 -4
  31. package/dist/routes/bootstrap.js.map +1 -1
  32. package/dist/routes/clarity.d.ts +6 -6
  33. package/dist/routes/clarity.js +2 -2
  34. package/dist/routes/clarity.js.map +1 -1
  35. package/dist/routes/consensus.d.ts +1 -1
  36. package/dist/routes/consensus.js +3 -3
  37. package/dist/routes/consensus.js.map +1 -1
  38. package/dist/routes/documents.d.ts +6 -6
  39. package/dist/routes/documents.d.ts.map +1 -1
  40. package/dist/routes/documents.js +3 -3
  41. package/dist/routes/documents.js.map +1 -1
  42. package/dist/routes/environments.d.ts +3 -3
  43. package/dist/routes/environments.d.ts.map +1 -1
  44. package/dist/routes/environments.js +3 -3
  45. package/dist/routes/environments.js.map +1 -1
  46. package/dist/routes/execution.d.ts +7 -7
  47. package/dist/routes/execution.js +3 -3
  48. package/dist/routes/execution.js.map +1 -1
  49. package/dist/routes/followUp.d.ts +1 -1
  50. package/dist/routes/followUp.js +2 -2
  51. package/dist/routes/followUp.js.map +1 -1
  52. package/dist/routes/fragment-library.d.ts +6 -6
  53. package/dist/routes/fragment-library.d.ts.map +1 -1
  54. package/dist/routes/fragment-library.js +4 -4
  55. package/dist/routes/fragment-library.js.map +1 -1
  56. package/dist/routes/github.d.ts +6 -6
  57. package/dist/routes/github.js +2 -2
  58. package/dist/routes/github.js.map +1 -1
  59. package/dist/routes/human-review.d.ts +235 -236
  60. package/dist/routes/human-review.d.ts.map +1 -1
  61. package/dist/routes/human-review.js +3 -4
  62. package/dist/routes/human-review.js.map +1 -1
  63. package/dist/routes/human-test.d.ts +1202 -1203
  64. package/dist/routes/human-test.d.ts.map +1 -1
  65. package/dist/routes/human-test.js +3 -4
  66. package/dist/routes/human-test.js.map +1 -1
  67. package/dist/routes/kaizen.d.ts +79 -80
  68. package/dist/routes/kaizen.d.ts.map +1 -1
  69. package/dist/routes/kaizen.js +3 -4
  70. package/dist/routes/kaizen.js.map +1 -1
  71. package/dist/routes/localModels.d.ts +2 -2
  72. package/dist/routes/localModels.d.ts.map +1 -1
  73. package/dist/routes/localModels.js +3 -3
  74. package/dist/routes/localModels.js.map +1 -1
  75. package/dist/routes/merge.d.ts +2 -2
  76. package/dist/routes/merge.d.ts.map +1 -1
  77. package/dist/routes/merge.js +3 -3
  78. package/dist/routes/merge.js.map +1 -1
  79. package/dist/routes/model-presets.d.ts +2 -2
  80. package/dist/routes/model-presets.d.ts.map +1 -1
  81. package/dist/routes/model-presets.js +3 -3
  82. package/dist/routes/model-presets.js.map +1 -1
  83. package/dist/routes/models.d.ts +86 -87
  84. package/dist/routes/models.d.ts.map +1 -1
  85. package/dist/routes/models.js +3 -4
  86. package/dist/routes/models.js.map +1 -1
  87. package/dist/routes/notifications.d.ts +2 -2
  88. package/dist/routes/notifications.d.ts.map +1 -1
  89. package/dist/routes/notifications.js +3 -3
  90. package/dist/routes/notifications.js.map +1 -1
  91. package/dist/routes/openrouter.d.ts +88 -89
  92. package/dist/routes/openrouter.d.ts.map +1 -1
  93. package/dist/routes/openrouter.js +3 -4
  94. package/dist/routes/openrouter.js.map +1 -1
  95. package/dist/routes/personal-subscriptions.d.ts +1 -1
  96. package/dist/routes/personal-subscriptions.d.ts.map +1 -1
  97. package/dist/routes/personal-subscriptions.js +3 -3
  98. package/dist/routes/personal-subscriptions.js.map +1 -1
  99. package/dist/routes/pipelines.d.ts +4 -4
  100. package/dist/routes/pipelines.d.ts.map +1 -1
  101. package/dist/routes/pipelines.js +3 -3
  102. package/dist/routes/pipelines.js.map +1 -1
  103. package/dist/routes/recurring.d.ts +4 -4
  104. package/dist/routes/recurring.d.ts.map +1 -1
  105. package/dist/routes/recurring.js +3 -3
  106. package/dist/routes/recurring.js.map +1 -1
  107. package/dist/routes/release.d.ts +2 -2
  108. package/dist/routes/release.d.ts.map +1 -1
  109. package/dist/routes/release.js +3 -3
  110. package/dist/routes/release.js.map +1 -1
  111. package/dist/routes/requirements.d.ts +7 -7
  112. package/dist/routes/requirements.js +2 -2
  113. package/dist/routes/requirements.js.map +1 -1
  114. package/dist/routes/sandbox.d.ts +5 -5
  115. package/dist/routes/sandbox.d.ts.map +1 -1
  116. package/dist/routes/sandbox.js +5 -5
  117. package/dist/routes/sandbox.js.map +1 -1
  118. package/dist/routes/services.d.ts +3 -3
  119. package/dist/routes/services.d.ts.map +1 -1
  120. package/dist/routes/services.js +3 -3
  121. package/dist/routes/services.js.map +1 -1
  122. package/dist/routes/spec.d.ts +51 -52
  123. package/dist/routes/spec.d.ts.map +1 -1
  124. package/dist/routes/spec.js +3 -4
  125. package/dist/routes/spec.js.map +1 -1
  126. package/dist/routes/tasks.d.ts +7 -7
  127. package/dist/routes/tasks.d.ts.map +1 -1
  128. package/dist/routes/tasks.js +3 -3
  129. package/dist/routes/tasks.js.map +1 -1
  130. package/dist/routes/user-secret.d.ts +4 -4
  131. package/dist/routes/user-secret.d.ts.map +1 -1
  132. package/dist/routes/user-secret.js +3 -3
  133. package/dist/routes/user-secret.js.map +1 -1
  134. package/dist/routes/vendor-credentials.d.ts +1 -1
  135. package/dist/routes/vendor-credentials.d.ts.map +1 -1
  136. package/dist/routes/vendor-credentials.js +3 -3
  137. package/dist/routes/vendor-credentials.js.map +1 -1
  138. package/dist/routes/workspaces.d.ts +3 -3
  139. package/dist/routes/workspaces.d.ts.map +1 -1
  140. package/dist/routes/workspaces.js +5 -5
  141. package/dist/routes/workspaces.js.map +1 -1
  142. package/package.json +1 -1
@@ -1,43 +1,42 @@
1
1
  import { ContractNoBody } from '@toad-contracts/valibot';
2
- import * as v from 'valibot';
3
2
  export declare const listWorkspaceApiKeysContract: {
4
3
  readonly method: "get";
5
4
  readonly pathResolver: () => string;
6
5
  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>;
6
+ readonly '4xx': import("valibot").ObjectSchema<{
7
+ readonly error: import("valibot").ObjectSchema<{
8
+ readonly code: import("valibot").StringSchema<undefined>;
9
+ readonly message: import("valibot").StringSchema<undefined>;
10
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
11
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
12
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
13
+ readonly message: import("valibot").StringSchema<undefined>;
15
14
  }, undefined>, undefined>, undefined>;
16
15
  }, undefined>;
17
16
  }, 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>;
17
+ readonly '5xx': import("valibot").ObjectSchema<{
18
+ readonly error: import("valibot").ObjectSchema<{
19
+ readonly code: import("valibot").StringSchema<undefined>;
20
+ readonly message: import("valibot").StringSchema<undefined>;
21
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
22
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
23
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
24
+ readonly message: import("valibot").StringSchema<undefined>;
26
25
  }, undefined>, undefined>, undefined>;
27
26
  }, undefined>;
28
27
  }, undefined>;
29
- readonly 200: v.ObjectSchema<{
30
- readonly keys: v.ArraySchema<v.ObjectSchema<{
31
- readonly id: v.StringSchema<undefined>;
32
- readonly scope: v.PicklistSchema<["account", "workspace", "user"], undefined>;
33
- readonly scopeId: v.StringSchema<undefined>;
34
- readonly provider: v.PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
35
- readonly label: v.StringSchema<undefined>;
36
- readonly createdAt: v.NumberSchema<undefined>;
37
- readonly lastUsedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
38
- readonly inputTokens: v.NumberSchema<undefined>;
39
- readonly outputTokens: v.NumberSchema<undefined>;
40
- readonly requestCount: v.NumberSchema<undefined>;
28
+ readonly 200: import("valibot").ObjectSchema<{
29
+ readonly keys: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
30
+ readonly id: import("valibot").StringSchema<undefined>;
31
+ readonly scope: import("valibot").PicklistSchema<["account", "workspace", "user"], undefined>;
32
+ readonly scopeId: import("valibot").StringSchema<undefined>;
33
+ readonly provider: import("valibot").PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
34
+ readonly label: import("valibot").StringSchema<undefined>;
35
+ readonly createdAt: import("valibot").NumberSchema<undefined>;
36
+ readonly lastUsedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
37
+ readonly inputTokens: import("valibot").NumberSchema<undefined>;
38
+ readonly outputTokens: import("valibot").NumberSchema<undefined>;
39
+ readonly requestCount: import("valibot").NumberSchema<undefined>;
41
40
  }, undefined>, undefined>;
42
41
  }, undefined>;
43
42
  };
@@ -45,76 +44,76 @@ export declare const listWorkspaceApiKeysContract: {
45
44
  export declare const addWorkspaceApiKeyContract: {
46
45
  readonly method: "post";
47
46
  readonly pathResolver: () => string;
48
- readonly requestBodySchema: v.ObjectSchema<{
49
- readonly provider: v.PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
50
- readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
51
- readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
47
+ readonly requestBodySchema: import("valibot").ObjectSchema<{
48
+ readonly provider: import("valibot").PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
49
+ readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
50
+ readonly key: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>;
52
51
  }, undefined>;
53
52
  readonly responsesByStatusCode: {
54
- readonly '4xx': v.ObjectSchema<{
55
- readonly error: v.ObjectSchema<{
56
- readonly code: v.StringSchema<undefined>;
57
- readonly message: v.StringSchema<undefined>;
58
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
59
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
60
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
61
- readonly message: v.StringSchema<undefined>;
53
+ readonly '4xx': import("valibot").ObjectSchema<{
54
+ readonly error: import("valibot").ObjectSchema<{
55
+ readonly code: import("valibot").StringSchema<undefined>;
56
+ readonly message: import("valibot").StringSchema<undefined>;
57
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
58
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
59
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
60
+ readonly message: import("valibot").StringSchema<undefined>;
62
61
  }, undefined>, undefined>, undefined>;
63
62
  }, undefined>;
64
63
  }, undefined>;
65
- readonly '5xx': v.ObjectSchema<{
66
- readonly error: v.ObjectSchema<{
67
- readonly code: v.StringSchema<undefined>;
68
- readonly message: v.StringSchema<undefined>;
69
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
70
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
71
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
72
- readonly message: v.StringSchema<undefined>;
64
+ readonly '5xx': import("valibot").ObjectSchema<{
65
+ readonly error: import("valibot").ObjectSchema<{
66
+ readonly code: import("valibot").StringSchema<undefined>;
67
+ readonly message: import("valibot").StringSchema<undefined>;
68
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
69
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
70
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
71
+ readonly message: import("valibot").StringSchema<undefined>;
73
72
  }, undefined>, undefined>, undefined>;
74
73
  }, undefined>;
75
74
  }, undefined>;
76
- readonly 201: v.ObjectSchema<{
77
- readonly id: v.StringSchema<undefined>;
78
- readonly scope: v.PicklistSchema<["account", "workspace", "user"], undefined>;
79
- readonly scopeId: v.StringSchema<undefined>;
80
- readonly provider: v.PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
81
- readonly label: v.StringSchema<undefined>;
82
- readonly createdAt: v.NumberSchema<undefined>;
83
- readonly lastUsedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
84
- readonly inputTokens: v.NumberSchema<undefined>;
85
- readonly outputTokens: v.NumberSchema<undefined>;
86
- readonly requestCount: v.NumberSchema<undefined>;
75
+ readonly 201: import("valibot").ObjectSchema<{
76
+ readonly id: import("valibot").StringSchema<undefined>;
77
+ readonly scope: import("valibot").PicklistSchema<["account", "workspace", "user"], undefined>;
78
+ readonly scopeId: import("valibot").StringSchema<undefined>;
79
+ readonly provider: import("valibot").PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
80
+ readonly label: import("valibot").StringSchema<undefined>;
81
+ readonly createdAt: import("valibot").NumberSchema<undefined>;
82
+ readonly lastUsedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
83
+ readonly inputTokens: import("valibot").NumberSchema<undefined>;
84
+ readonly outputTokens: import("valibot").NumberSchema<undefined>;
85
+ readonly requestCount: import("valibot").NumberSchema<undefined>;
87
86
  }, undefined>;
88
87
  };
89
88
  };
90
89
  export declare const removeWorkspaceApiKeyContract: {
91
90
  readonly method: "delete";
92
- readonly requestPathParamsSchema: v.ObjectSchema<{
93
- readonly id: v.StringSchema<undefined>;
91
+ readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
92
+ id: import("valibot").StringSchema<undefined>;
94
93
  }, undefined> & import("@toad-contracts/core").ObjectKeysCarrier;
95
94
  readonly pathResolver: ({ id }: {
96
95
  id: string;
97
96
  }) => string;
98
97
  readonly responsesByStatusCode: {
99
- readonly '4xx': v.ObjectSchema<{
100
- readonly error: v.ObjectSchema<{
101
- readonly code: v.StringSchema<undefined>;
102
- readonly message: v.StringSchema<undefined>;
103
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
104
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
105
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
106
- readonly message: v.StringSchema<undefined>;
98
+ readonly '4xx': import("valibot").ObjectSchema<{
99
+ readonly error: import("valibot").ObjectSchema<{
100
+ readonly code: import("valibot").StringSchema<undefined>;
101
+ readonly message: import("valibot").StringSchema<undefined>;
102
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
103
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
104
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
105
+ readonly message: import("valibot").StringSchema<undefined>;
107
106
  }, undefined>, undefined>, undefined>;
108
107
  }, undefined>;
109
108
  }, undefined>;
110
- readonly '5xx': v.ObjectSchema<{
111
- readonly error: v.ObjectSchema<{
112
- readonly code: v.StringSchema<undefined>;
113
- readonly message: v.StringSchema<undefined>;
114
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
115
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
116
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
117
- readonly message: v.StringSchema<undefined>;
109
+ readonly '5xx': import("valibot").ObjectSchema<{
110
+ readonly error: import("valibot").ObjectSchema<{
111
+ readonly code: import("valibot").StringSchema<undefined>;
112
+ readonly message: import("valibot").StringSchema<undefined>;
113
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
114
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
115
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
116
+ readonly message: import("valibot").StringSchema<undefined>;
118
117
  }, undefined>, undefined>, undefined>;
119
118
  }, undefined>;
120
119
  }, undefined>;
@@ -125,40 +124,40 @@ export declare const listUserApiKeysContract: {
125
124
  readonly method: "get";
126
125
  readonly pathResolver: () => string;
127
126
  readonly responsesByStatusCode: {
128
- readonly '4xx': v.ObjectSchema<{
129
- readonly error: v.ObjectSchema<{
130
- readonly code: v.StringSchema<undefined>;
131
- readonly message: v.StringSchema<undefined>;
132
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
133
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
134
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
135
- readonly message: v.StringSchema<undefined>;
127
+ readonly '4xx': import("valibot").ObjectSchema<{
128
+ readonly error: import("valibot").ObjectSchema<{
129
+ readonly code: import("valibot").StringSchema<undefined>;
130
+ readonly message: import("valibot").StringSchema<undefined>;
131
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
132
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
133
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
134
+ readonly message: import("valibot").StringSchema<undefined>;
136
135
  }, undefined>, undefined>, undefined>;
137
136
  }, undefined>;
138
137
  }, undefined>;
139
- readonly '5xx': v.ObjectSchema<{
140
- readonly error: v.ObjectSchema<{
141
- readonly code: v.StringSchema<undefined>;
142
- readonly message: v.StringSchema<undefined>;
143
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
144
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
145
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
146
- readonly message: v.StringSchema<undefined>;
138
+ readonly '5xx': import("valibot").ObjectSchema<{
139
+ readonly error: import("valibot").ObjectSchema<{
140
+ readonly code: import("valibot").StringSchema<undefined>;
141
+ readonly message: import("valibot").StringSchema<undefined>;
142
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
143
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
144
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
145
+ readonly message: import("valibot").StringSchema<undefined>;
147
146
  }, undefined>, undefined>, undefined>;
148
147
  }, undefined>;
149
148
  }, undefined>;
150
- readonly 200: v.ObjectSchema<{
151
- readonly keys: v.ArraySchema<v.ObjectSchema<{
152
- readonly id: v.StringSchema<undefined>;
153
- readonly scope: v.PicklistSchema<["account", "workspace", "user"], undefined>;
154
- readonly scopeId: v.StringSchema<undefined>;
155
- readonly provider: v.PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
156
- readonly label: v.StringSchema<undefined>;
157
- readonly createdAt: v.NumberSchema<undefined>;
158
- readonly lastUsedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
159
- readonly inputTokens: v.NumberSchema<undefined>;
160
- readonly outputTokens: v.NumberSchema<undefined>;
161
- readonly requestCount: v.NumberSchema<undefined>;
149
+ readonly 200: import("valibot").ObjectSchema<{
150
+ readonly keys: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
151
+ readonly id: import("valibot").StringSchema<undefined>;
152
+ readonly scope: import("valibot").PicklistSchema<["account", "workspace", "user"], undefined>;
153
+ readonly scopeId: import("valibot").StringSchema<undefined>;
154
+ readonly provider: import("valibot").PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
155
+ readonly label: import("valibot").StringSchema<undefined>;
156
+ readonly createdAt: import("valibot").NumberSchema<undefined>;
157
+ readonly lastUsedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
158
+ readonly inputTokens: import("valibot").NumberSchema<undefined>;
159
+ readonly outputTokens: import("valibot").NumberSchema<undefined>;
160
+ readonly requestCount: import("valibot").NumberSchema<undefined>;
162
161
  }, undefined>, undefined>;
163
162
  }, undefined>;
164
163
  };
@@ -166,76 +165,76 @@ export declare const listUserApiKeysContract: {
166
165
  export declare const addUserApiKeyContract: {
167
166
  readonly method: "post";
168
167
  readonly pathResolver: () => string;
169
- readonly requestBodySchema: v.ObjectSchema<{
170
- readonly provider: v.PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
171
- readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
172
- readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
168
+ readonly requestBodySchema: import("valibot").ObjectSchema<{
169
+ readonly provider: import("valibot").PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
170
+ readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
171
+ readonly key: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>]>;
173
172
  }, undefined>;
174
173
  readonly responsesByStatusCode: {
175
- readonly '4xx': v.ObjectSchema<{
176
- readonly error: v.ObjectSchema<{
177
- readonly code: v.StringSchema<undefined>;
178
- readonly message: v.StringSchema<undefined>;
179
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
180
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
181
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
182
- readonly message: v.StringSchema<undefined>;
174
+ readonly '4xx': import("valibot").ObjectSchema<{
175
+ readonly error: import("valibot").ObjectSchema<{
176
+ readonly code: import("valibot").StringSchema<undefined>;
177
+ readonly message: import("valibot").StringSchema<undefined>;
178
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
179
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
180
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
181
+ readonly message: import("valibot").StringSchema<undefined>;
183
182
  }, undefined>, undefined>, undefined>;
184
183
  }, undefined>;
185
184
  }, undefined>;
186
- readonly '5xx': v.ObjectSchema<{
187
- readonly error: v.ObjectSchema<{
188
- readonly code: v.StringSchema<undefined>;
189
- readonly message: v.StringSchema<undefined>;
190
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
191
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
192
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
193
- readonly message: v.StringSchema<undefined>;
185
+ readonly '5xx': import("valibot").ObjectSchema<{
186
+ readonly error: import("valibot").ObjectSchema<{
187
+ readonly code: import("valibot").StringSchema<undefined>;
188
+ readonly message: import("valibot").StringSchema<undefined>;
189
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
190
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
191
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
192
+ readonly message: import("valibot").StringSchema<undefined>;
194
193
  }, undefined>, undefined>, undefined>;
195
194
  }, undefined>;
196
195
  }, undefined>;
197
- readonly 201: v.ObjectSchema<{
198
- readonly id: v.StringSchema<undefined>;
199
- readonly scope: v.PicklistSchema<["account", "workspace", "user"], undefined>;
200
- readonly scopeId: v.StringSchema<undefined>;
201
- readonly provider: v.PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
202
- readonly label: v.StringSchema<undefined>;
203
- readonly createdAt: v.NumberSchema<undefined>;
204
- readonly lastUsedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
205
- readonly inputTokens: v.NumberSchema<undefined>;
206
- readonly outputTokens: v.NumberSchema<undefined>;
207
- readonly requestCount: v.NumberSchema<undefined>;
196
+ readonly 201: import("valibot").ObjectSchema<{
197
+ readonly id: import("valibot").StringSchema<undefined>;
198
+ readonly scope: import("valibot").PicklistSchema<["account", "workspace", "user"], undefined>;
199
+ readonly scopeId: import("valibot").StringSchema<undefined>;
200
+ readonly provider: import("valibot").PicklistSchema<["openai", "anthropic", "qwen", "deepseek", "moonshot", "openrouter", "litellm"], undefined>;
201
+ readonly label: import("valibot").StringSchema<undefined>;
202
+ readonly createdAt: import("valibot").NumberSchema<undefined>;
203
+ readonly lastUsedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
204
+ readonly inputTokens: import("valibot").NumberSchema<undefined>;
205
+ readonly outputTokens: import("valibot").NumberSchema<undefined>;
206
+ readonly requestCount: import("valibot").NumberSchema<undefined>;
208
207
  }, undefined>;
209
208
  };
210
209
  };
211
210
  export declare const removeUserApiKeyContract: {
212
211
  readonly method: "delete";
213
- readonly requestPathParamsSchema: v.ObjectSchema<{
214
- readonly id: v.StringSchema<undefined>;
212
+ readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
213
+ id: import("valibot").StringSchema<undefined>;
215
214
  }, undefined> & import("@toad-contracts/core").ObjectKeysCarrier;
216
215
  readonly pathResolver: ({ id }: {
217
216
  id: string;
218
217
  }) => string;
219
218
  readonly responsesByStatusCode: {
220
- readonly '4xx': v.ObjectSchema<{
221
- readonly error: v.ObjectSchema<{
222
- readonly code: v.StringSchema<undefined>;
223
- readonly message: v.StringSchema<undefined>;
224
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
225
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
226
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
227
- readonly message: v.StringSchema<undefined>;
219
+ readonly '4xx': import("valibot").ObjectSchema<{
220
+ readonly error: import("valibot").ObjectSchema<{
221
+ readonly code: import("valibot").StringSchema<undefined>;
222
+ readonly message: import("valibot").StringSchema<undefined>;
223
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
224
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
225
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
226
+ readonly message: import("valibot").StringSchema<undefined>;
228
227
  }, undefined>, undefined>, undefined>;
229
228
  }, undefined>;
230
229
  }, undefined>;
231
- readonly '5xx': v.ObjectSchema<{
232
- readonly error: v.ObjectSchema<{
233
- readonly code: v.StringSchema<undefined>;
234
- readonly message: v.StringSchema<undefined>;
235
- readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
236
- readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
237
- readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
238
- readonly message: v.StringSchema<undefined>;
230
+ readonly '5xx': import("valibot").ObjectSchema<{
231
+ readonly error: import("valibot").ObjectSchema<{
232
+ readonly code: import("valibot").StringSchema<undefined>;
233
+ readonly message: import("valibot").StringSchema<undefined>;
234
+ readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
235
+ readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
236
+ readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
237
+ readonly message: import("valibot").StringSchema<undefined>;
239
238
  }, undefined>, undefined>, undefined>;
240
239
  }, undefined>;
241
240
  }, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/routes/api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgB5B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIvC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKxC,CAAA;AAIF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA"}
1
+ {"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/routes/api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAgB3E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIvC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKxC,CAAA;AAIF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA"}
@@ -1,7 +1,6 @@
1
- import { ContractNoBody, defineApiContract, withObjectKeys } from '@toad-contracts/valibot';
2
- import * as v from 'valibot';
1
+ import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
3
2
  import { addApiKeySchema, apiKeyListResultSchema, apiKeySchema } from '../api-keys.js';
4
- import { errorResponses } from './_shared.js';
3
+ import { errorResponses, singleStringParam } from './_shared.js';
5
4
  // ---------------------------------------------------------------------------
6
5
  // Direct-provider API-key route contracts. Two controllers consume these:
7
6
  // `workspaceApiKeyController` (mounted under `/workspaces/:workspaceId`, so its
@@ -9,7 +8,7 @@ import { errorResponses } from './_shared.js';
9
8
  // paths are absolute and carry no path params). See ApiKeyController in
10
9
  // @cat-factory/server. (The account-scoped key routes live in `routes/accounts.ts`.)
11
10
  // ---------------------------------------------------------------------------
12
- const idParams = withObjectKeys(v.object({ id: v.string() }));
11
+ const idParams = singleStringParam('id');
13
12
  // ---- workspace-scoped (relative to `/workspaces/:workspaceId`) ------------
14
13
  export const listWorkspaceApiKeysContract = defineApiContract({
15
14
  method: 'get',
@@ -1 +1 @@
1
- {"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/routes/api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,8EAA8E;AAC9E,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,wEAAwE;AACxE,qFAAqF;AACrF,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;AAE7D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC5D,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,qBAAqB,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,cAAc,EAAE;CAC1E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IAC1D,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,iBAAiB,EAAE,eAAe;IAClC,qBAAqB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE;CAChE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,iBAAiB,CAAC;IAC7D,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,QAAQ;IACjC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE;IAC3C,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACvD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,cAAc;IAClC,qBAAqB,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,cAAc,EAAE;CAC1E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACrD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,cAAc;IAClC,iBAAiB,EAAE,eAAe;IAClC,qBAAqB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE;CAChE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACxD,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,QAAQ;IACjC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE;IAC9C,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA"}
1
+ {"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/routes/api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhE,8EAA8E;AAC9E,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,wEAAwE;AACxE,qFAAqF;AACrF,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;AAExC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC5D,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,qBAAqB,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,cAAc,EAAE;CAC1E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IAC1D,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,iBAAiB,EAAE,eAAe;IAClC,qBAAqB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE;CAChE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,iBAAiB,CAAC;IAC7D,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,QAAQ;IACjC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE;IAC3C,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACvD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,cAAc;IAClC,qBAAqB,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,cAAc,EAAE;CAC1E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACrD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,cAAc;IAClC,iBAAiB,EAAE,eAAe;IAClC,qBAAqB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE;CAChE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACxD,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,QAAQ;IACjC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE;IAC9C,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA"}
@@ -263,10 +263,75 @@ export declare const passwordLoginContract: {
263
263
  }, undefined>;
264
264
  };
265
265
  };
266
+ export declare const forgotPasswordContract: {
267
+ readonly method: "post";
268
+ readonly pathResolver: () => string;
269
+ readonly requestBodySchema: v.ObjectSchema<{
270
+ readonly email: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.EmailAction<string, undefined>, v.MaxLengthAction<string, 320, undefined>]>;
271
+ }, undefined>;
272
+ readonly responsesByStatusCode: {
273
+ readonly '4xx': v.ObjectSchema<{
274
+ readonly error: v.ObjectSchema<{
275
+ readonly code: v.StringSchema<undefined>;
276
+ readonly message: v.StringSchema<undefined>;
277
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
278
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
279
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
280
+ readonly message: v.StringSchema<undefined>;
281
+ }, undefined>, undefined>, undefined>;
282
+ }, undefined>;
283
+ }, undefined>;
284
+ readonly '5xx': v.ObjectSchema<{
285
+ readonly error: v.ObjectSchema<{
286
+ readonly code: v.StringSchema<undefined>;
287
+ readonly message: v.StringSchema<undefined>;
288
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
289
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
290
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
291
+ readonly message: v.StringSchema<undefined>;
292
+ }, undefined>, undefined>, undefined>;
293
+ }, undefined>;
294
+ }, undefined>;
295
+ readonly 204: typeof ContractNoBody;
296
+ };
297
+ };
298
+ export declare const resetPasswordContract: {
299
+ readonly method: "post";
300
+ readonly pathResolver: () => string;
301
+ readonly requestBodySchema: v.ObjectSchema<{
302
+ readonly token: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
303
+ readonly password: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 8, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
304
+ }, undefined>;
305
+ readonly responsesByStatusCode: {
306
+ readonly '4xx': v.ObjectSchema<{
307
+ readonly error: v.ObjectSchema<{
308
+ readonly code: v.StringSchema<undefined>;
309
+ readonly message: v.StringSchema<undefined>;
310
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
311
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
312
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
313
+ readonly message: v.StringSchema<undefined>;
314
+ }, undefined>, undefined>, undefined>;
315
+ }, undefined>;
316
+ }, undefined>;
317
+ readonly '5xx': v.ObjectSchema<{
318
+ readonly error: v.ObjectSchema<{
319
+ readonly code: v.StringSchema<undefined>;
320
+ readonly message: v.StringSchema<undefined>;
321
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
322
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
323
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
324
+ readonly message: v.StringSchema<undefined>;
325
+ }, undefined>, undefined>, undefined>;
326
+ }, undefined>;
327
+ }, undefined>;
328
+ readonly 204: typeof ContractNoBody;
329
+ };
330
+ };
266
331
  export declare const peekInvitationContract: {
267
332
  readonly method: "get";
268
333
  readonly requestPathParamsSchema: v.ObjectSchema<{
269
- readonly token: v.StringSchema<undefined>;
334
+ token: v.StringSchema<undefined>;
270
335
  }, undefined> & import("@toad-contracts/core").ObjectKeysCarrier;
271
336
  readonly pathResolver: ({ token }: {
272
337
  token: string;
@@ -306,7 +371,7 @@ export declare const peekInvitationContract: {
306
371
  export declare const acceptInvitationContract: {
307
372
  readonly method: "post";
308
373
  readonly requestPathParamsSchema: v.ObjectSchema<{
309
- readonly token: v.StringSchema<undefined>;
374
+ token: v.StringSchema<undefined>;
310
375
  }, undefined> & import("@toad-contracts/core").ObjectKeysCarrier;
311
376
  readonly pathResolver: ({ token }: {
312
377
  token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,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"}
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;AA2B5B;;;;;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;AAMF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKjC,CAAA;AAGF,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"}
@@ -1,7 +1,7 @@
1
- import { ContractNoBody, defineApiContract, withObjectKeys } from '@toad-contracts/valibot';
1
+ import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
2
2
  import * as v from 'valibot';
3
- import { passwordLoginSchema, signupSchema } from '../auth.js';
4
- import { errorResponses } from './_shared.js';
3
+ import { forgotPasswordSchema, passwordLoginSchema, resetPasswordSchema, signupSchema, } from '../auth.js';
4
+ import { errorResponses, singleStringParam } from './_shared.js';
5
5
  // ---------------------------------------------------------------------------
6
6
  // Authentication route contracts. Mounted under `/auth`, so the paths here are
7
7
  // relative to that prefix. Public endpoints (no auth gate). The OAuth round-trip
@@ -59,7 +59,7 @@ const invitationPeekSchema = v.union([
59
59
  }),
60
60
  ]);
61
61
  const acceptInvitationResultSchema = v.object({ accountId: v.string() });
62
- const inviteTokenParams = withObjectKeys(v.object({ token: v.string() }));
62
+ const inviteTokenParams = singleStringParam('token');
63
63
  export const authConfigContract = defineApiContract({
64
64
  method: 'get',
65
65
  pathResolver: () => '/config',
@@ -100,6 +100,22 @@ export const passwordLoginContract = defineApiContract({
100
100
  requestBodySchema: passwordLoginSchema,
101
101
  responsesByStatusCode: { 200: loginResultSchema, ...errorResponses },
102
102
  });
103
+ // ---- Forgot / reset password ----------------------------------------------
104
+ // Request a reset link. ALWAYS succeeds (204) regardless of whether the email is
105
+ // registered, so the response can't be used to enumerate accounts.
106
+ export const forgotPasswordContract = defineApiContract({
107
+ method: 'post',
108
+ pathResolver: () => '/forgot-password',
109
+ requestBodySchema: forgotPasswordSchema,
110
+ responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
111
+ });
112
+ // Redeem a reset token + set a new password (a 400 on an invalid/used/expired token).
113
+ export const resetPasswordContract = defineApiContract({
114
+ method: 'post',
115
+ pathResolver: () => '/reset-password',
116
+ requestBodySchema: resetPasswordSchema,
117
+ responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
118
+ });
103
119
  // ---- Invitations (peek + accept) ------------------------------------------
104
120
  export const peekInvitationContract = defineApiContract({
105
121
  method: 'get',
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,8EAA8E;AAC9E,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,gFAAgF;AAChF,sEAAsE;AACtE,8EAA8E;AAE9E,oEAAoE;AACpE,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1C,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,4FAA4F;IAC5F,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB;;;OAGG;IACH,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC1C,CAAC,CAAA;AAGF,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;QACnB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;KACpB,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAC7C,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAA;AAEF,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,qBAAqB;CAC5B,CAAC,CAAA;AAEF,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC;IACnC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IACrC,CAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAExE,MAAM,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;IAClD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;IAC7B,qBAAqB,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,cAAc,EAAE;CACxE,CAAC,CAAA;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;IACnD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ;IAC5B,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;IACnD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,eAAe;IACnC,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB;IACtC,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;IAC9C,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;IAC7B,iBAAiB,EAAE,YAAY;IAC/B,qBAAqB,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE;CACrE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACrD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB;IACrC,iBAAiB,EAAE,mBAAmB;IACtC,qBAAqB,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE;CACrE,CAAC,CAAA;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,iBAAiB;IAC1C,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,gBAAgB,KAAK,EAAE;IACpD,qBAAqB,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,cAAc,EAAE;CACxE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACxD,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,iBAAiB;IAC1C,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,gBAAgB,KAAK,SAAS;IAC3D,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE,GAAG,cAAc,EAAE;CAChF,CAAC,CAAA;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;IAC1C,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK;IACzB,qBAAqB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE;CAChE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;IAC9C,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;IAC7B,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"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"}