@kindgi/api 0.1.5-rc.0 → 0.1.5
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/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/cost-binding.d.ts +19 -0
- package/dist/cost-binding.d.ts.map +1 -1
- package/dist/cost-binding.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -1
- package/dist/middleware/authorize.d.ts +5 -2
- package/dist/middleware/authorize.d.ts.map +1 -1
- package/dist/middleware/authorize.js +10 -1
- package/dist/middleware/authorize.js.map +1 -1
- package/dist/openapi/operations.js +1 -1
- package/dist/openapi/operations.js.map +1 -1
- package/dist/openapi/schemas.js +1 -1
- package/dist/openapi/schemas.js.map +1 -1
- package/dist/publish-refused.d.ts +12 -2
- package/dist/publish-refused.d.ts.map +1 -1
- package/dist/publish-refused.js +6 -0
- package/dist/publish-refused.js.map +1 -1
- package/dist/routes/cost.d.ts +8 -3
- package/dist/routes/cost.d.ts.map +1 -1
- package/dist/routes/cost.js +56 -4
- package/dist/routes/cost.js.map +1 -1
- package/dist/routes/deployments.d.ts +8 -0
- package/dist/routes/deployments.d.ts.map +1 -1
- package/dist/routes/deployments.js +127 -1
- package/dist/routes/deployments.js.map +1 -1
- package/dist/routes/eval-runs.js +4 -1
- package/dist/routes/eval-runs.js.map +1 -1
- package/dist/routes/eval-suites.d.ts.map +1 -1
- package/dist/routes/eval-suites.js +8 -1
- package/dist/routes/eval-suites.js.map +1 -1
- package/dist/routes/memory-access.d.ts.map +1 -1
- package/dist/routes/memory-access.js +18 -33
- package/dist/routes/memory-access.js.map +1 -1
- package/dist/routes/readable-projects.d.ts +26 -0
- package/dist/routes/readable-projects.d.ts.map +1 -0
- package/dist/routes/readable-projects.js +39 -0
- package/dist/routes/readable-projects.js.map +1 -0
- package/openapi.json +3 -2
- package/package.json +21 -21
- package/src/app.ts +1 -1
- package/src/cost-binding.ts +19 -0
- package/src/errors.ts +2 -0
- package/src/middleware/authorize.ts +19 -3
- package/src/openapi/operations.ts +1 -1
- package/src/openapi/schemas.ts +1 -1
- package/src/publish-refused.ts +20 -2
- package/src/routes/cost.ts +81 -4
- package/src/routes/deployments.ts +148 -1
- package/src/routes/eval-runs.ts +3 -0
- package/src/routes/eval-suites.ts +7 -1
- package/src/routes/memory-access.ts +19 -38
- package/src/routes/readable-projects.ts +66 -0
|
@@ -8,6 +8,16 @@ type PublishedPrimitive = 'tool' | 'guardrail' | 'agent' | 'flow';
|
|
|
8
8
|
type RefusedOutcome = Exclude<Awaited<ReturnType<ToolRegistryBinding['publish']>> | Awaited<ReturnType<GuardrailRegistryBinding['register']>> | Awaited<ReturnType<AgentRegistryBinding['publish']>> | Awaited<ReturnType<FlowRegistryBinding['publish']>>, {
|
|
9
9
|
readonly kind: 'ok' | 'already-registered';
|
|
10
10
|
}>;
|
|
11
|
+
/**
|
|
12
|
+
* A refusal the deploy decides itself, when its registry answered
|
|
13
|
+
* `already-registered` for a live guardrail it can't keep: one in another
|
|
14
|
+
* project (whose project the registry doesn't say), or one in its own
|
|
15
|
+
* project with a different definition.
|
|
16
|
+
*/
|
|
17
|
+
interface DeployRefusal {
|
|
18
|
+
readonly code: 'guardrail-project-mismatch' | 'guardrail-already-registered';
|
|
19
|
+
readonly reason: string;
|
|
20
|
+
}
|
|
11
21
|
/**
|
|
12
22
|
* A deploy's primitive came back from its registry with an outcome other
|
|
13
23
|
* than `ok` or `already-registered` (e.g. `project-not-found`): the deploy
|
|
@@ -24,10 +34,10 @@ export declare class PublishRefused extends Error {
|
|
|
24
34
|
readonly primitive: PublishedPrimitive;
|
|
25
35
|
readonly id: string;
|
|
26
36
|
/** The code the deploy answers with. */
|
|
27
|
-
readonly code: Exclude<RefusedOutcome['kind'], 'project-mismatch'> | `${PublishedPrimitive}-project-mismatch
|
|
37
|
+
readonly code: Exclude<RefusedOutcome['kind'], 'project-mismatch'> | `${PublishedPrimitive}-project-mismatch` | DeployRefusal['code'];
|
|
28
38
|
/** With `…-project-mismatch`: the project the primitive belongs to, for the log only. */
|
|
29
39
|
readonly projectId?: ProjectId;
|
|
30
|
-
constructor(primitive: PublishedPrimitive, id: string, outcome: RefusedOutcome);
|
|
40
|
+
constructor(primitive: PublishedPrimitive, id: string, outcome: RefusedOutcome | DeployRefusal);
|
|
31
41
|
}
|
|
32
42
|
export {};
|
|
33
43
|
//# sourceMappingURL=publish-refused.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-refused.d.ts","sourceRoot":"","sources":["../src/publish-refused.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,KAAK,kBAAkB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAElE,0FAA0F;AAC1F,KAAK,cAAc,GAAG,OAAO,CACzB,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,oBAAoB,CAAA;CAAE,CAC/C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"publish-refused.d.ts","sourceRoot":"","sources":["../src/publish-refused.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,KAAK,kBAAkB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAElE,0FAA0F;AAC1F,KAAK,cAAc,GAAG,OAAO,CACzB,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,oBAAoB,CAAA;CAAE,CAC/C,CAAC;AAEF;;;;;GAKG;AACH,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,4BAA4B,GAAG,8BAA8B,CAAC;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAUrC,QAAQ,CAAC,SAAS,EAAE,kBAAkB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM;IAVrB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EACT,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,GACnD,GAAG,kBAAkB,mBAAmB,GACxC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;gBAGpB,SAAS,EAAE,kBAAkB,EAC7B,EAAE,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GAAG,aAAa;CAqB1C"}
|
package/dist/publish-refused.js
CHANGED
|
@@ -20,6 +20,12 @@ export class PublishRefused extends Error {
|
|
|
20
20
|
/** With `…-project-mismatch`: the project the primitive belongs to, for the log only. */
|
|
21
21
|
projectId;
|
|
22
22
|
constructor(primitive, id, outcome) {
|
|
23
|
+
if ('code' in outcome) {
|
|
24
|
+
super(`The ${primitive} ${id} wasn't published: ${outcome.reason}`);
|
|
25
|
+
this.name = 'PublishRefused';
|
|
26
|
+
this.code = outcome.code;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
23
29
|
const code = outcome.kind === 'project-mismatch'
|
|
24
30
|
? `${primitive}-project-mismatch`
|
|
25
31
|
: outcome.kind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-refused.js","sourceRoot":"","sources":["../src/publish-refused.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"publish-refused.js","sourceRoot":"","sources":["../src/publish-refused.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AA+BjC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAU5B;IACA;IAVX,wCAAwC;IAC/B,IAAI,CAGa;IAC1B,yFAAyF;IAChF,SAAS,CAAa;IAE/B,YACW,SAA6B,EAC7B,EAAU,EACnB,OAAuC;QAEvC,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,KAAK,CAAC,OAAO,SAAS,IAAI,EAAE,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACzB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,KAAK,kBAAkB;YACjC,CAAC,CAAE,GAAG,SAAS,mBAA6B;YAC5C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACnB,KAAK,CACH,OAAO,CAAC,IAAI,KAAK,kBAAkB;YACjC,CAAC,CAAC,OAAO,SAAS,IAAI,EAAE,kDAAkD;YAC1E,CAAC,CAAC,OAAO,SAAS,IAAI,EAAE,sBAAsB,IAAI,EAAE,CACvD,CAAC;QAlBO,cAAS,GAAT,SAAS,CAAoB;QAC7B,OAAE,GAAF,EAAE,CAAQ;QAkBnB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB;YAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAC9E,CAAC;CACF"}
|
package/dist/routes/cost.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import type { Timestamp } from '@kindgi/types';
|
|
3
|
+
import type { ProjectBinding } from '@kindgi/platform';
|
|
3
4
|
import { type CostBinding } from '../cost-binding.js';
|
|
4
5
|
import type { Authorizer } from '../middleware/authorize.js';
|
|
5
6
|
import type { AppEnv } from '../types.js';
|
|
@@ -22,9 +23,13 @@ import type { AppEnv } from '../types.js';
|
|
|
22
23
|
*/
|
|
23
24
|
export declare function costRouter(binding: CostBinding,
|
|
24
25
|
/**
|
|
25
|
-
* With one
|
|
26
|
-
*
|
|
26
|
+
* With one: a record needs `read` on its project (the tenant, for one
|
|
27
|
+
* with no project); an aggregate, `read` on the scope it's asked for,
|
|
28
|
+
* and across projects (no scope, or an org) it counts only the projects
|
|
29
|
+
* the caller may read, unless the caller is a tenant admin.
|
|
27
30
|
*/
|
|
28
|
-
authorizer?: Authorizer
|
|
31
|
+
authorizer?: Authorizer,
|
|
32
|
+
/** The tenant's projects, to check one by one when the authorizer can't list them. */
|
|
33
|
+
projects?: Pick<ProjectBinding, 'list'>): Hono<AppEnv>;
|
|
29
34
|
export type { Timestamp };
|
|
30
35
|
//# sourceMappingURL=cost.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/routes/cost.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/routes/cost.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAML,KAAK,WAAW,EAKjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW;AACpB;;;;;GAKG;AACH,UAAU,CAAC,EAAE,UAAU;AACvB,sFAAsF;AACtF,QAAQ,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GACtC,IAAI,CAAC,MAAM,CAAC,CAgRd;AAgPD,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/routes/cost.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
|
-
import { ref } from '@kindgi/authz';
|
|
4
|
+
import { denyPayload, ref } from '@kindgi/authz';
|
|
5
5
|
import { COST_AGGREGATE_DEFAULT_LIMIT, COST_AGGREGATE_MAX_LIMIT, COST_GROUP_DIMENSIONS, } from '../cost-binding.js';
|
|
6
6
|
import { statusFor, toWireError } from '../errors.js';
|
|
7
7
|
import { deniedBy } from './denied.js';
|
|
8
8
|
import { clampLimit } from './pagination.js';
|
|
9
|
+
import { projectIdsCallerMay } from './readable-projects.js';
|
|
9
10
|
import { parseScopeParams, scopeResourceRef } from './scope-params.js';
|
|
10
11
|
/**
|
|
11
12
|
* Cost readback routes — part of the admin control plane. Three
|
|
@@ -26,10 +27,14 @@ import { parseScopeParams, scopeResourceRef } from './scope-params.js';
|
|
|
26
27
|
*/
|
|
27
28
|
export function costRouter(binding,
|
|
28
29
|
/**
|
|
29
|
-
* With one
|
|
30
|
-
*
|
|
30
|
+
* With one: a record needs `read` on its project (the tenant, for one
|
|
31
|
+
* with no project); an aggregate, `read` on the scope it's asked for,
|
|
32
|
+
* and across projects (no scope, or an org) it counts only the projects
|
|
33
|
+
* the caller may read, unless the caller is a tenant admin.
|
|
31
34
|
*/
|
|
32
|
-
authorizer
|
|
35
|
+
authorizer,
|
|
36
|
+
/** The tenant's projects, to check one by one when the authorizer can't list them. */
|
|
37
|
+
projects) {
|
|
33
38
|
const r = new Hono();
|
|
34
39
|
const recordRef = (tenantId, rec) => rec.projectId !== undefined && rec.projectId !== null
|
|
35
40
|
? ref('project', rec.projectId)
|
|
@@ -194,6 +199,16 @@ authorizer) {
|
|
|
194
199
|
const refused = await deniedBy(authorizer, c, 'read', scopeResourceRef(scopeParsed.scope, tenantId));
|
|
195
200
|
if (refused !== undefined)
|
|
196
201
|
return refused;
|
|
202
|
+
// Across projects, only what the caller may read counts (`aggregateReach`).
|
|
203
|
+
const reach = await aggregateReach(c, {
|
|
204
|
+
binding,
|
|
205
|
+
tenantId,
|
|
206
|
+
authorizer,
|
|
207
|
+
projects,
|
|
208
|
+
scope: scopeParsed.scope,
|
|
209
|
+
});
|
|
210
|
+
if (reach.kind === 'refused')
|
|
211
|
+
return reach.response;
|
|
197
212
|
const result = await binding.aggregate({
|
|
198
213
|
tenantId,
|
|
199
214
|
groupBy,
|
|
@@ -202,6 +217,7 @@ authorizer) {
|
|
|
202
217
|
...(Object.keys(filter.value).length > 0 && { filter: filter.value }),
|
|
203
218
|
...(scopeParsed.scope !== undefined && { scope: scopeParsed.scope }),
|
|
204
219
|
...(scopeParsed.inherit !== undefined && { inherit: scopeParsed.inherit }),
|
|
220
|
+
...(reach.kind === 'projects' && { readableProjectIds: reach.ids }),
|
|
205
221
|
limit,
|
|
206
222
|
});
|
|
207
223
|
// The most expensive groups, capped here too: a binding may return
|
|
@@ -225,6 +241,42 @@ authorizer) {
|
|
|
225
241
|
return r;
|
|
226
242
|
}
|
|
227
243
|
// -------- helpers --------
|
|
244
|
+
/**
|
|
245
|
+
* What an aggregate may count for this caller. Across projects (no scope,
|
|
246
|
+
* the tenant, or an org), `read` on the scope lets a member ask, not see
|
|
247
|
+
* every project's spend: only the projects they may read count, applied in
|
|
248
|
+
* the binding's query (`readableProjectIds`). A tenant admin's, a project
|
|
249
|
+
* scope's (already checked) and one without authorization count everything
|
|
250
|
+
* the scope holds. When the readable projects can't be worked out, or the
|
|
251
|
+
* binding can't apply them, the aggregate is refused rather than
|
|
252
|
+
* over-counted.
|
|
253
|
+
*/
|
|
254
|
+
async function aggregateReach(c, args) {
|
|
255
|
+
const { binding, tenantId, authorizer, projects, scope } = args;
|
|
256
|
+
if (authorizer === undefined || scope?.kind === 'project')
|
|
257
|
+
return { kind: 'all' };
|
|
258
|
+
if (await authorizer.can(c, 'admin', ref('tenant', tenantId))) {
|
|
259
|
+
return { kind: 'all' };
|
|
260
|
+
}
|
|
261
|
+
const ids = await projectIdsCallerMay(c, authorizer, projects, 'read');
|
|
262
|
+
if (ids !== undefined && binding.aggregatesReadableProjects === true) {
|
|
263
|
+
return { kind: 'projects', ids };
|
|
264
|
+
}
|
|
265
|
+
const deny = denyPayload('read', scope?.kind === 'org' ? 'org' : 'tenant', scope?.kind === 'org' ? scope.orgId : tenantId, ids === undefined
|
|
266
|
+
? "the projects you may read can't be listed here, so an aggregate across projects can't be limited to them; ask per project (scopeKind=project)"
|
|
267
|
+
: "this deployment's cost store can't limit an aggregate to the projects you may read; ask per project (scopeKind=project)");
|
|
268
|
+
c.status(403);
|
|
269
|
+
return {
|
|
270
|
+
kind: 'refused',
|
|
271
|
+
response: c.json(toWireError({
|
|
272
|
+
code: deny.code,
|
|
273
|
+
message: `Permission denied: ${deny.reason}`,
|
|
274
|
+
action: deny.action,
|
|
275
|
+
resource: deny.resource,
|
|
276
|
+
reason: deny.reason,
|
|
277
|
+
}, c.get('requestId'))),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
228
280
|
function parseRecordFilter(query, opts = {}) {
|
|
229
281
|
const out = {};
|
|
230
282
|
const strKeys = [
|
package/dist/routes/cost.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/routes/cost.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EAAoB,GAAG,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,GAOtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CACxB,OAAoB;AACpB;;;GAGG;AACH,UAAuB;IAEvB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAU,CAAC;IAC7B,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,GAAqC,EAAe,EAAE,CAC3F,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI;QACnD,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAmB,CAAC;QACzC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAA6B,CAAC,CAAC;IAEnD,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;IAExE,qCAAqC;IACrC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;QAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,8CAA8C;QAC9C,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAU,CAAC,CAAC;YAC9C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;YACrC,QAAQ;YACR,KAAK;YACL,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAmB,EAAE,CAAC;YACvF,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;YACpE,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;SACnD,CAAC,CAAC;QACH,MAAM,OAAO,GACX,UAAU,KAAK,SAAS;YACtB,CAAC,CAAC,IAAI,CAAC,IAAI;YACX,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAClC,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS;YACtC,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAA+B,EAAE,CAAC;SAC3F,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;YACrC,QAAQ;YACR,QAAQ;YACR,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;SACnD,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAU,CAAC,CAAC;YACtD,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,2BAA2B,QAAQ,GAAG;gBAC/C,QAAQ;aACT,EACD,SAAS,CACV,CACF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACnF,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAE5B,uEAAuE;QACvE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oDAAoD,EAAE,EACpF,SAAS,CACV,CACF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,UAAU;aACvB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,+CAA+C,EAAE,EAC/E,SAAS,CACV,CACF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAE,qBAA2C,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;gBAC1C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,sBAAsB,GAAG,uCAChC,qBACD,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBAChB,EACD,SAAS,CACV,CACF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAyB,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,GAAyB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,0CAA0C,wBAAwB,aAAa,4BAA4B,GAAG;aACxH,EACD,SAAS,CACV,CACF,CAAC;QACJ,CAAC;QAED,kEAAkE;QAClE,oEAAoE;QACpE,0DAA0D;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,IAAU,CAAC;QACf,IAAI,EAAQ,CAAC;QACb,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACjD,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,2BAA2B,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,6EAA6E;aACvF,EACD,SAAS,CACV,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,UAAU,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC7C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;gBAC1C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,2CAA2C,EAAE,EAC3E,SAAS,CACV,CACF,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;gBAC1C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,2CAA2C,EAAE,EAC3E,SAAS,CACV,CACF,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,UAAU,CAAC;YAClB,EAAE,GAAG,QAAQ,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,+CAA+C;QAC/C,oEAAoE;QACpE,2BAA2B;QAC3B,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAU,CAAC,CAAC;YAC9C,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAC5B,UAAU,EACV,CAAC,EACD,MAAM,EACN,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC9C,CAAC;QACF,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;YACrC,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,EAAE;YACF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACrE,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;YACpE,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1E,KAAK;SACN,CAAC,CAAC;QAEH,mEAAmE;QACnE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5E,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;YAClC,WAAW;YACX,SAAS,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM;YACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,SAAS,EAAE;gBACT,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;gBAC3B,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;aACxB;YACD,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,4BAA4B;AAE5B,SAAS,iBAAiB,CACxB,KAAmD,EACnD,OAA+B,EAAE;IAEjC,MAAM,GAAG,GAEL,EAAE,CAAC;IACP,MAAM,OAAO,GAAG;QACd,OAAO;QACP,SAAS;QACT,gBAAgB;QAChB,UAAU;QACV,YAAY;QACZ,OAAO;QACP,aAAa;QACb,WAAW;KACH,CAAC;IACX,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC;IAC7C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC;QAClF,CAAC;QACD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;YACxE,CAAC;YACD,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;YAC3F,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;YACzF,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5F,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACpC,CAAC;AAED,0FAA0F;AAC1F,SAAS,YAAY,CACnB,GAAuB;IAEvB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,KAAK,mCAAmC,EAAE,CAAC;QAChG,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,GAAe;IACtC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,QAA6B;QAC3C,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QACpD,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1D,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/E,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1D,UAAU,EAAE,GAAG,CAAC,UAA+B;QAC/C,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1D,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACnE,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,iBAAiB,GAAG;IACxB,QAAQ;IACR,WAAW;IACX,WAAW;IACX,aAAa;IACb,cAAc;IACd,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACP,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,UAAU;IACV,OAAO;IACP,UAAU;CACsC,CAAC;AAEnD,SAAS,IAAI,CAAC,GAAe,EAAE,IAAmC;IAChE,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wFAAwF;AACxF,SAAS,mBAAmB,CAAC,GAAuB;IAClD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,4BAA4B,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CACpB,CAAqB,EACrB,CAAqB,EACrB,OAAsC;IAEtC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACtB,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,cAAc,CAAC,CAAqB;IAC3C,OAAO;QACL,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,CAAkB;IACzC,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/routes/cost.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
|
+
import { type Guardrail } from '@kindgi/guardrails';
|
|
2
3
|
import type { ProjectBinding } from '@kindgi/platform';
|
|
3
4
|
import type { AgentRegistryBinding } from '../agent-binding.js';
|
|
4
5
|
import type { BlockRegistryBinding } from '../block-binding.js';
|
|
@@ -128,5 +129,12 @@ export interface DeploymentsRouterBindings {
|
|
|
128
129
|
readonly onGuardrailWrite?: GuardrailWriteHook;
|
|
129
130
|
}
|
|
130
131
|
export declare function deploymentsRouter(bindings: DeploymentsRouterBindings, authorizer?: Authorizer): Hono<AppEnv>;
|
|
132
|
+
/**
|
|
133
|
+
* The same guardrail definition: equal in what its author declares
|
|
134
|
+
* (`DECLARED_GUARDRAIL_FIELDS`, and of where its code lives only the
|
|
135
|
+
* module path), as JSON with keys in any order (a registry may store it as
|
|
136
|
+
* JSONB) and an absent field the same as an `undefined` one.
|
|
137
|
+
*/
|
|
138
|
+
export declare function sameGuardrailDefinition(a: Guardrail, b: Guardrail): boolean;
|
|
131
139
|
export declare function sha256HexPrefixed(bytes: Uint8Array): string;
|
|
132
140
|
//# sourceMappingURL=deployments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B,OAAO,EAEL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,kBAAkB,CAAC;AAa9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAKV,iBAAiB,EAGlB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IACtD,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAC3C,oFAAoF;IACpF,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;IACxC;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;CAChD;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,yBAAyB,EACnC,UAAU,CAAC,EAAE,UAAU,GACtB,IAAI,CAAC,MAAM,CAAC,CAu1Bd;AAiUD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAE3E;AAokBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAG3D"}
|
|
@@ -331,7 +331,17 @@ export function deploymentsRouter(bindings, authorizer) {
|
|
|
331
331
|
await bindings.guardrailRegistry?.unregister({ tenantId, guardrailId });
|
|
332
332
|
});
|
|
333
333
|
}
|
|
334
|
-
else if (outcome.kind
|
|
334
|
+
else if (outcome.kind === 'already-registered') {
|
|
335
|
+
const kept = await keepRegisteredGuardrail(bindings.guardrailRegistry, tenantId, projectIdForGuardrail, guardrail);
|
|
336
|
+
// Unregistered since the registry answered: registered afresh.
|
|
337
|
+
if (kept === 'registered') {
|
|
338
|
+
const guardrailId = guardrail.id;
|
|
339
|
+
rolled.push(async () => {
|
|
340
|
+
await bindings.guardrailRegistry?.unregister({ tenantId, guardrailId });
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
335
345
|
throw new PublishRefused('guardrail', guardrail.id, outcome);
|
|
336
346
|
}
|
|
337
347
|
}
|
|
@@ -778,6 +788,122 @@ function canonicalizeEnvelope(fields) {
|
|
|
778
788
|
const json = JSON.stringify(ordered);
|
|
779
789
|
return new TextEncoder().encode(json);
|
|
780
790
|
}
|
|
791
|
+
/**
|
|
792
|
+
* A deploy keeps a guardrail id that's already live only when it's the
|
|
793
|
+
* deploy's own: in the project the deploy registers into, with the same
|
|
794
|
+
* definition (`sameGuardrailDefinition`, what its author declares). An id live in another project
|
|
795
|
+
* is refused (`guardrail-project-mismatch`, its project never named): the
|
|
796
|
+
* pack's agents would otherwise run that project's guardrail. One in this
|
|
797
|
+
* project with another definition is refused too
|
|
798
|
+
* (`guardrail-already-registered`): a deploy never changes a guardrail,
|
|
799
|
+
* and keeping the old one would run what the pack no longer says.
|
|
800
|
+
*
|
|
801
|
+
* `get` answers a guardrail without its project, so whether the id is in
|
|
802
|
+
* this project comes from the project's list. When the row is gone by the
|
|
803
|
+
* time it's looked at (unregistered meanwhile), the guardrail is
|
|
804
|
+
* registered again: `'registered'`, for the deploy to roll back.
|
|
805
|
+
*/
|
|
806
|
+
async function keepRegisteredGuardrail(registry, tenantId, projectId, guardrail) {
|
|
807
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
808
|
+
const existing = await registry.get({ tenantId, guardrailId: guardrail.id });
|
|
809
|
+
if (existing !== null) {
|
|
810
|
+
if (!(await guardrailInProject(registry, tenantId, projectId, guardrail.id))) {
|
|
811
|
+
throw new PublishRefused('guardrail', guardrail.id, {
|
|
812
|
+
code: 'guardrail-project-mismatch',
|
|
813
|
+
reason: 'it belongs to another project',
|
|
814
|
+
});
|
|
815
|
+
}
|
|
816
|
+
if (!sameGuardrailDefinition(existing, guardrail)) {
|
|
817
|
+
throw new PublishRefused('guardrail', guardrail.id, {
|
|
818
|
+
code: 'guardrail-already-registered',
|
|
819
|
+
reason: `it is already registered with a different definition; unregister it (\`kindgi guardrails unregister ${guardrail.id}\`) and deploy again`,
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
return 'kept';
|
|
823
|
+
}
|
|
824
|
+
const again = await registry.register({
|
|
825
|
+
tenantId,
|
|
826
|
+
projectId,
|
|
827
|
+
guardrail,
|
|
828
|
+
enqueueTuples: (guardrailId) => tuplesForCreate({
|
|
829
|
+
kind: 'guardrail',
|
|
830
|
+
id: guardrailId,
|
|
831
|
+
tenantId,
|
|
832
|
+
projectId,
|
|
833
|
+
}),
|
|
834
|
+
});
|
|
835
|
+
if (again.kind === 'ok')
|
|
836
|
+
return 'registered';
|
|
837
|
+
if (again.kind !== 'already-registered') {
|
|
838
|
+
throw new PublishRefused('guardrail', guardrail.id, again);
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
throw new Error(`guardrail ${guardrail.id}: registered and unregistered while deploying`);
|
|
842
|
+
}
|
|
843
|
+
/** Whether the live guardrail `id` is in `projectId`, by that project's list. */
|
|
844
|
+
async function guardrailInProject(registry, tenantId, projectId, id) {
|
|
845
|
+
let cursor;
|
|
846
|
+
do {
|
|
847
|
+
const page = await registry.list({
|
|
848
|
+
tenantId,
|
|
849
|
+
limit: 100,
|
|
850
|
+
nameFilter: id,
|
|
851
|
+
scope: { kind: 'project', tenantId, projectId },
|
|
852
|
+
...(cursor !== undefined && { cursor }),
|
|
853
|
+
});
|
|
854
|
+
if (page.data.some((g) => g.id === id))
|
|
855
|
+
return true;
|
|
856
|
+
cursor = page.nextCursor;
|
|
857
|
+
} while (cursor !== undefined);
|
|
858
|
+
return false;
|
|
859
|
+
}
|
|
860
|
+
/**
|
|
861
|
+
* The fields of a guardrail its author declares, which a deploy compares.
|
|
862
|
+
* Never compared: what a deploy or a release derives. That includes
|
|
863
|
+
* `configSchema`, which the deploy route dropped before 0.1.5, so a row a
|
|
864
|
+
* 0.1.4 deploy stored has none; the image and artifact version a code
|
|
865
|
+
* pointer names, which every new image changes; and any field a later
|
|
866
|
+
* release adds. So an unchanged pack redeploys across releases.
|
|
867
|
+
*/
|
|
868
|
+
const DECLARED_GUARDRAIL_FIELDS = [
|
|
869
|
+
'name',
|
|
870
|
+
'description',
|
|
871
|
+
'kind',
|
|
872
|
+
'check',
|
|
873
|
+
'config',
|
|
874
|
+
'action',
|
|
875
|
+
'severity',
|
|
876
|
+
'scope',
|
|
877
|
+
'budget',
|
|
878
|
+
'judgeCapabilities',
|
|
879
|
+
'sandbox',
|
|
880
|
+
'limits',
|
|
881
|
+
'network',
|
|
882
|
+
'needsSpec',
|
|
883
|
+
];
|
|
884
|
+
/**
|
|
885
|
+
* The same guardrail definition: equal in what its author declares
|
|
886
|
+
* (`DECLARED_GUARDRAIL_FIELDS`, and of where its code lives only the
|
|
887
|
+
* module path), as JSON with keys in any order (a registry may store it as
|
|
888
|
+
* JSONB) and an absent field the same as an `undefined` one.
|
|
889
|
+
*/
|
|
890
|
+
export function sameGuardrailDefinition(a, b) {
|
|
891
|
+
return canonicalJson(definitionOf(a)) === canonicalJson(definitionOf(b));
|
|
892
|
+
}
|
|
893
|
+
function definitionOf(guardrail) {
|
|
894
|
+
const declared = {};
|
|
895
|
+
for (const field of DECLARED_GUARDRAIL_FIELDS) {
|
|
896
|
+
declared[field] = guardrail[field];
|
|
897
|
+
}
|
|
898
|
+
declared.modulePath = guardrail.codeArtifactRef?.modulePath;
|
|
899
|
+
return declared;
|
|
900
|
+
}
|
|
901
|
+
/** JSON with every object's keys sorted, and absent and `undefined` alike. */
|
|
902
|
+
function canonicalJson(value) {
|
|
903
|
+
return JSON.stringify(JSON.parse(JSON.stringify(value) ?? 'null'), (_key, v) => v !== null && typeof v === 'object' && !Array.isArray(v)
|
|
904
|
+
? Object.fromEntries(Object.entries(v).sort(([x], [y]) => (x < y ? -1 : x > y ? 1 : 0)))
|
|
905
|
+
: v);
|
|
906
|
+
}
|
|
781
907
|
/** The pointer to a tool's or guardrail's module inside the deployed image. */
|
|
782
908
|
function ociCodeArtifactRef(image, modulePath) {
|
|
783
909
|
return typeof modulePath === 'string' && modulePath.length > 0
|