@kindgi/api 0.0.0-bootstrap.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +396 -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 +264 -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 +13 -0
  104. package/dist/middleware/error-mapper.d.ts.map +1 -0
  105. package/dist/middleware/error-mapper.js +32 -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 +5051 -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 +773 -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 +29659 -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 +1285 -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 +291 -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 +37 -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 +5445 -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 +981 -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,175 @@
1
+ import type { Scope } from '@kindgi/platform';
2
+ import type { Cursor, TenantId, Timestamp } from '@kindgi/types';
3
+ /**
4
+ * Caller-plugged surface for the cost readback plane — part of the
5
+ * admin control plane. Read-only: tenants + operators
6
+ * inspect what they've spent across model calls, tool invocations,
7
+ * storage, and sandbox usage. Instrumentation (how records get recorded)
8
+ * lives at the agent / tool / sandbox layers — this surface only reads.
9
+ *
10
+ * The runtime substrate is the cost tracker — usage records carrying
11
+ * `resourceKind`, `providerId`, `runId`, `quantity`, `unit`, `costUsd`,
12
+ * `metrics` and `attributes`, plus a `recordedAt` timestamp. But the wire
13
+ * vocabulary differs enough (`category` instead of `resourceKind`;
14
+ * first-class `agentId` / `conversationId` filters that live in
15
+ * `attributes` at storage time; multi-dim `groupBy` that needs
16
+ * storage-side rollups) that a caller-plugged binding is cleaner than
17
+ * direct storage access — each deployment maps wire fields to whatever
18
+ * storage shape it uses. Trivial in-memory implementations are fine for
19
+ * dev + tests; production implementations run the aggregate rollups in
20
+ * their store.
21
+ *
22
+ * Every method is tenant-scoped. Cursors are opaque — the binding
23
+ * chooses its encoding. The API layer only validates round-trip as a
24
+ * string; it never inspects the payload.
25
+ *
26
+ * Budgets are NOT part of this interface.
27
+ */
28
+ export interface CostBinding {
29
+ /**
30
+ * Cursor-paginated list of cost records. Sort order is fixed:
31
+ * `occurredAt desc, id desc`. Filters compose (all AND).
32
+ */
33
+ listRecords(input: CostListRecordsInput): Promise<CostRecordPage>;
34
+ /**
35
+ * Fetch a record by id, or `null` when unknown. The route surfaces
36
+ * `null` as `404 cost-record-not-found`.
37
+ */
38
+ getRecord(input: CostGetRecordInput): Promise<CostRecord | null>;
39
+ /**
40
+ * Multi-dimensional aggregate rollup. `groupBy` may combine any
41
+ * subset of `agentId | runId | category | providerId | day | month
42
+ * | tenant | conversationId`; the binding returns one group per
43
+ * distinct key tuple within the required `from`..`to` window.
44
+ */
45
+ aggregate(input: CostAggregateInput): Promise<CostAggregateResult>;
46
+ }
47
+ export interface CostListRecordsInput {
48
+ readonly tenantId: TenantId;
49
+ readonly limit: number;
50
+ readonly cursor?: Cursor;
51
+ readonly filter: CostRecordFilter;
52
+ /**
53
+ * Narrow the list to a specific scope. Absent = no scope narrow
54
+ * (return every row in the tenant the caller can see — admin/audit
55
+ * default).
56
+ *
57
+ * Content-scoped semantics (this binding — cost records attribute
58
+ * to the project whose run produced them):
59
+ * - `{ kind: 'project', projectId }` — rows in that project.
60
+ * - `{ kind: 'org', orgId }` — rows in every project belonging to
61
+ * that org.
62
+ * - `{ kind: 'tenant', tenantId }` — every row in the tenant.
63
+ *
64
+ * Content rows always belong to a project, so `inherit` has no
65
+ * effect here.
66
+ */
67
+ readonly scope?: Scope;
68
+ /**
69
+ * `false` = literal-at-this-scope only (admin/audit view).
70
+ * `true` (default) = inheritance walk (user-facing view).
71
+ * No-op for content-scoped bindings (rows only exist at
72
+ * project-level — there is no upward hierarchy to walk). Kept for
73
+ * uniformity: scope-aware bindings share one filter shape.
74
+ */
75
+ readonly inherit?: boolean;
76
+ }
77
+ export interface CostRecordFilter {
78
+ readonly runId?: string;
79
+ readonly agentId?: string;
80
+ readonly conversationId?: string;
81
+ /**
82
+ * Wire vocabulary for the resource dimension — maps to the runtime's
83
+ * `resourceKind` (`llm.inference`, `tool.invocation`, `storage.write`,
84
+ * `sandbox.exec`, ...). Exact-match; free-form string so deployments
85
+ * can extend without a schema change.
86
+ */
87
+ readonly category?: string;
88
+ readonly providerId?: string;
89
+ readonly from?: Date;
90
+ readonly to?: Date;
91
+ }
92
+ export interface CostRecordPage {
93
+ readonly data: readonly CostRecord[];
94
+ readonly nextCursor?: Cursor;
95
+ }
96
+ export interface CostGetRecordInput {
97
+ readonly tenantId: TenantId;
98
+ readonly recordId: string;
99
+ }
100
+ /**
101
+ * Group dimensions the binding may aggregate over. `day` / `month` are
102
+ * time bucketing on `occurredAt` (UTC calendar day / month). Every call
103
+ * is tenant-scoped, so `tenant` always resolves to the caller's tenant
104
+ * id.
105
+ */
106
+ export type CostGroupDimension = 'agentId' | 'runId' | 'category' | 'providerId' | 'day' | 'month' | 'tenant' | 'conversationId';
107
+ export declare const COST_GROUP_DIMENSIONS: readonly CostGroupDimension[];
108
+ export interface CostAggregateInput {
109
+ readonly tenantId: TenantId;
110
+ readonly groupBy: readonly CostGroupDimension[];
111
+ readonly from: Date;
112
+ readonly to: Date;
113
+ readonly filter?: CostRecordFilter;
114
+ /**
115
+ * Narrow the aggregate to a specific scope. Same semantics as
116
+ * `CostListRecordsInput.scope` — content-scoped; an org scope covers
117
+ * the org's projects. Lets `/v1/cost/aggregate` accept the same
118
+ * `?scopeKind + ?scopeId` triplet as `/v1/cost/records`. Without
119
+ * this, an aggregate call after a scoped list would drop the scope
120
+ * silently. `inherit` is a documented no-op for this content-scoped
121
+ * binding.
122
+ */
123
+ readonly scope?: Scope;
124
+ /**
125
+ * `false` = literal-at-this-scope only. `true` (default) = inheritance
126
+ * walk. No-op for content-scoped bindings; passed through for wire
127
+ * shape uniformity.
128
+ */
129
+ readonly inherit?: boolean;
130
+ }
131
+ /**
132
+ * One row of the aggregate result. `key` maps every requested `groupBy`
133
+ * dimension to its value for this group — `null` when the underlying
134
+ * records had no value for that dimension (e.g. records with no
135
+ * `agentId` when grouping by `agentId`). Downstream consumers treat
136
+ * `null` as a distinct group ("unattributed").
137
+ */
138
+ export interface CostAggregateGroup {
139
+ readonly key: Readonly<Record<string, string | null>>;
140
+ readonly count: number;
141
+ readonly totalUsd: number;
142
+ }
143
+ export interface CostAggregateResult {
144
+ readonly groups: readonly CostAggregateGroup[];
145
+ readonly totalUsd: number;
146
+ readonly totalRecords: number;
147
+ readonly timeRange: {
148
+ readonly from: Timestamp;
149
+ readonly to: Timestamp;
150
+ };
151
+ }
152
+ /**
153
+ * Wire shape for a single cost record. Corresponds 1:1 to a usage
154
+ * record in the runtime's cost tracker, flattened for the wire
155
+ * (`resourceKind` renamed to `category`; `attributes.agentId`
156
+ * / `attributes.conversationId` lifted to top-level fields when
157
+ * present). The binding decides how to reshape the runtime row — this
158
+ * type just describes what the route hands back.
159
+ */
160
+ export interface CostRecord {
161
+ readonly id: string;
162
+ readonly tenantId: TenantId;
163
+ readonly category: string;
164
+ readonly providerId?: string;
165
+ readonly runId?: string;
166
+ readonly agentId?: string;
167
+ readonly conversationId?: string;
168
+ readonly quantity: number;
169
+ readonly unit: string;
170
+ readonly costUsd?: number;
171
+ readonly occurredAt: Timestamp;
172
+ readonly metrics?: Readonly<Record<string, unknown>>;
173
+ readonly attributes?: Readonly<Record<string, unknown>>;
174
+ }
175
+ //# sourceMappingURL=cost-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-binding.d.ts","sourceRoot":"","sources":["../src/cost-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ export const COST_GROUP_DIMENSIONS = [
4
+ 'agentId',
5
+ 'runId',
6
+ 'category',
7
+ 'providerId',
8
+ 'day',
9
+ 'month',
10
+ 'tenant',
11
+ 'conversationId',
12
+ ];
13
+ //# sourceMappingURL=cost-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-binding.js","sourceRoot":"","sources":["../src/cost-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAiIjC,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,SAAS;IACT,OAAO;IACP,UAAU;IACV,YAAY;IACZ,KAAK;IACL,OAAO;IACP,QAAQ;IACR,gBAAgB;CACjB,CAAC"}
@@ -0,0 +1,201 @@
1
+ import type { Cursor, SigningKeyId, TenantId } from '@kindgi/types';
2
+ /**
3
+ * Caller-plugged surface for the deployment ledger — the audit anchor
4
+ * row written by `POST /v1/deployments`. Mirrors the
5
+ * caller-plugged pattern of `BlobStorageBinding` /
6
+ * `PolicyRegistryBinding`: the API package does NOT own deployment
7
+ * storage. Deployments plug their own store (a database, or in-memory for
8
+ * tests) through this interface.
9
+ *
10
+ * Semantics:
11
+ * - A deployment is the append-only record of a signed image landing
12
+ * at the API. Its `imageDigest` (extracted from `imageRef`) is the
13
+ * idempotency key — re-registering the same digest returns the
14
+ * existing record with no new `artifactVersion`.
15
+ * - The full signature envelope (`signerKeyId`, `signerPublicKey`,
16
+ * `signature`, canonical `indexHash`) is persisted so regulators
17
+ * can re-verify offline against the immutable image bytes.
18
+ * - Primitive counts (`tools` / `guardrails` / `agents` / `flows`)
19
+ * are captured for at-a-glance rendering; the full manifest set
20
+ * lives at `imageRef@sha256:…/app/index.json`.
21
+ *
22
+ * Every method is tenant-scoped: callers pass `tenantId` explicitly so
23
+ * multi-tenant deployments can partition storage without exposing the
24
+ * scoping inside the API package.
25
+ *
26
+ * Cursors are opaque — the binding chooses its encoding. The API layer
27
+ * only validates that a cursor round-trips as a string.
28
+ *
29
+ * ## Seam only
30
+ *
31
+ * This file defines the seam the `packages/api/src/routes/deployments.ts`
32
+ * route calls; no implementation is bundled.
33
+ */
34
+ export interface DeploymentBinding {
35
+ /**
36
+ * Persist a signed deployment record. The API route checks the signer
37
+ * against the trust list (`SigningKeyBinding.isTrusted`), verifies the
38
+ * Ed25519 signature, verifies image pullability
39
+ * (`ImageRegistryBinding.head`), and validates every primitive in the
40
+ * index before calling — the binding receives a well-formed input.
41
+ *
42
+ * Idempotent per `imageDigest`: when the same digest is re-registered
43
+ * under the same tenant the binding MUST return
44
+ * `{ kind: 'already-registered', deployment }` with the existing row
45
+ * (existing `artifactVersion` — the issuer-supplied value the row
46
+ * originally pinned). Different digest → new row with the caller's
47
+ * newly-supplied `artifactVersion` persisted verbatim.
48
+ */
49
+ register(input: DeploymentRegisterInput): Promise<DeploymentRegisterOutcome>;
50
+ /**
51
+ * Fetch a deployment by its server-allocated id. `null` when unknown
52
+ * to the tenant. The route surfaces `null` as `404
53
+ * deployment-not-found`.
54
+ */
55
+ get(input: DeploymentGetInput): Promise<Deployment | null>;
56
+ /**
57
+ * Fetch a deployment by its `imageDigest` (the sha256 of the pinned
58
+ * OCI image). Used for the idempotency check on `register` and for
59
+ * cross-referencing image identity from the sandbox layer at
60
+ * dispatch. `null` when no record exists.
61
+ */
62
+ getByImageDigest(input: DeploymentGetByImageDigestInput): Promise<Deployment | null>;
63
+ /**
64
+ * Cursor-paginated list, sorted by `activatedAt` descending
65
+ * (binding-defined tie-break, e.g. `deploymentId` desc). Filters
66
+ * compose as AND.
67
+ */
68
+ list(input: DeploymentListInput): Promise<DeploymentPage>;
69
+ }
70
+ /**
71
+ * Wire shape for a deployment record. Immutable once written — every
72
+ * field is set atomically at `register` time.
73
+ *
74
+ * `signerPublicKey` is retained alongside `signerKeyId` so offline audit
75
+ * can re-verify without hitting the tenant's trust list; the trust-list
76
+ * check happens at `register` time inside the route (via
77
+ * `SigningKeyBinding.isTrusted`).
78
+ */
79
+ export interface Deployment {
80
+ readonly deploymentId: string;
81
+ readonly tenantId: TenantId;
82
+ /** Full digest-pinned image reference, e.g. `registry.example.com/acme/pack@sha256:…`. */
83
+ readonly imageRef: string;
84
+ /** `sha256` hex-encoded digest extracted from `imageRef` (idempotency key). */
85
+ readonly imageDigest: string;
86
+ /**
87
+ * Issuer-supplied `YYYYMMDD.N` — matches the value inside the signed
88
+ * envelope. Bindings persist it verbatim; the
89
+ * signature is only offline-verifiable if the same bytes round-trip.
90
+ */
91
+ readonly artifactVersion: string;
92
+ /** `sha256` of the canonicalised `index.json` extracted from the image. */
93
+ readonly indexHash: string;
94
+ /** Which key signed the deploy. Cross-checked against `SigningKeyBinding`. */
95
+ readonly signerKeyId: SigningKeyId;
96
+ /** Retained for offline audit. Base64 of the raw public-key bytes. */
97
+ readonly signerPublicKey: string;
98
+ /** Base64 of the Ed25519 signature over the canonicalised envelope. */
99
+ readonly signature: string;
100
+ /** Issuer-supplied timestamp inside the signed envelope. ISO-8601. */
101
+ readonly publishedAt: string;
102
+ /** Server-side ledger timestamp — when `register` returned OK. ISO-8601. */
103
+ readonly activatedAt: string;
104
+ /**
105
+ * Counts of primitives in the deployment's `index.json`. Not
106
+ * authoritative — the image is. Populated for cheap admin rendering.
107
+ */
108
+ readonly primitives: DeploymentPrimitiveCounts;
109
+ /**
110
+ * Exactly what the deployment shipped: each primitive's id and, for
111
+ * the versioned ones, its version. Versions are immutable, so this is
112
+ * enough to know which code a deployment made live.
113
+ */
114
+ readonly contents: DeploymentContents;
115
+ }
116
+ /** A primitive a deployment shipped. Guardrails have no version. */
117
+ export interface DeployedPrimitive {
118
+ readonly id: string;
119
+ readonly version?: string;
120
+ }
121
+ export interface DeploymentContents {
122
+ readonly tools: readonly DeployedPrimitive[];
123
+ readonly guardrails: readonly DeployedPrimitive[];
124
+ readonly agents: readonly DeployedPrimitive[];
125
+ readonly flows: readonly DeployedPrimitive[];
126
+ }
127
+ export interface DeploymentPrimitiveCounts {
128
+ readonly tools: number;
129
+ readonly guardrails: number;
130
+ readonly agents: number;
131
+ readonly flows: number;
132
+ }
133
+ /**
134
+ * Everything the ledger needs to persist a signed deployment. The route
135
+ * assembles this from the request body + verified sig envelope; the
136
+ * binding does not re-verify the signature (that's the route's job).
137
+ */
138
+ export interface DeploymentRegisterInput {
139
+ readonly tenantId: TenantId;
140
+ readonly imageRef: string;
141
+ readonly imageDigest: string;
142
+ /**
143
+ * Issuer-supplied `YYYYMMDD.N`. Part of the canonical signed envelope
144
+ * — persisted verbatim so offline verification
145
+ * can reproduce the exact bytes.
146
+ */
147
+ readonly artifactVersion: string;
148
+ readonly indexHash: string;
149
+ readonly signerKeyId: SigningKeyId;
150
+ readonly signerPublicKey: string;
151
+ readonly signature: string;
152
+ readonly publishedAt: string;
153
+ readonly primitives: DeploymentPrimitiveCounts;
154
+ readonly contents: DeploymentContents;
155
+ }
156
+ export type DeploymentRegisterOutcome = {
157
+ readonly kind: 'ok';
158
+ readonly deployment: Deployment;
159
+ } | {
160
+ /**
161
+ * Same `imageDigest` was already registered for this tenant. The
162
+ * binding returns the existing row unchanged; the route surfaces
163
+ * as `200 OK` (idempotent replay), NOT `409`.
164
+ */
165
+ readonly kind: 'already-registered';
166
+ readonly deployment: Deployment;
167
+ } | {
168
+ /** Any other write failure — persistence error, invalid input. */
169
+ readonly kind: 'error';
170
+ readonly code: string;
171
+ readonly message: string;
172
+ };
173
+ export interface DeploymentGetInput {
174
+ readonly tenantId: TenantId;
175
+ readonly deploymentId: string;
176
+ }
177
+ export interface DeploymentGetByImageDigestInput {
178
+ readonly tenantId: TenantId;
179
+ readonly imageDigest: string;
180
+ }
181
+ export interface DeploymentListInput {
182
+ readonly tenantId: TenantId;
183
+ readonly limit: number;
184
+ readonly cursor?: Cursor;
185
+ /**
186
+ * Optional prefix filter on `Deployment.imageRef`. Useful for
187
+ * `registry.example.com/acme/support-pack@sha256:` matches within a
188
+ * multi-image tenant.
189
+ */
190
+ readonly imageRefPrefix?: string;
191
+ /**
192
+ * Restrict to a specific signing key. Useful for revocation audits —
193
+ * "which deploys did the compromised key sign?"
194
+ */
195
+ readonly signerKeyId?: SigningKeyId;
196
+ }
197
+ export interface DeploymentPage {
198
+ readonly data: readonly Deployment[];
199
+ readonly nextCursor?: Cursor;
200
+ }
201
+ //# sourceMappingURL=deployment-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-binding.d.ts","sourceRoot":"","sources":["../src/deployment-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=deployment-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-binding.js","sourceRoot":"","sources":["../src/deployment-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
@@ -0,0 +1,132 @@
1
+ import type { TupleEnqueueHook } from '@kindgi/authz';
2
+ import type { Scope } from '@kindgi/platform';
3
+ import type { Cursor, EnvName, Result } from '@kindgi/types';
4
+ import type { ResolveContext } from './secrets-binding.js';
5
+ export type { ResolveContext } from './secrets-binding.js';
6
+ /**
7
+ * Caller-plugged env store — non-sensitive per-env values. Same
8
+ * `(scope, envName, name)` structural key as `SecretBinding`, same
9
+ * discriminated `Scope` primitive from `@kindgi/platform`.
10
+ * Emits `env-resolved` compliance-evidence events on every `resolve`
11
+ * — symmetric with secrets, gives operators the same debugging
12
+ * superpower ("what did this run see for its env at start?").
13
+ *
14
+ * What differs from `SecretBinding`:
15
+ * - `value` returns on the wire (env is non-sensitive by
16
+ * definition); no capability gate on read.
17
+ * - Revision counter, not version-with-rotation-ceremony. Overwrite
18
+ * bumps `revision`; there's no revoke, no hard-delete, no
19
+ * rotation-workflow-with-async-completion.
20
+ * - No encryption at rest.
21
+ *
22
+ * Env-safety: cross-env reads are refused. Same structural rule as
23
+ * secrets.
24
+ */
25
+ export interface EnvBinding {
26
+ /** Cursor-paginated list. Returns `value` for every entry. */
27
+ list(input: EnvListInput): Promise<EnvListPage>;
28
+ /** Fetch a single entry. `null` when unknown. */
29
+ get(input: EnvGetInput): Promise<EnvRecord | null>;
30
+ /**
31
+ * Resolve at dispatch time. Same `ResolveContext` as secrets. Emits
32
+ * `env-resolved` compliance-evidence event on every call.
33
+ */
34
+ resolve(input: EnvResolveInput): Promise<Result<EnvResolveOutcome, EnvError>>;
35
+ /**
36
+ * Write / overwrite an env value. Every write bumps `revision`.
37
+ * `ifRevision` provides optimistic concurrency guard.
38
+ */
39
+ set(input: EnvSetInput): Promise<EnvSetOutcome>;
40
+ /**
41
+ * Idempotent delete. Returns `{ deleted: false }` on unknown key.
42
+ * No soft-delete — env is a plain overwrite-shaped store; delete
43
+ * means gone.
44
+ */
45
+ delete(input: EnvDeleteInput): Promise<EnvDeleteOutcome>;
46
+ }
47
+ export interface EnvRecord {
48
+ readonly scope: Scope;
49
+ readonly envName: EnvName;
50
+ readonly name: string;
51
+ readonly value: string;
52
+ readonly revision: number;
53
+ readonly createdAt: string;
54
+ readonly updatedAt: string;
55
+ readonly tags?: Readonly<Record<string, string>>;
56
+ }
57
+ export interface EnvListInput {
58
+ readonly scope: Scope;
59
+ readonly envName: EnvName;
60
+ readonly limit: number;
61
+ readonly cursor?: Cursor;
62
+ readonly namePrefix?: string;
63
+ readonly tagFilter?: Readonly<Record<string, string>>;
64
+ }
65
+ export interface EnvListPage {
66
+ readonly data: readonly EnvRecord[];
67
+ readonly nextCursor?: Cursor;
68
+ }
69
+ export interface EnvGetInput {
70
+ readonly scope: Scope;
71
+ readonly envName: EnvName;
72
+ readonly name: string;
73
+ }
74
+ export interface EnvResolveInput {
75
+ readonly scope: Scope;
76
+ readonly envName: EnvName;
77
+ readonly name: string;
78
+ readonly resolveContext: ResolveContext;
79
+ }
80
+ export interface EnvResolveOutcome {
81
+ readonly name: string;
82
+ readonly value: string;
83
+ readonly revision: number;
84
+ }
85
+ export interface EnvSetInput {
86
+ readonly scope: Scope;
87
+ readonly envName: EnvName;
88
+ readonly name: string;
89
+ readonly value: string;
90
+ readonly tags?: Readonly<Record<string, string>>;
91
+ readonly ifRevision?: number;
92
+ /**
93
+ * REQUIRED. Called inside the binding's write tx on FRESH insert
94
+ * (new env-var identity). Receives the new entry's id as the FGA
95
+ * subject id. Not invoked on revision-update (identity already exists).
96
+ * See `AgentPublishInput.enqueueTuples` for the design rationale.
97
+ */
98
+ readonly enqueueTuples: TupleEnqueueHook;
99
+ }
100
+ export type EnvSetOutcome = {
101
+ readonly kind: 'ok';
102
+ readonly record: EnvRecord;
103
+ } | {
104
+ readonly kind: 'revision-conflict';
105
+ readonly currentRevision: number;
106
+ } | {
107
+ readonly kind: 'error';
108
+ readonly code: string;
109
+ readonly message: string;
110
+ };
111
+ export interface EnvDeleteInput {
112
+ readonly scope: Scope;
113
+ readonly envName: EnvName;
114
+ readonly name: string;
115
+ }
116
+ export interface EnvDeleteOutcome {
117
+ readonly deleted: boolean;
118
+ }
119
+ export type EnvError = {
120
+ readonly code: 'env-not-found';
121
+ readonly message: string;
122
+ readonly name: string;
123
+ } | {
124
+ readonly code: 'env-write-conflict';
125
+ readonly message: string;
126
+ readonly currentRevision: number;
127
+ } | {
128
+ readonly code: 'env-store-error';
129
+ readonly message: string;
130
+ readonly cause?: unknown;
131
+ };
132
+ //# sourceMappingURL=env-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-binding.d.ts","sourceRoot":"","sources":["../src/env-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=env-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-binding.js","sourceRoot":"","sources":["../src/env-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Error envelope + code→status mapping for the platform API.
3
+ *
4
+ * Spec: `docs/API-ROUTE-CONVENTIONS.md` §4. Every 4xx/5xx response
5
+ * carries `{ error: { code, message, details?, requestId } }`. Codes
6
+ * match domain error discriminants (`unresolved-tool`,
7
+ * `guardrail-violation`, etc.) so the SDK's `fromWire()` can pattern-
8
+ * match without inspecting HTTP status.
9
+ */
10
+ export interface WireErrorBody {
11
+ readonly error: WireError;
12
+ }
13
+ export interface WireError {
14
+ readonly code: string;
15
+ readonly message: string;
16
+ readonly details?: Readonly<Record<string, unknown>>;
17
+ readonly requestId: string;
18
+ }
19
+ /**
20
+ * Maps a domain error `code` to the HTTP status the route layer should
21
+ * return. Codes not in this map fall through to `500` — the middleware
22
+ * treats that as a bug (unmapped code) rather than a plausible domain
23
+ * error. New codes MUST have a row here.
24
+ */
25
+ export declare const ERROR_CODE_TO_STATUS: Readonly<Record<string, number>>;
26
+ /**
27
+ * Look up the HTTP status for a domain error code. Unmapped codes
28
+ * return `500` — the caller should log a warning; this indicates a
29
+ * mapping-table gap.
30
+ */
31
+ export declare function statusFor(code: string): number;
32
+ /** Build a wire error body from a domain error + requestId. */
33
+ export declare function toWireError(err: {
34
+ readonly code: string;
35
+ readonly message: string;
36
+ } & Readonly<Record<string, unknown>>, requestId: string): WireErrorBody;
37
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwOxD,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CACzB,GAAG,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC5F,SAAS,EAAE,MAAM,GAChB,aAAa,CAaf"}