@kindgi/api 0.1.4-rc.1 → 0.1.4-rc.3

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 (220) hide show
  1. package/dist/agent-binding.d.ts +12 -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 +23 -4
  9. package/dist/app.js.map +1 -1
  10. package/dist/deploy-versions.d.ts +8 -5
  11. package/dist/deploy-versions.d.ts.map +1 -1
  12. package/dist/deploy-versions.js +3 -9
  13. package/dist/deploy-versions.js.map +1 -1
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +25 -0
  16. package/dist/errors.js.map +1 -1
  17. package/dist/eval-case-binding.d.ts +10 -0
  18. package/dist/eval-case-binding.d.ts.map +1 -1
  19. package/dist/eval-run-binding.d.ts +14 -3
  20. package/dist/eval-run-binding.d.ts.map +1 -1
  21. package/dist/eval-run-binding.js.map +1 -1
  22. package/dist/flow-pins.d.ts +20 -7
  23. package/dist/flow-pins.d.ts.map +1 -1
  24. package/dist/flow-pins.js +36 -11
  25. package/dist/flow-pins.js.map +1 -1
  26. package/dist/gate-policy-binding.d.ts +164 -0
  27. package/dist/gate-policy-binding.d.ts.map +1 -0
  28. package/dist/gate-policy-binding.js +12 -0
  29. package/dist/gate-policy-binding.js.map +1 -0
  30. package/dist/gate.d.ts +56 -0
  31. package/dist/gate.d.ts.map +1 -0
  32. package/dist/gate.js +359 -0
  33. package/dist/gate.js.map +1 -0
  34. package/dist/handler-binding.d.ts +14 -2
  35. package/dist/handler-binding.d.ts.map +1 -1
  36. package/dist/hitl-binding.d.ts +5 -0
  37. package/dist/hitl-binding.d.ts.map +1 -1
  38. package/dist/index.d.ts +10 -4
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +3 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/judged-dispatcher.d.ts +16 -1
  43. package/dist/judged-dispatcher.d.ts.map +1 -1
  44. package/dist/judged-dispatcher.js +45 -6
  45. package/dist/judged-dispatcher.js.map +1 -1
  46. package/dist/judgment-binding.d.ts +38 -0
  47. package/dist/judgment-binding.d.ts.map +1 -1
  48. package/dist/judgment-binding.js +19 -0
  49. package/dist/judgment-binding.js.map +1 -1
  50. package/dist/live-version-binding.d.ts +206 -0
  51. package/dist/live-version-binding.d.ts.map +1 -0
  52. package/dist/live-version-binding.js +4 -0
  53. package/dist/live-version-binding.js.map +1 -0
  54. package/dist/middleware/authorize.d.ts.map +1 -1
  55. package/dist/middleware/authorize.js +13 -2
  56. package/dist/middleware/authorize.js.map +1 -1
  57. package/dist/middleware/project-ref.d.ts +25 -0
  58. package/dist/middleware/project-ref.d.ts.map +1 -0
  59. package/dist/middleware/project-ref.js +72 -0
  60. package/dist/middleware/project-ref.js.map +1 -0
  61. package/dist/openapi/generate.d.ts.map +1 -1
  62. package/dist/openapi/generate.js +4 -0
  63. package/dist/openapi/generate.js.map +1 -1
  64. package/dist/openapi/operations.d.ts +6 -0
  65. package/dist/openapi/operations.d.ts.map +1 -1
  66. package/dist/openapi/operations.js +512 -22
  67. package/dist/openapi/operations.js.map +1 -1
  68. package/dist/openapi/schemas.d.ts +37 -0
  69. package/dist/openapi/schemas.d.ts.map +1 -1
  70. package/dist/openapi/schemas.js +709 -5
  71. package/dist/openapi/schemas.js.map +1 -1
  72. package/dist/publish-refused.d.ts +18 -0
  73. package/dist/publish-refused.d.ts.map +1 -0
  74. package/dist/publish-refused.js +22 -0
  75. package/dist/publish-refused.js.map +1 -0
  76. package/dist/retention-binding.d.ts +29 -0
  77. package/dist/retention-binding.d.ts.map +1 -1
  78. package/dist/routes/agent-releases.d.ts +40 -0
  79. package/dist/routes/agent-releases.d.ts.map +1 -0
  80. package/dist/routes/agent-releases.js +462 -0
  81. package/dist/routes/agent-releases.js.map +1 -0
  82. package/dist/routes/agents.d.ts +7 -1
  83. package/dist/routes/agents.d.ts.map +1 -1
  84. package/dist/routes/agents.js +31 -3
  85. package/dist/routes/agents.js.map +1 -1
  86. package/dist/routes/approvals.d.ts.map +1 -1
  87. package/dist/routes/approvals.js +40 -9
  88. package/dist/routes/approvals.js.map +1 -1
  89. package/dist/routes/audit.d.ts.map +1 -1
  90. package/dist/routes/audit.js +7 -0
  91. package/dist/routes/audit.js.map +1 -1
  92. package/dist/routes/auth.js +1 -1
  93. package/dist/routes/auth.js.map +1 -1
  94. package/dist/routes/conversations.d.ts +0 -7
  95. package/dist/routes/conversations.d.ts.map +1 -1
  96. package/dist/routes/conversations.js +19 -3
  97. package/dist/routes/conversations.js.map +1 -1
  98. package/dist/routes/deployments.d.ts +6 -0
  99. package/dist/routes/deployments.d.ts.map +1 -1
  100. package/dist/routes/deployments.js +33 -5
  101. package/dist/routes/deployments.js.map +1 -1
  102. package/dist/routes/env.d.ts.map +1 -1
  103. package/dist/routes/env.js +1 -0
  104. package/dist/routes/env.js.map +1 -1
  105. package/dist/routes/eval-comparison.d.ts +2 -1
  106. package/dist/routes/eval-comparison.d.ts.map +1 -1
  107. package/dist/routes/eval-comparison.js +22 -9
  108. package/dist/routes/eval-comparison.js.map +1 -1
  109. package/dist/routes/flows.d.ts +14 -7
  110. package/dist/routes/flows.d.ts.map +1 -1
  111. package/dist/routes/flows.js +10 -8
  112. package/dist/routes/flows.js.map +1 -1
  113. package/dist/routes/gate-policies.d.ts +19 -0
  114. package/dist/routes/gate-policies.d.ts.map +1 -0
  115. package/dist/routes/gate-policies.js +191 -0
  116. package/dist/routes/gate-policies.js.map +1 -0
  117. package/dist/routes/gate-policy-spec.d.ts +17 -0
  118. package/dist/routes/gate-policy-spec.d.ts.map +1 -0
  119. package/dist/routes/gate-policy-spec.js +192 -0
  120. package/dist/routes/gate-policy-spec.js.map +1 -0
  121. package/dist/routes/gate-policy-wire.d.ts +3 -0
  122. package/dist/routes/gate-policy-wire.d.ts.map +1 -0
  123. package/dist/routes/gate-policy-wire.js +18 -0
  124. package/dist/routes/gate-policy-wire.js.map +1 -0
  125. package/dist/routes/hierarchy-errors.d.ts +11 -0
  126. package/dist/routes/hierarchy-errors.d.ts.map +1 -1
  127. package/dist/routes/hierarchy-errors.js +13 -0
  128. package/dist/routes/hierarchy-errors.js.map +1 -1
  129. package/dist/routes/judged-suites.js +7 -0
  130. package/dist/routes/judged-suites.js.map +1 -1
  131. package/dist/routes/judgments.d.ts +4 -1
  132. package/dist/routes/judgments.d.ts.map +1 -1
  133. package/dist/routes/judgments.js +92 -19
  134. package/dist/routes/judgments.js.map +1 -1
  135. package/dist/routes/live-scope-wire.d.ts +32 -0
  136. package/dist/routes/live-scope-wire.d.ts.map +1 -0
  137. package/dist/routes/live-scope-wire.js +71 -0
  138. package/dist/routes/live-scope-wire.js.map +1 -0
  139. package/dist/routes/policies.d.ts +6 -3
  140. package/dist/routes/policies.d.ts.map +1 -1
  141. package/dist/routes/policies.js +55 -3
  142. package/dist/routes/policies.js.map +1 -1
  143. package/dist/routes/projects.d.ts.map +1 -1
  144. package/dist/routes/projects.js +47 -3
  145. package/dist/routes/projects.js.map +1 -1
  146. package/dist/routes/retention.d.ts.map +1 -1
  147. package/dist/routes/retention.js +18 -2
  148. package/dist/routes/retention.js.map +1 -1
  149. package/dist/routes/reviewers.d.ts +8 -1
  150. package/dist/routes/reviewers.d.ts.map +1 -1
  151. package/dist/routes/reviewers.js +20 -3
  152. package/dist/routes/reviewers.js.map +1 -1
  153. package/dist/routes/runs.d.ts.map +1 -1
  154. package/dist/routes/runs.js +22 -13
  155. package/dist/routes/runs.js.map +1 -1
  156. package/dist/routes/secrets.d.ts.map +1 -1
  157. package/dist/routes/secrets.js +2 -0
  158. package/dist/routes/secrets.js.map +1 -1
  159. package/dist/routes/segments.d.ts +17 -0
  160. package/dist/routes/segments.d.ts.map +1 -0
  161. package/dist/routes/segments.js +68 -0
  162. package/dist/routes/segments.js.map +1 -0
  163. package/dist/routes/teams.d.ts.map +1 -1
  164. package/dist/routes/teams.js +42 -3
  165. package/dist/routes/teams.js.map +1 -1
  166. package/dist/routes/uuid-param.d.ts +11 -0
  167. package/dist/routes/uuid-param.d.ts.map +1 -0
  168. package/dist/routes/uuid-param.js +19 -0
  169. package/dist/routes/uuid-param.js.map +1 -0
  170. package/openapi.json +7008 -3624
  171. package/package.json +21 -21
  172. package/src/agent-binding.ts +12 -2
  173. package/src/agent-pins.ts +3 -1
  174. package/src/app.ts +37 -3
  175. package/src/deploy-versions.ts +11 -14
  176. package/src/errors.ts +25 -0
  177. package/src/eval-case-binding.ts +7 -0
  178. package/src/eval-run-binding.ts +24 -3
  179. package/src/flow-pins.ts +49 -9
  180. package/src/gate-policy-binding.ts +171 -0
  181. package/src/gate.ts +467 -0
  182. package/src/handler-binding.ts +14 -2
  183. package/src/hitl-binding.ts +5 -0
  184. package/src/index.ts +46 -1
  185. package/src/judged-dispatcher.ts +74 -6
  186. package/src/judgment-binding.ts +62 -0
  187. package/src/live-version-binding.ts +237 -0
  188. package/src/middleware/authorize.ts +18 -2
  189. package/src/middleware/project-ref.ts +88 -0
  190. package/src/openapi/generate.ts +5 -0
  191. package/src/openapi/operations.ts +619 -22
  192. package/src/openapi/schemas.ts +788 -5
  193. package/src/publish-refused.ts +31 -0
  194. package/src/retention-binding.ts +30 -0
  195. package/src/routes/agent-releases.ts +581 -0
  196. package/src/routes/agents.ts +43 -2
  197. package/src/routes/approvals.ts +58 -8
  198. package/src/routes/audit.ts +10 -0
  199. package/src/routes/auth.ts +1 -1
  200. package/src/routes/conversations.ts +31 -3
  201. package/src/routes/deployments.ts +50 -5
  202. package/src/routes/env.ts +1 -0
  203. package/src/routes/eval-comparison.ts +24 -10
  204. package/src/routes/flows.ts +27 -11
  205. package/src/routes/gate-policies.ts +226 -0
  206. package/src/routes/gate-policy-spec.ts +229 -0
  207. package/src/routes/gate-policy-wire.ts +20 -0
  208. package/src/routes/hierarchy-errors.ts +14 -0
  209. package/src/routes/judged-suites.ts +5 -0
  210. package/src/routes/judgments.ts +107 -23
  211. package/src/routes/live-scope-wire.ts +90 -0
  212. package/src/routes/policies.ts +61 -3
  213. package/src/routes/projects.ts +54 -2
  214. package/src/routes/retention.ts +21 -2
  215. package/src/routes/reviewers.ts +23 -4
  216. package/src/routes/runs.ts +33 -20
  217. package/src/routes/secrets.ts +2 -0
  218. package/src/routes/segments.ts +75 -0
  219. package/src/routes/teams.ts +53 -3
  220. package/src/routes/uuid-param.ts +28 -0
@@ -1 +1 @@
1
- {"version":3,"file":"eval-run-binding.d.ts","sourceRoot":"","sources":["../src/eval-run-binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval-run-binding.d.ts","sourceRoot":"","sources":["../src/eval-run-binding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eval-run-binding.js","sourceRoot":"","sources":["../src/eval-run-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAuEjC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS;IACT,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;CACH,CAAC"}
1
+ {"version":3,"file":"eval-run-binding.js","sourceRoot":"","sources":["../src/eval-run-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAgFjC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS;IACT,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;CACH,CAAC"}
@@ -5,6 +5,7 @@ import type { AgentRegistryBinding } from './agent-binding.js';
5
5
  import { type UnpinnableRef } from './agent-pins.js';
6
6
  import { type DeployedVersionOutcome } from './deploy-versions.js';
7
7
  import type { FlowRegistryBinding } from './flow-binding.js';
8
+ import type { LiveVersionBinding } from './live-version-binding.js';
8
9
  import type { ToolRegistryBinding } from './tool-binding.js';
9
10
  export type FlowPinsOutcome = {
10
11
  readonly kind: 'ok';
@@ -14,14 +15,26 @@ export type FlowPinsOutcome = {
14
15
  readonly issues: readonly UnpinnableRef[];
15
16
  };
16
17
  /**
17
- * Pin a flow version when it's published: each tool it runs, and each
18
- * agent it runs at no named version, to its latest active version now
19
- * (what a run would have bound), so every run of the version uses those.
20
- * A tool or agent with no published version makes the flow unpinnable:
21
- * the caller refuses the publish, naming each, rather than store a
22
- * partly pinned version.
18
+ * Where a flow version is published, so its agent pins are what a run
19
+ * there would get: the agents' live versions for the project.
23
20
  */
24
- export declare function resolveFlowPins(tools: ToolRegistryBinding, agents: AgentRegistryBinding, tenantId: TenantId, flow: Flow): Promise<FlowPinsOutcome>;
21
+ export interface FlowPinsLive {
22
+ readonly binding: LiveVersionBinding;
23
+ readonly projectId: ProjectId;
24
+ }
25
+ /**
26
+ * Pin a flow version when it's published, to what a run would have bound
27
+ * then, so every run of the version uses those: each tool it runs to its
28
+ * latest active version, and each agent it runs at no named version to
29
+ * the version a run that names none gets in the flow's project. That's
30
+ * the agent's live version there (project, then its org, then the
31
+ * tenant), with `live`, else its latest. A gated agent's flow runs what
32
+ * its promotions let go live, not an unpromoted newer version. A tool or
33
+ * agent with no published version makes the flow unpinnable: the caller
34
+ * refuses the publish, naming each, rather than store a partly pinned
35
+ * version.
36
+ */
37
+ export declare function resolveFlowPins(tools: ToolRegistryBinding, agents: AgentRegistryBinding, tenantId: TenantId, flow: Flow, live?: FlowPinsLive): Promise<FlowPinsOutcome>;
25
38
  export interface PublishDeployedFlowInput {
26
39
  readonly flows: FlowRegistryBinding;
27
40
  readonly tenantId: TenantId;
@@ -1 +1 @@
1
- {"version":3,"file":"flow-pins.d.ts","sourceRoot":"","sources":["../src/flow-pins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAA4B,MAAM,cAAc,CAAC;AAElF,OAAO,KAAK,EAAkB,SAAS,EAAE,QAAQ,EAAU,MAAM,eAAe,CAAC;AAEjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,KAAK,sBAAsB,EAAiB,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,CAAC;AAE/E;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;CAC1C;AAED,oFAAoF;AACpF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAcjC"}
1
+ {"version":3,"file":"flow-pins.d.ts","sourceRoot":"","sources":["../src/flow-pins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAA4B,MAAM,cAAc,CAAC;AAElF,OAAO,KAAK,EAAkB,SAAS,EAAE,QAAQ,EAAU,MAAM,eAAe,CAAC;AAEjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,KAAK,sBAAsB,EAAiB,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,CAAC;AAE/E;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAyBD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;CAC1C;AAED,oFAAoF;AACpF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAejC"}
package/dist/flow-pins.js CHANGED
@@ -4,15 +4,20 @@ import { flowPinsDigest, flowRefs } from '@kindgi/flow';
4
4
  import { latestVersion } from '@kindgi/tools';
5
5
  import { activeToolVersions } from './agent-pins.js';
6
6
  import { deployVersion } from './deploy-versions.js';
7
+ import { PublishRefused } from './publish-refused.js';
7
8
  /**
8
- * Pin a flow version when it's published: each tool it runs, and each
9
- * agent it runs at no named version, to its latest active version now
10
- * (what a run would have bound), so every run of the version uses those.
11
- * A tool or agent with no published version makes the flow unpinnable:
12
- * the caller refuses the publish, naming each, rather than store a
13
- * partly pinned version.
9
+ * Pin a flow version when it's published, to what a run would have bound
10
+ * then, so every run of the version uses those: each tool it runs to its
11
+ * latest active version, and each agent it runs at no named version to
12
+ * the version a run that names none gets in the flow's project. That's
13
+ * the agent's live version there (project, then its org, then the
14
+ * tenant), with `live`, else its latest. A gated agent's flow runs what
15
+ * its promotions let go live, not an unpromoted newer version. A tool or
16
+ * agent with no published version makes the flow unpinnable: the caller
17
+ * refuses the publish, naming each, rather than store a partly pinned
18
+ * version.
14
19
  */
15
- export async function resolveFlowPins(tools, agents, tenantId, flow) {
20
+ export async function resolveFlowPins(tools, agents, tenantId, flow, live) {
16
21
  const refs = flowRefs(flow);
17
22
  const pinned = {
18
23
  tools: {},
@@ -30,9 +35,9 @@ export async function resolveFlowPins(tools, agents, tenantId, flow) {
30
35
  });
31
36
  }
32
37
  for (const id of refs.agents) {
33
- const latest = await agents.get({ tenantId, agentId: id });
34
- if (latest !== null)
35
- pinned.agents[id] = latest.version;
38
+ const version = await implicitAgentVersion(agents, live, tenantId, id);
39
+ if (version !== undefined)
40
+ pinned.agents[id] = version;
36
41
  else
37
42
  issues.push({
38
43
  path: '/nodes',
@@ -43,6 +48,24 @@ export async function resolveFlowPins(tools, agents, tenantId, flow) {
43
48
  return { kind: 'unpinnable', issues };
44
49
  return { kind: 'ok', pins: pinned };
45
50
  }
51
+ /**
52
+ * The version a run of agent `id` that names none gets now: its live
53
+ * version for `live`'s project when one is pinned on the way up, else its
54
+ * latest; `undefined` when it has no published version.
55
+ */
56
+ async function implicitAgentVersion(agents, live, tenantId, id) {
57
+ if (live !== undefined) {
58
+ const resolved = await live.binding.resolve({
59
+ tenantId,
60
+ agentId: id,
61
+ projectId: live.projectId,
62
+ });
63
+ if (resolved !== null)
64
+ return resolved.version;
65
+ }
66
+ const latest = await agents.get({ tenantId, agentId: id });
67
+ return latest === null ? undefined : latest.version;
68
+ }
46
69
  /** Register a deployed flow with its pins, by the deploy rule (`deployVersion`). */
47
70
  export async function publishDeployedFlow(input) {
48
71
  const { flows, tenantId, projectId, flow, pins, enqueueTuples } = input;
@@ -56,7 +79,9 @@ export async function publishDeployedFlow(input) {
56
79
  const outcome = await flows.publish({ tenantId, projectId, flow: version, enqueueTuples });
57
80
  if (outcome.kind === 'ok')
58
81
  return 'ok';
59
- return outcome.kind === 'project-not-found' ? 'skipped' : 'taken';
82
+ if (outcome.kind === 'already-registered')
83
+ return 'taken';
84
+ throw new PublishRefused('flow', `${flow.id}@${version.version}`, outcome.kind);
60
85
  },
61
86
  });
62
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flow-pins.js","sourceRoot":"","sources":["../src/flow-pins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow-pins.js","sourceRoot":"","sources":["../src/flow-pins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import type { ReviewerRole } from '@kindgi/authz';
2
+ import type { Cursor, LiveScope, Result, TenantId, Timestamp } from '@kindgi/types';
3
+ /**
4
+ * Gate policies (evals step 4b): what a promotion of an agent must show
5
+ * before a version goes live for a scope. One policy per agent and scope;
6
+ * the most specific one covering a promotion's scope applies, at its
7
+ * latest active version. The same registry shape as retention policies:
8
+ * the caller names the policy and its semver versions.
9
+ */
10
+ /** The metrics a policy can gate, from a comparison's summary. */
11
+ export declare const GATE_METRICS: readonly ["weightedYesShare", "judgedCoverage", "weightedPrecisionAtK"];
12
+ export type GateMetricName = (typeof GATE_METRICS)[number];
13
+ export interface GateMetricSpec {
14
+ readonly name: GateMetricName;
15
+ /** `weightedPrecisionAtK` only: the summary's `k` must be this. */
16
+ readonly k?: number;
17
+ /** The candidate must reach this. */
18
+ readonly minCandidate?: number;
19
+ /** The candidate may fall at most this far below the baseline (`0`: no drop at all). */
20
+ readonly maxDrop?: number;
21
+ }
22
+ /**
23
+ * What a policy asks of a promotion. Every part is optional; an empty
24
+ * spec checks nothing (the promotion is still recorded with the policy).
25
+ * A promotion must name a comparison (`evalRunId`) exactly when the spec
26
+ * checks anything one shows: `comparison`, `evidence`, `metrics`,
27
+ * `replay` or `onlyRestrictedClasses`.
28
+ */
29
+ export interface GatePolicySpec {
30
+ readonly comparison?: {
31
+ /** The comparison must have finished within this many hours. */
32
+ readonly maxAgeHours?: number;
33
+ /** The comparison must have run this test set (and version). */
34
+ readonly suite?: {
35
+ readonly id: string;
36
+ readonly version?: string;
37
+ };
38
+ };
39
+ /** The judged evidence behind each gated metric (`n` cases, total weight). */
40
+ readonly evidence?: {
41
+ readonly minCases?: number;
42
+ readonly minWeight?: number;
43
+ };
44
+ readonly metrics?: readonly GateMetricSpec[];
45
+ /** Replay counts; each knob left out of the block is 0. No block: no replay checks. */
46
+ readonly replay?: {
47
+ readonly maxDiverged?: number;
48
+ readonly maxErrors?: number;
49
+ readonly maxRefusedWrites?: number;
50
+ readonly maxStopped?: number;
51
+ };
52
+ /** A passing promotion waits for a reviewer's approval. */
53
+ readonly approvals?: {
54
+ /** The reviewer role it needs (default `senior`). */
55
+ readonly role?: ReviewerRole;
56
+ /** Whoever asked can't approve it (default `true`). */
57
+ readonly separateApprover?: boolean;
58
+ };
59
+ /**
60
+ * Only judgments recorded under a restricted judge class count (T200):
61
+ * the comparison must be weighted `restricted-only`, so a class anyone
62
+ * may assert can't move the gate.
63
+ */
64
+ readonly onlyRestrictedClasses?: boolean;
65
+ }
66
+ export interface GatePolicy {
67
+ readonly id: string;
68
+ readonly version: string;
69
+ readonly tenantId: TenantId;
70
+ readonly agentId: string;
71
+ readonly scope: LiveScope;
72
+ readonly spec: GatePolicySpec;
73
+ readonly description?: string;
74
+ readonly createdAt: Timestamp;
75
+ /** Set when this version was unregistered. */
76
+ readonly unregisteredAt?: Timestamp;
77
+ }
78
+ /** A policy version, as a promotion records which one gated it. */
79
+ export interface GatePolicyRef {
80
+ readonly id: string;
81
+ readonly version: string;
82
+ }
83
+ export interface GatePolicyPublishInput {
84
+ readonly tenantId: TenantId;
85
+ readonly id: string;
86
+ readonly version: string;
87
+ readonly agentId: string;
88
+ readonly scope: LiveScope;
89
+ readonly spec: GatePolicySpec;
90
+ readonly description?: string;
91
+ }
92
+ export type GatePolicyErrorCode =
93
+ /** This id and version are registered already. */
94
+ 'gate-policy-already-registered'
95
+ /** Another policy already gates this agent and scope. */
96
+ | 'gate-policy-scope-taken'
97
+ /** A new version names another agent or scope than the policy's. */
98
+ | 'gate-policy-scope-changed'
99
+ /**
100
+ * The scope resolves to the agent's latest version (no pin covers it),
101
+ * so publishing a version would make it live there ungated: pin a
102
+ * version for the scope, or one above it, first.
103
+ */
104
+ | 'gate-policy-scope-unpinned' | 'gate-policy-not-found'
105
+ /** The scope names an org or project the tenant doesn't have. */
106
+ | 'scope-invalid' | 'persistence-error';
107
+ export interface GatePolicyError {
108
+ readonly code: GatePolicyErrorCode;
109
+ readonly message: string;
110
+ /** `gate-policy-scope-taken`: the policy that holds the scope. */
111
+ readonly heldBy?: string;
112
+ }
113
+ export interface GatePolicyListInput {
114
+ readonly tenantId: TenantId;
115
+ readonly agentId?: string;
116
+ /** Only the policy of exactly this scope. */
117
+ readonly scope?: LiveScope;
118
+ readonly limit: number;
119
+ readonly cursor?: Cursor;
120
+ }
121
+ export interface GatePolicyVersionInput {
122
+ readonly tenantId: TenantId;
123
+ readonly id: string;
124
+ readonly version: string;
125
+ }
126
+ export interface GatePolicyBinding {
127
+ /**
128
+ * Register `id` at `version`: a new policy, or a new version of one
129
+ * (same agent and scope). A gated scope always resolves to a pin:
130
+ * `gate-policy-scope-unpinned` when nothing covering the scope is pinned.
131
+ */
132
+ publish(input: GatePolicyPublishInput): Promise<Result<GatePolicy, GatePolicyError>>;
133
+ /** The policy's latest active version, or `null`. */
134
+ get(input: {
135
+ readonly tenantId: TenantId;
136
+ readonly id: string;
137
+ }): Promise<GatePolicy | null>;
138
+ /** One version, unregistered ones too, or `null`. */
139
+ getVersion(input: GatePolicyVersionInput): Promise<GatePolicy | null>;
140
+ /** Every version of a policy, oldest first. */
141
+ listVersions(input: {
142
+ readonly tenantId: TenantId;
143
+ readonly id: string;
144
+ }): Promise<readonly GatePolicy[]>;
145
+ /** Each policy's latest active version. */
146
+ list(input: GatePolicyListInput): Promise<{
147
+ readonly data: readonly GatePolicy[];
148
+ readonly nextCursor?: Cursor;
149
+ }>;
150
+ unregister(input: GatePolicyVersionInput): Promise<Result<GatePolicy, GatePolicyError>>;
151
+ reinstate(input: GatePolicyVersionInput): Promise<Result<GatePolicy, GatePolicyError>>;
152
+ /**
153
+ * The policy that gates a promotion of `agentId` for `scope`: the most
154
+ * specific scope with an active policy (a segment path's longer
155
+ * prefixes first, then its project, the project's org, the tenant), at
156
+ * its latest active version. `null`: no policy, so no gate.
157
+ */
158
+ resolve(input: {
159
+ readonly tenantId: TenantId;
160
+ readonly agentId: string;
161
+ readonly scope: LiveScope;
162
+ }): Promise<GatePolicy | null>;
163
+ }
164
+ //# sourceMappingURL=gate-policy-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-policy-binding.d.ts","sourceRoot":"","sources":["../src/gate-policy-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * Gate policies (evals step 4b): what a promotion of an agent must show
5
+ * before a version goes live for a scope. One policy per agent and scope;
6
+ * the most specific one covering a promotion's scope applies, at its
7
+ * latest active version. The same registry shape as retention policies:
8
+ * the caller names the policy and its semver versions.
9
+ */
10
+ /** The metrics a policy can gate, from a comparison's summary. */
11
+ export const GATE_METRICS = ['weightedYesShare', 'judgedCoverage', 'weightedPrecisionAtK'];
12
+ //# sourceMappingURL=gate-policy-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-policy-binding.js","sourceRoot":"","sources":["../src/gate-policy-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAKjC;;;;;;GAMG;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,sBAAsB,CAAU,CAAC"}
package/dist/gate.d.ts ADDED
@@ -0,0 +1,56 @@
1
+ import type { ReviewerRole } from '@kindgi/authz';
2
+ import type { LiveScope } from '@kindgi/types';
3
+ import type { GatePolicySpec } from './gate-policy-binding.js';
4
+ import type { JudgedComparisonSummary } from './judged-dispatcher.js';
5
+ /**
6
+ * The promotion gate (evals step 4b): a policy's checks against a
7
+ * comparison's summary. Pure; the promotion route and `…/check` both
8
+ * call it, so a check answers exactly what a promotion would.
9
+ */
10
+ /** One check, as the promotion records it and every client shows it. */
11
+ export interface GateCheck {
12
+ /** Stable: `metric.weightedPrecisionAtK.minCandidate`, `replay.maxDiverged`, … */
13
+ readonly name: string;
14
+ readonly passed: boolean;
15
+ /** A plain sentence saying what was found against what the policy asks. */
16
+ readonly message: string;
17
+ readonly value?: number | string;
18
+ readonly threshold?: number | string;
19
+ }
20
+ /** What a passing promotion still needs: a reviewer's approval. */
21
+ export interface GateApproval {
22
+ readonly role: ReviewerRole;
23
+ /** How many reviewers decide (one, today). */
24
+ readonly count: number;
25
+ readonly separateApprover: boolean;
26
+ }
27
+ export interface GateInput {
28
+ readonly spec: GatePolicySpec;
29
+ /** What's being promoted. */
30
+ readonly promotion: {
31
+ readonly agentId: string;
32
+ readonly version: string;
33
+ /** The promoted version's `pinsDigest`; `null` for a version published before pins. */
34
+ readonly pinsDigest: string | null;
35
+ readonly scope: LiveScope;
36
+ };
37
+ /** The comparison named by `evalRunId`; `null` when none was. */
38
+ readonly summary: JudgedComparisonSummary | null;
39
+ /** The version serving the promotion's scope now: what "no regression" is measured against. */
40
+ readonly servingVersion: string;
41
+ /**
42
+ * The org of the project the comparison's judgments came from (for an
43
+ * org promotion). Absent: that project has no org, or none was looked up.
44
+ */
45
+ readonly summaryProjectOrgId?: string;
46
+ readonly now: Date;
47
+ }
48
+ export interface GateResult {
49
+ readonly checks: readonly GateCheck[];
50
+ readonly passed: boolean;
51
+ /** Set when the policy asks for an approval. */
52
+ readonly approval?: GateApproval;
53
+ }
54
+ export declare function gateApproval(spec: GatePolicySpec): GateApproval | undefined;
55
+ export declare function evaluateGate(input: GateInput): GateResult;
56
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAkC,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,KAAK,EAAoB,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAExF;;;;GAIG;AAEH,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,uFAAuF;QACvF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;KAC3B,CAAC;IACF,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,GAAG,SAAS,CAO3E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAiDzD"}