@cat-factory/contracts 0.245.0 → 0.247.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.
- package/dist/audit.d.ts +100 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +156 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth.d.ts +1 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/debug-api.d.ts +154 -6
- package/dist/debug-api.d.ts.map +1 -1
- package/dist/debug-api.js +71 -6
- package/dist/debug-api.js.map +1 -1
- package/dist/execution.d.ts +8 -0
- package/dist/execution.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/judge.d.ts +31 -0
- package/dist/judge.d.ts.map +1 -1
- package/dist/judge.js +25 -0
- package/dist/judge.js.map +1 -1
- package/dist/pr-report.d.ts +27 -0
- package/dist/pr-report.d.ts.map +1 -1
- package/dist/pr-report.js +7 -1
- package/dist/pr-report.js.map +1 -1
- package/dist/reserved-env-keys.d.ts.map +1 -1
- package/dist/reserved-env-keys.js +5 -0
- package/dist/reserved-env-keys.js.map +1 -1
- package/dist/routes/agent-runs.d.ts +8 -0
- package/dist/routes/agent-runs.d.ts.map +1 -1
- package/dist/routes/auth.d.ts +72 -0
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +28 -0
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/bug-hunt.d.ts +8 -0
- package/dist/routes/bug-hunt.d.ts.map +1 -1
- package/dist/routes/debug-api.d.ts +20 -0
- package/dist/routes/debug-api.d.ts.map +1 -1
- package/dist/routes/execution.d.ts +32 -0
- package/dist/routes/execution.d.ts.map +1 -1
- package/dist/routes/human-review.d.ts +4 -0
- package/dist/routes/human-review.d.ts.map +1 -1
- package/dist/routes/human-test.d.ts +20 -0
- package/dist/routes/human-test.d.ts.map +1 -1
- package/dist/routes/judge.d.ts +8 -0
- package/dist/routes/judge.d.ts.map +1 -1
- package/dist/routes/public-evidence.d.ts +4 -0
- package/dist/routes/public-evidence.d.ts.map +1 -1
- package/dist/routes/tool-servers.d.ts +128 -1
- package/dist/routes/tool-servers.d.ts.map +1 -1
- package/dist/routes/tool-servers.js +48 -1
- package/dist/routes/tool-servers.js.map +1 -1
- package/dist/routes/visual-confirm.d.ts +12 -0
- package/dist/routes/visual-confirm.d.ts.map +1 -1
- package/dist/routes/workspaces.d.ts +8 -0
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/snapshot.d.ts +4 -0
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/sso.d.ts +70 -0
- package/dist/sso.d.ts.map +1 -0
- package/dist/sso.js +95 -0
- package/dist/sso.js.map +1 -0
- package/dist/tool-servers.d.ts +183 -2
- package/dist/tool-servers.d.ts.map +1 -1
- package/dist/tool-servers.js +104 -0
- package/dist/tool-servers.js.map +1 -1
- package/package.json +1 -1
|
@@ -40,6 +40,16 @@ export declare const listToolServersContract: {
|
|
|
40
40
|
readonly required: import("valibot").BooleanSchema<undefined>;
|
|
41
41
|
readonly usage: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
42
42
|
}, undefined>, undefined>;
|
|
43
|
+
readonly oauth: import("valibot").OptionalSchema<import("valibot").ObjectSchema<{
|
|
44
|
+
readonly grant: import("valibot").PicklistSchema<["authorization_code", "client_credentials"], undefined>;
|
|
45
|
+
readonly connected: import("valibot").BooleanSchema<undefined>;
|
|
46
|
+
readonly scopes: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>, undefined>;
|
|
47
|
+
readonly connectedAt: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
48
|
+
readonly connectedBy: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
49
|
+
readonly expiresAt: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
50
|
+
readonly refreshable: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
51
|
+
readonly lastError: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
52
|
+
}, undefined>, undefined>;
|
|
43
53
|
readonly probeable: import("valibot").BooleanSchema<undefined>;
|
|
44
54
|
readonly notProbeableReason: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["stdio_transport", "container_local_url", "url_not_allowed"], undefined>, undefined>;
|
|
45
55
|
}, undefined>, undefined>;
|
|
@@ -80,7 +90,7 @@ export declare const probeToolServerContract: {
|
|
|
80
90
|
}, undefined>;
|
|
81
91
|
readonly 200: import("valibot").ObjectSchema<{
|
|
82
92
|
readonly serverId: import("valibot").StringSchema<undefined>;
|
|
83
|
-
readonly status: import("valibot").PicklistSchema<["ok", "credentials_missing", "credential_refused", "unreachable", "http_error", "protocol_error", "not_probeable"], undefined>;
|
|
93
|
+
readonly status: import("valibot").PicklistSchema<["ok", "credentials_missing", "credential_refused", "oauth_not_connected", "oauth_token_failed", "unreachable", "http_error", "protocol_error", "not_probeable"], undefined>;
|
|
84
94
|
readonly notProbeableReason: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["stdio_transport", "container_local_url", "url_not_allowed"], undefined>, undefined>;
|
|
85
95
|
readonly serverName: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
86
96
|
readonly serverVersion: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
@@ -100,4 +110,121 @@ export declare const probeToolServerContract: {
|
|
|
100
110
|
}, undefined>;
|
|
101
111
|
};
|
|
102
112
|
};
|
|
113
|
+
export declare const startToolServerOAuthContract: {
|
|
114
|
+
readonly method: "post";
|
|
115
|
+
readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
|
|
116
|
+
id: import("valibot").StringSchema<undefined>;
|
|
117
|
+
}, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
|
|
118
|
+
readonly pathResolver: ({ id }: {
|
|
119
|
+
id: string;
|
|
120
|
+
}) => string;
|
|
121
|
+
readonly requestBodySchema: typeof ContractNoBody;
|
|
122
|
+
readonly responsesByStatusCode: {
|
|
123
|
+
readonly '4xx': import("valibot").ObjectSchema<{
|
|
124
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
125
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
126
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
127
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
128
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
129
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
130
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
131
|
+
}, undefined>, undefined>, undefined>;
|
|
132
|
+
}, undefined>;
|
|
133
|
+
}, undefined>;
|
|
134
|
+
readonly '5xx': import("valibot").ObjectSchema<{
|
|
135
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
136
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
137
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
138
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
139
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
140
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
141
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
142
|
+
}, undefined>, undefined>, undefined>;
|
|
143
|
+
}, undefined>;
|
|
144
|
+
}, undefined>;
|
|
145
|
+
readonly 200: import("valibot").ObjectSchema<{
|
|
146
|
+
readonly url: import("valibot").StringSchema<undefined>;
|
|
147
|
+
}, undefined>;
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
export declare const disconnectToolServerOAuthContract: {
|
|
151
|
+
readonly method: "delete";
|
|
152
|
+
readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
|
|
153
|
+
id: import("valibot").StringSchema<undefined>;
|
|
154
|
+
}, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
|
|
155
|
+
readonly pathResolver: ({ id }: {
|
|
156
|
+
id: string;
|
|
157
|
+
}) => string;
|
|
158
|
+
readonly responsesByStatusCode: {
|
|
159
|
+
readonly '4xx': import("valibot").ObjectSchema<{
|
|
160
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
161
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
162
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
163
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
164
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
165
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
166
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
167
|
+
}, undefined>, undefined>, undefined>;
|
|
168
|
+
}, undefined>;
|
|
169
|
+
}, undefined>;
|
|
170
|
+
readonly '5xx': import("valibot").ObjectSchema<{
|
|
171
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
172
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
173
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
174
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
175
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
176
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
177
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
178
|
+
}, undefined>, undefined>, undefined>;
|
|
179
|
+
}, undefined>;
|
|
180
|
+
}, undefined>;
|
|
181
|
+
readonly 204: typeof ContractNoBody;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Finish a grant with the `code` and `state` the vendor sent the operator's browser back with.
|
|
186
|
+
*
|
|
187
|
+
* ROOT-MOUNTED and session-scoped, the shape `/user-secrets` already has: the workspace comes out
|
|
188
|
+
* of the sealed state, so there is no `:workspaceId` segment for the shared workspace gate to bind
|
|
189
|
+
* to, and the handler resolves access for the state's board through the same single
|
|
190
|
+
* `loadWorkspaceAccess` that gate uses. What it must NOT be is public: reached by a session, the
|
|
191
|
+
* "same user who started it" and "still holds `secrets.manage`" checks are enforceable, and reached
|
|
192
|
+
* by a vendor's redirect they are not.
|
|
193
|
+
*/
|
|
194
|
+
export declare const completeToolServerOAuthContract: {
|
|
195
|
+
readonly method: "post";
|
|
196
|
+
readonly pathResolver: () => string;
|
|
197
|
+
readonly requestBodySchema: import("valibot").ObjectSchema<{
|
|
198
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
199
|
+
readonly state: import("valibot").StringSchema<undefined>;
|
|
200
|
+
}, undefined>;
|
|
201
|
+
readonly responsesByStatusCode: {
|
|
202
|
+
readonly '4xx': import("valibot").ObjectSchema<{
|
|
203
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
204
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
205
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
206
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
207
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
208
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
209
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
210
|
+
}, undefined>, undefined>, undefined>;
|
|
211
|
+
}, undefined>;
|
|
212
|
+
}, undefined>;
|
|
213
|
+
readonly '5xx': import("valibot").ObjectSchema<{
|
|
214
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
215
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
216
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
217
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
218
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
219
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
220
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
221
|
+
}, undefined>, undefined>, undefined>;
|
|
222
|
+
}, undefined>;
|
|
223
|
+
}, undefined>;
|
|
224
|
+
readonly 200: import("valibot").ObjectSchema<{
|
|
225
|
+
readonly serverId: import("valibot").StringSchema<undefined>;
|
|
226
|
+
readonly workspaceId: import("valibot").StringSchema<undefined>;
|
|
227
|
+
}, undefined>;
|
|
228
|
+
};
|
|
229
|
+
};
|
|
103
230
|
//# sourceMappingURL=tool-servers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-servers.d.ts","sourceRoot":"","sources":["../../src/routes/tool-servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"tool-servers.d.ts","sourceRoot":"","sources":["../../src/routes/tool-servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAyB3E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlC,CAAA;AAKF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUlC,CAAA;AAiBF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMvC,CAAA;AAMF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK5C,CAAA;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK1C,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
|
|
2
|
-
import { toolServerProbeResultSchema, toolServersViewSchema } from '../tool-servers.js';
|
|
2
|
+
import { toolServerOAuthCompletedSchema, toolServerOAuthCompletionSchema, toolServerOAuthStartSchema, toolServerProbeResultSchema, toolServersViewSchema, } from '../tool-servers.js';
|
|
3
3
|
import { errorResponses, singleStringParam } from './_shared.js';
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
5
|
// Per-workspace TOOL SERVER (MCP) operability route contracts. Mounted under
|
|
@@ -34,4 +34,51 @@ export const probeToolServerContract = defineApiContract({
|
|
|
34
34
|
requestBodySchema: ContractNoBody,
|
|
35
35
|
responsesByStatusCode: { 200: toolServerProbeResultSchema, ...errorResponses },
|
|
36
36
|
});
|
|
37
|
+
// ---- OAuth grants -------------------------------------------------------------------------
|
|
38
|
+
//
|
|
39
|
+
// The grant itself is per (workspace, server), which is why these sit on the workspace-scoped
|
|
40
|
+
// controller beside the probe: the DECLARATION is deployment-wide, and who authorised what against
|
|
41
|
+
// it is a board's own business.
|
|
42
|
+
//
|
|
43
|
+
// COMPLETING a grant is the exception and lives at the root ({@link completeToolServerOAuthContract}),
|
|
44
|
+
// because the board it belongs to is sealed into the `state` rather than carried in the path: a
|
|
45
|
+
// vendor's redirect URI is one fixed string registered at the vendor, so nothing in the round trip
|
|
46
|
+
// can name a workspace. It is still session-gated, which is the whole point of routing it through
|
|
47
|
+
// the SPA instead of receiving the vendor's redirect directly.
|
|
48
|
+
// Begin an `authorization_code` grant: returns the vendor's authorization URL to send the operator
|
|
49
|
+
// to. A POST because it MINTS state (a sealed, expiring authorization request bound to this
|
|
50
|
+
// workspace, server and user), which is not something a link prefetch may do.
|
|
51
|
+
export const startToolServerOAuthContract = defineApiContract({
|
|
52
|
+
method: 'post',
|
|
53
|
+
requestPathParamsSchema: singleStringParam('id'),
|
|
54
|
+
pathResolver: ({ id }) => `/tool-servers/${id}/oauth/authorize`,
|
|
55
|
+
requestBodySchema: ContractNoBody,
|
|
56
|
+
responsesByStatusCode: { 200: toolServerOAuthStartSchema, ...errorResponses },
|
|
57
|
+
});
|
|
58
|
+
// Drop this workspace's grant. The next dispatch reports the server to its agent as
|
|
59
|
+
// `oauth_not_connected`, which is the same state as never having connected — deliberately, because
|
|
60
|
+
// a disconnect that left the server looking wired would be the "stated, never silent" rule broken
|
|
61
|
+
// by the one action an operator takes precisely to stop it being used.
|
|
62
|
+
export const disconnectToolServerOAuthContract = defineApiContract({
|
|
63
|
+
method: 'delete',
|
|
64
|
+
requestPathParamsSchema: singleStringParam('id'),
|
|
65
|
+
pathResolver: ({ id }) => `/tool-servers/${id}/oauth`,
|
|
66
|
+
responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Finish a grant with the `code` and `state` the vendor sent the operator's browser back with.
|
|
70
|
+
*
|
|
71
|
+
* ROOT-MOUNTED and session-scoped, the shape `/user-secrets` already has: the workspace comes out
|
|
72
|
+
* of the sealed state, so there is no `:workspaceId` segment for the shared workspace gate to bind
|
|
73
|
+
* to, and the handler resolves access for the state's board through the same single
|
|
74
|
+
* `loadWorkspaceAccess` that gate uses. What it must NOT be is public: reached by a session, the
|
|
75
|
+
* "same user who started it" and "still holds `secrets.manage`" checks are enforceable, and reached
|
|
76
|
+
* by a vendor's redirect they are not.
|
|
77
|
+
*/
|
|
78
|
+
export const completeToolServerOAuthContract = defineApiContract({
|
|
79
|
+
method: 'post',
|
|
80
|
+
pathResolver: () => '/mcp/oauth/complete',
|
|
81
|
+
requestBodySchema: toolServerOAuthCompletionSchema,
|
|
82
|
+
responsesByStatusCode: { 200: toolServerOAuthCompletedSchema, ...errorResponses },
|
|
83
|
+
});
|
|
37
84
|
//# sourceMappingURL=tool-servers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-servers.js","sourceRoot":"","sources":["../../src/routes/tool-servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"tool-servers.js","sourceRoot":"","sources":["../../src/routes/tool-servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhE,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,EAAE;AACF,kGAAkG;AAClG,0FAA0F;AAC1F,+CAA+C;AAC/C,EAAE;AACF,iGAAiG;AACjG,mGAAmG;AACnG,8FAA8F;AAC9F,gGAAgG;AAChG,UAAU;AACV,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACvD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,eAAe;IACnC,qBAAqB,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,cAAc,EAAE;CACzE,CAAC,CAAA;AAEF,gGAAgG;AAChG,oGAAoG;AACpG,6FAA6F;AAC7F,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACvD,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAChD,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,iBAAiB,EAAE,OAAO;IACpD,wFAAwF;IACxF,kGAAkG;IAClG,6FAA6F;IAC7F,wDAAwD;IACxD,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE,GAAG,cAAc,EAAE;CAC/E,CAAC,CAAA;AAEF,8FAA8F;AAC9F,EAAE;AACF,8FAA8F;AAC9F,mGAAmG;AACnG,gCAAgC;AAChC,EAAE;AACF,uGAAuG;AACvG,gGAAgG;AAChG,mGAAmG;AACnG,kGAAkG;AAClG,+DAA+D;AAE/D,mGAAmG;AACnG,4FAA4F;AAC5F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC5D,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAChD,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,iBAAiB,EAAE,kBAAkB;IAC/D,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,GAAG,cAAc,EAAE;CAC9E,CAAC,CAAA;AAEF,oFAAoF;AACpF,mGAAmG;AACnG,kGAAkG;AAClG,uEAAuE;AACvE,MAAM,CAAC,MAAM,iCAAiC,GAAG,iBAAiB,CAAC;IACjE,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAChD,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ;IACrD,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,CAAC;IAC/D,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,qBAAqB;IACzC,iBAAiB,EAAE,+BAA+B;IAClD,qBAAqB,EAAE,EAAE,GAAG,EAAE,8BAA8B,EAAE,GAAG,cAAc,EAAE;CAClF,CAAC,CAAA"}
|
|
@@ -451,6 +451,10 @@ export declare const approveVisualConfirmContract: {
|
|
|
451
451
|
readonly bounces: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
452
452
|
readonly maxBounces: v.OptionalSchema<v.NumberSchema<undefined>, 1>;
|
|
453
453
|
readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
454
|
+
readonly modelPin: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
455
|
+
readonly requested: v.StringSchema<undefined>;
|
|
456
|
+
readonly status: v.PicklistSchema<["applied", "overridden", "unavailable"], undefined>;
|
|
457
|
+
}, undefined>, undefined>, undefined>;
|
|
454
458
|
readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
455
459
|
readonly round: v.NumberSchema<undefined>;
|
|
456
460
|
readonly at: v.NumberSchema<undefined>;
|
|
@@ -1534,6 +1538,10 @@ export declare const requestVisualConfirmFixContract: {
|
|
|
1534
1538
|
readonly bounces: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
1535
1539
|
readonly maxBounces: v.OptionalSchema<v.NumberSchema<undefined>, 1>;
|
|
1536
1540
|
readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1541
|
+
readonly modelPin: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
1542
|
+
readonly requested: v.StringSchema<undefined>;
|
|
1543
|
+
readonly status: v.PicklistSchema<["applied", "overridden", "unavailable"], undefined>;
|
|
1544
|
+
}, undefined>, undefined>, undefined>;
|
|
1537
1545
|
readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
1538
1546
|
readonly round: v.NumberSchema<undefined>;
|
|
1539
1547
|
readonly at: v.NumberSchema<undefined>;
|
|
@@ -2615,6 +2623,10 @@ export declare const recaptureVisualConfirmContract: {
|
|
|
2615
2623
|
readonly bounces: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
2616
2624
|
readonly maxBounces: v.OptionalSchema<v.NumberSchema<undefined>, 1>;
|
|
2617
2625
|
readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
2626
|
+
readonly modelPin: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
2627
|
+
readonly requested: v.StringSchema<undefined>;
|
|
2628
|
+
readonly status: v.PicklistSchema<["applied", "overridden", "unavailable"], undefined>;
|
|
2629
|
+
}, undefined>, undefined>, undefined>;
|
|
2618
2630
|
readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
2619
2631
|
readonly round: v.NumberSchema<undefined>;
|
|
2620
2632
|
readonly at: v.NumberSchema<undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-confirm.d.ts","sourceRoot":"","sources":["../../src/routes/visual-confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"visual-confirm.d.ts","sourceRoot":"","sources":["../../src/routes/visual-confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMvC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM1C,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA"}
|
|
@@ -962,6 +962,10 @@ export declare const createWorkspaceContract: {
|
|
|
962
962
|
readonly bounces: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
963
963
|
readonly maxBounces: v.OptionalSchema<v.NumberSchema<undefined>, 1>;
|
|
964
964
|
readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
965
|
+
readonly modelPin: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
966
|
+
readonly requested: v.StringSchema<undefined>;
|
|
967
|
+
readonly status: v.PicklistSchema<["applied", "overridden", "unavailable"], undefined>;
|
|
968
|
+
}, undefined>, undefined>, undefined>;
|
|
965
969
|
readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
966
970
|
readonly round: v.NumberSchema<undefined>;
|
|
967
971
|
readonly at: v.NumberSchema<undefined>;
|
|
@@ -4343,6 +4347,10 @@ export declare const getWorkspaceContract: {
|
|
|
4343
4347
|
readonly bounces: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
4344
4348
|
readonly maxBounces: v.OptionalSchema<v.NumberSchema<undefined>, 1>;
|
|
4345
4349
|
readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
4350
|
+
readonly modelPin: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
4351
|
+
readonly requested: v.StringSchema<undefined>;
|
|
4352
|
+
readonly status: v.PicklistSchema<["applied", "overridden", "unavailable"], undefined>;
|
|
4353
|
+
}, undefined>, undefined>, undefined>;
|
|
4346
4354
|
readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
4347
4355
|
readonly round: v.NumberSchema<undefined>;
|
|
4348
4356
|
readonly at: v.NumberSchema<undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;aAGlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAI7E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAEF,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;aAGlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAI7E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA"}
|
package/dist/snapshot.d.ts
CHANGED
|
@@ -900,6 +900,10 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
|
|
|
900
900
|
readonly bounces: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
901
901
|
readonly maxBounces: v.OptionalSchema<v.NumberSchema<undefined>, 1>;
|
|
902
902
|
readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
903
|
+
readonly modelPin: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
|
|
904
|
+
readonly requested: v.StringSchema<undefined>;
|
|
905
|
+
readonly status: v.PicklistSchema<["applied", "overridden", "unavailable"], undefined>;
|
|
906
|
+
}, undefined>, undefined>, undefined>;
|
|
903
907
|
readonly rounds: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
904
908
|
readonly round: v.NumberSchema<undefined>;
|
|
905
909
|
readonly at: v.NumberSchema<undefined>;
|
package/dist/snapshot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyC5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7E,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;IAGlC;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyC5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7E,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;IAGlC;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;OAGG;;;;IAEH;;;;;;OAMG;;;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;;OASG;;;;;;;;IAEH;;;;;;;;OAQG;;IAEH;;;;;;;;;OASG;;;;QAvOH;;;;;WAKG;;;;;;QALH;;;;;WAKG;;;IAqOH;;;;;;;OAOG;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;OAKG;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
|
package/dist/sso.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
/**
|
|
3
|
+
* The SSO protocols the adapter speaks.
|
|
4
|
+
*
|
|
5
|
+
* `oidc` covers every provider that exposes an OpenID Connect discovery document, which is all
|
|
6
|
+
* of the hosted directories and a Shibboleth IdP with the OIDC OP plugin installed. A classic
|
|
7
|
+
* SAML-2.0-only Shibboleth deployment is NOT served by it and is deliberately absent rather
|
|
8
|
+
* than approximated: see `docs/initiatives/enterprise-sso-oidc.md`. Adding `saml` here is what
|
|
9
|
+
* that slice extends, and every switch over this union fails to compile until it is handled.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ssoProtocolSchema: v.PicklistSchema<["oidc"], undefined>;
|
|
12
|
+
export type SsoProtocol = v.InferOutput<typeof ssoProtocolSchema>;
|
|
13
|
+
/**
|
|
14
|
+
* What `GET /auth/config` reports about the configured provider, so the login screen can render
|
|
15
|
+
* the operator's own wording ("Sign in with Acme SSO") instead of a generic button. Present only
|
|
16
|
+
* when SSO is configured; `providers.sso` is the boolean the SPA gates on.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ssoConfigViewSchema: v.ObjectSchema<{
|
|
19
|
+
/** Operator-supplied button label (`AUTH_SSO_LABEL`), never localized — it names their IdP. */
|
|
20
|
+
readonly label: v.StringSchema<undefined>;
|
|
21
|
+
readonly protocol: v.PicklistSchema<["oidc"], undefined>;
|
|
22
|
+
}, undefined>;
|
|
23
|
+
export type SsoConfigView = v.InferOutput<typeof ssoConfigViewSchema>;
|
|
24
|
+
/**
|
|
25
|
+
* Why an SSO sign-in did not produce a session. Each member is a DIFFERENT operator or user
|
|
26
|
+
* action, which is the whole reason the vocabulary is not one `sso_failed`:
|
|
27
|
+
*
|
|
28
|
+
* - `state_invalid` — the round-trip's signed state / browser-binding cookie didn't verify.
|
|
29
|
+
* A stale bookmark, a cookie-less browser, or a genuinely forged callback. Retrying works.
|
|
30
|
+
* - `provider_denied` — the IdP itself refused (`?error=access_denied` …): the user cancelled,
|
|
31
|
+
* or the app is not assigned to them. Nothing on this side to fix.
|
|
32
|
+
* - `exchange_failed` — the code-for-token call failed. A wrong client secret or a
|
|
33
|
+
* `redirect_uri` the IdP does not have registered: an OPERATOR fault, not the user's.
|
|
34
|
+
* - `token_invalid` — the ID token failed verification (signature, issuer, audience, nonce or
|
|
35
|
+
* expiry). A misconfigured client id, a clock skew, or an attack.
|
|
36
|
+
* - `subject_missing` — the token verified but carries no `sub`, so there is no stable identity
|
|
37
|
+
* to key a user on. A non-conforming provider.
|
|
38
|
+
* - `group_required` — the user authenticated but is in none of `AUTH_SSO_REQUIRED_GROUPS`.
|
|
39
|
+
* The user needs a directory group, and the message must say so rather than read as a bug.
|
|
40
|
+
* - `domain_not_allowed` — their verified email's domain is not on
|
|
41
|
+
* `AUTH_SSO_ALLOWED_EMAIL_DOMAINS`. Distinct from `group_required` because the remedy differs.
|
|
42
|
+
* - `email_required` — an email-domain allowlist is configured but the provider released no
|
|
43
|
+
* verified email to check it against, so admission cannot be decided. An operator must
|
|
44
|
+
* release the `email` claim (or drop the allowlist); admitting instead would silently void it.
|
|
45
|
+
* - `provider_unreachable` — the IdP (or the network to it) did not answer while the callback was
|
|
46
|
+
* being settled: its discovery document or key set could not be read. An OUTAGE, distinct from
|
|
47
|
+
* `exchange_failed` because the remedy is not the deployment's own client credentials, and
|
|
48
|
+
* distinct from `token_invalid` because nothing was wrong with the token. Retrying works once
|
|
49
|
+
* the provider does.
|
|
50
|
+
*/
|
|
51
|
+
export declare const ssoErrorReasonSchema: v.PicklistSchema<["state_invalid", "provider_denied", "exchange_failed", "token_invalid", "subject_missing", "group_required", "domain_not_allowed", "email_required", "provider_unreachable"], undefined>;
|
|
52
|
+
export type SsoErrorReason = v.InferOutput<typeof ssoErrorReasonSchema>;
|
|
53
|
+
/** Every reason, for the SPA's exhaustive copy `Record` and the coverage test over it. */
|
|
54
|
+
export declare const SSO_ERROR_REASONS: ["state_invalid", "provider_denied", "exchange_failed", "token_invalid", "subject_missing", "group_required", "domain_not_allowed", "email_required", "provider_unreachable"];
|
|
55
|
+
/**
|
|
56
|
+
* The URL-fragment key a failed SSO round-trip lands under, the sibling of the `token=` key a
|
|
57
|
+
* successful one uses. A FRAGMENT (not a query) for the same reason the token is: it never
|
|
58
|
+
* reaches a server log or a `Referer` header, and the reason names the deployment's admission
|
|
59
|
+
* rules. Shared so the redirect builder and the SPA reader cannot drift.
|
|
60
|
+
*/
|
|
61
|
+
export declare const SSO_ERROR_FRAGMENT_KEY = "sso_error";
|
|
62
|
+
/**
|
|
63
|
+
* Read a reason off an untrusted string, or null when it names none.
|
|
64
|
+
*
|
|
65
|
+
* Total by construction (derived from the picklist's own options), so a member added above is
|
|
66
|
+
* parseable with no edit here — and a value from a NEWER backend than the SPA reads as "unknown
|
|
67
|
+
* failure" rather than being rendered as the literal wire token.
|
|
68
|
+
*/
|
|
69
|
+
export declare function parseSsoErrorReason(value: string | null | undefined): SsoErrorReason | null;
|
|
70
|
+
//# sourceMappingURL=sso.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sso.d.ts","sourceRoot":"","sources":["../src/sso.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,uCAAuB,CAAA;AACrD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;IAC9B,+FAA+F;;;aAG/F,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,oBAAoB,4MAU/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,+KAA+B,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,cAAc,CAAA;AAEjD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,CAG3F"}
|
package/dist/sso.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Enterprise SSO: the wire vocabulary the backend and the SPA must agree about.
|
|
4
|
+
//
|
|
5
|
+
// Sign-in through a deployment's OWN identity provider (Okta, Entra ID, Auth0, Keycloak,
|
|
6
|
+
// PingFederate, OneLogin, JumpCloud, a Shibboleth IdP running the OIDC OP plugin) rather than
|
|
7
|
+
// through a consumer provider. One generic adapter serves all of them: a discovery document
|
|
8
|
+
// plus a client id/secret is the entire configuration, so there is nothing per-vendor to name
|
|
9
|
+
// here — only the PROTOCOL, which is what a second adapter would extend.
|
|
10
|
+
//
|
|
11
|
+
// A failed SSO round-trip lands the browser back on the SPA with a machine-readable reason in
|
|
12
|
+
// the URL fragment rather than a JSON envelope the user would have to read raw. The backend
|
|
13
|
+
// does not localize prose (CLAUDE.md's i18n rule), so the vocabulary is closed here and the SPA
|
|
14
|
+
// maps each member to translated copy through an exhaustive `Record`.
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* The SSO protocols the adapter speaks.
|
|
18
|
+
*
|
|
19
|
+
* `oidc` covers every provider that exposes an OpenID Connect discovery document, which is all
|
|
20
|
+
* of the hosted directories and a Shibboleth IdP with the OIDC OP plugin installed. A classic
|
|
21
|
+
* SAML-2.0-only Shibboleth deployment is NOT served by it and is deliberately absent rather
|
|
22
|
+
* than approximated: see `docs/initiatives/enterprise-sso-oidc.md`. Adding `saml` here is what
|
|
23
|
+
* that slice extends, and every switch over this union fails to compile until it is handled.
|
|
24
|
+
*/
|
|
25
|
+
export const ssoProtocolSchema = v.picklist(['oidc']);
|
|
26
|
+
/**
|
|
27
|
+
* What `GET /auth/config` reports about the configured provider, so the login screen can render
|
|
28
|
+
* the operator's own wording ("Sign in with Acme SSO") instead of a generic button. Present only
|
|
29
|
+
* when SSO is configured; `providers.sso` is the boolean the SPA gates on.
|
|
30
|
+
*/
|
|
31
|
+
export const ssoConfigViewSchema = v.object({
|
|
32
|
+
/** Operator-supplied button label (`AUTH_SSO_LABEL`), never localized — it names their IdP. */
|
|
33
|
+
label: v.string(),
|
|
34
|
+
protocol: ssoProtocolSchema,
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Why an SSO sign-in did not produce a session. Each member is a DIFFERENT operator or user
|
|
38
|
+
* action, which is the whole reason the vocabulary is not one `sso_failed`:
|
|
39
|
+
*
|
|
40
|
+
* - `state_invalid` — the round-trip's signed state / browser-binding cookie didn't verify.
|
|
41
|
+
* A stale bookmark, a cookie-less browser, or a genuinely forged callback. Retrying works.
|
|
42
|
+
* - `provider_denied` — the IdP itself refused (`?error=access_denied` …): the user cancelled,
|
|
43
|
+
* or the app is not assigned to them. Nothing on this side to fix.
|
|
44
|
+
* - `exchange_failed` — the code-for-token call failed. A wrong client secret or a
|
|
45
|
+
* `redirect_uri` the IdP does not have registered: an OPERATOR fault, not the user's.
|
|
46
|
+
* - `token_invalid` — the ID token failed verification (signature, issuer, audience, nonce or
|
|
47
|
+
* expiry). A misconfigured client id, a clock skew, or an attack.
|
|
48
|
+
* - `subject_missing` — the token verified but carries no `sub`, so there is no stable identity
|
|
49
|
+
* to key a user on. A non-conforming provider.
|
|
50
|
+
* - `group_required` — the user authenticated but is in none of `AUTH_SSO_REQUIRED_GROUPS`.
|
|
51
|
+
* The user needs a directory group, and the message must say so rather than read as a bug.
|
|
52
|
+
* - `domain_not_allowed` — their verified email's domain is not on
|
|
53
|
+
* `AUTH_SSO_ALLOWED_EMAIL_DOMAINS`. Distinct from `group_required` because the remedy differs.
|
|
54
|
+
* - `email_required` — an email-domain allowlist is configured but the provider released no
|
|
55
|
+
* verified email to check it against, so admission cannot be decided. An operator must
|
|
56
|
+
* release the `email` claim (or drop the allowlist); admitting instead would silently void it.
|
|
57
|
+
* - `provider_unreachable` — the IdP (or the network to it) did not answer while the callback was
|
|
58
|
+
* being settled: its discovery document or key set could not be read. An OUTAGE, distinct from
|
|
59
|
+
* `exchange_failed` because the remedy is not the deployment's own client credentials, and
|
|
60
|
+
* distinct from `token_invalid` because nothing was wrong with the token. Retrying works once
|
|
61
|
+
* the provider does.
|
|
62
|
+
*/
|
|
63
|
+
export const ssoErrorReasonSchema = v.picklist([
|
|
64
|
+
'state_invalid',
|
|
65
|
+
'provider_denied',
|
|
66
|
+
'exchange_failed',
|
|
67
|
+
'token_invalid',
|
|
68
|
+
'subject_missing',
|
|
69
|
+
'group_required',
|
|
70
|
+
'domain_not_allowed',
|
|
71
|
+
'email_required',
|
|
72
|
+
'provider_unreachable',
|
|
73
|
+
]);
|
|
74
|
+
/** Every reason, for the SPA's exhaustive copy `Record` and the coverage test over it. */
|
|
75
|
+
export const SSO_ERROR_REASONS = ssoErrorReasonSchema.options;
|
|
76
|
+
/**
|
|
77
|
+
* The URL-fragment key a failed SSO round-trip lands under, the sibling of the `token=` key a
|
|
78
|
+
* successful one uses. A FRAGMENT (not a query) for the same reason the token is: it never
|
|
79
|
+
* reaches a server log or a `Referer` header, and the reason names the deployment's admission
|
|
80
|
+
* rules. Shared so the redirect builder and the SPA reader cannot drift.
|
|
81
|
+
*/
|
|
82
|
+
export const SSO_ERROR_FRAGMENT_KEY = 'sso_error';
|
|
83
|
+
/**
|
|
84
|
+
* Read a reason off an untrusted string, or null when it names none.
|
|
85
|
+
*
|
|
86
|
+
* Total by construction (derived from the picklist's own options), so a member added above is
|
|
87
|
+
* parseable with no edit here — and a value from a NEWER backend than the SPA reads as "unknown
|
|
88
|
+
* failure" rather than being rendered as the literal wire token.
|
|
89
|
+
*/
|
|
90
|
+
export function parseSsoErrorReason(value) {
|
|
91
|
+
if (!value)
|
|
92
|
+
return null;
|
|
93
|
+
return SSO_ERROR_REASONS.includes(value) ? value : null;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=sso.js.map
|
package/dist/sso.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sso.js","sourceRoot":"","sources":["../src/sso.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,gFAAgF;AAChF,EAAE;AACF,yFAAyF;AACzF,8FAA8F;AAC9F,4FAA4F;AAC5F,8FAA8F;AAC9F,yEAAyE;AACzE,EAAE;AACF,8FAA8F;AAC9F,4FAA4F;AAC5F,gGAAgG;AAChG,sEAAsE;AACtE,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAGrD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,+FAA+F;IAC/F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,iBAAiB;CAC5B,CAAC,CAAA;AAGF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC7C,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,oBAAoB;IACpB,gBAAgB;IAChB,sBAAsB;CACvB,CAAC,CAAA;AAGF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAA;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAA;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAgC;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAwB,CAAC,CAAC,CAAC,IAAI,CAAA;AACpG,CAAC"}
|