@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,164 @@
1
+ import type { Scope } from '@kindgi/platform';
2
+ import type { EnvName, Result } from '@kindgi/types';
3
+ /**
4
+ * Adapter surface below `SecretBinding`. External-secret-manager
5
+ * deployments plug this in behind a secrets router (a thin
6
+ * `SecretBinding` implementation that delegates every method to a
7
+ * wired provider). Provider adapter packages MUST ship under
8
+ * a secrets-provider adapter naming for discoverability.
9
+ *
10
+ * Provider adapters MUST NOT emit compliance-evidence events
11
+ * themselves — the `SecretBinding` router owns that. Adapters are
12
+ * dumb translators between the framework's uniform surface and the
13
+ * provider's native API.
14
+ */
15
+ export interface SecretProviderBinding {
16
+ readonly providerName: string;
17
+ getSecret(input: SecretProviderGetInput): Promise<Result<SecretProviderPayload | null, SecretProviderError>>;
18
+ getSecretVersion(input: SecretProviderGetVersionInput): Promise<Result<SecretProviderPayload | null, SecretProviderError>>;
19
+ listSecrets(input: SecretProviderListInput): Promise<Result<SecretProviderListOutput, SecretProviderError>>;
20
+ putSecret(input: SecretProviderPutInput): Promise<Result<SecretProviderPutOutput, SecretProviderError>>;
21
+ rotateSecret(input: SecretProviderRotateInput): Promise<Result<SecretProviderRotateOutput, SecretProviderError>>;
22
+ deleteSecret(input: SecretProviderDeleteInput): Promise<Result<SecretProviderDeleteOutput, SecretProviderError>>;
23
+ probe(): Promise<Result<SecretProviderProbeOutput, SecretProviderError>>;
24
+ }
25
+ /**
26
+ * How the provider knows which scope + env to talk to. Three
27
+ * strategies (mode governs provider-instance sharing; `scope` carries
28
+ * the full discriminated `Scope` from `@kindgi/platform` for
29
+ * path-encoding):
30
+ *
31
+ * - `mode: 'shared-provider'` — one provider instance for all
32
+ * tenants + envs; adapter encodes scope + env into `name`
33
+ * (e.g. Vault: `secret/data/<scopeKind>/<tenantId>/<orgId|projectId|_>/<envName>/<name>`).
34
+ * - `mode: 'per-tenant-provider'` — provider constructed per
35
+ * tenant; adapter encodes scope-level (org/project id) + env.
36
+ * - `mode: 'per-tenant-env-provider'` — provider constructed per
37
+ * (tenant, env) pair; adapter still encodes scope-level
38
+ * (org/project) into `name` when non-tenant. For providers with a
39
+ * native `environment` concept (env dimension only).
40
+ *
41
+ * Scope-hierarchy resolution is done framework-side by the
42
+ * `SecretBinding` router BEFORE delegating to a provider — each
43
+ * `Provider*Input` call targets exactly one scope level. Providers
44
+ * do not walk the hierarchy.
45
+ *
46
+ * `SecretProviderScope` carries the full discriminated `Scope`
47
+ * primitive, not just `tenantId`.
48
+ */
49
+ export type SecretProviderScope = {
50
+ readonly mode: 'shared-provider';
51
+ readonly scope: Scope;
52
+ readonly envName: EnvName;
53
+ readonly namespace?: string;
54
+ } | {
55
+ readonly mode: 'per-tenant-provider';
56
+ readonly scope: Scope;
57
+ readonly envName: EnvName;
58
+ } | {
59
+ readonly mode: 'per-tenant-env-provider';
60
+ readonly scope: Scope;
61
+ readonly envName: EnvName;
62
+ };
63
+ export interface SecretProviderGetInput {
64
+ readonly providerScope: SecretProviderScope;
65
+ readonly name: string;
66
+ }
67
+ export interface SecretProviderGetVersionInput {
68
+ readonly providerScope: SecretProviderScope;
69
+ readonly name: string;
70
+ readonly versionId: number;
71
+ }
72
+ export interface SecretProviderPayload {
73
+ readonly name: string;
74
+ readonly versionId: number;
75
+ readonly createdAt: string;
76
+ readonly value: string;
77
+ }
78
+ export interface SecretProviderListInput {
79
+ readonly providerScope: SecretProviderScope;
80
+ readonly namePrefix?: string;
81
+ readonly cursor?: string;
82
+ readonly limit: number;
83
+ }
84
+ export interface SecretProviderListOutput {
85
+ readonly data: readonly SecretProviderMetadata[];
86
+ readonly nextCursor?: string;
87
+ }
88
+ export interface SecretProviderMetadata {
89
+ readonly name: string;
90
+ readonly currentVersion: number;
91
+ readonly createdAt: string;
92
+ readonly updatedAt: string;
93
+ readonly revokedAt?: string;
94
+ }
95
+ export interface SecretProviderPutInput {
96
+ readonly providerScope: SecretProviderScope;
97
+ readonly name: string;
98
+ readonly value: string;
99
+ readonly writeMode: 'create-new' | 'add-version';
100
+ }
101
+ export type SecretProviderPutOutput = {
102
+ readonly kind: 'ok';
103
+ readonly versionId: number;
104
+ readonly createdAt: string;
105
+ } | {
106
+ readonly kind: 'already-exists';
107
+ } | {
108
+ readonly kind: 'version-conflict';
109
+ readonly currentVersion: number;
110
+ };
111
+ export interface SecretProviderRotateInput {
112
+ readonly providerScope: SecretProviderScope;
113
+ readonly name: string;
114
+ readonly newValue?: string;
115
+ readonly revokeOldAfterMs?: number;
116
+ }
117
+ export type SecretProviderRotateOutput = {
118
+ readonly kind: 'ok';
119
+ readonly newVersionId: number;
120
+ readonly oldVersionId: number;
121
+ } | {
122
+ readonly kind: 'rotation-pending';
123
+ readonly resumeToken: string;
124
+ };
125
+ export interface SecretProviderDeleteInput {
126
+ readonly providerScope: SecretProviderScope;
127
+ readonly name: string;
128
+ readonly hard: boolean;
129
+ }
130
+ export interface SecretProviderDeleteOutput {
131
+ readonly deleted: boolean;
132
+ }
133
+ export interface SecretProviderProbeOutput {
134
+ readonly reachable: true;
135
+ readonly providerVersion?: string;
136
+ readonly latencyMs?: number;
137
+ }
138
+ /**
139
+ * Uniform error shape across every provider adapter. Adapters map
140
+ * their native failure conditions to these codes; the router
141
+ * translates them further into `SecretError` codes.
142
+ */
143
+ export type SecretProviderError = {
144
+ readonly code: 'unreachable';
145
+ readonly message: string;
146
+ readonly cause?: unknown;
147
+ } | {
148
+ readonly code: 'unauthorized';
149
+ readonly message: string;
150
+ readonly cause?: unknown;
151
+ } | {
152
+ readonly code: 'rate-limited';
153
+ readonly message: string;
154
+ readonly retryAfterMs?: number;
155
+ } | {
156
+ readonly code: 'unsupported';
157
+ readonly message: string;
158
+ readonly feature: string;
159
+ } | {
160
+ readonly code: 'provider-error';
161
+ readonly message: string;
162
+ readonly cause?: unknown;
163
+ };
164
+ //# sourceMappingURL=secrets-provider-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-provider-binding.d.ts","sourceRoot":"","sources":["../src/secrets-provider-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ export {};
4
+ //# sourceMappingURL=secrets-provider-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-provider-binding.js","sourceRoot":"","sources":["../src/secrets-provider-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
@@ -0,0 +1,148 @@
1
+ import type { Cursor, SessionId, TenantId, Timestamp, UserId } from '@kindgi/types';
2
+ /**
3
+ * Caller-plugged surface for OAuth/OIDC session persistence. Same
4
+ * pattern as `TokenAdmin` (write path for bearer tokens) — the API
5
+ * package does NOT own session persistence. Deployments plug in a
6
+ * durable store.
7
+ *
8
+ * Sessions are the byproduct of a successful OAuth callback:
9
+ * `POST /v1/auth/callback/:providerId` exchanges the authorization code
10
+ * for provider tokens, fetches the userinfo, and calls
11
+ * `SessionStoreBinding.create` to persist the resulting session; the
12
+ * route then hands the caller an opaque framework-issued token
13
+ * (`kgi_sk_<sessionId>`) that never leaks the provider access-token or
14
+ * refresh-token to the client.
15
+ *
16
+ * The bearer-auth middleware routes session-token requests through
17
+ * `get(tenantId, sessionId)`; the resolver hot path runs on every
18
+ * authenticated request that carries a session token, so implementations
19
+ * SHOULD keep `get` cheap (e.g. a single indexed lookup by id and
20
+ * expiry, or a cache).
21
+ */
22
+ export interface SessionStoreBinding {
23
+ create(input: SessionCreateInput): Promise<SessionCreateOutput>;
24
+ get(input: SessionGetInput): Promise<Session | null>;
25
+ list(input: SessionListInput): Promise<SessionPage>;
26
+ revoke(input: SessionRevokeInput): Promise<SessionRevokeOutcome>;
27
+ revokeAllForUser(input: SessionRevokeAllForUserInput): Promise<SessionRevokeAllForUserOutcome>;
28
+ /**
29
+ * Update the session's `lastActiveAt` marker. Called by the auth
30
+ * middleware on each successful authenticated request (throttled, by
31
+ * default to at most once per minute per session, so the write path
32
+ * doesn't hot-spot under load). Absent = the middleware only enforces absolute
33
+ * TTL; inactivity timeout is disabled.
34
+ *
35
+ * The tenant sentinel `MULTI_TENANT_LOOKUP` is honored the same way
36
+ * as `get` — the middleware doesn't know the tenant ahead of time.
37
+ */
38
+ readonly touch?: (input: SessionTouchInput) => Promise<SessionTouchOutcome>;
39
+ }
40
+ export interface SessionCreateInput {
41
+ readonly tenantId: TenantId;
42
+ readonly userId: UserId;
43
+ /** ProviderId of the `IdentityProviderBinding` that authenticated the user. */
44
+ readonly providerId: string;
45
+ /** Opaque provider access-token — server-side only. */
46
+ readonly accessToken: string;
47
+ /** Opaque provider refresh-token — server-side only, may be absent. */
48
+ readonly refreshToken?: string;
49
+ readonly expiresAt: Timestamp;
50
+ readonly scopes: readonly string[];
51
+ /** Free-form provider claims (e.g. `email`, `name`, `sub`). */
52
+ readonly metadata?: Record<string, unknown>;
53
+ }
54
+ export interface SessionCreateOutput {
55
+ readonly sessionId: SessionId;
56
+ readonly expiresAt: Timestamp;
57
+ }
58
+ export interface SessionGetInput {
59
+ readonly tenantId: TenantId;
60
+ readonly sessionId: SessionId;
61
+ }
62
+ export interface SessionListInput {
63
+ readonly tenantId: TenantId;
64
+ readonly limit: number;
65
+ readonly cursor?: Cursor;
66
+ /** Filter to sessions for a single user. Absent → all users in tenant. */
67
+ readonly userId?: UserId;
68
+ }
69
+ export interface SessionRevokeInput {
70
+ readonly tenantId: TenantId;
71
+ readonly sessionId: SessionId;
72
+ /**
73
+ * Distinguishes an explicit revoke (user logout, admin action) from
74
+ * a rotation (`POST /v1/auth/refresh` retiring the old session). The
75
+ * adapter uses this to set both `revokedAt` AND `rotatedAt` on the
76
+ * session so the middleware can return `401 refresh-token-invalid` when
77
+ * the OLD session token is reused after rotation. Defaults to
78
+ * `'revoke'`.
79
+ */
80
+ readonly reason?: 'revoke' | 'rotate';
81
+ }
82
+ export interface SessionRevokeAllForUserInput {
83
+ readonly tenantId: TenantId;
84
+ readonly userId: UserId;
85
+ }
86
+ export interface Session {
87
+ readonly id: SessionId;
88
+ readonly tenantId: TenantId;
89
+ readonly userId: UserId;
90
+ readonly providerId: string;
91
+ readonly accessToken: string;
92
+ readonly refreshToken?: string;
93
+ readonly expiresAt: Timestamp;
94
+ readonly scopes: readonly string[];
95
+ readonly metadata?: Record<string, unknown>;
96
+ readonly createdAt: Timestamp;
97
+ /**
98
+ * Last-observed activity timestamp. Populated by adapters that
99
+ * implement `touch()` — the middleware bumps it (throttled) on each
100
+ * authenticated request so the deployment can enforce an
101
+ * inactivity-based logout independent of the absolute session TTL.
102
+ *
103
+ * Adapters MAY leave this undefined when the deployment has opted
104
+ * out of inactivity tracking; in that case the middleware skips the
105
+ * inactivity check and enforces only absolute TTL.
106
+ */
107
+ readonly lastActiveAt?: Timestamp;
108
+ /**
109
+ * Set by `POST /v1/auth/refresh` on the OLD session when it mints a
110
+ * new one. Distinguishes rotation (client should retry with the
111
+ * fresh token — OAuth 2.1 BCP refresh-token reuse detection) from
112
+ * an explicit revocation (user logged out). The middleware surfaces
113
+ * this via `401 refresh-token-invalid` vs `401 auth-revoked`. Set
114
+ * atomically with `revokedAt`.
115
+ */
116
+ readonly rotatedAt?: Timestamp;
117
+ readonly revokedAt?: Timestamp;
118
+ }
119
+ export interface SessionTouchInput {
120
+ readonly tenantId: TenantId;
121
+ readonly sessionId: SessionId;
122
+ /**
123
+ * The observed activity timestamp. Adapters SHOULD accept a
124
+ * caller-supplied instant so tests can drive the clock; production
125
+ * middleware passes `new Date()`.
126
+ */
127
+ readonly at: Date;
128
+ }
129
+ export interface SessionTouchOutcome {
130
+ /**
131
+ * `false` when the session was already revoked or the row is
132
+ * unknown — the middleware treats either case as a soft-fail (no
133
+ * fatal error, but the caller's next request will 401 via the
134
+ * standard checks).
135
+ */
136
+ readonly touched: boolean;
137
+ }
138
+ export interface SessionPage {
139
+ readonly data: readonly Session[];
140
+ readonly nextCursor?: Cursor;
141
+ }
142
+ export interface SessionRevokeOutcome {
143
+ readonly revoked: boolean;
144
+ }
145
+ export interface SessionRevokeAllForUserOutcome {
146
+ readonly revokedCount: number;
147
+ }
148
+ //# sourceMappingURL=session-store-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store-binding.d.ts","sourceRoot":"","sources":["../src/session-store-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ export {};
4
+ //# sourceMappingURL=session-store-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store-binding.js","sourceRoot":"","sources":["../src/session-store-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
@@ -0,0 +1,210 @@
1
+ import type { Cursor, Result, SigningKeyId, TenantId } from '@kindgi/types';
2
+ /**
3
+ * Caller-plugged surface for the API layer's **tenant-scoped signing-key
4
+ * trust registry** — the seam behind the deploy route's signature
5
+ * verification + trust-list cross-check.
6
+ *
7
+ * ## Position vs `SigningKeyBinding`
8
+ *
9
+ * the crypto module already exposes a `SigningKeyBinding` — a low-level
10
+ * KMS seam that returns raw key bytes for a `SigningKeyId`. That binding
11
+ * is deployment-wide; every request finds the same keys.
12
+ *
13
+ * THIS binding is a **higher-level, tenant-scoped trust registry**. It
14
+ * answers "for tenant T, is this public key allowed to sign deploys /
15
+ * artifacts?" and performs signature verification against the registered
16
+ * trust list. A production adapter typically wraps the crypto-layer
17
+ * binding for the underlying primitive ops and layers tenant-scoping,
18
+ * revocation, and audit on top.
19
+ *
20
+ * Consumers alias one of the two when importing both — TypeScript resolves
21
+ * them by module path but the local name collides.
22
+ *
23
+ * ## Two responsibilities
24
+ *
25
+ * 1. **Trust registry** (`listTrusted` / `getTrusted` / `addTrusted` /
26
+ * `revokeTrusted`) — per-tenant CRUD over the set of public keys
27
+ * permitted to sign deploys and admin operations.
28
+ * 2. **Verification** (`isTrusted` / `verify`) — cheap boolean trust
29
+ * check + a full signature-verification call. The `POST /v1/deployments`
30
+ * route calls `isTrusted` (which must be `true`) and then verifies the
31
+ * Ed25519 signature itself; it does not call `verify`.
32
+ *
33
+ * Tenant-scoped: callers pass `tenantId` explicitly. Same trust list
34
+ * partitioning as every other admin surface.
35
+ *
36
+ * ## Seam only
37
+ *
38
+ * No implementation is bundled here; the `POST /v1/deployments` route
39
+ * runs its trust check through this interface.
40
+ */
41
+ export interface SigningKeyBinding {
42
+ /**
43
+ * Cheap trust check for the signature step of `POST /v1/deployments`.
44
+ * Returns `true` when the given `(keyId, publicKey)` pair appears on
45
+ * the tenant's trust list AND has not been revoked. `false` otherwise —
46
+ * the route surfaces `false` as `403 signer-not-trusted`.
47
+ *
48
+ * The pair is checked jointly to defend against a key-id collision
49
+ * across tenants: two tenants MAY use the same `SigningKeyId` for
50
+ * their own keys as long as the public bytes differ. Trust is bound
51
+ * to the exact bytes.
52
+ */
53
+ isTrusted(input: IsTrustedInput): Promise<Result<boolean, SigningKeyError>>;
54
+ /**
55
+ * Verify a raw Ed25519 signature over a canonicalised payload against
56
+ * the trusted key — e.g. the canonical deploy envelope
57
+ * (`(imageDigest, artifactVersion, indexHash, tenantId, publishedAt)`)
58
+ * as `payload`. The binding computes the verification and returns
59
+ * `valid: true` on cryptographic match.
60
+ *
61
+ * Bindings MUST NOT trust the caller's assertion that the key is
62
+ * trusted — they re-run the trust check as part of `verify`, so
63
+ * `signer-not-trusted` shortcuts before `signature-invalid`.
64
+ */
65
+ verify(input: VerifyInput): Promise<Result<VerifyOutcome, SigningKeyError>>;
66
+ /**
67
+ * Cursor-paginated list of trusted keys for the tenant. Sort order is
68
+ * binding-defined (e.g. `createdAt desc, keyId desc`).
69
+ */
70
+ listTrusted(input: ListTrustedInput): Promise<TrustedKeyPage>;
71
+ /**
72
+ * Look up a single trusted key by id. `null` when unknown to the
73
+ * tenant OR revoked; revoked entries are excluded here (they still
74
+ * appear via `listTrusted` with `includeRevoked: true`).
75
+ */
76
+ getTrusted(input: GetTrustedInput): Promise<TrustedKey | null>;
77
+ /**
78
+ * Add a key to the tenant's trust list. Idempotent per `(keyId,
79
+ * publicKey)` — re-adding the same pair returns
80
+ * `{ kind: 'already-trusted' }` with the existing entry (no bump to
81
+ * `createdAt`). Different `publicKey` under the same `keyId` is
82
+ * rejected with `key-id-conflict` — callers rotate by allocating a
83
+ * new keyId, not by rebinding one.
84
+ */
85
+ addTrusted(input: AddTrustedInput): Promise<AddTrustedOutcome>;
86
+ /**
87
+ * Revoke a trusted key. Idempotent — revoking an already-revoked or
88
+ * unknown key returns `{ revoked: false }`; first-time revocation
89
+ * returns `{ revoked: true }`. The entry is retained (soft-delete)
90
+ * so historical `Deployment.signerKeyId` refs remain resolvable for
91
+ * audit; `isTrusted` returns `false` for revoked entries.
92
+ */
93
+ revokeTrusted(input: RevokeTrustedInput): Promise<RevokeTrustedOutcome>;
94
+ }
95
+ /**
96
+ * Wire shape for a trusted-key registration. `publicKey` is base64 of
97
+ * the raw key bytes (Ed25519 = 32 bytes); `algorithm` is the closed set
98
+ * from the crypto module — extended here as an open string so future
99
+ * algorithms don't require a package bump on this file.
100
+ */
101
+ export interface TrustedKey {
102
+ readonly keyId: SigningKeyId;
103
+ readonly tenantId: TenantId;
104
+ /** `'ed25519'` today. Open string for future algorithms. */
105
+ readonly algorithm: string;
106
+ /** Base64 of the raw public key bytes. */
107
+ readonly publicKey: string;
108
+ /** Optional human-readable label — e.g. `'acme-staging-2026-01'`. */
109
+ readonly label?: string;
110
+ /** ISO-8601 timestamp of first registration. */
111
+ readonly createdAt: string;
112
+ /** ISO-8601 timestamp of revocation; absent when active. */
113
+ readonly revokedAt?: string;
114
+ /** Reason string supplied at revocation time. */
115
+ readonly revokedReason?: string;
116
+ }
117
+ export interface IsTrustedInput {
118
+ readonly tenantId: TenantId;
119
+ readonly keyId: SigningKeyId;
120
+ /** Base64 of the raw public-key bytes the signer presented. */
121
+ readonly publicKey: string;
122
+ }
123
+ export interface VerifyInput {
124
+ readonly tenantId: TenantId;
125
+ readonly keyId: SigningKeyId;
126
+ /** Base64 of the raw public-key bytes. */
127
+ readonly publicKey: string;
128
+ /** Raw bytes over which the signature was computed. */
129
+ readonly payload: Uint8Array;
130
+ /** Base64 of the signature bytes. */
131
+ readonly signature: string;
132
+ }
133
+ export interface VerifyOutcome {
134
+ readonly valid: boolean;
135
+ /**
136
+ * When `valid: false`, a hint at why — `signature-mismatch` /
137
+ * `signer-not-trusted` / `algorithm-unsupported`. Useful for logs.
138
+ */
139
+ readonly reason?: string;
140
+ }
141
+ export interface ListTrustedInput {
142
+ readonly tenantId: TenantId;
143
+ readonly limit: number;
144
+ readonly cursor?: Cursor;
145
+ /** When `true`, revoked entries are included. Default `false`. */
146
+ readonly includeRevoked?: boolean;
147
+ /** Prefix match on `TrustedKey.label` — useful for env-scoped listings. */
148
+ readonly labelFilter?: string;
149
+ }
150
+ export interface TrustedKeyPage {
151
+ readonly data: readonly TrustedKey[];
152
+ readonly nextCursor?: Cursor;
153
+ }
154
+ export interface GetTrustedInput {
155
+ readonly tenantId: TenantId;
156
+ readonly keyId: SigningKeyId;
157
+ }
158
+ export interface AddTrustedInput {
159
+ readonly tenantId: TenantId;
160
+ readonly keyId: SigningKeyId;
161
+ readonly algorithm: string;
162
+ readonly publicKey: string;
163
+ readonly label?: string;
164
+ }
165
+ export type AddTrustedOutcome = {
166
+ readonly kind: 'ok';
167
+ readonly key: TrustedKey;
168
+ } | {
169
+ readonly kind: 'already-trusted';
170
+ readonly key: TrustedKey;
171
+ } | {
172
+ /**
173
+ * Same `keyId` already registered but with different `publicKey`
174
+ * bytes. Callers rotate by allocating a fresh `keyId`.
175
+ */
176
+ readonly kind: 'key-id-conflict';
177
+ readonly existing: TrustedKey;
178
+ } | {
179
+ /**
180
+ * The key couldn't be trusted. `signing-key-revoked`: the id was
181
+ * revoked, and revocation is final (rotate under a new id). Other
182
+ * codes are store failures.
183
+ */
184
+ readonly kind: 'error';
185
+ readonly code: string;
186
+ readonly message: string;
187
+ };
188
+ export interface RevokeTrustedInput {
189
+ readonly tenantId: TenantId;
190
+ readonly keyId: SigningKeyId;
191
+ /** Optional audit reason surfaced through `TrustedKey.revokedReason`. */
192
+ readonly reason?: string;
193
+ }
194
+ export interface RevokeTrustedOutcome {
195
+ readonly revoked: boolean;
196
+ }
197
+ export type SigningKeyError = {
198
+ readonly code: 'signing-key-not-found';
199
+ readonly message: string;
200
+ readonly keyId: string;
201
+ } | {
202
+ readonly code: 'signing-key-algorithm-unsupported';
203
+ readonly message: string;
204
+ readonly algorithm: string;
205
+ } | {
206
+ readonly code: 'signing-key-store-error';
207
+ readonly message: string;
208
+ readonly cause?: unknown;
209
+ };
210
+ //# sourceMappingURL=signing-key-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing-key-binding.d.ts","sourceRoot":"","sources":["../src/signing-key-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ export {};
4
+ //# sourceMappingURL=signing-key-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing-key-binding.js","sourceRoot":"","sources":["../src/signing-key-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
@@ -0,0 +1,53 @@
1
+ import type { TenantId } from '@kindgi/types';
2
+ /**
3
+ * Short-lived CSRF-`state` + PKCE-`code_verifier` cache used by the
4
+ * OAuth login/callback pair. Values live between `/v1/auth/login/:id`
5
+ * (which generates `state` + `code_verifier`) and
6
+ * `/v1/auth/callback/:id` (which reads them back). TTL is measured in
7
+ * minutes — long enough for a user to complete the provider hop, short
8
+ * enough that a lost row is a non-event.
9
+ *
10
+ * The default `createInMemoryOauthStateStore` is appropriate for
11
+ * single-process dev + tests. Multi-pod deployments MUST plug in a
12
+ * shared store (Redis, Postgres) because the callback usually lands on
13
+ * a different pod than the login. Mirror of the `IdempotencyStore`
14
+ * caller-plugged pattern.
15
+ *
16
+ * Keyed by `state` alone — `state` carries 256 bits of entropy, so it
17
+ * is uniquely identifying without a namespace. `take` matches on
18
+ * `providerId` when supplied to guard against a stolen `state` being
19
+ * replayed against the wrong provider mount; `tenantId` is returned in
20
+ * the entry (the callback route learns it from the row, not the URL).
21
+ */
22
+ export interface OauthStateStore {
23
+ put(entry: OauthStateEntry): Promise<void>;
24
+ /**
25
+ * Consume the entry keyed by `state`. Returns `null` when unknown or
26
+ * expired. When `providerId` is supplied, the returned entry MUST
27
+ * match — the store returns `null` (and leaves the entry in place)
28
+ * otherwise. `tenantId` is derived from the entry.
29
+ */
30
+ take(input: OauthStateTakeInput): Promise<OauthStateEntry | null>;
31
+ }
32
+ export interface OauthStateEntry {
33
+ readonly state: string;
34
+ readonly tenantId: TenantId;
35
+ readonly providerId: string;
36
+ readonly codeVerifier: string;
37
+ readonly redirectUri: string;
38
+ readonly expiresAt: number;
39
+ }
40
+ export interface OauthStateTakeInput {
41
+ readonly state: string;
42
+ /** Optional cross-check — when set, entry must match or `take` returns null. */
43
+ readonly providerId?: string;
44
+ }
45
+ /**
46
+ * Trivial in-memory store — appropriate for tests + single-process dev.
47
+ * Entries are single-use (`take` deletes on hit) and time out on their
48
+ * own; the store performs a shallow expired-entry sweep on every call
49
+ * so long-lived processes don't leak memory when a callback never
50
+ * arrives.
51
+ */
52
+ export declare function createInMemoryOauthStateStore(): OauthStateStore;
53
+ //# sourceMappingURL=state-store-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-store-binding.d.ts","sourceRoot":"","sources":["../src/state-store-binding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,IAAI,eAAe,CAyB/D"}