@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.
Files changed (55) hide show
  1. package/dist/app.js +1 -1
  2. package/dist/app.js.map +1 -1
  3. package/dist/cost-binding.d.ts +19 -0
  4. package/dist/cost-binding.d.ts.map +1 -1
  5. package/dist/cost-binding.js.map +1 -1
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +2 -0
  8. package/dist/errors.js.map +1 -1
  9. package/dist/middleware/authorize.d.ts +5 -2
  10. package/dist/middleware/authorize.d.ts.map +1 -1
  11. package/dist/middleware/authorize.js +10 -1
  12. package/dist/middleware/authorize.js.map +1 -1
  13. package/dist/openapi/operations.js +1 -1
  14. package/dist/openapi/operations.js.map +1 -1
  15. package/dist/openapi/schemas.js +1 -1
  16. package/dist/openapi/schemas.js.map +1 -1
  17. package/dist/publish-refused.d.ts +12 -2
  18. package/dist/publish-refused.d.ts.map +1 -1
  19. package/dist/publish-refused.js +6 -0
  20. package/dist/publish-refused.js.map +1 -1
  21. package/dist/routes/cost.d.ts +8 -3
  22. package/dist/routes/cost.d.ts.map +1 -1
  23. package/dist/routes/cost.js +56 -4
  24. package/dist/routes/cost.js.map +1 -1
  25. package/dist/routes/deployments.d.ts +8 -0
  26. package/dist/routes/deployments.d.ts.map +1 -1
  27. package/dist/routes/deployments.js +127 -1
  28. package/dist/routes/deployments.js.map +1 -1
  29. package/dist/routes/eval-runs.js +4 -1
  30. package/dist/routes/eval-runs.js.map +1 -1
  31. package/dist/routes/eval-suites.d.ts.map +1 -1
  32. package/dist/routes/eval-suites.js +8 -1
  33. package/dist/routes/eval-suites.js.map +1 -1
  34. package/dist/routes/memory-access.d.ts.map +1 -1
  35. package/dist/routes/memory-access.js +18 -33
  36. package/dist/routes/memory-access.js.map +1 -1
  37. package/dist/routes/readable-projects.d.ts +26 -0
  38. package/dist/routes/readable-projects.d.ts.map +1 -0
  39. package/dist/routes/readable-projects.js +39 -0
  40. package/dist/routes/readable-projects.js.map +1 -0
  41. package/openapi.json +3 -2
  42. package/package.json +21 -21
  43. package/src/app.ts +1 -1
  44. package/src/cost-binding.ts +19 -0
  45. package/src/errors.ts +2 -0
  46. package/src/middleware/authorize.ts +19 -3
  47. package/src/openapi/operations.ts +1 -1
  48. package/src/openapi/schemas.ts +1 -1
  49. package/src/publish-refused.ts +20 -2
  50. package/src/routes/cost.ts +81 -4
  51. package/src/routes/deployments.ts +148 -1
  52. package/src/routes/eval-runs.ts +3 -0
  53. package/src/routes/eval-suites.ts +7 -1
  54. package/src/routes/memory-access.ts +19 -38
  55. 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;IASrC,QAAQ,CAAC,SAAS,EAAE,kBAAkB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM;IATrB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EACT,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,GACnD,GAAG,kBAAkB,mBAAmB,CAAC;IAC7C,yFAAyF;IACzF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;gBAGpB,SAAS,EAAE,kBAAkB,EAC7B,EAAE,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc;CAe1B"}
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"}
@@ -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;AAoBjC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAS5B;IACA;IATX,wCAAwC;IAC/B,IAAI,CAEgC;IAC7C,yFAAyF;IAChF,SAAS,CAAa;IAE/B,YACW,SAA6B,EAC7B,EAAU,EACnB,OAAuB;QAEvB,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;QAZO,cAAS,GAAT,SAAS,CAAoB;QAC7B,OAAE,GAAF,EAAE,CAAQ;QAYnB,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"}
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"}
@@ -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 (T243 A): a record needs `read` on its project (the tenant,
26
- * for one with no project); an aggregate, on the scope it's asked for.
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): Hono<AppEnv>;
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,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,EAKL,KAAK,WAAW,EAKjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAK1C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW;AACpB;;;GAGG;AACH,UAAU,CAAC,EAAE,UAAU,GACtB,IAAI,CAAC,MAAM,CAAC,CAqQd;AAqLD,YAAY,EAAE,SAAS,EAAE,CAAC"}
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"}
@@ -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 (T243 A): a record needs `read` on its project (the tenant,
30
- * for one with no project); an aggregate, on the scope it's asked for.
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 = [
@@ -1 +1 @@
1
- {"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/routes/cost.ts"],"names":[],"mappings":"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"}
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;AAY5B,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,CAy0Bd;AAwwBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAG3D"}
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 !== 'already-registered') {
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