@kindgi/api 0.1.4-rc.0 → 0.1.4-rc.2

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 (262) hide show
  1. package/dist/agent-binding.d.ts +20 -2
  2. package/dist/agent-binding.d.ts.map +1 -1
  3. package/dist/agent-pins.d.ts.map +1 -1
  4. package/dist/agent-pins.js +4 -1
  5. package/dist/agent-pins.js.map +1 -1
  6. package/dist/app.d.ts +8 -0
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +30 -5
  9. package/dist/app.js.map +1 -1
  10. package/dist/deploy-versions.d.ts +10 -5
  11. package/dist/deploy-versions.d.ts.map +1 -1
  12. package/dist/deploy-versions.js +4 -10
  13. package/dist/deploy-versions.js.map +1 -1
  14. package/dist/derive-agent-version.d.ts +9 -1
  15. package/dist/derive-agent-version.d.ts.map +1 -1
  16. package/dist/derive-agent-version.js +11 -1
  17. package/dist/derive-agent-version.js.map +1 -1
  18. package/dist/errors.d.ts.map +1 -1
  19. package/dist/errors.js +26 -0
  20. package/dist/errors.js.map +1 -1
  21. package/dist/eval-case-binding.d.ts +10 -0
  22. package/dist/eval-case-binding.d.ts.map +1 -1
  23. package/dist/eval-run-binding.d.ts +21 -3
  24. package/dist/eval-run-binding.d.ts.map +1 -1
  25. package/dist/eval-run-binding.js.map +1 -1
  26. package/dist/eval-run-dispatcher.d.ts +3 -0
  27. package/dist/eval-run-dispatcher.d.ts.map +1 -1
  28. package/dist/eval-run-dispatcher.js.map +1 -1
  29. package/dist/flow-binding.d.ts +8 -0
  30. package/dist/flow-binding.d.ts.map +1 -1
  31. package/dist/flow-pins.d.ts +20 -7
  32. package/dist/flow-pins.d.ts.map +1 -1
  33. package/dist/flow-pins.js +36 -11
  34. package/dist/flow-pins.js.map +1 -1
  35. package/dist/gate-policy-binding.d.ts +164 -0
  36. package/dist/gate-policy-binding.d.ts.map +1 -0
  37. package/dist/gate-policy-binding.js +12 -0
  38. package/dist/gate-policy-binding.js.map +1 -0
  39. package/dist/gate.d.ts +56 -0
  40. package/dist/gate.d.ts.map +1 -0
  41. package/dist/gate.js +359 -0
  42. package/dist/gate.js.map +1 -0
  43. package/dist/guardrail-binding.d.ts +8 -0
  44. package/dist/guardrail-binding.d.ts.map +1 -1
  45. package/dist/handler-binding.d.ts +17 -2
  46. package/dist/handler-binding.d.ts.map +1 -1
  47. package/dist/index.d.ts +11 -4
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/judged-dispatcher.d.ts +20 -1
  52. package/dist/judged-dispatcher.d.ts.map +1 -1
  53. package/dist/judged-dispatcher.js +57 -7
  54. package/dist/judged-dispatcher.js.map +1 -1
  55. package/dist/judgment-binding.d.ts +38 -0
  56. package/dist/judgment-binding.d.ts.map +1 -1
  57. package/dist/judgment-binding.js +19 -0
  58. package/dist/judgment-binding.js.map +1 -1
  59. package/dist/live-version-binding.d.ts +206 -0
  60. package/dist/live-version-binding.d.ts.map +1 -0
  61. package/dist/live-version-binding.js +4 -0
  62. package/dist/live-version-binding.js.map +1 -0
  63. package/dist/middleware/authorize.d.ts.map +1 -1
  64. package/dist/middleware/authorize.js +13 -2
  65. package/dist/middleware/authorize.js.map +1 -1
  66. package/dist/middleware/project-ref.d.ts +25 -0
  67. package/dist/middleware/project-ref.d.ts.map +1 -0
  68. package/dist/middleware/project-ref.js +72 -0
  69. package/dist/middleware/project-ref.js.map +1 -0
  70. package/dist/openapi/generate.d.ts.map +1 -1
  71. package/dist/openapi/generate.js +4 -0
  72. package/dist/openapi/generate.js.map +1 -1
  73. package/dist/openapi/operations.d.ts +6 -0
  74. package/dist/openapi/operations.d.ts.map +1 -1
  75. package/dist/openapi/operations.js +524 -27
  76. package/dist/openapi/operations.js.map +1 -1
  77. package/dist/openapi/schemas.d.ts +43 -0
  78. package/dist/openapi/schemas.d.ts.map +1 -1
  79. package/dist/openapi/schemas.js +1050 -7
  80. package/dist/openapi/schemas.js.map +1 -1
  81. package/dist/publish-refused.d.ts +18 -0
  82. package/dist/publish-refused.d.ts.map +1 -0
  83. package/dist/publish-refused.js +22 -0
  84. package/dist/publish-refused.js.map +1 -0
  85. package/dist/registry-read-only.d.ts +32 -0
  86. package/dist/registry-read-only.d.ts.map +1 -0
  87. package/dist/registry-read-only.js +22 -0
  88. package/dist/registry-read-only.js.map +1 -0
  89. package/dist/retention-binding.d.ts +29 -0
  90. package/dist/retention-binding.d.ts.map +1 -1
  91. package/dist/routes/agent-releases.d.ts +40 -0
  92. package/dist/routes/agent-releases.d.ts.map +1 -0
  93. package/dist/routes/agent-releases.js +462 -0
  94. package/dist/routes/agent-releases.js.map +1 -0
  95. package/dist/routes/agents.d.ts +7 -1
  96. package/dist/routes/agents.d.ts.map +1 -1
  97. package/dist/routes/agents.js +38 -4
  98. package/dist/routes/agents.js.map +1 -1
  99. package/dist/routes/approvals.d.ts.map +1 -1
  100. package/dist/routes/approvals.js +27 -9
  101. package/dist/routes/approvals.js.map +1 -1
  102. package/dist/routes/audit.d.ts.map +1 -1
  103. package/dist/routes/audit.js +7 -0
  104. package/dist/routes/audit.js.map +1 -1
  105. package/dist/routes/auth.js +1 -1
  106. package/dist/routes/auth.js.map +1 -1
  107. package/dist/routes/blocks.d.ts.map +1 -1
  108. package/dist/routes/blocks.js +37 -12
  109. package/dist/routes/blocks.js.map +1 -1
  110. package/dist/routes/conversations.d.ts +0 -7
  111. package/dist/routes/conversations.d.ts.map +1 -1
  112. package/dist/routes/conversations.js +19 -3
  113. package/dist/routes/conversations.js.map +1 -1
  114. package/dist/routes/deployments.d.ts +6 -0
  115. package/dist/routes/deployments.d.ts.map +1 -1
  116. package/dist/routes/deployments.js +49 -5
  117. package/dist/routes/deployments.js.map +1 -1
  118. package/dist/routes/env.d.ts.map +1 -1
  119. package/dist/routes/env.js +1 -0
  120. package/dist/routes/env.js.map +1 -1
  121. package/dist/routes/eval-comparison.d.ts +4 -2
  122. package/dist/routes/eval-comparison.d.ts.map +1 -1
  123. package/dist/routes/eval-comparison.js +59 -10
  124. package/dist/routes/eval-comparison.js.map +1 -1
  125. package/dist/routes/eval-runs.d.ts +7 -1
  126. package/dist/routes/eval-runs.d.ts.map +1 -1
  127. package/dist/routes/eval-runs.js +34 -3
  128. package/dist/routes/eval-runs.js.map +1 -1
  129. package/dist/routes/eval-versions.d.ts +25 -0
  130. package/dist/routes/eval-versions.d.ts.map +1 -0
  131. package/dist/routes/eval-versions.js +66 -0
  132. package/dist/routes/eval-versions.js.map +1 -0
  133. package/dist/routes/flows.d.ts +14 -7
  134. package/dist/routes/flows.d.ts.map +1 -1
  135. package/dist/routes/flows.js +14 -8
  136. package/dist/routes/flows.js.map +1 -1
  137. package/dist/routes/gate-policies.d.ts +19 -0
  138. package/dist/routes/gate-policies.d.ts.map +1 -0
  139. package/dist/routes/gate-policies.js +191 -0
  140. package/dist/routes/gate-policies.js.map +1 -0
  141. package/dist/routes/gate-policy-spec.d.ts +17 -0
  142. package/dist/routes/gate-policy-spec.d.ts.map +1 -0
  143. package/dist/routes/gate-policy-spec.js +192 -0
  144. package/dist/routes/gate-policy-spec.js.map +1 -0
  145. package/dist/routes/gate-policy-wire.d.ts +3 -0
  146. package/dist/routes/gate-policy-wire.d.ts.map +1 -0
  147. package/dist/routes/gate-policy-wire.js +18 -0
  148. package/dist/routes/gate-policy-wire.js.map +1 -0
  149. package/dist/routes/guardrails.d.ts.map +1 -1
  150. package/dist/routes/guardrails.js +4 -0
  151. package/dist/routes/guardrails.js.map +1 -1
  152. package/dist/routes/hierarchy-errors.d.ts +21 -0
  153. package/dist/routes/hierarchy-errors.d.ts.map +1 -1
  154. package/dist/routes/hierarchy-errors.js +21 -0
  155. package/dist/routes/hierarchy-errors.js.map +1 -1
  156. package/dist/routes/judged-suites.js +7 -0
  157. package/dist/routes/judged-suites.js.map +1 -1
  158. package/dist/routes/judgments.d.ts +4 -1
  159. package/dist/routes/judgments.d.ts.map +1 -1
  160. package/dist/routes/judgments.js +92 -19
  161. package/dist/routes/judgments.js.map +1 -1
  162. package/dist/routes/live-scope-wire.d.ts +32 -0
  163. package/dist/routes/live-scope-wire.d.ts.map +1 -0
  164. package/dist/routes/live-scope-wire.js +71 -0
  165. package/dist/routes/live-scope-wire.js.map +1 -0
  166. package/dist/routes/policies.d.ts +6 -3
  167. package/dist/routes/policies.d.ts.map +1 -1
  168. package/dist/routes/policies.js +55 -3
  169. package/dist/routes/policies.js.map +1 -1
  170. package/dist/routes/projects.d.ts.map +1 -1
  171. package/dist/routes/projects.js +59 -9
  172. package/dist/routes/projects.js.map +1 -1
  173. package/dist/routes/retention.d.ts.map +1 -1
  174. package/dist/routes/retention.js +18 -2
  175. package/dist/routes/retention.js.map +1 -1
  176. package/dist/routes/reviewers.d.ts +8 -1
  177. package/dist/routes/reviewers.d.ts.map +1 -1
  178. package/dist/routes/reviewers.js +20 -3
  179. package/dist/routes/reviewers.js.map +1 -1
  180. package/dist/routes/runs.d.ts.map +1 -1
  181. package/dist/routes/runs.js +23 -13
  182. package/dist/routes/runs.js.map +1 -1
  183. package/dist/routes/secrets.d.ts.map +1 -1
  184. package/dist/routes/secrets.js +2 -0
  185. package/dist/routes/secrets.js.map +1 -1
  186. package/dist/routes/segments.d.ts +17 -0
  187. package/dist/routes/segments.d.ts.map +1 -0
  188. package/dist/routes/segments.js +68 -0
  189. package/dist/routes/segments.js.map +1 -0
  190. package/dist/routes/teams.d.ts.map +1 -1
  191. package/dist/routes/teams.js +53 -8
  192. package/dist/routes/teams.js.map +1 -1
  193. package/dist/routes/tools.d.ts.map +1 -1
  194. package/dist/routes/tools.js +4 -0
  195. package/dist/routes/tools.js.map +1 -1
  196. package/dist/routes/uuid-param.d.ts +11 -0
  197. package/dist/routes/uuid-param.d.ts.map +1 -0
  198. package/dist/routes/uuid-param.js +19 -0
  199. package/dist/routes/uuid-param.js.map +1 -0
  200. package/dist/tool-binding.d.ts +8 -0
  201. package/dist/tool-binding.d.ts.map +1 -1
  202. package/openapi.json +6484 -2402
  203. package/package.json +21 -21
  204. package/src/agent-binding.ts +21 -2
  205. package/src/agent-pins.ts +3 -1
  206. package/src/app.ts +47 -4
  207. package/src/deploy-versions.ts +12 -15
  208. package/src/derive-agent-version.ts +12 -1
  209. package/src/errors.ts +26 -0
  210. package/src/eval-case-binding.ts +7 -0
  211. package/src/eval-run-binding.ts +31 -3
  212. package/src/eval-run-dispatcher.ts +3 -0
  213. package/src/flow-binding.ts +9 -0
  214. package/src/flow-pins.ts +49 -9
  215. package/src/gate-policy-binding.ts +171 -0
  216. package/src/gate.ts +467 -0
  217. package/src/guardrail-binding.ts +9 -0
  218. package/src/handler-binding.ts +17 -2
  219. package/src/index.ts +47 -1
  220. package/src/judged-dispatcher.ts +100 -9
  221. package/src/judgment-binding.ts +62 -0
  222. package/src/live-version-binding.ts +237 -0
  223. package/src/middleware/authorize.ts +18 -2
  224. package/src/middleware/project-ref.ts +88 -0
  225. package/src/openapi/generate.ts +5 -0
  226. package/src/openapi/operations.ts +664 -27
  227. package/src/openapi/schemas.ts +1175 -33
  228. package/src/publish-refused.ts +31 -0
  229. package/src/registry-read-only.ts +43 -0
  230. package/src/retention-binding.ts +30 -0
  231. package/src/routes/agent-releases.ts +581 -0
  232. package/src/routes/agents.ts +53 -3
  233. package/src/routes/approvals.ts +36 -8
  234. package/src/routes/audit.ts +10 -0
  235. package/src/routes/auth.ts +1 -1
  236. package/src/routes/blocks.ts +39 -14
  237. package/src/routes/conversations.ts +31 -3
  238. package/src/routes/deployments.ts +75 -5
  239. package/src/routes/env.ts +1 -0
  240. package/src/routes/eval-comparison.ts +59 -11
  241. package/src/routes/eval-runs.ts +46 -3
  242. package/src/routes/eval-versions.ts +110 -0
  243. package/src/routes/flows.ts +34 -11
  244. package/src/routes/gate-policies.ts +226 -0
  245. package/src/routes/gate-policy-spec.ts +229 -0
  246. package/src/routes/gate-policy-wire.ts +20 -0
  247. package/src/routes/guardrails.ts +7 -0
  248. package/src/routes/hierarchy-errors.ts +23 -0
  249. package/src/routes/judged-suites.ts +5 -0
  250. package/src/routes/judgments.ts +107 -23
  251. package/src/routes/live-scope-wire.ts +90 -0
  252. package/src/routes/policies.ts +61 -3
  253. package/src/routes/projects.ts +72 -9
  254. package/src/routes/retention.ts +21 -2
  255. package/src/routes/reviewers.ts +23 -4
  256. package/src/routes/runs.ts +34 -20
  257. package/src/routes/secrets.ts +2 -0
  258. package/src/routes/segments.ts +75 -0
  259. package/src/routes/teams.ts +66 -8
  260. package/src/routes/tools.ts +7 -0
  261. package/src/routes/uuid-param.ts +28 -0
  262. package/src/tool-binding.ts +9 -0
@@ -1 +1 @@
1
- {"version":3,"file":"judgment-binding.js","sourceRoot":"","sources":["../src/judgment-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AA2EjC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAwD/E,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAC/B,KAAsB,EACtB,GAAuE;IAEvE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,CACL,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS;gBACjC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;gBAC5B,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CACjC,CAAC;IACN,CAAC;AACH,CAAC;AAED,kCAAkC;AAElC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC"}
1
+ {"version":3,"file":"judgment-binding.js","sourceRoot":"","sources":["../src/judgment-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,eAAe,CAAC;AA0EtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AA2B/E,+FAA+F;AAC/F,MAAM,UAAU,gBAAgB,CAC9B,YAAoC,EACpC,QAA4B;IAE5B,IACE,YAAY,CAAC,cAAc,KAAK,SAAS;QACzC,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpD,CAAC;QACD,OAAO,QAAQ,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnI,CAAC;IACD,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAChG,OAAO,uEAAuE,CAAC;IACjF,CAAC;IACD,IAAI,YAAY,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9E,OAAO,cAAc,IAAI,qBAAqB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,IAAI,WAAW,EAAE,CAAC;QACrI,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AA4DD,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAC/B,KAAsB,EACtB,GAAuE;IAEvE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,CACL,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS;gBACjC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;gBAC5B,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CACjC,CAAC;IACN,CAAC;AACH,CAAC;AAED,kCAAkC;AAElC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC"}
@@ -0,0 +1,206 @@
1
+ import type { Cursor, LiveScope, OrgId, ProjectId, Result, ScopeSegment, Semver, TenantId, Timestamp } from '@kindgi/types';
2
+ import type { GatePolicyBinding, GatePolicyRef } from './gate-policy-binding.js';
3
+ import type { GateApproval, GateCheck } from './gate.js';
4
+ /**
5
+ * Live versions of agents: which version serves a scope, and the
6
+ * promotions that put it there (evals step 4). A run that names no
7
+ * version takes the most specific live version that covers it (a
8
+ * segment path, then its project, its org, the tenant), else the latest
9
+ * registered one, as before anything is pinned.
10
+ */
11
+ /** What a run's version is resolved for: its project (and org) and its segment path. */
12
+ export interface LiveResolveInput {
13
+ readonly tenantId: TenantId;
14
+ readonly agentId: string;
15
+ /** Absent → only the org's pin (with `orgId`) and the tenant-wide pin apply. */
16
+ readonly projectId?: ProjectId;
17
+ /**
18
+ * The project's org, when it has one (the resolver may look it up from
19
+ * `projectId` itself). Without `projectId`: an org scope's own
20
+ * coordinates, as the promotion gate resolves what serves an org.
21
+ */
22
+ readonly orgId?: OrgId;
23
+ /** Coarse to fine (needs `projectId`); a segment pin covers every path that starts with its own. */
24
+ readonly segments?: readonly ScopeSegment[];
25
+ }
26
+ export interface LiveResolution {
27
+ readonly version: Semver;
28
+ /** The pin that matched. */
29
+ readonly scope: LiveScope;
30
+ }
31
+ export interface LivePin {
32
+ readonly agentId: string;
33
+ readonly scope: LiveScope;
34
+ readonly version: Semver;
35
+ /** The promotion that set it. */
36
+ readonly promotionId: string;
37
+ readonly setAt: Timestamp;
38
+ }
39
+ export interface LiveVersionBinding {
40
+ /** The most specific live version covering the input; `null` when none is pinned on the way up. */
41
+ resolve(input: LiveResolveInput): Promise<LiveResolution | null>;
42
+ /** Every pin of an agent. */
43
+ list(input: {
44
+ readonly tenantId: TenantId;
45
+ readonly agentId: string;
46
+ }): Promise<readonly LivePin[]>;
47
+ }
48
+ /** Who asked: the request's principal (a user, or a service token). */
49
+ export interface PromotionActor {
50
+ readonly kind: 'user' | 'service';
51
+ readonly id: string;
52
+ }
53
+ export type PromotionAction = 'promote' | 'rollback' | 'unpin';
54
+ /**
55
+ * Where a promotion request stands. Only `promote` rows have one; rollback
56
+ * and unpin are immediate. A request's status changes once, from
57
+ * `pending-approval` to its final state.
58
+ */
59
+ export type PromotionStatus =
60
+ /** The version is live for the scope. */
61
+ 'promoted'
62
+ /** The gate passed; a reviewer's approval is open. The live version is unchanged. */
63
+ | 'pending-approval'
64
+ /** The gate failed (`checks` say why). The live version is unchanged. */
65
+ | 'refused'
66
+ /** Approved, but the scope's live version or policy changed meanwhile: check again. */
67
+ | 'superseded'
68
+ /** The reviewer rejected it. */
69
+ | 'rejected'
70
+ /** The approval expired undecided. */
71
+ | 'expired';
72
+ /**
73
+ * One change of a scope's live version, kept for good (the audit trail):
74
+ * what was live before, what is after, who asked and why.
75
+ */
76
+ export interface Promotion {
77
+ readonly id: string;
78
+ readonly agentId: string;
79
+ readonly scope: LiveScope;
80
+ readonly action: PromotionAction;
81
+ /** The scope's own pin before; `null` when it had none. */
82
+ readonly fromVersion: Semver | null;
83
+ /** The scope's own pin after; `null` after an unpin. */
84
+ readonly toVersion: Semver | null;
85
+ readonly requestedBy: PromotionActor;
86
+ readonly reason?: string;
87
+ /** The comparison the change was judged on, when there was one. */
88
+ readonly evalRunId?: string;
89
+ readonly createdAt: Timestamp;
90
+ /** A `promote` row's state; absent on a promotion made before gates (`promoted`). */
91
+ readonly status?: PromotionStatus;
92
+ /** The gate policy that applied; `null` when none did. Absent before gates. */
93
+ readonly policy?: GatePolicyRef | null;
94
+ /** The gate's checks, as they ran. */
95
+ readonly checks?: readonly GateCheck[];
96
+ /** The approval a `pending-approval` promotion waits on (kept once decided). */
97
+ readonly approvalId?: string;
98
+ /** When a `pending-approval` promotion reached its final state. */
99
+ readonly resolvedAt?: Timestamp;
100
+ }
101
+ export type PromotionErrorCode =
102
+ /** The version isn't registered for this agent, or was unregistered. */
103
+ 'agent-version-not-found'
104
+ /** The scope names an org or project the tenant doesn't have. */
105
+ | 'scope-invalid'
106
+ /** Rollback: the scope has no earlier live version to go back to. */
107
+ | 'nothing-to-roll-back'
108
+ /** Unpin or rollback: the scope has no pin of its own. */
109
+ | 'not-pinned'
110
+ /** The scope's live version changed while the gate ran: check again. */
111
+ | 'promotion-superseded'
112
+ /**
113
+ * Unpin or rollback: it would leave a scope a gate policy applies to
114
+ * resolving to the latest version, where publishing goes live ungated.
115
+ */
116
+ | 'gate-policy-needs-pin' | 'persistence-error';
117
+ export interface PromotionError {
118
+ readonly code: PromotionErrorCode;
119
+ readonly message: string;
120
+ }
121
+ export interface PromoteInput {
122
+ readonly tenantId: TenantId;
123
+ readonly agentId: string;
124
+ readonly version: Semver;
125
+ readonly scope: LiveScope;
126
+ readonly requestedBy: PromotionActor;
127
+ readonly reason?: string;
128
+ readonly evalRunId?: string;
129
+ }
130
+ /**
131
+ * A promotion with the gate's verdict, recorded as one request: refused,
132
+ * waiting for approval, or promoted. The route runs the gate; the
133
+ * binding records the outcome atomically.
134
+ */
135
+ export interface PromotionRequestInput extends PromoteInput {
136
+ readonly gate: {
137
+ readonly policy: GatePolicyRef | null;
138
+ readonly checks: readonly GateCheck[];
139
+ readonly passed: boolean;
140
+ /** A passing promotion waits for this approval instead of going live. */
141
+ readonly approval?: GateApproval;
142
+ /**
143
+ * What served the scope when the gate ran. A binding refuses with
144
+ * `promotion-superseded` when it no longer does, and an approved
145
+ * promotion whose scope moved on becomes `superseded`.
146
+ */
147
+ readonly servingVersion: Semver;
148
+ };
149
+ }
150
+ export interface RollbackInput {
151
+ readonly tenantId: TenantId;
152
+ readonly agentId: string;
153
+ readonly scope: LiveScope;
154
+ /** Back to this earlier version; absent → the scope's previous live version. */
155
+ readonly toVersion?: Semver;
156
+ readonly requestedBy: PromotionActor;
157
+ readonly reason?: string;
158
+ }
159
+ export interface UnpinInput {
160
+ readonly tenantId: TenantId;
161
+ readonly agentId: string;
162
+ readonly scope: LiveScope;
163
+ readonly requestedBy: PromotionActor;
164
+ readonly reason?: string;
165
+ }
166
+ export interface ListPromotionsInput {
167
+ readonly tenantId: TenantId;
168
+ readonly agentId: string;
169
+ /** Only this scope's history. */
170
+ readonly scope?: LiveScope;
171
+ readonly limit: number;
172
+ readonly cursor?: Cursor;
173
+ }
174
+ export interface PromotionBinding {
175
+ /** Make `version` live for `scope`. The version must be registered and active. */
176
+ promote(input: PromoteInput): Promise<Result<Promotion, PromotionError>>;
177
+ /**
178
+ * Record a gated promotion request (evals step 4b): `refused` when the
179
+ * gate failed, `pending-approval` (opening a HITL approval, subject
180
+ * `agent-promotion`) when it passed and the policy wants an approval,
181
+ * else `promoted`. Optional: without it, the route refuses a promotion
182
+ * a gate policy applies to (`501`), rather than promoting ungated.
183
+ */
184
+ request?(input: PromotionRequestInput): Promise<Result<Promotion, PromotionError>>;
185
+ /** Back to the scope's previous live version, or a named earlier one. */
186
+ rollback(input: RollbackInput): Promise<Result<Promotion, PromotionError>>;
187
+ /**
188
+ * Remove the scope's own pin: it falls back to the next scope up. With
189
+ * gate policies, `gate-policy-needs-pin` when that would leave a gated
190
+ * scope resolving to the latest version.
191
+ */
192
+ unpin(input: UnpinInput): Promise<Result<Promotion, PromotionError>>;
193
+ list(input: ListPromotionsInput): Promise<{
194
+ readonly data: readonly Promotion[];
195
+ readonly nextCursor?: Cursor;
196
+ }>;
197
+ get(tenantId: TenantId, promotionId: string): Promise<Promotion | null>;
198
+ }
199
+ /** The bindings behind an agent's live versions and promotions (`createApp({ agentReleases })`). */
200
+ export interface AgentReleaseBindings {
201
+ readonly live: LiveVersionBinding;
202
+ readonly promotions: PromotionBinding;
203
+ /** Gate policies (evals step 4b). Absent: no gates, every promotion goes through as before. */
204
+ readonly gatePolicies?: GatePolicyBinding;
205
+ }
206
+ //# sourceMappingURL=live-version-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-version-binding.d.ts","sourceRoot":"","sources":["../src/live-version-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ export {};
4
+ //# sourceMappingURL=live-version-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-version-binding.js","sourceRoot":"","sources":["../src/live-version-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../src/middleware/authorize.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,EACL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EAEb,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAExF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/F,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9F,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjG;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EACtB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,WAAW,KAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAgEvE"}
1
+ {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../src/middleware/authorize.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,EACL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EAEb,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAExF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/F,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9F,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjG;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EACtB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,WAAW,KAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CA+EvE"}
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // Copyright (C) 2026 Kindgi Inc.
3
3
  import { denyPayload, } from '@kindgi/authz';
4
+ import { toWireError } from '../errors.js';
4
5
  export function createAuthorizer(binding) {
5
6
  async function checkInternal(c, action, resource) {
6
7
  const principal = c.get('principal');
@@ -34,9 +35,19 @@ export function createAuthorizer(binding) {
34
35
  const resource = await getResource(c);
35
36
  const decision = await checkInternal(c, action, resource);
36
37
  if (!decision.allowed) {
37
- const body = denyPayload(action, resource.type, resource.id, decision.reason);
38
+ // In the error envelope every route answers in, so clients type it
39
+ // (`permission-denied` is an auth error, forbidden); what was
40
+ // denied, and why, is in `details`.
41
+ const deny = denyPayload(action, resource.type, resource.id, decision.reason);
42
+ const requestId = c.get('requestId');
38
43
  c.status(403);
39
- return c.json(body);
44
+ return c.json(toWireError({
45
+ code: deny.code,
46
+ message: `Permission denied: ${deny.reason}`,
47
+ action: deny.action,
48
+ resource: deny.resource,
49
+ reason: deny.reason,
50
+ }, typeof requestId === 'string' ? requestId : ''));
40
51
  }
41
52
  return next();
42
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../src/middleware/authorize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../src/middleware/authorize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { MiddlewareHandler } from 'hono';
2
+ import type { ProjectBinding } from '@kindgi/platform';
3
+ import type { AppEnv } from '../types.js';
4
+ /**
5
+ * The write routes whose body names a project (`projectId`), and refuse
6
+ * one they can't use before it reaches a binding (T247): before, an
7
+ * unknown project failed the runtime's insert as a 500 that named a
8
+ * table and a foreign key, and one that wasn't a UUID failed deeper still.
9
+ *
10
+ * `POST /v1/conversations` isn't here: it checks its own `projectId` and
11
+ * answers `400 bad-input` for an unknown one, documented and shipped, so
12
+ * it keeps that until 0.2 unifies on `404 project-not-found` (T223).
13
+ * `projectRefRoutes.test.ts` holds this list to the OpenAPI spec.
14
+ */
15
+ export declare const PROJECT_REF_ROUTES: readonly string[];
16
+ /**
17
+ * A `POST` whose JSON body has a `projectId` that isn't a project id (a
18
+ * UUID) is `400 bad-input`; one that names no project of the caller's
19
+ * tenant is `404 project-not-found` (with `projectBinding`; without one,
20
+ * only the shape is checked). Anything else, a body that isn't JSON
21
+ * included, goes on to the route, which reads the body again (Hono keeps
22
+ * it).
23
+ */
24
+ export declare function refuseBadProjectId(projectBinding: ProjectBinding | undefined): MiddlewareHandler<AppEnv>;
25
+ //# sourceMappingURL=project-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-ref.d.ts","sourceRoot":"","sources":["../../src/middleware/project-ref.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAY/C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,cAAc,GAAG,SAAS,GACzC,iBAAiB,CAAC,MAAM,CAAC,CAwC3B"}
@@ -0,0 +1,72 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ import { statusFor, toWireError } from '../errors.js';
4
+ import { UUID_RE } from '../routes/uuid-param.js';
5
+ /**
6
+ * The write routes whose body names a project (`projectId`), and refuse
7
+ * one they can't use before it reaches a binding (T247): before, an
8
+ * unknown project failed the runtime's insert as a 500 that named a
9
+ * table and a foreign key, and one that wasn't a UUID failed deeper still.
10
+ *
11
+ * `POST /v1/conversations` isn't here: it checks its own `projectId` and
12
+ * answers `400 bad-input` for an unknown one, documented and shipped, so
13
+ * it keeps that until 0.2 unifies on `404 project-not-found` (T223).
14
+ * `projectRefRoutes.test.ts` holds this list to the OpenAPI spec.
15
+ */
16
+ export const PROJECT_REF_ROUTES = [
17
+ '/runs',
18
+ '/tokens',
19
+ '/agents',
20
+ '/agents/:agentId/versions',
21
+ '/flows',
22
+ '/tools',
23
+ '/guardrails',
24
+ '/eval-suites',
25
+ '/eval-suites/:suiteId/versions/from-judgments',
26
+ '/eval-suites/:suiteId/runs',
27
+ '/blocks',
28
+ ];
29
+ /**
30
+ * A `POST` whose JSON body has a `projectId` that isn't a project id (a
31
+ * UUID) is `400 bad-input`; one that names no project of the caller's
32
+ * tenant is `404 project-not-found` (with `projectBinding`; without one,
33
+ * only the shape is checked). Anything else, a body that isn't JSON
34
+ * included, goes on to the route, which reads the body again (Hono keeps
35
+ * it).
36
+ */
37
+ export function refuseBadProjectId(projectBinding) {
38
+ return async (c, next) => {
39
+ if (c.req.method !== 'POST')
40
+ return next();
41
+ let body;
42
+ try {
43
+ body = await c.req.json();
44
+ }
45
+ catch {
46
+ return next();
47
+ }
48
+ if (body === null || typeof body !== 'object' || !('projectId' in body))
49
+ return next();
50
+ const projectId = body.projectId;
51
+ if (projectId === undefined)
52
+ return next();
53
+ if (typeof projectId !== 'string' || !UUID_RE.test(projectId)) {
54
+ c.status(statusFor('bad-input'));
55
+ return c.json(toWireError({ code: 'bad-input', message: '`projectId` must be a project id (a UUID)' }, c.get('requestId')));
56
+ }
57
+ if (projectBinding !== undefined) {
58
+ const tenantId = c.get('tenantId');
59
+ const project = await projectBinding.get(tenantId, projectId);
60
+ if (project === undefined) {
61
+ c.status(statusFor('project-not-found'));
62
+ return c.json(toWireError({
63
+ code: 'project-not-found',
64
+ message: `No project with id "${projectId}" in this tenant`,
65
+ projectId,
66
+ }, c.get('requestId')));
67
+ }
68
+ }
69
+ return next();
70
+ };
71
+ }
72
+ //# sourceMappingURL=project-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-ref.js","sourceRoot":"","sources":["../../src/middleware/project-ref.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAOjC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGlD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,OAAO;IACP,SAAS;IACT,SAAS;IACT,2BAA2B;IAC3B,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,cAAc;IACd,+CAA+C;IAC/C,4BAA4B;IAC5B,SAAS;CACV,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,cAA0C;IAE1C,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,EAAE,CAAC;QAC3C,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC;YAAE,OAAO,IAAI,EAAE,CAAC;QACvF,MAAM,SAAS,GAAI,IAAwC,CAAC,SAAS,CAAC;QACtE,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,EAAE,CAAC;QAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9D,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,2CAA2C,EAAE,EAC3E,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CACnB,CACF,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAsB,CAAC,CAAC;YAC3E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAU,CAAC,CAAC;gBAClD,OAAO,CAAC,CAAC,IAAI,CACX,WAAW,CACT;oBACE,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,uBAAuB,SAAS,kBAAkB;oBAC3D,SAAS;iBACV,EACD,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CACnB,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/openapi/generate.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC7C;AAgFD,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,eAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqC3F"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/openapi/generate.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC7C;AAoFD,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,eAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqC3F"}
@@ -26,6 +26,7 @@ const TAG_DESCRIPTIONS = {
26
26
  approvals: 'Human-in-the-loop review queue (role-scoped).',
27
27
  observations: 'Supervisor readback of run outcomes.',
28
28
  agents: 'Agent catalog (list, get, publish, unregister — caller-plugged registry).',
29
+ 'gate-policies': 'What a promotion of an agent must show before a version goes live for a scope (evals step 4b).',
29
30
  flows: 'Flow catalog (list, get, publish, unregister — caller-plugged registry). Enables non-agent workflows via HTTP — publish once, execute many via `POST /v1/runs`.',
30
31
  tools: 'Tool catalog (list, get, register, unregister — caller-plugged registry, metadata-only).',
31
32
  guardrails: 'Guardrail catalog (list, get, register, unregister — caller-plugged registry, metadata-only).',
@@ -39,6 +40,7 @@ const TAG_DESCRIPTIONS = {
39
40
  cost: 'Cost readback (list records, get record, aggregate across a required time window) — part of the admin control plane. Read-only over HTTP; records are written by the runtime usage instrumentation (agents, tools, sandboxes). Caller-plugged via `CostBinding`. Budgets are not enforced through this surface.',
40
41
  adapters: 'Unified adapter catalog (list, get, test) — part of the admin control plane. Covers every adapter kind the deployment wired: model providers, embedding providers, blob storage, sandbox providers, eval judges. Read-only + smoke-test-only over HTTP; adapter lifecycle (register / unregister / reconfigure) is a deployment concern — the runtime learns about adapters at `CreateAppInput` time. Caller-plugged via `AdapterRegistryBinding`. Config is REDACTED on the wire — no secrets crossing.',
41
42
  policies: 'Tenant policy catalog (list, get, versions, publish, unregister) — part of the admin control plane. Full versioned CRUD, mirrors `flows` 1:1. Registry-only: enforcement is out of scope. `policyKind` selects the shape of `spec` — closed enum, extended additively (`access-control`, `model-routing`, `adapter-allowlist`, `rate-limit`, `retention`, `compliance`). Runtime consumers (e.g. model routing for `model-routing`, retention sweeps for `retention`) read policies from this store and apply them at their own boundary. Caller-plugged via `PolicyRegistryBinding`.',
43
+ retention: "Deleted rows' retention (scheduled, sweep) — part of the admin control plane. Deleting most things is a tombstone; a `retention` policy per domain (see `policies`) sets how long tombstones stay before a sweep purges them for good. `scheduled` lists what's due and when; `sweep` purges what's past its grace. Nothing sweeps on its own: call `sweep` from a schedule. Caller-plugged via `RetentionBinding`.",
42
44
  'eval-suites': 'Evaluation suite catalog (list, get, versions, publish, unregister) — part of the admin control plane. Full versioned CRUD, mirrors `policies` 1:1. Registry-only: eval-run execution + per-kind grader dispatch live on the `eval-runs` tag. `evalKind` selects the shape of `spec` — closed enum, extended additively (`accuracy`, `pairwise`, `regression`, `human-review`, `benchmark`, `custom`, `judged`). The cases of a `judged` suite are copies of judged runs built from judgments (`POST .../versions/from-judgments`, listed at `GET .../versions/{version}/cases`; `EvalCaseStoreBinding`). Runs against these suites are started through the `eval-runs` tag. Caller-plugged via `EvalSuiteRegistryBinding`.',
43
45
  blocks: "Data blocks: versioned prompts and settings an agent version pins when it's published (list, get, versions, publish, unregister, reinstate). A version never changes, nor does a block's kind; a settings block's values satisfy its schema and the latest version's. A block belongs to one project and is authorized through it: `read` on the project to read, `write` to publish, unregister or reinstate. Caller-plugged via `BlockRegistryBinding`.",
44
46
  judgments: "Judgments: yes or no, with an optional reason, about one item of a finished run's output, optionally recorded under a judge class (list, get, create, unregister). Each judgment keeps copies of what was judged (the run's input and output, and the item) so they outlive the run's own retention. Who judged comes from the authenticated caller, never the body; an app judging for one of its users passes that user's opaque id as `participantId`. One live judgment per run, item key, caller and participant: judging again supersedes the earlier one, which stays as history. Caller-plugged via `JudgmentRegistryBinding`.",
@@ -214,6 +216,8 @@ function buildParameter(p) {
214
216
  doc.required = true;
215
217
  if (p.description !== undefined)
216
218
  doc.description = p.description;
219
+ if (p.segmentPath === true)
220
+ doc['x-kindgi-segment-path'] = true;
217
221
  return doc;
218
222
  }
219
223
  function buildResponses(responses) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/openapi/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/openapi/generate.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,12 @@ export interface ParameterSpec {
25
25
  readonly required?: boolean;
26
26
  readonly description?: string;
27
27
  readonly schema: JsonSchema;
28
+ /**
29
+ * A segment path, one `key:value` per repeated value, coarse to fine.
30
+ * Emitted as `x-kindgi-segment-path: true`; a generated client takes
31
+ * `{key, value}` steps and writes the values itself.
32
+ */
33
+ readonly segmentPath?: boolean;
28
34
  }
29
35
  export interface ResponseSpec {
30
36
  readonly description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/openapi/operations.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAO,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,sBAAsB,GAAG,QAAQ,CAAC;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;QAC5B;;;;;WAKG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,wDAAwD;QACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;KACvE,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CAC5D;AA69BD,eAAO,MAAM,UAAU,EAAE,SAAS,aAAa,EAu2JrC,CAAC;AAEX,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/openapi/operations.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAO,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,sBAAsB,GAAG,QAAQ,CAAC;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;QAC5B;;;;;WAKG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,wDAAwD;QACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;KACvE,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CAC5D;AAilCD,eAAO,MAAM,UAAU,EAAE,SAAS,aAAa,EA02KrC,CAAC;AAEX,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D"}