@kindgi/api 0.0.0-bootstrap.0 → 0.1.1

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 (505) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +216 -1
  3. package/dist/adapter-binding.d.ts +177 -0
  4. package/dist/adapter-binding.d.ts.map +1 -0
  5. package/dist/adapter-binding.js +12 -0
  6. package/dist/adapter-binding.js.map +1 -0
  7. package/dist/agent-binding.d.ts +207 -0
  8. package/dist/agent-binding.d.ts.map +1 -0
  9. package/dist/agent-binding.js +4 -0
  10. package/dist/agent-binding.js.map +1 -0
  11. package/dist/app.d.ts +770 -0
  12. package/dist/app.d.ts.map +1 -0
  13. package/dist/app.js +397 -0
  14. package/dist/app.js.map +1 -0
  15. package/dist/capability-binding.d.ts +76 -0
  16. package/dist/capability-binding.d.ts.map +1 -0
  17. package/dist/capability-binding.js +4 -0
  18. package/dist/capability-binding.js.map +1 -0
  19. package/dist/cost-binding.d.ts +175 -0
  20. package/dist/cost-binding.d.ts.map +1 -0
  21. package/dist/cost-binding.js +13 -0
  22. package/dist/cost-binding.js.map +1 -0
  23. package/dist/deployment-binding.d.ts +201 -0
  24. package/dist/deployment-binding.d.ts.map +1 -0
  25. package/dist/deployment-binding.js +4 -0
  26. package/dist/deployment-binding.js.map +1 -0
  27. package/dist/env-binding.d.ts +132 -0
  28. package/dist/env-binding.d.ts.map +1 -0
  29. package/dist/env-binding.js +4 -0
  30. package/dist/env-binding.js.map +1 -0
  31. package/dist/errors.d.ts +37 -0
  32. package/dist/errors.d.ts.map +1 -0
  33. package/dist/errors.js +268 -0
  34. package/dist/errors.js.map +1 -0
  35. package/dist/eval-run-binding.d.ts +196 -0
  36. package/dist/eval-run-binding.d.ts.map +1 -0
  37. package/dist/eval-run-binding.js +16 -0
  38. package/dist/eval-run-binding.js.map +1 -0
  39. package/dist/eval-run-dispatcher.d.ts +131 -0
  40. package/dist/eval-run-dispatcher.d.ts.map +1 -0
  41. package/dist/eval-run-dispatcher.js +368 -0
  42. package/dist/eval-run-dispatcher.js.map +1 -0
  43. package/dist/eval-suite-binding.d.ts +227 -0
  44. package/dist/eval-suite-binding.d.ts.map +1 -0
  45. package/dist/eval-suite-binding.js +24 -0
  46. package/dist/eval-suite-binding.js.map +1 -0
  47. package/dist/event-bus-binding.d.ts +107 -0
  48. package/dist/event-bus-binding.d.ts.map +1 -0
  49. package/dist/event-bus-binding.js +5 -0
  50. package/dist/event-bus-binding.js.map +1 -0
  51. package/dist/flow-binding.d.ts +194 -0
  52. package/dist/flow-binding.d.ts.map +1 -0
  53. package/dist/flow-binding.js +4 -0
  54. package/dist/flow-binding.js.map +1 -0
  55. package/dist/guardrail-binding.d.ts +138 -0
  56. package/dist/guardrail-binding.d.ts.map +1 -0
  57. package/dist/guardrail-binding.js +4 -0
  58. package/dist/guardrail-binding.js.map +1 -0
  59. package/dist/handler-binding.d.ts +126 -0
  60. package/dist/handler-binding.d.ts.map +1 -0
  61. package/dist/handler-binding.js +4 -0
  62. package/dist/handler-binding.js.map +1 -0
  63. package/dist/hitl-binding.d.ts +115 -0
  64. package/dist/hitl-binding.d.ts.map +1 -0
  65. package/dist/hitl-binding.js +4 -0
  66. package/dist/hitl-binding.js.map +1 -0
  67. package/dist/identity-directory-binding.d.ts +116 -0
  68. package/dist/identity-directory-binding.d.ts.map +1 -0
  69. package/dist/identity-directory-binding.js +4 -0
  70. package/dist/identity-directory-binding.js.map +1 -0
  71. package/dist/identity-provider-binding.d.ts +184 -0
  72. package/dist/identity-provider-binding.d.ts.map +1 -0
  73. package/dist/identity-provider-binding.js +4 -0
  74. package/dist/identity-provider-binding.js.map +1 -0
  75. package/dist/image-registry-binding.d.ts +165 -0
  76. package/dist/image-registry-binding.d.ts.map +1 -0
  77. package/dist/image-registry-binding.js +4 -0
  78. package/dist/image-registry-binding.js.map +1 -0
  79. package/dist/index.d.ts +72 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +26 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/key-management-binding.d.ts +101 -0
  84. package/dist/key-management-binding.d.ts.map +1 -0
  85. package/dist/key-management-binding.js +4 -0
  86. package/dist/key-management-binding.js.map +1 -0
  87. package/dist/mcp-endpoint-binding.d.ts +312 -0
  88. package/dist/mcp-endpoint-binding.d.ts.map +1 -0
  89. package/dist/mcp-endpoint-binding.js +12 -0
  90. package/dist/mcp-endpoint-binding.js.map +1 -0
  91. package/dist/memory-binding.d.ts +209 -0
  92. package/dist/memory-binding.d.ts.map +1 -0
  93. package/dist/memory-binding.js +4 -0
  94. package/dist/memory-binding.js.map +1 -0
  95. package/dist/middleware/auth.d.ts +168 -0
  96. package/dist/middleware/auth.d.ts.map +1 -0
  97. package/dist/middleware/auth.js +247 -0
  98. package/dist/middleware/auth.js.map +1 -0
  99. package/dist/middleware/authorize.d.ts +26 -0
  100. package/dist/middleware/authorize.d.ts.map +1 -0
  101. package/dist/middleware/authorize.js +65 -0
  102. package/dist/middleware/authorize.js.map +1 -0
  103. package/dist/middleware/error-mapper.d.ts +20 -0
  104. package/dist/middleware/error-mapper.d.ts.map +1 -0
  105. package/dist/middleware/error-mapper.js +34 -0
  106. package/dist/middleware/error-mapper.js.map +1 -0
  107. package/dist/middleware/idempotency.d.ts +43 -0
  108. package/dist/middleware/idempotency.d.ts.map +1 -0
  109. package/dist/middleware/idempotency.js +118 -0
  110. package/dist/middleware/idempotency.js.map +1 -0
  111. package/dist/middleware/principal.d.ts +4 -0
  112. package/dist/middleware/principal.d.ts.map +1 -0
  113. package/dist/middleware/principal.js +42 -0
  114. package/dist/middleware/principal.js.map +1 -0
  115. package/dist/middleware/public-run-routes.d.ts +16 -0
  116. package/dist/middleware/public-run-routes.d.ts.map +1 -0
  117. package/dist/middleware/public-run-routes.js +43 -0
  118. package/dist/middleware/public-run-routes.js.map +1 -0
  119. package/dist/middleware/request-id.d.ts +14 -0
  120. package/dist/middleware/request-id.d.ts.map +1 -0
  121. package/dist/middleware/request-id.js +24 -0
  122. package/dist/middleware/request-id.js.map +1 -0
  123. package/dist/middleware/sigv4-verify.d.ts +64 -0
  124. package/dist/middleware/sigv4-verify.d.ts.map +1 -0
  125. package/dist/middleware/sigv4-verify.js +286 -0
  126. package/dist/middleware/sigv4-verify.js.map +1 -0
  127. package/dist/middleware/sigv4.d.ts +25 -0
  128. package/dist/middleware/sigv4.d.ts.map +1 -0
  129. package/dist/middleware/sigv4.js +120 -0
  130. package/dist/middleware/sigv4.js.map +1 -0
  131. package/dist/openapi/generate.d.ts +15 -0
  132. package/dist/openapi/generate.d.ts.map +1 -0
  133. package/dist/openapi/generate.js +241 -0
  134. package/dist/openapi/generate.js.map +1 -0
  135. package/dist/openapi/operations.d.ts +70 -0
  136. package/dist/openapi/operations.d.ts.map +1 -0
  137. package/dist/openapi/operations.js +5050 -0
  138. package/dist/openapi/operations.js.map +1 -0
  139. package/dist/openapi/schemas.d.ts +590 -0
  140. package/dist/openapi/schemas.d.ts.map +1 -0
  141. package/dist/openapi/schemas.js +5820 -0
  142. package/dist/openapi/schemas.js.map +1 -0
  143. package/dist/provenance-binding.d.ts +116 -0
  144. package/dist/provenance-binding.d.ts.map +1 -0
  145. package/dist/provenance-binding.js +31 -0
  146. package/dist/provenance-binding.js.map +1 -0
  147. package/dist/provider-binding.d.ts +174 -0
  148. package/dist/provider-binding.d.ts.map +1 -0
  149. package/dist/provider-binding.js +4 -0
  150. package/dist/provider-binding.js.map +1 -0
  151. package/dist/public-run-token.d.ts +97 -0
  152. package/dist/public-run-token.d.ts.map +1 -0
  153. package/dist/public-run-token.js +167 -0
  154. package/dist/public-run-token.js.map +1 -0
  155. package/dist/retention-binding.d.ts +69 -0
  156. package/dist/retention-binding.d.ts.map +1 -0
  157. package/dist/retention-binding.js +4 -0
  158. package/dist/retention-binding.js.map +1 -0
  159. package/dist/reviewer-binding.d.ts +84 -0
  160. package/dist/reviewer-binding.d.ts.map +1 -0
  161. package/dist/reviewer-binding.js +4 -0
  162. package/dist/reviewer-binding.js.map +1 -0
  163. package/dist/rotation-status-store.d.ts +96 -0
  164. package/dist/rotation-status-store.d.ts.map +1 -0
  165. package/dist/rotation-status-store.js +106 -0
  166. package/dist/rotation-status-store.js.map +1 -0
  167. package/dist/routes/adapters.d.ts +29 -0
  168. package/dist/routes/adapters.d.ts.map +1 -0
  169. package/dist/routes/adapters.js +230 -0
  170. package/dist/routes/adapters.js.map +1 -0
  171. package/dist/routes/agents.d.ts +17 -0
  172. package/dist/routes/agents.d.ts.map +1 -0
  173. package/dist/routes/agents.js +342 -0
  174. package/dist/routes/agents.js.map +1 -0
  175. package/dist/routes/approvals.d.ts +37 -0
  176. package/dist/routes/approvals.d.ts.map +1 -0
  177. package/dist/routes/approvals.js +551 -0
  178. package/dist/routes/approvals.js.map +1 -0
  179. package/dist/routes/artifacts.d.ts +25 -0
  180. package/dist/routes/artifacts.d.ts.map +1 -0
  181. package/dist/routes/artifacts.js +265 -0
  182. package/dist/routes/artifacts.js.map +1 -0
  183. package/dist/routes/audit.d.ts +6 -0
  184. package/dist/routes/audit.d.ts.map +1 -0
  185. package/dist/routes/audit.js +162 -0
  186. package/dist/routes/audit.js.map +1 -0
  187. package/dist/routes/auth.d.ts +47 -0
  188. package/dist/routes/auth.d.ts.map +1 -0
  189. package/dist/routes/auth.js +630 -0
  190. package/dist/routes/auth.js.map +1 -0
  191. package/dist/routes/capabilities.d.ts +14 -0
  192. package/dist/routes/capabilities.d.ts.map +1 -0
  193. package/dist/routes/capabilities.js +62 -0
  194. package/dist/routes/capabilities.js.map +1 -0
  195. package/dist/routes/compliance.d.ts +37 -0
  196. package/dist/routes/compliance.d.ts.map +1 -0
  197. package/dist/routes/compliance.js +321 -0
  198. package/dist/routes/compliance.js.map +1 -0
  199. package/dist/routes/conversations.d.ts +13 -0
  200. package/dist/routes/conversations.d.ts.map +1 -0
  201. package/dist/routes/conversations.js +295 -0
  202. package/dist/routes/conversations.js.map +1 -0
  203. package/dist/routes/cost.d.ts +24 -0
  204. package/dist/routes/cost.d.ts.map +1 -0
  205. package/dist/routes/cost.js +243 -0
  206. package/dist/routes/cost.js.map +1 -0
  207. package/dist/routes/deployments.d.ts +122 -0
  208. package/dist/routes/deployments.d.ts.map +1 -0
  209. package/dist/routes/deployments.js +1036 -0
  210. package/dist/routes/deployments.js.map +1 -0
  211. package/dist/routes/env.d.ts +62 -0
  212. package/dist/routes/env.d.ts.map +1 -0
  213. package/dist/routes/env.js +311 -0
  214. package/dist/routes/env.js.map +1 -0
  215. package/dist/routes/eval-runs.d.ts +28 -0
  216. package/dist/routes/eval-runs.d.ts.map +1 -0
  217. package/dist/routes/eval-runs.js +479 -0
  218. package/dist/routes/eval-runs.js.map +1 -0
  219. package/dist/routes/eval-suites.d.ts +24 -0
  220. package/dist/routes/eval-suites.d.ts.map +1 -0
  221. package/dist/routes/eval-suites.js +381 -0
  222. package/dist/routes/eval-suites.js.map +1 -0
  223. package/dist/routes/event-triggers.d.ts +12 -0
  224. package/dist/routes/event-triggers.d.ts.map +1 -0
  225. package/dist/routes/event-triggers.js +218 -0
  226. package/dist/routes/event-triggers.js.map +1 -0
  227. package/dist/routes/flows.d.ts +23 -0
  228. package/dist/routes/flows.d.ts.map +1 -0
  229. package/dist/routes/flows.js +344 -0
  230. package/dist/routes/flows.js.map +1 -0
  231. package/dist/routes/guardrails.d.ts +33 -0
  232. package/dist/routes/guardrails.d.ts.map +1 -0
  233. package/dist/routes/guardrails.js +236 -0
  234. package/dist/routes/guardrails.js.map +1 -0
  235. package/dist/routes/identity.d.ts +39 -0
  236. package/dist/routes/identity.d.ts.map +1 -0
  237. package/dist/routes/identity.js +138 -0
  238. package/dist/routes/identity.js.map +1 -0
  239. package/dist/routes/mcp.d.ts +23 -0
  240. package/dist/routes/mcp.d.ts.map +1 -0
  241. package/dist/routes/mcp.js +727 -0
  242. package/dist/routes/mcp.js.map +1 -0
  243. package/dist/routes/memory.d.ts +16 -0
  244. package/dist/routes/memory.d.ts.map +1 -0
  245. package/dist/routes/memory.js +353 -0
  246. package/dist/routes/memory.js.map +1 -0
  247. package/dist/routes/observations.d.ts +19 -0
  248. package/dist/routes/observations.d.ts.map +1 -0
  249. package/dist/routes/observations.js +135 -0
  250. package/dist/routes/observations.js.map +1 -0
  251. package/dist/routes/orgs.d.ts +24 -0
  252. package/dist/routes/orgs.d.ts.map +1 -0
  253. package/dist/routes/orgs.js +208 -0
  254. package/dist/routes/orgs.js.map +1 -0
  255. package/dist/routes/pagination.d.ts +18 -0
  256. package/dist/routes/pagination.d.ts.map +1 -0
  257. package/dist/routes/pagination.js +35 -0
  258. package/dist/routes/pagination.js.map +1 -0
  259. package/dist/routes/policies.d.ts +23 -0
  260. package/dist/routes/policies.d.ts.map +1 -0
  261. package/dist/routes/policies.js +314 -0
  262. package/dist/routes/policies.js.map +1 -0
  263. package/dist/routes/projects.d.ts +45 -0
  264. package/dist/routes/projects.d.ts.map +1 -0
  265. package/dist/routes/projects.js +485 -0
  266. package/dist/routes/projects.js.map +1 -0
  267. package/dist/routes/proposals.d.ts +24 -0
  268. package/dist/routes/proposals.d.ts.map +1 -0
  269. package/dist/routes/proposals.js +581 -0
  270. package/dist/routes/proposals.js.map +1 -0
  271. package/dist/routes/provenance.d.ts +34 -0
  272. package/dist/routes/provenance.d.ts.map +1 -0
  273. package/dist/routes/provenance.js +274 -0
  274. package/dist/routes/provenance.js.map +1 -0
  275. package/dist/routes/providers.d.ts +32 -0
  276. package/dist/routes/providers.d.ts.map +1 -0
  277. package/dist/routes/providers.js +490 -0
  278. package/dist/routes/providers.js.map +1 -0
  279. package/dist/routes/public-run-tokens.d.ts +17 -0
  280. package/dist/routes/public-run-tokens.d.ts.map +1 -0
  281. package/dist/routes/public-run-tokens.js +69 -0
  282. package/dist/routes/public-run-tokens.js.map +1 -0
  283. package/dist/routes/retention.d.ts +19 -0
  284. package/dist/routes/retention.d.ts.map +1 -0
  285. package/dist/routes/retention.js +152 -0
  286. package/dist/routes/retention.js.map +1 -0
  287. package/dist/routes/reviewers.d.ts +5 -0
  288. package/dist/routes/reviewers.d.ts.map +1 -0
  289. package/dist/routes/reviewers.js +161 -0
  290. package/dist/routes/reviewers.js.map +1 -0
  291. package/dist/routes/runs.d.ts +34 -0
  292. package/dist/routes/runs.d.ts.map +1 -0
  293. package/dist/routes/runs.js +705 -0
  294. package/dist/routes/runs.js.map +1 -0
  295. package/dist/routes/s3.d.ts +31 -0
  296. package/dist/routes/s3.d.ts.map +1 -0
  297. package/dist/routes/s3.js +433 -0
  298. package/dist/routes/s3.js.map +1 -0
  299. package/dist/routes/schedules.d.ts +20 -0
  300. package/dist/routes/schedules.d.ts.map +1 -0
  301. package/dist/routes/schedules.js +234 -0
  302. package/dist/routes/schedules.js.map +1 -0
  303. package/dist/routes/scope-params.d.ts +57 -0
  304. package/dist/routes/scope-params.d.ts.map +1 -0
  305. package/dist/routes/scope-params.js +105 -0
  306. package/dist/routes/scope-params.js.map +1 -0
  307. package/dist/routes/secret-ref.d.ts +20 -0
  308. package/dist/routes/secret-ref.d.ts.map +1 -0
  309. package/dist/routes/secret-ref.js +42 -0
  310. package/dist/routes/secret-ref.js.map +1 -0
  311. package/dist/routes/secrets.d.ts +53 -0
  312. package/dist/routes/secrets.d.ts.map +1 -0
  313. package/dist/routes/secrets.js +715 -0
  314. package/dist/routes/secrets.js.map +1 -0
  315. package/dist/routes/signing-keys.d.ts +23 -0
  316. package/dist/routes/signing-keys.d.ts.map +1 -0
  317. package/dist/routes/signing-keys.js +212 -0
  318. package/dist/routes/signing-keys.js.map +1 -0
  319. package/dist/routes/sse.d.ts +58 -0
  320. package/dist/routes/sse.d.ts.map +1 -0
  321. package/dist/routes/sse.js +92 -0
  322. package/dist/routes/sse.js.map +1 -0
  323. package/dist/routes/teams.d.ts +30 -0
  324. package/dist/routes/teams.d.ts.map +1 -0
  325. package/dist/routes/teams.js +443 -0
  326. package/dist/routes/teams.js.map +1 -0
  327. package/dist/routes/tenant.d.ts +57 -0
  328. package/dist/routes/tenant.d.ts.map +1 -0
  329. package/dist/routes/tenant.js +352 -0
  330. package/dist/routes/tenant.js.map +1 -0
  331. package/dist/routes/tokens.d.ts +14 -0
  332. package/dist/routes/tokens.d.ts.map +1 -0
  333. package/dist/routes/tokens.js +231 -0
  334. package/dist/routes/tokens.js.map +1 -0
  335. package/dist/routes/tools.d.ts +33 -0
  336. package/dist/routes/tools.d.ts.map +1 -0
  337. package/dist/routes/tools.js +380 -0
  338. package/dist/routes/tools.js.map +1 -0
  339. package/dist/routes/webhook-endpoints.d.ts +10 -0
  340. package/dist/routes/webhook-endpoints.d.ts.map +1 -0
  341. package/dist/routes/webhook-endpoints.js +407 -0
  342. package/dist/routes/webhook-endpoints.js.map +1 -0
  343. package/dist/routes/webhooks.d.ts +21 -0
  344. package/dist/routes/webhooks.d.ts.map +1 -0
  345. package/dist/routes/webhooks.js +228 -0
  346. package/dist/routes/webhooks.js.map +1 -0
  347. package/dist/s3-credential-binding.d.ts +54 -0
  348. package/dist/s3-credential-binding.d.ts.map +1 -0
  349. package/dist/s3-credential-binding.js +4 -0
  350. package/dist/s3-credential-binding.js.map +1 -0
  351. package/dist/secrets-binding.d.ts +281 -0
  352. package/dist/secrets-binding.d.ts.map +1 -0
  353. package/dist/secrets-binding.js +10 -0
  354. package/dist/secrets-binding.js.map +1 -0
  355. package/dist/secrets-provider-binding.d.ts +164 -0
  356. package/dist/secrets-provider-binding.d.ts.map +1 -0
  357. package/dist/secrets-provider-binding.js +4 -0
  358. package/dist/secrets-provider-binding.js.map +1 -0
  359. package/dist/session-store-binding.d.ts +148 -0
  360. package/dist/session-store-binding.d.ts.map +1 -0
  361. package/dist/session-store-binding.js +4 -0
  362. package/dist/session-store-binding.js.map +1 -0
  363. package/dist/signing-key-binding.d.ts +210 -0
  364. package/dist/signing-key-binding.d.ts.map +1 -0
  365. package/dist/signing-key-binding.js +4 -0
  366. package/dist/signing-key-binding.js.map +1 -0
  367. package/dist/state-store-binding.d.ts +53 -0
  368. package/dist/state-store-binding.d.ts.map +1 -0
  369. package/dist/state-store-binding.js +38 -0
  370. package/dist/state-store-binding.js.map +1 -0
  371. package/dist/supervisor-binding.d.ts +526 -0
  372. package/dist/supervisor-binding.d.ts.map +1 -0
  373. package/dist/supervisor-binding.js +4 -0
  374. package/dist/supervisor-binding.js.map +1 -0
  375. package/dist/tenant-host-access.d.ts +41 -0
  376. package/dist/tenant-host-access.d.ts.map +1 -0
  377. package/dist/tenant-host-access.js +42 -0
  378. package/dist/tenant-host-access.js.map +1 -0
  379. package/dist/token-admin.d.ts +99 -0
  380. package/dist/token-admin.d.ts.map +1 -0
  381. package/dist/token-admin.js +4 -0
  382. package/dist/token-admin.js.map +1 -0
  383. package/dist/tool-binding.d.ts +247 -0
  384. package/dist/tool-binding.d.ts.map +1 -0
  385. package/dist/tool-binding.js +4 -0
  386. package/dist/tool-binding.js.map +1 -0
  387. package/dist/trigger-binding.d.ts +13 -0
  388. package/dist/trigger-binding.d.ts.map +1 -0
  389. package/dist/trigger-binding.js +4 -0
  390. package/dist/trigger-binding.js.map +1 -0
  391. package/dist/types.d.ts +71 -0
  392. package/dist/types.d.ts.map +1 -0
  393. package/dist/types.js +4 -0
  394. package/dist/types.js.map +1 -0
  395. package/dist/webhook-endpoint-binding.d.ts +230 -0
  396. package/dist/webhook-endpoint-binding.d.ts.map +1 -0
  397. package/dist/webhook-endpoint-binding.js +12 -0
  398. package/dist/webhook-endpoint-binding.js.map +1 -0
  399. package/dist/xml.d.ts +79 -0
  400. package/dist/xml.d.ts.map +1 -0
  401. package/dist/xml.js +115 -0
  402. package/dist/xml.js.map +1 -0
  403. package/openapi.json +29649 -0
  404. package/package.json +76 -4
  405. package/scripts/emit-openapi.mjs +44 -0
  406. package/src/adapter-binding.ts +204 -0
  407. package/src/agent-binding.ts +231 -0
  408. package/src/app.ts +1286 -0
  409. package/src/capability-binding.ts +83 -0
  410. package/src/cost-binding.ts +213 -0
  411. package/src/deployment-binding.ts +225 -0
  412. package/src/env-binding.ts +140 -0
  413. package/src/errors.ts +295 -0
  414. package/src/eval-run-binding.ts +209 -0
  415. package/src/eval-run-dispatcher.ts +497 -0
  416. package/src/eval-suite-binding.ts +257 -0
  417. package/src/event-bus-binding.ts +127 -0
  418. package/src/flow-binding.ts +213 -0
  419. package/src/guardrail-binding.ts +151 -0
  420. package/src/handler-binding.ts +132 -0
  421. package/src/hitl-binding.ts +172 -0
  422. package/src/identity-directory-binding.ts +128 -0
  423. package/src/identity-provider-binding.ts +203 -0
  424. package/src/image-registry-binding.ts +193 -0
  425. package/src/index.ts +606 -0
  426. package/src/key-management-binding.ts +91 -0
  427. package/src/mcp-endpoint-binding.ts +311 -0
  428. package/src/memory-binding.ts +239 -0
  429. package/src/middleware/auth.ts +437 -0
  430. package/src/middleware/authorize.ts +125 -0
  431. package/src/middleware/error-mapper.ts +40 -0
  432. package/src/middleware/idempotency.ts +160 -0
  433. package/src/middleware/principal.ts +64 -0
  434. package/src/middleware/public-run-routes.ts +50 -0
  435. package/src/middleware/request-id.ts +28 -0
  436. package/src/middleware/sigv4-verify.ts +374 -0
  437. package/src/middleware/sigv4.ts +165 -0
  438. package/src/openapi/generate.ts +307 -0
  439. package/src/openapi/operations.ts +5444 -0
  440. package/src/openapi/schemas.ts +6363 -0
  441. package/src/provenance-binding.ts +169 -0
  442. package/src/provider-binding.ts +196 -0
  443. package/src/public-run-token.ts +263 -0
  444. package/src/retention-binding.ts +78 -0
  445. package/src/reviewer-binding.ts +99 -0
  446. package/src/rotation-status-store.ts +209 -0
  447. package/src/routes/adapters.ts +319 -0
  448. package/src/routes/agents.ts +424 -0
  449. package/src/routes/approvals.ts +759 -0
  450. package/src/routes/artifacts.ts +317 -0
  451. package/src/routes/audit.ts +219 -0
  452. package/src/routes/auth.ts +806 -0
  453. package/src/routes/capabilities.ts +79 -0
  454. package/src/routes/compliance.ts +482 -0
  455. package/src/routes/conversations.ts +369 -0
  456. package/src/routes/cost.ts +327 -0
  457. package/src/routes/deployments.ts +1493 -0
  458. package/src/routes/env.ts +429 -0
  459. package/src/routes/eval-runs.ts +631 -0
  460. package/src/routes/eval-suites.ts +490 -0
  461. package/src/routes/event-triggers.ts +283 -0
  462. package/src/routes/flows.ts +423 -0
  463. package/src/routes/guardrails.ts +320 -0
  464. package/src/routes/identity.ts +203 -0
  465. package/src/routes/mcp.ts +940 -0
  466. package/src/routes/memory.ts +430 -0
  467. package/src/routes/observations.ts +175 -0
  468. package/src/routes/orgs.ts +273 -0
  469. package/src/routes/pagination.ts +51 -0
  470. package/src/routes/policies.ts +413 -0
  471. package/src/routes/projects.ts +634 -0
  472. package/src/routes/proposals.ts +719 -0
  473. package/src/routes/provenance.ts +406 -0
  474. package/src/routes/providers.ts +624 -0
  475. package/src/routes/public-run-tokens.ts +104 -0
  476. package/src/routes/retention.ts +193 -0
  477. package/src/routes/reviewers.ts +209 -0
  478. package/src/routes/runs.ts +892 -0
  479. package/src/routes/s3.ts +519 -0
  480. package/src/routes/schedules.ts +300 -0
  481. package/src/routes/scope-params.ts +133 -0
  482. package/src/routes/secret-ref.ts +52 -0
  483. package/src/routes/secrets.ts +975 -0
  484. package/src/routes/signing-keys.ts +259 -0
  485. package/src/routes/sse.ts +148 -0
  486. package/src/routes/teams.ts +584 -0
  487. package/src/routes/tenant.ts +530 -0
  488. package/src/routes/tokens.ts +285 -0
  489. package/src/routes/tools.ts +491 -0
  490. package/src/routes/webhook-endpoints.ts +534 -0
  491. package/src/routes/webhooks.ts +296 -0
  492. package/src/s3-credential-binding.ts +58 -0
  493. package/src/secrets-binding.ts +308 -0
  494. package/src/secrets-provider-binding.ts +167 -0
  495. package/src/session-store-binding.ts +163 -0
  496. package/src/signing-key-binding.ts +235 -0
  497. package/src/state-store-binding.ts +84 -0
  498. package/src/supervisor-binding.ts +554 -0
  499. package/src/tenant-host-access.ts +62 -0
  500. package/src/token-admin.ts +104 -0
  501. package/src/tool-binding.ts +274 -0
  502. package/src/trigger-binding.ts +38 -0
  503. package/src/types.ts +74 -0
  504. package/src/webhook-endpoint-binding.ts +246 -0
  505. package/src/xml.ts +196 -0
@@ -0,0 +1,424 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+
4
+ import { Hono } from 'hono';
5
+
6
+ import { type Agent, type AgentId, type DefineAgentSpec, defineAgent } from '@kindgi/agents';
7
+ import { type Principal, ref, tuplesForCreate } from '@kindgi/authz';
8
+ import type { Cursor, ProjectId, Semver, TenantId, UserId } from '@kindgi/types';
9
+
10
+ import type { AgentRegistryBinding } from '../agent-binding.js';
11
+ import { statusFor, toWireError } from '../errors.js';
12
+ import type { Authorizer } from '../middleware/authorize.js';
13
+ import type { AppEnv } from '../types.js';
14
+ import { clampLimit } from './pagination.js';
15
+ import { parseScopeParams } from './scope-params.js';
16
+
17
+ /**
18
+ * Agents resource routes.
19
+ *
20
+ * Registry storage is caller-plugged via `AgentRegistryBinding`. The
21
+ * API package does not own persistence — the binding implementation
22
+ * supplies the store (tests wrap the in-memory `AgentRegistry` from
23
+ * `@kindgi/agents`).
24
+ *
25
+ * Publish is data-as-code: the body is a full `DefineAgentSpec` (the
26
+ * same value `defineAgent(...)` accepts).
27
+ */
28
+ export function agentsRouter(binding: AgentRegistryBinding, authorizer?: Authorizer): Hono<AppEnv> {
29
+ const r = new Hono<AppEnv>();
30
+
31
+ // Authorization — check the resource directly (ref('agent', businessId));
32
+ // permissions cascade from the parent project because the
33
+ // AgentRegistryBinding's `publish` writes the `agent:X#parent@project:Y`
34
+ // tuple via the enqueueTuples hook (see AgentPublishInput contract).
35
+ //
36
+ // POST / → admin on body.projectId
37
+ // GET /:agentId, GET /:agentId/versions[/…] → read on the agent
38
+ // POST /:agentId/versions/:version/unregister → admin on the agent
39
+ // POST /:agentId/versions/:version/reinstate → admin on the agent
40
+ // GET / (list) → tenant-scoped fetch;
41
+ // with a project scope
42
+ // (?scopeKind=project&scopeId=),
43
+ // require read on that project
44
+ if (authorizer !== undefined) {
45
+ r.use('/', async (c, next) => {
46
+ if (c.req.method !== 'POST') return next();
47
+ const tenantId = c.get('tenantId') as TenantId;
48
+ const mw = authorizer.authorize('admin', async () => {
49
+ try {
50
+ const body = await c.req.json();
51
+ const pid =
52
+ body !== null && typeof body === 'object'
53
+ ? (body as Record<string, unknown>).projectId
54
+ : undefined;
55
+ if (typeof pid === 'string' && pid.length > 0) return ref('project', pid);
56
+ } catch {
57
+ // POST handler validates + returns 400
58
+ }
59
+ return ref('tenant', tenantId as unknown as string);
60
+ });
61
+ return mw(c, next);
62
+ });
63
+ r.use('/', async (c, next) => {
64
+ if (c.req.method !== 'GET') return next();
65
+ // A project filter needs read on that project. Parse it as the
66
+ // handler does (`?scopeKind=project&scopeId=`).
67
+ const s = parseScopeParams((n) => c.req.query(n), {
68
+ tenantId: c.get('tenantId') as TenantId,
69
+ });
70
+ if (s.kind !== 'ok' || s.scope?.kind !== 'project') return next();
71
+ const scopeProjectId = s.scope.projectId as unknown as string;
72
+ const mw = authorizer.authorize('read', () => ref('project', scopeProjectId));
73
+ return mw(c, next);
74
+ });
75
+ r.use('/:agentId/*', async (c, next) => {
76
+ const action = c.req.method === 'GET' ? 'read' : 'admin';
77
+ const agentId = c.req.param('agentId') ?? '';
78
+ const mw = authorizer.authorize(action, () => ref('agent', agentId));
79
+ return mw(c, next);
80
+ });
81
+ r.use('/:agentId', async (c, next) => {
82
+ if (c.req.method !== 'GET') return next();
83
+ const agentId = c.req.param('agentId') ?? '';
84
+ const mw = authorizer.authorize('read', () => ref('agent', agentId));
85
+ return mw(c, next);
86
+ });
87
+ }
88
+
89
+ // ---------- GET / (list, cursor-paginated) ----------
90
+ r.get('/', async (c) => {
91
+ const requestId = c.get('requestId');
92
+ const tenantId = c.get('tenantId') as TenantId;
93
+ const limit = clampLimit(c.req.query('limit'));
94
+
95
+ const cursorRaw = c.req.query('cursor');
96
+ const nameRaw = c.req.query('name');
97
+
98
+ const scopeParsed = parseScopeParams(c.req.query(), { tenantId });
99
+ if (scopeParsed.kind === 'err') {
100
+ c.status(statusFor('scope-invalid') as never);
101
+ return c.json(
102
+ toWireError({ code: 'scope-invalid', message: scopeParsed.message }, requestId),
103
+ );
104
+ }
105
+
106
+ const page = await binding.list({
107
+ tenantId,
108
+ limit,
109
+ ...(cursorRaw !== undefined && cursorRaw.length > 0 && { cursor: cursorRaw as Cursor }),
110
+ ...(nameRaw !== undefined && nameRaw.length > 0 && { nameFilter: nameRaw }),
111
+ ...(scopeParsed.scope !== undefined && { scope: scopeParsed.scope }),
112
+ ...(scopeParsed.inherit !== undefined && { inherit: scopeParsed.inherit }),
113
+ });
114
+ return c.json({
115
+ data: page.data.map(serializeAgent),
116
+ hasMore: page.nextCursor !== undefined,
117
+ ...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
118
+ });
119
+ });
120
+
121
+ // ---------- GET /:agentId (latest version) ----------
122
+ r.get('/:agentId', async (c) => {
123
+ const requestId = c.get('requestId');
124
+ const tenantId = c.get('tenantId') as TenantId;
125
+ const agentId = c.req.param('agentId') as AgentId;
126
+
127
+ const agent = await binding.get({ tenantId, agentId });
128
+ if (agent === null) {
129
+ // Distinguish 410 gone (identity exists — head row present, no
130
+ // active version) from 404 not-found (never registered).
131
+ // Retirement is a derived state (no active
132
+ // versions); the head row is the identity marker.
133
+ const exists = await binding.headExists({ tenantId, agentId });
134
+ if (exists) {
135
+ c.status(statusFor('agent-gone') as never);
136
+ return c.json(
137
+ toWireError(
138
+ {
139
+ code: 'agent-gone',
140
+ message: `Agent "${agentId as unknown as string}" has no active versions; reinstate a tombstoned version or publish a new one`,
141
+ agentId: agentId as unknown as string,
142
+ },
143
+ requestId,
144
+ ),
145
+ );
146
+ }
147
+ c.status(statusFor('agent-not-found') as never);
148
+ return c.json(
149
+ toWireError(
150
+ {
151
+ code: 'agent-not-found',
152
+ message: `No agent registered with id "${agentId as unknown as string}"`,
153
+ agentId: agentId as unknown as string,
154
+ },
155
+ requestId,
156
+ ),
157
+ );
158
+ }
159
+ return c.json(serializeAgent(agent));
160
+ });
161
+
162
+ // ---------- GET /:agentId/versions (list versions) ----------
163
+ r.get('/:agentId/versions', async (c) => {
164
+ const requestId = c.get('requestId');
165
+ const tenantId = c.get('tenantId') as TenantId;
166
+ const agentId = c.req.param('agentId') as AgentId;
167
+ const limit = clampLimit(c.req.query('limit'));
168
+ const cursorRaw = c.req.query('cursor');
169
+
170
+ // Confirm the id exists at all — an empty versions list from the
171
+ // binding is ambiguous (no versions vs. unknown id), so we do a
172
+ // preliminary `get` to flip an unknown id to a `404`.
173
+ const latest = await binding.get({ tenantId, agentId });
174
+ if (latest === null) {
175
+ c.status(statusFor('agent-not-found') as never);
176
+ return c.json(
177
+ toWireError(
178
+ {
179
+ code: 'agent-not-found',
180
+ message: `No agent registered with id "${agentId as unknown as string}"`,
181
+ agentId: agentId as unknown as string,
182
+ },
183
+ requestId,
184
+ ),
185
+ );
186
+ }
187
+
188
+ const page = await binding.listVersions({
189
+ tenantId,
190
+ agentId,
191
+ limit,
192
+ ...(cursorRaw !== undefined && cursorRaw.length > 0 && { cursor: cursorRaw as Cursor }),
193
+ });
194
+ return c.json({
195
+ data: page.data.map(serializeAgent),
196
+ hasMore: page.nextCursor !== undefined,
197
+ ...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
198
+ });
199
+ });
200
+
201
+ // ---------- GET /:agentId/versions/:version ----------
202
+ r.get('/:agentId/versions/:version', async (c) => {
203
+ const requestId = c.get('requestId');
204
+ const tenantId = c.get('tenantId') as TenantId;
205
+ const agentId = c.req.param('agentId') as AgentId;
206
+ const version = c.req.param('version') as Semver;
207
+
208
+ const agent = await binding.getVersion({ tenantId, agentId, version });
209
+ if (agent === null) {
210
+ c.status(statusFor('agent-not-found') as never);
211
+ return c.json(
212
+ toWireError(
213
+ {
214
+ code: 'agent-not-found',
215
+ message: `No agent "${agentId as unknown as string}" at version "${version as unknown as string}"`,
216
+ agentId: agentId as unknown as string,
217
+ version: version as unknown as string,
218
+ },
219
+ requestId,
220
+ ),
221
+ );
222
+ }
223
+ return c.json(serializeAgent(agent));
224
+ });
225
+
226
+ // ---------- POST / (publish) ----------
227
+ r.post('/', async (c) => {
228
+ const requestId = c.get('requestId');
229
+ const tenantId = c.get('tenantId') as TenantId;
230
+
231
+ let body: unknown;
232
+ try {
233
+ body = await c.req.json();
234
+ } catch {
235
+ c.status(statusFor('bad-input') as never);
236
+ return c.json(
237
+ toWireError({ code: 'bad-input', message: 'Request body must be valid JSON' }, requestId),
238
+ );
239
+ }
240
+ if (body === null || typeof body !== 'object') {
241
+ c.status(statusFor('bad-input') as never);
242
+ return c.json(
243
+ toWireError({ code: 'bad-input', message: 'Request body must be an object' }, requestId),
244
+ );
245
+ }
246
+
247
+ // `projectId` is REQUIRED on the POST body.
248
+ // Missing / empty / non-string → 400 bad-input. Absent from the
249
+ // agent-shape validator on purpose — the caller controls what
250
+ // project the agent lands in; the agent definition itself is
251
+ // project-agnostic.
252
+ const bodyObj = body as Record<string, unknown>;
253
+ const projectIdRaw = bodyObj.projectId;
254
+ if (typeof projectIdRaw !== 'string' || projectIdRaw.length === 0) {
255
+ c.status(statusFor('bad-input') as never);
256
+ return c.json(
257
+ toWireError({ code: 'bad-input', message: '`projectId` is required' }, requestId),
258
+ );
259
+ }
260
+ const projectId = projectIdRaw as ProjectId;
261
+
262
+ // Validate via defineAgent — same rules as the runtime primitive,
263
+ // so an agent published through the API is byte-identical to one
264
+ // constructed in-process. `defineAgent` returns a Result rather
265
+ // than throwing. `projectId` is stripped from the spec passed to
266
+ // `defineAgent` — the agent definition itself is project-agnostic
267
+ // (the runtime primitive doesn't know about projects).
268
+ const { projectId: _pid, ...specWithoutProjectId } = bodyObj;
269
+ const defined = defineAgent(specWithoutProjectId as unknown as DefineAgentSpec);
270
+ if (defined.kind === 'err') {
271
+ c.status(statusFor('invalid-agent') as never);
272
+ return c.json(
273
+ toWireError(
274
+ {
275
+ code: 'validation-failed',
276
+ message: defined.error.message,
277
+ issues: defined.error.issues as unknown as Record<string, unknown>[],
278
+ },
279
+ requestId,
280
+ ),
281
+ );
282
+ }
283
+
284
+ const principal = c.get('principal') as Principal | undefined;
285
+ const creatorUserId =
286
+ principal?.actor.kind === 'user'
287
+ ? (principal.actor.id as UserId)
288
+ : ('00000000-0000-0000-0000-000000000000' as UserId);
289
+ const outcome = await binding.publish({
290
+ tenantId,
291
+ projectId,
292
+ agent: defined.value,
293
+ // Write the authorization tuples in the same transaction as the
294
+ // registry row. The binding calls this with the business
295
+ // `agentId`.
296
+ enqueueTuples: (agentId) =>
297
+ tuplesForCreate(
298
+ { kind: 'agent', id: agentId as AgentId, tenantId, projectId },
299
+ creatorUserId,
300
+ ),
301
+ });
302
+ if (outcome.kind === 'already-registered') {
303
+ c.status(statusFor('agent-already-registered') as never);
304
+ return c.json(
305
+ toWireError(
306
+ {
307
+ code: 'agent-already-registered',
308
+ message: `Agent "${outcome.agentId as unknown as string}" version "${outcome.version as unknown as string}" is already registered`,
309
+ agentId: outcome.agentId as unknown as string,
310
+ version: outcome.version as unknown as string,
311
+ },
312
+ requestId,
313
+ ),
314
+ );
315
+ }
316
+ if (outcome.kind === 'project-not-found') {
317
+ // Caller supplied a `projectId` that does not resolve within
318
+ // this tenant. Distinct signal from `already-registered` so the
319
+ // client can prompt for a valid project rather than assume the
320
+ // version was already used. Answered as `400 bad-input`; the
321
+ // caller learns from the message which field was invalid.
322
+ c.status(statusFor('bad-input') as never);
323
+ return c.json(
324
+ toWireError(
325
+ {
326
+ code: 'bad-input',
327
+ message: `\`projectId\` "${outcome.projectId as unknown as string}" does not resolve to a project in this tenant`,
328
+ },
329
+ requestId,
330
+ ),
331
+ );
332
+ }
333
+ c.status(201);
334
+ return c.json({
335
+ agentId: outcome.agentId as unknown as string,
336
+ version: outcome.version as unknown as string,
337
+ });
338
+ });
339
+
340
+ // ---------- POST /:agentId/versions/:version/unregister ----------
341
+ r.post('/:agentId/versions/:version/unregister', async (c) => {
342
+ const requestId = c.get('requestId');
343
+ const tenantId = c.get('tenantId') as TenantId;
344
+ const agentId = c.req.param('agentId') as AgentId;
345
+ const version = c.req.param('version') as Semver;
346
+
347
+ const outcome = await binding.unregister({ tenantId, agentId, version });
348
+ if (!outcome.unregistered) {
349
+ c.status(statusFor('agent-not-found') as never);
350
+ return c.json(
351
+ toWireError(
352
+ {
353
+ code: 'agent-not-found',
354
+ message: `No agent "${agentId as unknown as string}" at version "${version as unknown as string}" to unregister`,
355
+ agentId: agentId as unknown as string,
356
+ version: version as unknown as string,
357
+ },
358
+ requestId,
359
+ ),
360
+ );
361
+ }
362
+ return c.json({
363
+ agentId: agentId as unknown as string,
364
+ version: version as unknown as string,
365
+ unregistered: true,
366
+ });
367
+ });
368
+
369
+ // ---------- POST /:agentId/versions/:version/reinstate ----------
370
+ // Un-tombstone a specific version — clears the version's tombstone
371
+ // and recomputes the agent's latest version across active
372
+ // versions. Restores the manifest bytes verbatim (semver hygiene:
373
+ // reinstate never mutates). Idempotent: reinstating an active
374
+ // version returns `wasTombstoned: false`.
375
+ r.post('/:agentId/versions/:version/reinstate', async (c) => {
376
+ const requestId = c.get('requestId');
377
+ const tenantId = c.get('tenantId') as TenantId;
378
+ const agentId = c.req.param('agentId') as AgentId;
379
+ const version = c.req.param('version') as Semver;
380
+
381
+ const outcome = await binding.reinstateVersion({ tenantId, agentId, version });
382
+ if (outcome.kind === 'not-found') {
383
+ c.status(statusFor('agent-not-found') as never);
384
+ return c.json(
385
+ toWireError(
386
+ {
387
+ code: 'agent-not-found',
388
+ message: `No agent "${agentId as unknown as string}" at version "${version as unknown as string}" to reinstate`,
389
+ agentId: agentId as unknown as string,
390
+ version: version as unknown as string,
391
+ },
392
+ requestId,
393
+ ),
394
+ );
395
+ }
396
+ return c.json({
397
+ agentId: outcome.agentId as unknown as string,
398
+ version: outcome.version as unknown as string,
399
+ wasTombstoned: outcome.wasTombstoned,
400
+ });
401
+ });
402
+
403
+ return r;
404
+ }
405
+
406
+ function serializeAgent(a: Agent): Record<string, unknown> {
407
+ return {
408
+ id: a.id as unknown as string,
409
+ version: a.version as unknown as string,
410
+ name: a.name,
411
+ ...(a.description !== undefined && { description: a.description }),
412
+ instructions: a.instructions,
413
+ ...(a.parameters !== undefined && { parameters: a.parameters }),
414
+ capabilities: a.capabilities,
415
+ tools: a.tools,
416
+ retrieval: a.retrieval,
417
+ guardrails: a.guardrails,
418
+ ...(a.conversationPolicy !== undefined && { conversationPolicy: a.conversationPolicy }),
419
+ ...(a.budget !== undefined && { budget: a.budget }),
420
+ ...(a.tags !== undefined && { tags: a.tags }),
421
+ ...(a.preferredProvider !== undefined && { preferredProvider: a.preferredProvider }),
422
+ ...(a.preferredModel !== undefined && { preferredModel: a.preferredModel }),
423
+ };
424
+ }