@kindgi/api 0.1.4 → 0.1.5-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/dist/agent-binding.d.ts +13 -0
  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 +18 -2
  5. package/dist/agent-pins.js.map +1 -1
  6. package/dist/app.d.ts +110 -17
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +163 -35
  9. package/dist/app.js.map +1 -1
  10. package/dist/block-publish.d.ts +56 -0
  11. package/dist/block-publish.d.ts.map +1 -0
  12. package/dist/block-publish.js +132 -0
  13. package/dist/block-publish.js.map +1 -0
  14. package/dist/caller.d.ts +24 -0
  15. package/dist/caller.d.ts.map +1 -0
  16. package/dist/caller.js +47 -0
  17. package/dist/caller.js.map +1 -0
  18. package/dist/capability-binding.d.ts +11 -0
  19. package/dist/capability-binding.d.ts.map +1 -1
  20. package/dist/derive-agent-version.d.ts +7 -0
  21. package/dist/derive-agent-version.d.ts.map +1 -1
  22. package/dist/derive-agent-version.js +4 -0
  23. package/dist/derive-agent-version.js.map +1 -1
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js +73 -7
  26. package/dist/errors.js.map +1 -1
  27. package/dist/eval-case-binding.d.ts +16 -4
  28. package/dist/eval-case-binding.d.ts.map +1 -1
  29. package/dist/eval-run-binding.d.ts +31 -0
  30. package/dist/eval-run-binding.d.ts.map +1 -1
  31. package/dist/eval-run-dispatcher.d.ts +7 -0
  32. package/dist/eval-run-dispatcher.d.ts.map +1 -1
  33. package/dist/eval-run-dispatcher.js.map +1 -1
  34. package/dist/eval-sample.d.ts +11 -0
  35. package/dist/eval-sample.d.ts.map +1 -0
  36. package/dist/eval-sample.js +34 -0
  37. package/dist/eval-sample.js.map +1 -0
  38. package/dist/eval-suite-binding.d.ts +13 -0
  39. package/dist/eval-suite-binding.d.ts.map +1 -1
  40. package/dist/eval-suite-binding.js.map +1 -1
  41. package/dist/flow-binding.d.ts +18 -0
  42. package/dist/flow-binding.d.ts.map +1 -1
  43. package/dist/flow-pins.d.ts.map +1 -1
  44. package/dist/flow-pins.js +18 -2
  45. package/dist/flow-pins.js.map +1 -1
  46. package/dist/gate.d.ts.map +1 -1
  47. package/dist/gate.js +25 -0
  48. package/dist/gate.js.map +1 -1
  49. package/dist/handler-binding.d.ts +32 -0
  50. package/dist/handler-binding.d.ts.map +1 -1
  51. package/dist/hitl-binding.d.ts +23 -0
  52. package/dist/hitl-binding.d.ts.map +1 -1
  53. package/dist/identity-directory-binding.d.ts +82 -4
  54. package/dist/identity-directory-binding.d.ts.map +1 -1
  55. package/dist/identity-provider-binding.d.ts +197 -17
  56. package/dist/identity-provider-binding.d.ts.map +1 -1
  57. package/dist/improvement-pass-binding.d.ts +196 -0
  58. package/dist/improvement-pass-binding.d.ts.map +1 -0
  59. package/dist/improvement-pass-binding.js +9 -0
  60. package/dist/improvement-pass-binding.js.map +1 -0
  61. package/dist/index.d.ts +35 -17
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +11 -3
  64. package/dist/index.js.map +1 -1
  65. package/dist/judged-dispatcher.d.ts +25 -4
  66. package/dist/judged-dispatcher.d.ts.map +1 -1
  67. package/dist/judged-dispatcher.js +43 -6
  68. package/dist/judged-dispatcher.js.map +1 -1
  69. package/dist/judgment-binding.d.ts +25 -1
  70. package/dist/judgment-binding.d.ts.map +1 -1
  71. package/dist/mcp-endpoint-binding.d.ts +7 -0
  72. package/dist/mcp-endpoint-binding.d.ts.map +1 -1
  73. package/dist/memory-binding.d.ts +124 -17
  74. package/dist/memory-binding.d.ts.map +1 -1
  75. package/dist/memory-erasure-binding.d.ts +145 -0
  76. package/dist/memory-erasure-binding.d.ts.map +1 -0
  77. package/dist/memory-erasure-binding.js +4 -0
  78. package/dist/memory-erasure-binding.js.map +1 -0
  79. package/dist/middleware/auth.d.ts +66 -13
  80. package/dist/middleware/auth.d.ts.map +1 -1
  81. package/dist/middleware/auth.js +150 -50
  82. package/dist/middleware/auth.js.map +1 -1
  83. package/dist/middleware/authorize.d.ts +6 -0
  84. package/dist/middleware/authorize.d.ts.map +1 -1
  85. package/dist/middleware/authorize.js +113 -4
  86. package/dist/middleware/authorize.js.map +1 -1
  87. package/dist/middleware/error-mapper.d.ts +5 -0
  88. package/dist/middleware/error-mapper.d.ts.map +1 -1
  89. package/dist/middleware/error-mapper.js +14 -1
  90. package/dist/middleware/error-mapper.js.map +1 -1
  91. package/dist/middleware/idempotency.d.ts +70 -5
  92. package/dist/middleware/idempotency.d.ts.map +1 -1
  93. package/dist/middleware/idempotency.js +174 -41
  94. package/dist/middleware/idempotency.js.map +1 -1
  95. package/dist/middleware/key-project.d.ts +17 -0
  96. package/dist/middleware/key-project.d.ts.map +1 -0
  97. package/dist/middleware/key-project.js +75 -0
  98. package/dist/middleware/key-project.js.map +1 -0
  99. package/dist/middleware/principal.d.ts.map +1 -1
  100. package/dist/middleware/principal.js +9 -5
  101. package/dist/middleware/principal.js.map +1 -1
  102. package/dist/middleware/project-ref.d.ts.map +1 -1
  103. package/dist/middleware/project-ref.js +3 -0
  104. package/dist/middleware/project-ref.js.map +1 -1
  105. package/dist/openapi/generate.d.ts.map +1 -1
  106. package/dist/openapi/generate.js +5 -2
  107. package/dist/openapi/generate.js.map +1 -1
  108. package/dist/openapi/operations.d.ts.map +1 -1
  109. package/dist/openapi/operations.js +918 -139
  110. package/dist/openapi/operations.js.map +1 -1
  111. package/dist/openapi/schemas.d.ts +90 -13
  112. package/dist/openapi/schemas.d.ts.map +1 -1
  113. package/dist/openapi/schemas.js +2081 -359
  114. package/dist/openapi/schemas.js.map +1 -1
  115. package/dist/person-grants-binding.d.ts +77 -0
  116. package/dist/person-grants-binding.d.ts.map +1 -0
  117. package/dist/person-grants-binding.js +4 -0
  118. package/dist/person-grants-binding.js.map +1 -0
  119. package/dist/proposal-service.d.ts +121 -0
  120. package/dist/proposal-service.d.ts.map +1 -0
  121. package/dist/proposal-service.js +447 -0
  122. package/dist/proposal-service.js.map +1 -0
  123. package/dist/proposal-status.d.ts +60 -0
  124. package/dist/proposal-status.d.ts.map +1 -0
  125. package/dist/proposal-status.js +109 -0
  126. package/dist/proposal-status.js.map +1 -0
  127. package/dist/provider-binding.d.ts +10 -0
  128. package/dist/provider-binding.d.ts.map +1 -1
  129. package/dist/publish-refused.d.ts +18 -3
  130. package/dist/publish-refused.d.ts.map +1 -1
  131. package/dist/publish-refused.js +18 -3
  132. package/dist/publish-refused.js.map +1 -1
  133. package/dist/routes/adapters.d.ts +2 -1
  134. package/dist/routes/adapters.d.ts.map +1 -1
  135. package/dist/routes/adapters.js +3 -1
  136. package/dist/routes/adapters.js.map +1 -1
  137. package/dist/routes/agent-releases.d.ts +55 -3
  138. package/dist/routes/agent-releases.d.ts.map +1 -1
  139. package/dist/routes/agent-releases.js +85 -55
  140. package/dist/routes/agent-releases.js.map +1 -1
  141. package/dist/routes/agents.d.ts +12 -1
  142. package/dist/routes/agents.d.ts.map +1 -1
  143. package/dist/routes/agents.js +100 -2
  144. package/dist/routes/agents.js.map +1 -1
  145. package/dist/routes/approvals.d.ts +15 -3
  146. package/dist/routes/approvals.d.ts.map +1 -1
  147. package/dist/routes/approvals.js +133 -122
  148. package/dist/routes/approvals.js.map +1 -1
  149. package/dist/routes/artifacts.d.ts +25 -3
  150. package/dist/routes/artifacts.d.ts.map +1 -1
  151. package/dist/routes/artifacts.js +116 -7
  152. package/dist/routes/artifacts.js.map +1 -1
  153. package/dist/routes/auth.d.ts +25 -1
  154. package/dist/routes/auth.d.ts.map +1 -1
  155. package/dist/routes/auth.js +655 -281
  156. package/dist/routes/auth.js.map +1 -1
  157. package/dist/routes/blocks.d.ts.map +1 -1
  158. package/dist/routes/blocks.js +2 -42
  159. package/dist/routes/blocks.js.map +1 -1
  160. package/dist/routes/capabilities.d.ts +2 -1
  161. package/dist/routes/capabilities.d.ts.map +1 -1
  162. package/dist/routes/capabilities.js +6 -1
  163. package/dist/routes/capabilities.js.map +1 -1
  164. package/dist/routes/compliance.d.ts +9 -10
  165. package/dist/routes/compliance.d.ts.map +1 -1
  166. package/dist/routes/compliance.js +42 -61
  167. package/dist/routes/compliance.js.map +1 -1
  168. package/dist/routes/conversations.d.ts +8 -1
  169. package/dist/routes/conversations.d.ts.map +1 -1
  170. package/dist/routes/conversations.js +87 -8
  171. package/dist/routes/conversations.js.map +1 -1
  172. package/dist/routes/cost.d.ts +7 -1
  173. package/dist/routes/cost.d.ts.map +1 -1
  174. package/dist/routes/cost.js +22 -3
  175. package/dist/routes/cost.js.map +1 -1
  176. package/dist/routes/denied.d.ts +11 -0
  177. package/dist/routes/denied.d.ts.map +1 -0
  178. package/dist/routes/denied.js +17 -0
  179. package/dist/routes/denied.js.map +1 -0
  180. package/dist/routes/deployments.d.ts +2 -1
  181. package/dist/routes/deployments.d.ts.map +1 -1
  182. package/dist/routes/deployments.js +44 -12
  183. package/dist/routes/deployments.js.map +1 -1
  184. package/dist/routes/eval-comparison.d.ts.map +1 -1
  185. package/dist/routes/eval-comparison.js +69 -1
  186. package/dist/routes/eval-comparison.js.map +1 -1
  187. package/dist/routes/eval-overrides.d.ts +18 -0
  188. package/dist/routes/eval-overrides.d.ts.map +1 -0
  189. package/dist/routes/eval-overrides.js +81 -0
  190. package/dist/routes/eval-overrides.js.map +1 -0
  191. package/dist/routes/eval-runs.d.ts +10 -1
  192. package/dist/routes/eval-runs.d.ts.map +1 -1
  193. package/dist/routes/eval-runs.js +63 -7
  194. package/dist/routes/eval-runs.js.map +1 -1
  195. package/dist/routes/eval-suites.d.ts.map +1 -1
  196. package/dist/routes/eval-suites.js +20 -1
  197. package/dist/routes/eval-suites.js.map +1 -1
  198. package/dist/routes/event-triggers.d.ts +5 -1
  199. package/dist/routes/event-triggers.d.ts.map +1 -1
  200. package/dist/routes/event-triggers.js +26 -3
  201. package/dist/routes/event-triggers.js.map +1 -1
  202. package/dist/routes/export-signing-keys.d.ts +12 -0
  203. package/dist/routes/export-signing-keys.d.ts.map +1 -0
  204. package/dist/routes/export-signing-keys.js +24 -0
  205. package/dist/routes/export-signing-keys.js.map +1 -0
  206. package/dist/routes/flows.d.ts.map +1 -1
  207. package/dist/routes/flows.js +9 -1
  208. package/dist/routes/flows.js.map +1 -1
  209. package/dist/routes/gate-policies.d.ts +4 -1
  210. package/dist/routes/gate-policies.d.ts.map +1 -1
  211. package/dist/routes/gate-policies.js +29 -5
  212. package/dist/routes/gate-policies.js.map +1 -1
  213. package/dist/routes/guardrails.d.ts +16 -14
  214. package/dist/routes/guardrails.d.ts.map +1 -1
  215. package/dist/routes/guardrails.js +39 -3
  216. package/dist/routes/guardrails.js.map +1 -1
  217. package/dist/routes/identity.d.ts +20 -4
  218. package/dist/routes/identity.d.ts.map +1 -1
  219. package/dist/routes/identity.js +246 -6
  220. package/dist/routes/identity.js.map +1 -1
  221. package/dist/routes/improvement-passes.d.ts +52 -0
  222. package/dist/routes/improvement-passes.d.ts.map +1 -0
  223. package/dist/routes/improvement-passes.js +449 -0
  224. package/dist/routes/improvement-passes.js.map +1 -0
  225. package/dist/routes/judged-suites.d.ts +50 -0
  226. package/dist/routes/judged-suites.d.ts.map +1 -1
  227. package/dist/routes/judged-suites.js +66 -27
  228. package/dist/routes/judged-suites.js.map +1 -1
  229. package/dist/routes/judgment-context.d.ts +18 -2
  230. package/dist/routes/judgment-context.d.ts.map +1 -1
  231. package/dist/routes/judgment-context.js +63 -5
  232. package/dist/routes/judgment-context.js.map +1 -1
  233. package/dist/routes/judgment-flow-context.d.ts.map +1 -1
  234. package/dist/routes/judgment-flow-context.js +14 -2
  235. package/dist/routes/judgment-flow-context.js.map +1 -1
  236. package/dist/routes/judgments.d.ts.map +1 -1
  237. package/dist/routes/judgments.js +8 -1
  238. package/dist/routes/judgments.js.map +1 -1
  239. package/dist/routes/mcp.d.ts.map +1 -1
  240. package/dist/routes/mcp.js +26 -1
  241. package/dist/routes/mcp.js.map +1 -1
  242. package/dist/routes/memory-access.d.ts +43 -0
  243. package/dist/routes/memory-access.d.ts.map +1 -0
  244. package/dist/routes/memory-access.js +129 -0
  245. package/dist/routes/memory-access.js.map +1 -0
  246. package/dist/routes/memory-erasures.d.ts +25 -0
  247. package/dist/routes/memory-erasures.d.ts.map +1 -0
  248. package/dist/routes/memory-erasures.js +214 -0
  249. package/dist/routes/memory-erasures.js.map +1 -0
  250. package/dist/routes/memory-parse.d.ts +38 -0
  251. package/dist/routes/memory-parse.d.ts.map +1 -0
  252. package/dist/routes/memory-parse.js +199 -0
  253. package/dist/routes/memory-parse.js.map +1 -0
  254. package/dist/routes/memory.d.ts +9 -4
  255. package/dist/routes/memory.d.ts.map +1 -1
  256. package/dist/routes/memory.js +226 -234
  257. package/dist/routes/memory.js.map +1 -1
  258. package/dist/routes/observations.d.ts +4 -1
  259. package/dist/routes/observations.d.ts.map +1 -1
  260. package/dist/routes/observations.js +8 -2
  261. package/dist/routes/observations.js.map +1 -1
  262. package/dist/routes/pagination.d.ts +7 -0
  263. package/dist/routes/pagination.d.ts.map +1 -1
  264. package/dist/routes/pagination.js +10 -0
  265. package/dist/routes/pagination.js.map +1 -1
  266. package/dist/routes/policies.d.ts +2 -1
  267. package/dist/routes/policies.d.ts.map +1 -1
  268. package/dist/routes/policies.js +3 -1
  269. package/dist/routes/policies.js.map +1 -1
  270. package/dist/routes/project-mismatch.d.ts +22 -0
  271. package/dist/routes/project-mismatch.d.ts.map +1 -0
  272. package/dist/routes/project-mismatch.js +34 -0
  273. package/dist/routes/project-mismatch.js.map +1 -0
  274. package/dist/routes/projects.d.ts +15 -4
  275. package/dist/routes/projects.d.ts.map +1 -1
  276. package/dist/routes/projects.js +100 -9
  277. package/dist/routes/projects.js.map +1 -1
  278. package/dist/routes/proposals.d.ts +25 -17
  279. package/dist/routes/proposals.d.ts.map +1 -1
  280. package/dist/routes/proposals.js +340 -507
  281. package/dist/routes/proposals.js.map +1 -1
  282. package/dist/routes/provenance.d.ts +17 -3
  283. package/dist/routes/provenance.d.ts.map +1 -1
  284. package/dist/routes/provenance.js +79 -103
  285. package/dist/routes/provenance.js.map +1 -1
  286. package/dist/routes/providers.d.ts +17 -1
  287. package/dist/routes/providers.d.ts.map +1 -1
  288. package/dist/routes/providers.js +110 -3
  289. package/dist/routes/providers.js.map +1 -1
  290. package/dist/routes/public-run-tokens.d.ts.map +1 -1
  291. package/dist/routes/public-run-tokens.js +3 -0
  292. package/dist/routes/public-run-tokens.js.map +1 -1
  293. package/dist/routes/runs.d.ts +10 -0
  294. package/dist/routes/runs.d.ts.map +1 -1
  295. package/dist/routes/runs.js +92 -42
  296. package/dist/routes/runs.js.map +1 -1
  297. package/dist/routes/schedules.d.ts +21 -13
  298. package/dist/routes/schedules.d.ts.map +1 -1
  299. package/dist/routes/schedules.js +416 -55
  300. package/dist/routes/schedules.js.map +1 -1
  301. package/dist/routes/segments.d.ts +2 -0
  302. package/dist/routes/segments.d.ts.map +1 -1
  303. package/dist/routes/segments.js +5 -0
  304. package/dist/routes/segments.js.map +1 -1
  305. package/dist/routes/service-accounts.d.ts +17 -0
  306. package/dist/routes/service-accounts.d.ts.map +1 -0
  307. package/dist/routes/service-accounts.js +212 -0
  308. package/dist/routes/service-accounts.js.map +1 -0
  309. package/dist/routes/sign-in-options.d.ts +50 -0
  310. package/dist/routes/sign-in-options.d.ts.map +1 -0
  311. package/dist/routes/sign-in-options.js +98 -0
  312. package/dist/routes/sign-in-options.js.map +1 -0
  313. package/dist/routes/signing-keys.d.ts +2 -1
  314. package/dist/routes/signing-keys.d.ts.map +1 -1
  315. package/dist/routes/signing-keys.js +3 -1
  316. package/dist/routes/signing-keys.js.map +1 -1
  317. package/dist/routes/tenant-access.d.ts +13 -0
  318. package/dist/routes/tenant-access.d.ts.map +1 -0
  319. package/dist/routes/tenant-access.js +26 -0
  320. package/dist/routes/tenant-access.js.map +1 -0
  321. package/dist/routes/tenant.d.ts.map +1 -1
  322. package/dist/routes/tenant.js +4 -0
  323. package/dist/routes/tenant.js.map +1 -1
  324. package/dist/routes/token-sign-in.d.ts +36 -0
  325. package/dist/routes/token-sign-in.d.ts.map +1 -0
  326. package/dist/routes/token-sign-in.js +101 -0
  327. package/dist/routes/token-sign-in.js.map +1 -0
  328. package/dist/routes/tokens.d.ts +15 -5
  329. package/dist/routes/tokens.d.ts.map +1 -1
  330. package/dist/routes/tokens.js +162 -43
  331. package/dist/routes/tokens.js.map +1 -1
  332. package/dist/routes/tools.d.ts.map +1 -1
  333. package/dist/routes/tools.js +9 -1
  334. package/dist/routes/tools.js.map +1 -1
  335. package/dist/routes/trigger-access.d.ts +29 -0
  336. package/dist/routes/trigger-access.d.ts.map +1 -0
  337. package/dist/routes/trigger-access.js +33 -0
  338. package/dist/routes/trigger-access.js.map +1 -0
  339. package/dist/routes/webhook-endpoints.d.ts +2 -1
  340. package/dist/routes/webhook-endpoints.d.ts.map +1 -1
  341. package/dist/routes/webhook-endpoints.js +11 -3
  342. package/dist/routes/webhook-endpoints.js.map +1 -1
  343. package/dist/routes/webhooks.d.ts +5 -1
  344. package/dist/routes/webhooks.d.ts.map +1 -1
  345. package/dist/routes/webhooks.js +25 -2
  346. package/dist/routes/webhooks.js.map +1 -1
  347. package/dist/run-failure.d.ts +21 -0
  348. package/dist/run-failure.d.ts.map +1 -0
  349. package/dist/run-failure.js +29 -0
  350. package/dist/run-failure.js.map +1 -0
  351. package/dist/service-account-binding.d.ts +108 -0
  352. package/dist/service-account-binding.d.ts.map +1 -0
  353. package/dist/service-account-binding.js +4 -0
  354. package/dist/service-account-binding.js.map +1 -0
  355. package/dist/session-store-binding.d.ts +61 -13
  356. package/dist/session-store-binding.d.ts.map +1 -1
  357. package/dist/signed-export.d.ts +89 -0
  358. package/dist/signed-export.d.ts.map +1 -0
  359. package/dist/signed-export.js +149 -0
  360. package/dist/signed-export.js.map +1 -0
  361. package/dist/supervisor-binding.d.ts +186 -413
  362. package/dist/supervisor-binding.d.ts.map +1 -1
  363. package/dist/testing/app-bindings.d.ts +33 -0
  364. package/dist/testing/app-bindings.d.ts.map +1 -0
  365. package/dist/testing/app-bindings.js +112 -0
  366. package/dist/testing/app-bindings.js.map +1 -0
  367. package/dist/testing/index.d.ts +11 -0
  368. package/dist/testing/index.d.ts.map +1 -0
  369. package/dist/testing/index.js +13 -0
  370. package/dist/testing/index.js.map +1 -0
  371. package/dist/testing/stub-binding.d.ts +34 -0
  372. package/dist/testing/stub-binding.d.ts.map +1 -0
  373. package/dist/testing/stub-binding.js +42 -0
  374. package/dist/testing/stub-binding.js.map +1 -0
  375. package/dist/testing/trigger-registry.d.ts +21 -0
  376. package/dist/testing/trigger-registry.d.ts.map +1 -0
  377. package/dist/testing/trigger-registry.js +206 -0
  378. package/dist/testing/trigger-registry.js.map +1 -0
  379. package/dist/token-admin.d.ts +46 -8
  380. package/dist/token-admin.d.ts.map +1 -1
  381. package/dist/token-admin.js.map +1 -1
  382. package/dist/tool-binding.d.ts +13 -0
  383. package/dist/tool-binding.d.ts.map +1 -1
  384. package/dist/trigger-binding.d.ts +2 -2
  385. package/dist/trigger-binding.d.ts.map +1 -1
  386. package/dist/trigger-binding.js +1 -1
  387. package/dist/trigger-binding.js.map +1 -1
  388. package/dist/types.d.ts +16 -0
  389. package/dist/types.d.ts.map +1 -1
  390. package/dist/webhook-endpoint-binding.d.ts +19 -3
  391. package/dist/webhook-endpoint-binding.d.ts.map +1 -1
  392. package/dist/webhook-endpoint-binding.js +1 -1
  393. package/dist/webhook-endpoint-binding.js.map +1 -1
  394. package/openapi.json +15385 -8788
  395. package/package.json +26 -22
  396. package/src/agent-binding.ts +14 -0
  397. package/src/agent-pins.ts +18 -2
  398. package/src/app.ts +366 -80
  399. package/src/block-publish.ts +181 -0
  400. package/src/caller.ts +62 -0
  401. package/src/capability-binding.ts +12 -0
  402. package/src/derive-agent-version.ts +9 -1
  403. package/src/errors.ts +73 -7
  404. package/src/eval-case-binding.ts +17 -1
  405. package/src/eval-run-binding.ts +31 -0
  406. package/src/eval-run-dispatcher.ts +7 -0
  407. package/src/eval-sample.ts +42 -0
  408. package/src/eval-suite-binding.ts +14 -0
  409. package/src/flow-binding.ts +19 -0
  410. package/src/flow-pins.ts +18 -2
  411. package/src/gate.ts +26 -0
  412. package/src/handler-binding.ts +36 -1
  413. package/src/hitl-binding.ts +24 -0
  414. package/src/identity-directory-binding.ts +85 -4
  415. package/src/identity-provider-binding.ts +216 -21
  416. package/src/improvement-pass-binding.ts +193 -0
  417. package/src/index.ts +153 -31
  418. package/src/judged-dispatcher.ts +78 -11
  419. package/src/judgment-binding.ts +25 -1
  420. package/src/mcp-endpoint-binding.ts +7 -0
  421. package/src/memory-binding.ts +121 -17
  422. package/src/memory-erasure-binding.ts +156 -0
  423. package/src/middleware/auth.ts +228 -62
  424. package/src/middleware/authorize.ts +139 -3
  425. package/src/middleware/error-mapper.ts +15 -1
  426. package/src/middleware/idempotency.ts +230 -43
  427. package/src/middleware/key-project.ts +86 -0
  428. package/src/middleware/principal.ts +9 -5
  429. package/src/middleware/project-ref.ts +3 -0
  430. package/src/openapi/generate.ts +11 -2
  431. package/src/openapi/operations.ts +1059 -142
  432. package/src/openapi/schemas.ts +2387 -469
  433. package/src/person-grants-binding.ts +76 -0
  434. package/src/proposal-service.ts +640 -0
  435. package/src/proposal-status.ts +176 -0
  436. package/src/provider-binding.ts +10 -0
  437. package/src/publish-refused.ts +38 -9
  438. package/src/routes/adapters.ts +4 -0
  439. package/src/routes/agent-releases.ts +121 -69
  440. package/src/routes/agents.ts +128 -1
  441. package/src/routes/approvals.ts +164 -154
  442. package/src/routes/artifacts.ts +181 -11
  443. package/src/routes/auth.ts +804 -336
  444. package/src/routes/blocks.ts +2 -53
  445. package/src/routes/capabilities.ts +10 -1
  446. package/src/routes/compliance.ts +60 -99
  447. package/src/routes/conversations.ts +101 -7
  448. package/src/routes/cost.ts +32 -3
  449. package/src/routes/denied.ts +28 -0
  450. package/src/routes/deployments.ts +62 -16
  451. package/src/routes/eval-comparison.ts +81 -2
  452. package/src/routes/eval-overrides.ts +108 -0
  453. package/src/routes/eval-runs.ts +86 -6
  454. package/src/routes/eval-suites.ts +25 -1
  455. package/src/routes/event-triggers.ts +27 -3
  456. package/src/routes/export-signing-keys.ts +31 -0
  457. package/src/routes/flows.ts +12 -1
  458. package/src/routes/gate-policies.ts +37 -6
  459. package/src/routes/guardrails.ts +61 -2
  460. package/src/routes/identity.ts +328 -10
  461. package/src/routes/improvement-passes.ts +541 -0
  462. package/src/routes/judged-suites.ts +113 -43
  463. package/src/routes/judgment-context.ts +76 -5
  464. package/src/routes/judgment-flow-context.ts +16 -2
  465. package/src/routes/judgments.ts +17 -3
  466. package/src/routes/mcp.ts +29 -1
  467. package/src/routes/memory-access.ts +179 -0
  468. package/src/routes/memory-erasures.ts +240 -0
  469. package/src/routes/memory-parse.ts +250 -0
  470. package/src/routes/memory.ts +244 -286
  471. package/src/routes/observations.ts +15 -2
  472. package/src/routes/pagination.ts +12 -0
  473. package/src/routes/policies.ts +7 -1
  474. package/src/routes/project-mismatch.ts +56 -0
  475. package/src/routes/projects.ts +107 -13
  476. package/src/routes/proposals.ts +370 -611
  477. package/src/routes/provenance.ts +99 -133
  478. package/src/routes/providers.ts +142 -3
  479. package/src/routes/public-run-tokens.ts +3 -0
  480. package/src/routes/runs.ts +119 -39
  481. package/src/routes/schedules.ts +472 -60
  482. package/src/routes/segments.ts +11 -0
  483. package/src/routes/service-accounts.ts +262 -0
  484. package/src/routes/sign-in-options.ts +168 -0
  485. package/src/routes/signing-keys.ts +7 -1
  486. package/src/routes/tenant-access.ts +37 -0
  487. package/src/routes/tenant.ts +6 -0
  488. package/src/routes/token-sign-in.ts +161 -0
  489. package/src/routes/tokens.ts +172 -46
  490. package/src/routes/tools.ts +12 -1
  491. package/src/routes/trigger-access.ts +72 -0
  492. package/src/routes/webhook-endpoints.ts +15 -3
  493. package/src/routes/webhooks.ts +26 -2
  494. package/src/run-failure.ts +42 -0
  495. package/src/service-account-binding.ts +113 -0
  496. package/src/session-store-binding.ts +65 -13
  497. package/src/signed-export.ts +250 -0
  498. package/src/supervisor-binding.ts +169 -409
  499. package/src/testing/app-bindings.ts +142 -0
  500. package/src/testing/index.ts +21 -0
  501. package/src/testing/stub-binding.ts +53 -0
  502. package/src/testing/trigger-registry.ts +259 -0
  503. package/src/token-admin.ts +40 -8
  504. package/src/tool-binding.ts +14 -0
  505. package/src/trigger-binding.ts +8 -1
  506. package/src/types.ts +16 -0
  507. package/src/webhook-endpoint-binding.ts +18 -3
@@ -13,7 +13,10 @@ import type {
13
13
  Timestamp,
14
14
  } from '@kindgi/types';
15
15
 
16
+ import { ref } from '@kindgi/authz';
17
+
16
18
  import { statusFor, toWireError } from '../errors.js';
19
+ import type { Authorizer } from '../middleware/authorize.js';
17
20
  import type { Observation, ObservationStatus, SupervisorBinding } from '../supervisor-binding.js';
18
21
  import type { AppEnv } from '../types.js';
19
22
  import { clampLimit } from './pagination.js';
@@ -43,7 +46,11 @@ const OBSERVATION_STATUSES: ReadonlySet<ObservationStatus> = new Set([
43
46
  * Persistence + query wiring is caller-plugged via `SupervisorBinding`
44
47
  * — the API package doesn't own the supervisor runtime.
45
48
  */
46
- export function observationsRouter(binding: SupervisorBinding): Hono<AppEnv> {
49
+ export function observationsRouter(
50
+ binding: SupervisorBinding,
51
+ /** With one (T243 A): only observations of agents the caller may read. */
52
+ authorizer?: Authorizer,
53
+ ): Hono<AppEnv> {
47
54
  const r = new Hono<AppEnv>();
48
55
 
49
56
  r.get('/', async (c) => {
@@ -143,8 +150,14 @@ export function observationsRouter(binding: SupervisorBinding): Hono<AppEnv> {
143
150
  return c.json(toWireError({ code: outcome.code, message: outcome.message }, requestId));
144
151
  }
145
152
  const { data, nextCursor } = outcome.page;
153
+ const visible =
154
+ authorizer === undefined
155
+ ? data
156
+ : await authorizer.filterByCan(c, 'read', data, (o) =>
157
+ ref('agent', o.agentId as unknown as string),
158
+ );
146
159
  return c.json({
147
- data: data.map(serializeObservation),
160
+ data: visible.map(serializeObservation),
148
161
  hasMore: nextCursor !== undefined,
149
162
  ...(nextCursor !== undefined && { nextCursor: nextCursor as unknown as string }),
150
163
  });
@@ -43,6 +43,18 @@ export function decodeCursor(raw: string): DecodedCursor | null {
43
43
  }
44
44
  }
45
45
 
46
+ /**
47
+ * A cursor's time, as a list's binding compares it: Postgres's own text for
48
+ * a `timestamptz` (`2026-10-09 12:00:00.123456+00`, microseconds, which a
49
+ * binding gives as a page's exact position) or an ISO 8601 time (a cursor
50
+ * from before, milliseconds).
51
+ */
52
+ export function isCursorTime(value: string): boolean {
53
+ return PG_TIMESTAMP_TEXT.test(value) || Number.isFinite(Date.parse(value));
54
+ }
55
+
56
+ const PG_TIMESTAMP_TEXT = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(\.\d{1,6})?[+-]\d{2}(:\d{2})?$/;
57
+
46
58
  export function clampLimit(raw: string | undefined, def = 25, cap = 100): number {
47
59
  if (raw === undefined) return def;
48
60
  const n = Number.parseInt(raw, 10);
@@ -17,8 +17,10 @@ import {
17
17
  validatePolicySpec,
18
18
  } from '@kindgi/policy-contract';
19
19
  import { statusFor, toWireError } from '../errors.js';
20
+ import type { Authorizer } from '../middleware/authorize.js';
20
21
  import type { AppEnv } from '../types.js';
21
22
  import { clampLimit } from './pagination.js';
23
+ import { tenantResourceAccess } from './tenant-access.js';
22
24
 
23
25
  /**
24
26
  * Policies resource routes — part of the admin control plane. Full
@@ -41,8 +43,12 @@ import { clampLimit } from './pagination.js';
41
43
  * `model-routing`, adapter-allowlist checks, retention sweeps) read
42
44
  * policies from this store and apply them at their own boundary.
43
45
  */
44
- export function policiesRouter(binding: PolicyRegistryBinding): Hono<AppEnv> {
46
+ export function policiesRouter(
47
+ binding: PolicyRegistryBinding,
48
+ authorizer?: Authorizer,
49
+ ): Hono<AppEnv> {
45
50
  const r = new Hono<AppEnv>();
51
+ r.use('*', tenantResourceAccess(authorizer));
46
52
 
47
53
  // ---------- GET / (list, cursor-paginated) ----------
48
54
  r.get('/', async (c) => {
@@ -0,0 +1,56 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+
4
+ import type { Context } from 'hono';
5
+
6
+ import type { ProjectId } from '@kindgi/types';
7
+
8
+ import { statusFor, toWireError } from '../errors.js';
9
+ import type { AppEnv } from '../types.js';
10
+
11
+ /** The kinds whose ids belong to the project their first version went to, and never move. */
12
+ export type ProjectBoundKind = 'agent' | 'flow' | 'tool' | 'eval-suite';
13
+
14
+ const NOUN: Readonly<Record<ProjectBoundKind, string>> = {
15
+ agent: 'Agent',
16
+ flow: 'Flow',
17
+ tool: 'Tool',
18
+ 'eval-suite': 'Eval suite',
19
+ };
20
+
21
+ const ID_FIELD: Readonly<Record<ProjectBoundKind, string>> = {
22
+ agent: 'agentId',
23
+ flow: 'flowId',
24
+ tool: 'toolId',
25
+ 'eval-suite': 'suiteId',
26
+ };
27
+
28
+ /**
29
+ * `409 <kind>-project-mismatch`: the id belongs to another project than
30
+ * the one given, and never moves (as a block's versions stay in its
31
+ * project). The project it belongs to stays off the wire, so a caller who
32
+ * can't read that project doesn't learn it; the request's log keeps it.
33
+ */
34
+ export function projectMismatch(
35
+ c: Context<AppEnv>,
36
+ kind: ProjectBoundKind,
37
+ id: string,
38
+ owner: ProjectId,
39
+ verb: 'publish' | 'derive' | 'build' = 'publish',
40
+ ) {
41
+ c.get('log').info(`${NOUN[kind]} "${id}" belongs to another project: ${verb} refused`, {
42
+ [ID_FIELD[kind]]: id,
43
+ ownerProjectId: owner as unknown as string,
44
+ });
45
+ c.status(statusFor(`${kind}-project-mismatch`) as never);
46
+ return c.json(
47
+ toWireError(
48
+ {
49
+ code: `${kind}-project-mismatch`,
50
+ message: `${NOUN[kind]} "${id}" belongs to another project; ${verb} its versions there`,
51
+ [ID_FIELD[kind]]: id,
52
+ },
53
+ c.get('requestId'),
54
+ ),
55
+ );
56
+ }
@@ -18,6 +18,7 @@ import type {
18
18
  import type { Cursor, OrgId, ProjectId, TenantId, UserId } from '@kindgi/types';
19
19
 
20
20
  import { statusFor, toWireError } from '../errors.js';
21
+ import type { IdentityDirectoryBinding } from '../identity-directory-binding.js';
21
22
  import type { Authorizer } from '../middleware/authorize.js';
22
23
  import type { AppEnv } from '../types.js';
23
24
  import {
@@ -44,7 +45,8 @@ import { clampLimit } from './pagination.js';
44
45
  * `project-default-already-exists`
45
46
  * for a second Default.
46
47
  * - `GET /default` — returns the tenant's Default
47
- * project or 404 `project-not-found`.
48
+ * project or 404 `project-not-found`;
49
+ * read on it, as `GET /:projectId`.
48
50
  * MUST be mounted BEFORE `/:projectId`.
49
51
  * - `GET /:projectId` — get; 200 or 404 `project-not-found`.
50
52
  * - `PATCH /:projectId` — partial update; 204, 404
@@ -53,8 +55,11 @@ import { clampLimit } from './pagination.js';
53
55
  * move to an org that has it).
54
56
  * - `DELETE /:projectId` — 204 idempotent.
55
57
  * - `GET /:projectId/memberships` — list; cursor-paginated.
56
- * - `POST /:projectId/memberships` — add member; body `{ userId, role }`;
57
- * 201. Idempotent per binding contract.
58
+ * - `POST /:projectId/memberships` — add member; body `{ userId, role }`
59
+ * or `{ email, role }`; 201, or 404
60
+ * `identity-user-not-found` for
61
+ * someone not in the tenant.
62
+ * Idempotent per binding contract.
58
63
  * - `DELETE /:projectId/memberships/:userId`
59
64
  * — 204 idempotent.
60
65
  * - `PATCH /:projectId/memberships/:userId`
@@ -77,6 +82,12 @@ export function projectsRouter(
77
82
  * projects the caller can read.
78
83
  */
79
84
  authorizer?: Authorizer,
85
+ /**
86
+ * Optional. The tenant's people: a member added to a project must be
87
+ * one of them, named by id or (when the directory looks people up by
88
+ * email) by email. Without it, an id is taken as given.
89
+ */
90
+ directory?: IdentityDirectoryBinding,
80
91
  ): Hono<AppEnv> {
81
92
  const r = new Hono<AppEnv>();
82
93
 
@@ -113,7 +124,68 @@ export function projectsRouter(
113
124
  return { kind: 'done', outcome: res.value };
114
125
  }
115
126
 
127
+ /**
128
+ * The person a new member names, among the tenant's people still here:
129
+ * by id, or by email when the directory looks people up by email.
130
+ * Without a directory, an id is taken as given.
131
+ */
132
+ async function resolveMember(
133
+ tenantId: TenantId,
134
+ named: MemberName,
135
+ ): Promise<
136
+ | { readonly kind: 'found'; readonly userId: UserId }
137
+ | { readonly kind: 'refused'; readonly error: Parameters<typeof toWireError>[0] }
138
+ > {
139
+ if ('userId' in named) {
140
+ if (directory === undefined) return { kind: 'found', userId: named.userId };
141
+ const user = await directory.getUser({ tenantId, userId: named.userId });
142
+ if (user !== null && user.unregisteredAt === undefined) {
143
+ return { kind: 'found', userId: user.userId };
144
+ }
145
+ return {
146
+ kind: 'refused',
147
+ error: {
148
+ code: 'identity-user-not-found',
149
+ message: `User "${named.userId as unknown as string}" is not a member of this tenant`,
150
+ userId: named.userId as unknown as string,
151
+ },
152
+ };
153
+ }
154
+ if (directory?.findUserByEmail === undefined) {
155
+ return {
156
+ kind: 'refused',
157
+ error: {
158
+ code: 'bad-input',
159
+ message: "This runtime doesn't look people up by email: name them by `userId`",
160
+ },
161
+ };
162
+ }
163
+ const user = await directory.findUserByEmail({ tenantId, email: named.email });
164
+ if (user !== null && user.unregisteredAt === undefined) {
165
+ return { kind: 'found', userId: user.userId };
166
+ }
167
+ return {
168
+ kind: 'refused',
169
+ error: {
170
+ code: 'identity-user-not-found',
171
+ message: `No one with email "${named.email}" is a member of this tenant`,
172
+ },
173
+ };
174
+ }
175
+
116
176
  // ---------- GET /default (literal segment; must precede /:projectId) ----------
177
+ // Read on the Default project, as `GET /:projectId` checks it: someone
178
+ // with a role on another project only gets 403, not its settings.
179
+ if (authorizer !== undefined) {
180
+ r.use('/default', async (c, next) => {
181
+ if (c.req.method !== 'GET') return next();
182
+ const proj = await binding.getDefault(c.get('tenantId') as TenantId);
183
+ // None: the handler answers 404.
184
+ if (proj === undefined) return next();
185
+ const mw = authorizer.authorize('read', () => ref('project', proj.id as unknown as string));
186
+ return mw(c, next);
187
+ });
188
+ }
117
189
  r.get('/default', async (c) => {
118
190
  const requestId = c.get('requestId');
119
191
  const tenantId = c.get('tenantId') as TenantId;
@@ -385,14 +457,10 @@ export function projectsRouter(
385
457
  );
386
458
  }
387
459
  const b = body as Record<string, unknown>;
388
- if (typeof b.userId !== 'string' || b.userId.length === 0) {
460
+ const named = parseMemberName(b);
461
+ if (typeof named === 'string') {
389
462
  c.status(statusFor('bad-input') as never);
390
- return c.json(
391
- toWireError(
392
- { code: 'bad-input', message: '`userId` is required and must be a non-empty string' },
393
- requestId,
394
- ),
395
- );
463
+ return c.json(toWireError({ code: 'bad-input', message: named }, requestId));
396
464
  }
397
465
  if (!isProjectRole(b.role)) {
398
466
  c.status(statusFor('bad-input') as never);
@@ -406,6 +474,12 @@ export function projectsRouter(
406
474
  ),
407
475
  );
408
476
  }
477
+ const resolved = await resolveMember(tenantId, named);
478
+ if (resolved.kind === 'refused') {
479
+ c.status(statusFor(resolved.error.code) as never);
480
+ return c.json(toWireError(resolved.error, requestId));
481
+ }
482
+ const userId = resolved.userId;
409
483
  // Racy — the project can be deleted between the preliminary get and the add.
410
484
  const projectGone = () => {
411
485
  c.status(statusFor('project-not-found') as never);
@@ -427,7 +501,7 @@ export function projectsRouter(
427
501
  const res = await tenantHierarchy.addProjectMember({
428
502
  tenantId,
429
503
  projectId,
430
- userId: b.userId as unknown as UserId,
504
+ userId,
431
505
  role: b.role as ProjectRole,
432
506
  });
433
507
  if (res.kind === 'err') {
@@ -437,7 +511,7 @@ export function projectsRouter(
437
511
  } else {
438
512
  const outcome = await membershipBinding.add(tenantId, {
439
513
  projectId,
440
- userId: b.userId as unknown as UserId,
514
+ userId,
441
515
  role: b.role,
442
516
  });
443
517
  if (outcome.kind === 'project-not-found') return projectGone();
@@ -445,7 +519,7 @@ export function projectsRouter(
445
519
  c.status(201);
446
520
  return c.json({
447
521
  projectId: projectId as unknown as string,
448
- userId: b.userId,
522
+ userId: userId as unknown as string,
449
523
  role: b.role,
450
524
  });
451
525
  });
@@ -680,6 +754,26 @@ export function projectsRouter(
680
754
  return r;
681
755
  }
682
756
 
757
+ /** Who a new member is: exactly one of `userId` and `email`. */
758
+ type MemberName = { readonly userId: UserId } | { readonly email: string };
759
+
760
+ /** A new member's `userId` or `email` (exactly one), or why not. */
761
+ function parseMemberName(b: Record<string, unknown>): MemberName | string {
762
+ const hasId = b.userId !== undefined;
763
+ const hasEmail = b.email !== undefined;
764
+ if (hasId === hasEmail) return 'Give exactly one of `userId` and `email`';
765
+ if (hasId) {
766
+ if (typeof b.userId !== 'string' || b.userId.length === 0) {
767
+ return '`userId` must be a non-empty string';
768
+ }
769
+ return { userId: b.userId as UserId };
770
+ }
771
+ if (typeof b.email !== 'string' || b.email.trim().length === 0) {
772
+ return '`email` must be a non-empty string';
773
+ }
774
+ return { email: b.email.trim() };
775
+ }
776
+
683
777
  function isProjectRole(x: unknown): x is 'viewer' | 'editor' | 'owner' | 'admin' | 'member' {
684
778
  return x === 'viewer' || x === 'editor' || x === 'owner' || x === 'admin' || x === 'member';
685
779
  }