@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,9 +13,10 @@ import type {
13
13
  ScopeSegment,
14
14
  Semver,
15
15
  TenantId,
16
+ TriggerId,
16
17
  } from '@kindgi/types';
17
18
 
18
- import { ref } from '@kindgi/authz';
19
+ import { type Principal, denyPayload, ref } from '@kindgi/authz';
19
20
 
20
21
  import { type WireErrorBody, statusFor, toWireError } from '../errors.js';
21
22
  import type { EventBusBinding, EventPayload, Subscription } from '../event-bus-binding.js';
@@ -27,10 +28,12 @@ import type {
27
28
  } from '../handler-binding.js';
28
29
  import type { Authorizer } from '../middleware/authorize.js';
29
30
  import type { MintPublicRunTokenResult } from '../public-run-token.js';
31
+ import { type RunFailure, runFailure } from '../run-failure.js';
30
32
  import type { AppEnv } from '../types.js';
33
+ import { deniedBy } from './denied.js';
31
34
  import { liveScopeToWire } from './live-scope-wire.js';
32
35
  import type { DecodedCursor } from './pagination.js';
33
- import { clampLimit, decodeCursor } from './pagination.js';
36
+ import { clampLimit, decodeCursor, isCursorTime } from './pagination.js';
34
37
  import { parseListScope } from './scope-params.js';
35
38
  import { parseSegmentsBody } from './segments.js';
36
39
  import {
@@ -60,6 +63,16 @@ export interface RunsRouterOptions {
60
63
  readonly publicRunTokens?: {
61
64
  readonly mint: (tenantId: TenantId, runIds: readonly RunId[]) => MintPublicRunTokenResult;
62
65
  };
66
+ /**
67
+ * Whether the tenant has the agent or flow a run names. With an
68
+ * authorizer, starting a run needs `execute` on an existing target; one
69
+ * that doesn't exist is left to the run handler's 404. Absent: the
70
+ * check always runs.
71
+ */
72
+ readonly targetExists?: (
73
+ tenantId: TenantId,
74
+ target: { readonly kind: 'agent' | 'flow'; readonly id: string },
75
+ ) => Promise<boolean>;
63
76
  }
64
77
 
65
78
  /** How far up the parent chain a public token's grant reaches. */
@@ -88,58 +101,55 @@ export function runsRouter(
88
101
  // Each check resolves the run's project (by run id) and asks the
89
102
  // authorizer about that project:
90
103
  //
91
- // POST / — no route-level check; `execute` on the agent
92
- // or flow is up to the run handler binding.
104
+ // POST / — execute on the agent or flow it names (an
105
+ // existing one; a missing one is the handler's 404)
93
106
  // GET /:runId — read on the run's project
94
107
  // POST /:runId/cancel — write on the run's project
95
- // POST /:runId/resume — execute on the run's project
108
+ // POST /:runId/resume — write on the run's project
96
109
  // GET /:runId/journal — read on the run's project
97
110
  // GET /:runId/stream — read on the run's project
98
- // GET / — list; tenant-scoped, the scope filter narrows
99
- // further (rows are not filtered per permission)
111
+ // GET / — list; rows filtered to `read` on their project
100
112
  if (authorizer !== undefined) {
113
+ // A run that isn't there is the handler's 404: `read` on the tenant
114
+ // (which every reader has) lets it through without masking it. An id
115
+ // that isn't a run id is never looked up (its uuid cast would fail
116
+ // the query as a 500): the route's own 400 answers it.
101
117
  const projectFromRun = async (c: import('hono').Context<AppEnv>) => {
102
118
  const tenantId = c.get('tenantId') as TenantId;
103
119
  const runId = c.req.param('runId') ?? '';
104
- if (runId.length === 0) return ref('tenant', tenantId as unknown as string);
105
- const row = await runBinding.getRun(tenantId, runId as RunId);
106
- if (row === null) {
107
- // Fall back to tenant so the underlying handler surfaces
108
- // 404 rather than the middleware masking it as 403.
109
- return ref('tenant', tenantId as unknown as string);
110
- }
111
- return ref('project', row.projectId as unknown as string);
120
+ const row = UUID_RE.test(runId) ? await runBinding.getRun(tenantId, runId as RunId) : null;
121
+ return row === null
122
+ ? ref('tenant', tenantId as unknown as string)
123
+ : ref('project', row.projectId as unknown as string);
112
124
  };
125
+ const onRunProject =
126
+ (action: 'read' | 'write') =>
127
+ async (c: import('hono').Context<AppEnv>, next: import('hono').Next) => {
128
+ const resource = await projectFromRun(c);
129
+ const mw = authorizer.authorize(
130
+ resource.type === 'tenant' ? 'read' : action,
131
+ () => resource,
132
+ );
133
+ return mw(c, next);
134
+ };
113
135
  r.use('/:runId', async (c, next) => {
114
136
  if (c.req.method !== 'GET') return next();
115
- const mw = authorizer.authorize('read', projectFromRun);
116
- return mw(c, next);
117
- });
118
- r.use('/:runId/journal', async (c, next) => {
119
- const mw = authorizer.authorize('read', projectFromRun);
120
- return mw(c, next);
121
- });
122
- r.use('/:runId/stream', async (c, next) => {
123
- const mw = authorizer.authorize('read', projectFromRun);
124
- return mw(c, next);
137
+ return onRunProject('read')(c, next);
125
138
  });
139
+ r.use('/:runId/journal', onRunProject('read'));
140
+ r.use('/:runId/stream', onRunProject('read'));
126
141
  // Progress: `read` for API tokens. A public run token has no
127
142
  // principal; the handlers check that its grant covers the run.
128
143
  const progressAuth = async (c: import('hono').Context<AppEnv>, next: import('hono').Next) => {
129
144
  if (c.get('tokenKind') === 'public-run') return next();
130
- const mw = authorizer.authorize('read', projectFromRun);
131
- return mw(c, next);
145
+ return onRunProject('read')(c, next);
132
146
  };
133
147
  r.use('/:runId/progress', progressAuth);
134
148
  r.use('/:runId/progress/stream', progressAuth);
135
- r.use('/:runId/cancel', async (c, next) => {
136
- const mw = authorizer.authorize('write', projectFromRun);
137
- return mw(c, next);
138
- });
139
- r.use('/:runId/resume', async (c, next) => {
140
- const mw = authorizer.authorize('execute', projectFromRun);
141
- return mw(c, next);
142
- });
149
+ r.use('/:runId/cancel', onRunProject('write'));
150
+ // As cancel: changing a run is `write` on its project (a project has
151
+ // no `execute`; asking for it refused everyone, T243 A).
152
+ r.use('/:runId/resume', onRunProject('write'));
143
153
  }
144
154
 
145
155
  // ---------- POST / (start a run — agent | flow) ----------
@@ -162,11 +172,46 @@ export function runsRouter(
162
172
  return c.json(toWireError(parsed.error, requestId));
163
173
  }
164
174
 
175
+ const target =
176
+ parsed.value.kind === 'agent'
177
+ ? { kind: 'agent' as const, id: parsed.value.agentId as unknown as string }
178
+ : { kind: 'flow' as const, id: parsed.value.flowId as unknown as string };
179
+ if ((await options.targetExists?.(tenantId, target)) !== false) {
180
+ const refused = await deniedBy(authorizer, c, 'execute', ref(target.kind, target.id));
181
+ if (refused !== undefined) return refused;
182
+ }
183
+ // A run filed under a project the caller names needs `write` on it:
184
+ // the run lands there, readable by that project's viewers (T307).
185
+ // Unnamed, the runtime files it under the conversation's, the agent's
186
+ // or the flow's own project, so a caller who may only run it needs no
187
+ // more, and the refusal says so.
188
+ if (authorizer !== undefined && parsed.value.projectId !== undefined) {
189
+ const named = ref('project', parsed.value.projectId as unknown as string);
190
+ const decision = await authorizer.check(c, 'write', named);
191
+ if (!decision.allowed) {
192
+ const deny = denyPayload('write', named.type, named.id, decision.reason);
193
+ c.status(403);
194
+ return c.json(
195
+ toWireError(
196
+ {
197
+ code: deny.code,
198
+ message: `Permission denied: naming project ${named.id} needs write on it; omit \`projectId\` to run in the ${target.kind}'s own project`,
199
+ action: deny.action,
200
+ resource: deny.resource,
201
+ reason: deny.reason,
202
+ },
203
+ requestId,
204
+ ),
205
+ );
206
+ }
207
+ }
208
+
165
209
  const trace = c.get('trace');
166
210
  const invocation = await invokeFromBody(
167
211
  binding,
168
212
  tenantId,
169
213
  parsed.value,
214
+ c.get('principal') as Principal | undefined,
170
215
  trace !== undefined ? { traceId: trace.traceId, spanId: trace.spanId } : undefined,
171
216
  );
172
217
 
@@ -245,7 +290,7 @@ export function runsRouter(
245
290
  const rawCursor = c.req.query('cursor');
246
291
  if (rawCursor !== undefined && rawCursor.length > 0) {
247
292
  const decoded = decodeCursor(rawCursor);
248
- if (decoded === null) {
293
+ if (decoded === null || !isCursorTime(decoded.createdAt)) {
249
294
  c.status(statusFor('bad-input') as never);
250
295
  return c.json(
251
296
  toWireError({ code: 'bad-input', message: '`cursor` is malformed' }, requestId),
@@ -277,8 +322,14 @@ export function runsRouter(
277
322
  filter: listFilter.value,
278
323
  }),
279
324
  );
325
+ const visible =
326
+ authorizer === undefined
327
+ ? page.data
328
+ : await authorizer.filterByCan(c, 'read', page.data, (row) =>
329
+ ref('project', row.projectId as unknown as string),
330
+ );
280
331
  return c.json({
281
- data: page.data.map((row) => serializeRun(row, { output: includeOutput })),
332
+ data: visible.map((row) => serializeRun(row, { output: includeOutput })),
282
333
  hasMore: page.nextCursor !== undefined,
283
334
  ...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
284
335
  });
@@ -631,10 +682,13 @@ function invokeFromBody(
631
682
  binding: RunHandlerBinding,
632
683
  tenantId: TenantId,
633
684
  body: ParsedStartRunBody,
685
+ principal: Principal | undefined,
634
686
  trace?: RunTrace,
635
687
  ): Promise<RunHandlerOutcome> {
636
688
  const common = {
637
689
  tenantId,
690
+ // Whom the run acts for: the authenticated caller, never the body.
691
+ ...(principal !== undefined && { principal }),
638
692
  ...(trace !== undefined && { trace }),
639
693
  ...(body.projectId !== undefined && { projectId: body.projectId }),
640
694
  input: body.input,
@@ -678,6 +732,7 @@ function serializeRun(
678
732
  updatedAt: row.updatedAt as unknown as string,
679
733
  completedAt: row.completedAt ?? undefined,
680
734
  failureMessage: row.failureMessage ?? undefined,
735
+ ...withFailure(row),
681
736
  ...(opts.output && row.output !== undefined && { output: row.output }),
682
737
  ...(row.parentRunId != null && { parentRunId: row.parentRunId as unknown as string }),
683
738
  ...(row.parentNodeId != null && { parentNodeId: row.parentNodeId as unknown as string }),
@@ -694,7 +749,20 @@ function serializeRun(
694
749
  }),
695
750
  ...(row.replayOf != null && { replayOf: row.replayOf as unknown as string }),
696
751
  ...(row.evalRunId != null && { evalRunId: row.evalRunId }),
752
+ ...(row.trigger !== undefined && {
753
+ trigger: {
754
+ triggerId: row.trigger.triggerId as unknown as string,
755
+ kind: row.trigger.kind,
756
+ fireId: row.trigger.fireId,
757
+ ...(row.trigger.scheduledFor !== undefined && {
758
+ scheduledFor: row.trigger.scheduledFor as unknown as string,
759
+ }),
760
+ },
761
+ }),
697
762
  ...(row.versions != null && { versions: row.versions }),
763
+ ...(row.contentErasedAt !== undefined && {
764
+ contentErasedAt: row.contentErasedAt as unknown as string,
765
+ }),
698
766
  ...(row.segments !== undefined &&
699
767
  row.segments.length > 0 && {
700
768
  segments: row.segments.map(({ key, value }) => ({ key, value })),
@@ -703,6 +771,12 @@ function serializeRun(
703
771
  };
704
772
  }
705
773
 
774
+ /** `failure` on a failed run's wire row: its error, decoded once, here. */
775
+ function withFailure(row: KernelRunRecord): { readonly failure?: RunFailure } {
776
+ const failure = runFailure(row);
777
+ return failure !== undefined ? { failure } : {};
778
+ }
779
+
706
780
  /** A run's progress: status and timing, no data. */
707
781
  function serializeRunProgress(row: KernelRunRecord): Record<string, unknown> {
708
782
  return {
@@ -762,6 +836,7 @@ function listRunsInput(input: {
762
836
  ...(filter.agentId !== undefined && { agentId: filter.agentId }),
763
837
  replays: filter.replays,
764
838
  ...(filter.evalRunId !== undefined && { evalRunId: filter.evalRunId }),
839
+ ...(filter.triggerId !== undefined && { triggerId: filter.triggerId }),
765
840
  };
766
841
  }
767
842
 
@@ -771,6 +846,7 @@ interface RunListFilter {
771
846
  readonly agentId?: string;
772
847
  readonly replays: 'exclude' | 'include' | 'only';
773
848
  readonly evalRunId?: string;
849
+ readonly triggerId?: TriggerId;
774
850
  readonly includeOutput: boolean;
775
851
  }
776
852
 
@@ -778,12 +854,15 @@ interface RunListFilter {
778
854
  * `?parentRunId=` (children of a run), `?topLevel=true`, `?agentId=` (an
779
855
  * agent's turns), `?replays=exclude|include|only` (default `exclude`),
780
856
  * `?evalRunId=` (one eval run's replays; implies they are included),
781
- * `?include=output`.
857
+ * `?triggerId=` (the runs a trigger started), `?include=output`.
782
858
  */
783
859
  function parseRunListFilter(
784
860
  query: Readonly<Record<string, string>>,
785
861
  ): { kind: 'ok'; value: RunListFilter } | { kind: 'err'; message: string } {
786
- const { parentRunId, topLevel, agentId, replays, evalRunId, include } = query;
862
+ const { parentRunId, topLevel, agentId, replays, evalRunId, triggerId, include } = query;
863
+ if (triggerId !== undefined && !UUID_RE.test(triggerId)) {
864
+ return { kind: 'err', message: '`triggerId` must be a trigger id (a UUID)' };
865
+ }
787
866
  if (agentId !== undefined && agentId.trim() === '') {
788
867
  return { kind: 'err', message: '`agentId` must not be empty' };
789
868
  }
@@ -824,6 +903,7 @@ function parseRunListFilter(
824
903
  ...(agentId !== undefined && { agentId }),
825
904
  replays: replays ?? (evalRunId !== undefined ? 'include' : 'exclude'),
826
905
  ...(evalRunId !== undefined && { evalRunId }),
906
+ ...(triggerId !== undefined && { triggerId: triggerId as TriggerId }),
827
907
  includeOutput: includes.includes('output'),
828
908
  },
829
909
  };