@kindgi/api 0.1.4-rc.5 → 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 +92 -13
  112. package/dist/openapi/schemas.d.ts.map +1 -1
  113. package/dist/openapi/schemas.js +2122 -370
  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 +188 -8
  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 +15286 -8653
  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 +2438 -485
  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 +223 -8
  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
@@ -1,15 +1,33 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // Copyright (C) 2026 Kindgi Inc.
3
3
 
4
- import { Hono } from 'hono';
5
-
6
- import type { ArtifactId, Cursor, RunId, TenantId } from '@kindgi/types';
7
-
4
+ import { type ResourceRef, ref } from '@kindgi/authz';
8
5
  import type { BlobFilter, BlobMeta, BlobPutInput, BlobStorageBinding } from '@kindgi/blob-binding';
6
+ import type { ProjectBinding, Scope } from '@kindgi/platform';
7
+ import type { RunBinding } from '@kindgi/runtime';
8
+ import type { ArtifactId, Cursor, ProjectId, RunId, TenantId } from '@kindgi/types';
9
+ import type { Context } from 'hono';
10
+ import { Hono } from 'hono';
11
+ import { bodyLimit } from 'hono/body-limit';
9
12
  import { statusFor, toWireError } from '../errors.js';
13
+ import type { Authorizer } from '../middleware/authorize.js';
10
14
  import type { AppEnv } from '../types.js';
11
15
  import { clampLimit } from './pagination.js';
12
16
 
17
+ /** The default upload cap: 100 MB. */
18
+ export const DEFAULT_ARTIFACT_MAX_BYTES = 100 * 1024 * 1024;
19
+
20
+ export interface ArtifactsRouterDeps {
21
+ /** Resolves an upload's owner run, whose project the artifact belongs to. */
22
+ readonly runBinding?: RunBinding;
23
+ /** The tenant's default project, for an upload that names neither run nor project. */
24
+ readonly projectBinding?: ProjectBinding;
25
+ /** Reads need `read` on the artifact's project; uploads and deletes need `write`. */
26
+ readonly authorizer?: Authorizer;
27
+ /** The most bytes an upload may carry (default 100 MB); more is `413 artifact-too-large`. */
28
+ readonly maxBytes?: number;
29
+ }
30
+
13
31
  /**
14
32
  * Artifacts resource routes over the caller-plugged, tenant-scoped
15
33
  * `BlobStorageBinding` (from `@kindgi/blob-binding`). Five routes:
@@ -28,10 +46,29 @@ import { clampLimit } from './pagination.js';
28
46
  * that run's project is the authoritative scope anchor, so scope
29
47
  * filtering goes through runs rather than a field on the blob metadata.
30
48
  * Callers who want scope-narrowed artifacts should first list runs at
31
- * the desired scope, then list artifacts by `?ownerRunId=`.
49
+ * the desired scope, then list artifacts by `?ownerRunId=`, or by
50
+ * `?projectId=`.
51
+ *
52
+ * Every artifact belongs to a project: its owner run's, else the
53
+ * upload's `projectId`, else the tenant's default project. With an
54
+ * authorizer, listing and downloading need `read` there (an artifact the
55
+ * caller can't read is `404`, as if absent), and uploading and deleting
56
+ * need `write`. An upload over `maxBytes` is `413 artifact-too-large`.
32
57
  */
33
- export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
58
+ export function artifactsRouter(
59
+ binding: BlobStorageBinding,
60
+ deps: ArtifactsRouterDeps = {},
61
+ ): Hono<AppEnv> {
34
62
  const r = new Hono<AppEnv>();
63
+ const { authorizer } = deps;
64
+ const maxBytes = deps.maxBytes ?? DEFAULT_ARTIFACT_MAX_BYTES;
65
+ /** The artifact's project; a blob stored before projects were recorded answers to the tenant. */
66
+ const scopeOf = (c: Context<AppEnv>, m: BlobMeta): ResourceRef =>
67
+ m.projectId !== undefined
68
+ ? ref('project', m.projectId as unknown as string)
69
+ : ref('tenant', c.get('tenantId') as unknown as string);
70
+ const may = async (c: Context<AppEnv>, action: 'read' | 'write', m: BlobMeta) =>
71
+ authorizer === undefined || (await authorizer.can(c, action, scopeOf(c, m)));
35
72
 
36
73
  // ---------- GET / (list, cursor-paginated metadata) ----------
37
74
  r.get('/', async (c) => {
@@ -39,7 +76,7 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
39
76
  const tenantId = c.get('tenantId') as TenantId;
40
77
  const limit = clampLimit(c.req.query('limit'));
41
78
 
42
- const filter = decodeListFilter(new URL(c.req.url).searchParams);
79
+ const filter = decodeListFilter(new URL(c.req.url).searchParams, tenantId);
43
80
  if (filter.kind === 'err') {
44
81
  c.status(statusFor('bad-input') as never);
45
82
  return c.json(toWireError({ code: 'bad-input', message: filter.message }, requestId));
@@ -56,8 +93,12 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
56
93
  c.status(statusFor(page.error.code) as never);
57
94
  return c.json(toWireError(page.error as never, requestId));
58
95
  }
96
+ const visible =
97
+ authorizer === undefined
98
+ ? page.value.data
99
+ : await authorizer.filterByCan(c, 'read', page.value.data, (m) => scopeOf(c, m));
59
100
  return c.json({
60
- data: page.value.data.map(serializeMeta),
101
+ data: visible.map(serializeMeta),
61
102
  hasMore: page.value.nextCursor !== undefined,
62
103
  ...(page.value.nextCursor !== undefined && {
63
104
  nextCursor: page.value.nextCursor as unknown as string,
@@ -66,6 +107,25 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
66
107
  });
67
108
 
68
109
  // ---------- POST / (multipart upload) ----------
110
+ r.post(
111
+ '/',
112
+ bodyLimit({
113
+ maxSize: maxBytes,
114
+ onError: (c) => {
115
+ c.status(statusFor('artifact-too-large') as never);
116
+ return c.json(
117
+ toWireError(
118
+ {
119
+ code: 'artifact-too-large',
120
+ message: `An artifact may be at most ${maxBytes} bytes`,
121
+ maxBytes,
122
+ },
123
+ c.get('requestId'),
124
+ ),
125
+ );
126
+ },
127
+ }),
128
+ );
69
129
  r.post('/', async (c) => {
70
130
  const requestId = c.get('requestId');
71
131
  const tenantId = c.get('tenantId') as TenantId;
@@ -99,7 +159,35 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
99
159
  c.status(statusFor('bad-input') as never);
100
160
  return c.json(toWireError({ code: 'bad-input', message: validated.message }, requestId));
101
161
  }
102
- const input = validated.value;
162
+ const project = await uploadProject(c, deps, validated.value);
163
+ if (project.kind === 'err') {
164
+ c.status(statusFor(project.code) as never);
165
+ return c.json(toWireError({ code: project.code, message: project.message }, requestId));
166
+ }
167
+ if (
168
+ authorizer !== undefined &&
169
+ !(await authorizer.can(
170
+ c,
171
+ 'write',
172
+ project.projectId !== undefined
173
+ ? ref('project', project.projectId as unknown as string)
174
+ : ref('tenant', tenantId as unknown as string),
175
+ ))
176
+ ) {
177
+ c.status(statusFor('permission-denied') as never);
178
+ return c.json(
179
+ toWireError(
180
+ { code: 'permission-denied', message: 'Not allowed to add artifacts to this project' },
181
+ requestId,
182
+ ),
183
+ );
184
+ }
185
+ const userId = c.get('userId') as unknown as string | undefined;
186
+ const input: BlobPutInput = {
187
+ ...validated.value,
188
+ ...(project.projectId !== undefined && { projectId: project.projectId }),
189
+ ...(userId !== undefined && { createdBy: `user:${userId}` }),
190
+ };
103
191
 
104
192
  const outcome = await binding.put(tenantId, input);
105
193
  if (outcome.kind === 'err') {
@@ -116,6 +204,8 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
116
204
  const tenantId = c.get('tenantId') as TenantId;
117
205
  const blobId = c.req.param('blobId') as ArtifactId;
118
206
 
207
+ const found = await binding.head(tenantId, blobId);
208
+ if (found === null || !(await may(c, 'read', found))) return notFound(c, blobId);
119
209
  const outcome = await binding.get(tenantId, blobId);
120
210
  if (outcome.kind === 'err') {
121
211
  c.status(statusFor(outcome.error.code) as never);
@@ -135,7 +225,7 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
135
225
  const blobId = c.req.param('blobId') as ArtifactId;
136
226
 
137
227
  const meta = await binding.head(tenantId, blobId);
138
- if (meta === null) {
228
+ if (meta === null || !(await may(c, 'read', meta))) {
139
229
  return new Response(null, {
140
230
  status: 404,
141
231
  headers: { 'X-Request-Id': requestId },
@@ -153,6 +243,19 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
153
243
  const tenantId = c.get('tenantId') as TenantId;
154
244
  const blobId = c.req.param('blobId') as ArtifactId;
155
245
 
246
+ const found = await binding.head(tenantId, blobId);
247
+ if (found !== null) {
248
+ if (!(await may(c, 'read', found))) return notFound(c, blobId);
249
+ if (!(await may(c, 'write', found))) {
250
+ c.status(statusFor('permission-denied') as never);
251
+ return c.json(
252
+ toWireError(
253
+ { code: 'permission-denied', message: `Not allowed to delete artifact "${blobId}"` },
254
+ requestId,
255
+ ),
256
+ );
257
+ }
258
+ }
156
259
  const outcome = await binding.delete(tenantId, blobId);
157
260
  if (outcome.kind === 'err') {
158
261
  c.status(statusFor(outcome.error.code) as never);
@@ -167,6 +270,56 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
167
270
  return r;
168
271
  }
169
272
 
273
+ function notFound(c: Context<AppEnv>, blobId: string) {
274
+ c.status(statusFor('blob-not-found') as never);
275
+ return c.json(
276
+ toWireError(
277
+ { code: 'blob-not-found', message: `No artifact "${blobId}"`, blobId },
278
+ c.get('requestId'),
279
+ ),
280
+ );
281
+ }
282
+
283
+ type UploadProject =
284
+ | { readonly kind: 'ok'; readonly projectId?: ProjectId }
285
+ | { readonly kind: 'err'; readonly code: string; readonly message: string };
286
+
287
+ /**
288
+ * The project an upload belongs to: its owner run's (the upload's
289
+ * `projectId`, if any, must agree), else the upload's `projectId`, else
290
+ * the tenant's default project.
291
+ */
292
+ async function uploadProject(
293
+ c: Context<AppEnv>,
294
+ deps: ArtifactsRouterDeps,
295
+ input: BlobPutInput,
296
+ ): Promise<UploadProject> {
297
+ const tenantId = c.get('tenantId') as TenantId;
298
+ const named = input.projectId;
299
+ if (input.ownerRunId !== undefined && deps.runBinding !== undefined) {
300
+ const run = await deps.runBinding.getRun(tenantId, input.ownerRunId);
301
+ if (run === null) {
302
+ return {
303
+ kind: 'err',
304
+ code: 'run-not-found',
305
+ message: `No run "${input.ownerRunId as unknown as string}"`,
306
+ };
307
+ }
308
+ const runProject = run.projectId as unknown as ProjectId;
309
+ if (named !== undefined && named !== runProject) {
310
+ return {
311
+ kind: 'err',
312
+ code: 'bad-input',
313
+ message: `\`projectId\` must be the owner run's project ("${runProject as unknown as string}"), or absent`,
314
+ };
315
+ }
316
+ return { kind: 'ok', projectId: runProject };
317
+ }
318
+ if (named !== undefined) return { kind: 'ok', projectId: named };
319
+ const fallback = (await deps.projectBinding?.getDefault(tenantId))?.id;
320
+ return { kind: 'ok', ...(fallback !== undefined && { projectId: fallback }) };
321
+ }
322
+
170
323
  // -------------------- serialization --------------------
171
324
 
172
325
  function serializeMeta(m: BlobMeta): Record<string, unknown> {
@@ -179,6 +332,8 @@ function serializeMeta(m: BlobMeta): Record<string, unknown> {
179
332
  hash: m.hash,
180
333
  tags: m.tags,
181
334
  ...(m.ownerRunId !== undefined && { ownerRunId: m.ownerRunId as unknown as string }),
335
+ ...(m.projectId !== undefined && { projectId: m.projectId as unknown as string }),
336
+ ...(m.createdBy !== undefined && { createdBy: m.createdBy }),
182
337
  createdAt: m.createdAt as unknown as string,
183
338
  ...(m.bucket !== undefined && { bucket: m.bucket }),
184
339
  ...(m.key !== undefined && { key: m.key }),
@@ -260,6 +415,12 @@ function validateMultipart(form: FormData): ValidationResult<BlobPutInput> {
260
415
  ownerRunId = ownerField as RunId;
261
416
  }
262
417
 
418
+ let projectId: ProjectId | undefined;
419
+ const projectField = form.get('projectId');
420
+ if (typeof projectField === 'string' && projectField.length > 0) {
421
+ projectId = projectField as ProjectId;
422
+ }
423
+
263
424
  let expectedHash: string | undefined;
264
425
  const hashField = form.get('expectedHash');
265
426
  if (typeof hashField === 'string' && hashField.length > 0) {
@@ -281,16 +442,21 @@ function validateMultipart(form: FormData): ValidationResult<BlobPutInput> {
281
442
  size: file.size,
282
443
  ...(tags !== undefined && { tags }),
283
444
  ...(ownerRunId !== undefined && { ownerRunId }),
445
+ ...(projectId !== undefined && { projectId }),
284
446
  ...(expectedHash !== undefined && { expectedHash }),
285
447
  },
286
448
  };
287
449
  }
288
450
 
289
- function decodeListFilter(params: URLSearchParams): ValidationResult<BlobFilter> {
451
+ function decodeListFilter(
452
+ params: URLSearchParams,
453
+ tenantId: TenantId,
454
+ ): ValidationResult<BlobFilter> {
290
455
  const filter: {
291
456
  ownerRunId?: RunId;
292
457
  contentType?: string;
293
458
  tags?: Record<string, string>;
459
+ scope?: Scope;
294
460
  } = {};
295
461
  const rawTags: Record<string, string> = {};
296
462
  for (const [key, value] of params.entries()) {
@@ -303,6 +469,10 @@ function decodeListFilter(params: URLSearchParams): ValidationResult<BlobFilter>
303
469
  filter.contentType = value;
304
470
  continue;
305
471
  }
472
+ if (key === 'projectId') {
473
+ filter.scope = { kind: 'project', tenantId, projectId: value as ProjectId };
474
+ continue;
475
+ }
306
476
  if (key.startsWith('tag.')) {
307
477
  const tagKey = key.slice('tag.'.length);
308
478
  if (tagKey.length === 0) {