@kindgi/api 0.1.4 → 0.1.5-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/dist/agent-binding.d.ts +13 -0
  2. package/dist/agent-binding.d.ts.map +1 -1
  3. package/dist/agent-pins.d.ts.map +1 -1
  4. package/dist/agent-pins.js +18 -2
  5. package/dist/agent-pins.js.map +1 -1
  6. package/dist/app.d.ts +110 -17
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +163 -35
  9. package/dist/app.js.map +1 -1
  10. package/dist/block-publish.d.ts +56 -0
  11. package/dist/block-publish.d.ts.map +1 -0
  12. package/dist/block-publish.js +132 -0
  13. package/dist/block-publish.js.map +1 -0
  14. package/dist/caller.d.ts +24 -0
  15. package/dist/caller.d.ts.map +1 -0
  16. package/dist/caller.js +47 -0
  17. package/dist/caller.js.map +1 -0
  18. package/dist/capability-binding.d.ts +11 -0
  19. package/dist/capability-binding.d.ts.map +1 -1
  20. package/dist/derive-agent-version.d.ts +7 -0
  21. package/dist/derive-agent-version.d.ts.map +1 -1
  22. package/dist/derive-agent-version.js +4 -0
  23. package/dist/derive-agent-version.js.map +1 -1
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js +73 -7
  26. package/dist/errors.js.map +1 -1
  27. package/dist/eval-case-binding.d.ts +16 -4
  28. package/dist/eval-case-binding.d.ts.map +1 -1
  29. package/dist/eval-run-binding.d.ts +31 -0
  30. package/dist/eval-run-binding.d.ts.map +1 -1
  31. package/dist/eval-run-dispatcher.d.ts +7 -0
  32. package/dist/eval-run-dispatcher.d.ts.map +1 -1
  33. package/dist/eval-run-dispatcher.js.map +1 -1
  34. package/dist/eval-sample.d.ts +11 -0
  35. package/dist/eval-sample.d.ts.map +1 -0
  36. package/dist/eval-sample.js +34 -0
  37. package/dist/eval-sample.js.map +1 -0
  38. package/dist/eval-suite-binding.d.ts +13 -0
  39. package/dist/eval-suite-binding.d.ts.map +1 -1
  40. package/dist/eval-suite-binding.js.map +1 -1
  41. package/dist/flow-binding.d.ts +18 -0
  42. package/dist/flow-binding.d.ts.map +1 -1
  43. package/dist/flow-pins.d.ts.map +1 -1
  44. package/dist/flow-pins.js +18 -2
  45. package/dist/flow-pins.js.map +1 -1
  46. package/dist/gate.d.ts.map +1 -1
  47. package/dist/gate.js +25 -0
  48. package/dist/gate.js.map +1 -1
  49. package/dist/handler-binding.d.ts +32 -0
  50. package/dist/handler-binding.d.ts.map +1 -1
  51. package/dist/hitl-binding.d.ts +23 -0
  52. package/dist/hitl-binding.d.ts.map +1 -1
  53. package/dist/identity-directory-binding.d.ts +82 -4
  54. package/dist/identity-directory-binding.d.ts.map +1 -1
  55. package/dist/identity-provider-binding.d.ts +197 -17
  56. package/dist/identity-provider-binding.d.ts.map +1 -1
  57. package/dist/improvement-pass-binding.d.ts +196 -0
  58. package/dist/improvement-pass-binding.d.ts.map +1 -0
  59. package/dist/improvement-pass-binding.js +9 -0
  60. package/dist/improvement-pass-binding.js.map +1 -0
  61. package/dist/index.d.ts +35 -17
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +11 -3
  64. package/dist/index.js.map +1 -1
  65. package/dist/judged-dispatcher.d.ts +25 -4
  66. package/dist/judged-dispatcher.d.ts.map +1 -1
  67. package/dist/judged-dispatcher.js +43 -6
  68. package/dist/judged-dispatcher.js.map +1 -1
  69. package/dist/judgment-binding.d.ts +25 -1
  70. package/dist/judgment-binding.d.ts.map +1 -1
  71. package/dist/mcp-endpoint-binding.d.ts +7 -0
  72. package/dist/mcp-endpoint-binding.d.ts.map +1 -1
  73. package/dist/memory-binding.d.ts +124 -17
  74. package/dist/memory-binding.d.ts.map +1 -1
  75. package/dist/memory-erasure-binding.d.ts +145 -0
  76. package/dist/memory-erasure-binding.d.ts.map +1 -0
  77. package/dist/memory-erasure-binding.js +4 -0
  78. package/dist/memory-erasure-binding.js.map +1 -0
  79. package/dist/middleware/auth.d.ts +66 -13
  80. package/dist/middleware/auth.d.ts.map +1 -1
  81. package/dist/middleware/auth.js +150 -50
  82. package/dist/middleware/auth.js.map +1 -1
  83. package/dist/middleware/authorize.d.ts +6 -0
  84. package/dist/middleware/authorize.d.ts.map +1 -1
  85. package/dist/middleware/authorize.js +113 -4
  86. package/dist/middleware/authorize.js.map +1 -1
  87. package/dist/middleware/error-mapper.d.ts +5 -0
  88. package/dist/middleware/error-mapper.d.ts.map +1 -1
  89. package/dist/middleware/error-mapper.js +14 -1
  90. package/dist/middleware/error-mapper.js.map +1 -1
  91. package/dist/middleware/idempotency.d.ts +70 -5
  92. package/dist/middleware/idempotency.d.ts.map +1 -1
  93. package/dist/middleware/idempotency.js +174 -41
  94. package/dist/middleware/idempotency.js.map +1 -1
  95. package/dist/middleware/key-project.d.ts +17 -0
  96. package/dist/middleware/key-project.d.ts.map +1 -0
  97. package/dist/middleware/key-project.js +75 -0
  98. package/dist/middleware/key-project.js.map +1 -0
  99. package/dist/middleware/principal.d.ts.map +1 -1
  100. package/dist/middleware/principal.js +9 -5
  101. package/dist/middleware/principal.js.map +1 -1
  102. package/dist/middleware/project-ref.d.ts.map +1 -1
  103. package/dist/middleware/project-ref.js +3 -0
  104. package/dist/middleware/project-ref.js.map +1 -1
  105. package/dist/openapi/generate.d.ts.map +1 -1
  106. package/dist/openapi/generate.js +5 -2
  107. package/dist/openapi/generate.js.map +1 -1
  108. package/dist/openapi/operations.d.ts.map +1 -1
  109. package/dist/openapi/operations.js +918 -139
  110. package/dist/openapi/operations.js.map +1 -1
  111. package/dist/openapi/schemas.d.ts +90 -13
  112. package/dist/openapi/schemas.d.ts.map +1 -1
  113. package/dist/openapi/schemas.js +2081 -359
  114. package/dist/openapi/schemas.js.map +1 -1
  115. package/dist/person-grants-binding.d.ts +77 -0
  116. package/dist/person-grants-binding.d.ts.map +1 -0
  117. package/dist/person-grants-binding.js +4 -0
  118. package/dist/person-grants-binding.js.map +1 -0
  119. package/dist/proposal-service.d.ts +121 -0
  120. package/dist/proposal-service.d.ts.map +1 -0
  121. package/dist/proposal-service.js +447 -0
  122. package/dist/proposal-service.js.map +1 -0
  123. package/dist/proposal-status.d.ts +60 -0
  124. package/dist/proposal-status.d.ts.map +1 -0
  125. package/dist/proposal-status.js +109 -0
  126. package/dist/proposal-status.js.map +1 -0
  127. package/dist/provider-binding.d.ts +10 -0
  128. package/dist/provider-binding.d.ts.map +1 -1
  129. package/dist/publish-refused.d.ts +18 -3
  130. package/dist/publish-refused.d.ts.map +1 -1
  131. package/dist/publish-refused.js +18 -3
  132. package/dist/publish-refused.js.map +1 -1
  133. package/dist/routes/adapters.d.ts +2 -1
  134. package/dist/routes/adapters.d.ts.map +1 -1
  135. package/dist/routes/adapters.js +3 -1
  136. package/dist/routes/adapters.js.map +1 -1
  137. package/dist/routes/agent-releases.d.ts +55 -3
  138. package/dist/routes/agent-releases.d.ts.map +1 -1
  139. package/dist/routes/agent-releases.js +85 -55
  140. package/dist/routes/agent-releases.js.map +1 -1
  141. package/dist/routes/agents.d.ts +12 -1
  142. package/dist/routes/agents.d.ts.map +1 -1
  143. package/dist/routes/agents.js +100 -2
  144. package/dist/routes/agents.js.map +1 -1
  145. package/dist/routes/approvals.d.ts +15 -3
  146. package/dist/routes/approvals.d.ts.map +1 -1
  147. package/dist/routes/approvals.js +133 -122
  148. package/dist/routes/approvals.js.map +1 -1
  149. package/dist/routes/artifacts.d.ts +25 -3
  150. package/dist/routes/artifacts.d.ts.map +1 -1
  151. package/dist/routes/artifacts.js +116 -7
  152. package/dist/routes/artifacts.js.map +1 -1
  153. package/dist/routes/auth.d.ts +25 -1
  154. package/dist/routes/auth.d.ts.map +1 -1
  155. package/dist/routes/auth.js +655 -281
  156. package/dist/routes/auth.js.map +1 -1
  157. package/dist/routes/blocks.d.ts.map +1 -1
  158. package/dist/routes/blocks.js +2 -42
  159. package/dist/routes/blocks.js.map +1 -1
  160. package/dist/routes/capabilities.d.ts +2 -1
  161. package/dist/routes/capabilities.d.ts.map +1 -1
  162. package/dist/routes/capabilities.js +6 -1
  163. package/dist/routes/capabilities.js.map +1 -1
  164. package/dist/routes/compliance.d.ts +9 -10
  165. package/dist/routes/compliance.d.ts.map +1 -1
  166. package/dist/routes/compliance.js +42 -61
  167. package/dist/routes/compliance.js.map +1 -1
  168. package/dist/routes/conversations.d.ts +8 -1
  169. package/dist/routes/conversations.d.ts.map +1 -1
  170. package/dist/routes/conversations.js +87 -8
  171. package/dist/routes/conversations.js.map +1 -1
  172. package/dist/routes/cost.d.ts +7 -1
  173. package/dist/routes/cost.d.ts.map +1 -1
  174. package/dist/routes/cost.js +22 -3
  175. package/dist/routes/cost.js.map +1 -1
  176. package/dist/routes/denied.d.ts +11 -0
  177. package/dist/routes/denied.d.ts.map +1 -0
  178. package/dist/routes/denied.js +17 -0
  179. package/dist/routes/denied.js.map +1 -0
  180. package/dist/routes/deployments.d.ts +2 -1
  181. package/dist/routes/deployments.d.ts.map +1 -1
  182. package/dist/routes/deployments.js +44 -12
  183. package/dist/routes/deployments.js.map +1 -1
  184. package/dist/routes/eval-comparison.d.ts.map +1 -1
  185. package/dist/routes/eval-comparison.js +69 -1
  186. package/dist/routes/eval-comparison.js.map +1 -1
  187. package/dist/routes/eval-overrides.d.ts +18 -0
  188. package/dist/routes/eval-overrides.d.ts.map +1 -0
  189. package/dist/routes/eval-overrides.js +81 -0
  190. package/dist/routes/eval-overrides.js.map +1 -0
  191. package/dist/routes/eval-runs.d.ts +10 -1
  192. package/dist/routes/eval-runs.d.ts.map +1 -1
  193. package/dist/routes/eval-runs.js +63 -7
  194. package/dist/routes/eval-runs.js.map +1 -1
  195. package/dist/routes/eval-suites.d.ts.map +1 -1
  196. package/dist/routes/eval-suites.js +20 -1
  197. package/dist/routes/eval-suites.js.map +1 -1
  198. package/dist/routes/event-triggers.d.ts +5 -1
  199. package/dist/routes/event-triggers.d.ts.map +1 -1
  200. package/dist/routes/event-triggers.js +26 -3
  201. package/dist/routes/event-triggers.js.map +1 -1
  202. package/dist/routes/export-signing-keys.d.ts +12 -0
  203. package/dist/routes/export-signing-keys.d.ts.map +1 -0
  204. package/dist/routes/export-signing-keys.js +24 -0
  205. package/dist/routes/export-signing-keys.js.map +1 -0
  206. package/dist/routes/flows.d.ts.map +1 -1
  207. package/dist/routes/flows.js +9 -1
  208. package/dist/routes/flows.js.map +1 -1
  209. package/dist/routes/gate-policies.d.ts +4 -1
  210. package/dist/routes/gate-policies.d.ts.map +1 -1
  211. package/dist/routes/gate-policies.js +29 -5
  212. package/dist/routes/gate-policies.js.map +1 -1
  213. package/dist/routes/guardrails.d.ts +16 -14
  214. package/dist/routes/guardrails.d.ts.map +1 -1
  215. package/dist/routes/guardrails.js +39 -3
  216. package/dist/routes/guardrails.js.map +1 -1
  217. package/dist/routes/identity.d.ts +20 -4
  218. package/dist/routes/identity.d.ts.map +1 -1
  219. package/dist/routes/identity.js +246 -6
  220. package/dist/routes/identity.js.map +1 -1
  221. package/dist/routes/improvement-passes.d.ts +52 -0
  222. package/dist/routes/improvement-passes.d.ts.map +1 -0
  223. package/dist/routes/improvement-passes.js +449 -0
  224. package/dist/routes/improvement-passes.js.map +1 -0
  225. package/dist/routes/judged-suites.d.ts +50 -0
  226. package/dist/routes/judged-suites.d.ts.map +1 -1
  227. package/dist/routes/judged-suites.js +66 -27
  228. package/dist/routes/judged-suites.js.map +1 -1
  229. package/dist/routes/judgment-context.d.ts +18 -2
  230. package/dist/routes/judgment-context.d.ts.map +1 -1
  231. package/dist/routes/judgment-context.js +63 -5
  232. package/dist/routes/judgment-context.js.map +1 -1
  233. package/dist/routes/judgment-flow-context.d.ts.map +1 -1
  234. package/dist/routes/judgment-flow-context.js +14 -2
  235. package/dist/routes/judgment-flow-context.js.map +1 -1
  236. package/dist/routes/judgments.d.ts.map +1 -1
  237. package/dist/routes/judgments.js +8 -1
  238. package/dist/routes/judgments.js.map +1 -1
  239. package/dist/routes/mcp.d.ts.map +1 -1
  240. package/dist/routes/mcp.js +26 -1
  241. package/dist/routes/mcp.js.map +1 -1
  242. package/dist/routes/memory-access.d.ts +43 -0
  243. package/dist/routes/memory-access.d.ts.map +1 -0
  244. package/dist/routes/memory-access.js +129 -0
  245. package/dist/routes/memory-access.js.map +1 -0
  246. package/dist/routes/memory-erasures.d.ts +25 -0
  247. package/dist/routes/memory-erasures.d.ts.map +1 -0
  248. package/dist/routes/memory-erasures.js +214 -0
  249. package/dist/routes/memory-erasures.js.map +1 -0
  250. package/dist/routes/memory-parse.d.ts +38 -0
  251. package/dist/routes/memory-parse.d.ts.map +1 -0
  252. package/dist/routes/memory-parse.js +199 -0
  253. package/dist/routes/memory-parse.js.map +1 -0
  254. package/dist/routes/memory.d.ts +9 -4
  255. package/dist/routes/memory.d.ts.map +1 -1
  256. package/dist/routes/memory.js +226 -234
  257. package/dist/routes/memory.js.map +1 -1
  258. package/dist/routes/observations.d.ts +4 -1
  259. package/dist/routes/observations.d.ts.map +1 -1
  260. package/dist/routes/observations.js +8 -2
  261. package/dist/routes/observations.js.map +1 -1
  262. package/dist/routes/pagination.d.ts +7 -0
  263. package/dist/routes/pagination.d.ts.map +1 -1
  264. package/dist/routes/pagination.js +10 -0
  265. package/dist/routes/pagination.js.map +1 -1
  266. package/dist/routes/policies.d.ts +2 -1
  267. package/dist/routes/policies.d.ts.map +1 -1
  268. package/dist/routes/policies.js +3 -1
  269. package/dist/routes/policies.js.map +1 -1
  270. package/dist/routes/project-mismatch.d.ts +22 -0
  271. package/dist/routes/project-mismatch.d.ts.map +1 -0
  272. package/dist/routes/project-mismatch.js +34 -0
  273. package/dist/routes/project-mismatch.js.map +1 -0
  274. package/dist/routes/projects.d.ts +15 -4
  275. package/dist/routes/projects.d.ts.map +1 -1
  276. package/dist/routes/projects.js +100 -9
  277. package/dist/routes/projects.js.map +1 -1
  278. package/dist/routes/proposals.d.ts +25 -17
  279. package/dist/routes/proposals.d.ts.map +1 -1
  280. package/dist/routes/proposals.js +340 -507
  281. package/dist/routes/proposals.js.map +1 -1
  282. package/dist/routes/provenance.d.ts +17 -3
  283. package/dist/routes/provenance.d.ts.map +1 -1
  284. package/dist/routes/provenance.js +79 -103
  285. package/dist/routes/provenance.js.map +1 -1
  286. package/dist/routes/providers.d.ts +17 -1
  287. package/dist/routes/providers.d.ts.map +1 -1
  288. package/dist/routes/providers.js +110 -3
  289. package/dist/routes/providers.js.map +1 -1
  290. package/dist/routes/public-run-tokens.d.ts.map +1 -1
  291. package/dist/routes/public-run-tokens.js +3 -0
  292. package/dist/routes/public-run-tokens.js.map +1 -1
  293. package/dist/routes/runs.d.ts +10 -0
  294. package/dist/routes/runs.d.ts.map +1 -1
  295. package/dist/routes/runs.js +92 -42
  296. package/dist/routes/runs.js.map +1 -1
  297. package/dist/routes/schedules.d.ts +21 -13
  298. package/dist/routes/schedules.d.ts.map +1 -1
  299. package/dist/routes/schedules.js +416 -55
  300. package/dist/routes/schedules.js.map +1 -1
  301. package/dist/routes/segments.d.ts +2 -0
  302. package/dist/routes/segments.d.ts.map +1 -1
  303. package/dist/routes/segments.js +5 -0
  304. package/dist/routes/segments.js.map +1 -1
  305. package/dist/routes/service-accounts.d.ts +17 -0
  306. package/dist/routes/service-accounts.d.ts.map +1 -0
  307. package/dist/routes/service-accounts.js +212 -0
  308. package/dist/routes/service-accounts.js.map +1 -0
  309. package/dist/routes/sign-in-options.d.ts +50 -0
  310. package/dist/routes/sign-in-options.d.ts.map +1 -0
  311. package/dist/routes/sign-in-options.js +98 -0
  312. package/dist/routes/sign-in-options.js.map +1 -0
  313. package/dist/routes/signing-keys.d.ts +2 -1
  314. package/dist/routes/signing-keys.d.ts.map +1 -1
  315. package/dist/routes/signing-keys.js +3 -1
  316. package/dist/routes/signing-keys.js.map +1 -1
  317. package/dist/routes/tenant-access.d.ts +13 -0
  318. package/dist/routes/tenant-access.d.ts.map +1 -0
  319. package/dist/routes/tenant-access.js +26 -0
  320. package/dist/routes/tenant-access.js.map +1 -0
  321. package/dist/routes/tenant.d.ts.map +1 -1
  322. package/dist/routes/tenant.js +4 -0
  323. package/dist/routes/tenant.js.map +1 -1
  324. package/dist/routes/token-sign-in.d.ts +36 -0
  325. package/dist/routes/token-sign-in.d.ts.map +1 -0
  326. package/dist/routes/token-sign-in.js +101 -0
  327. package/dist/routes/token-sign-in.js.map +1 -0
  328. package/dist/routes/tokens.d.ts +15 -5
  329. package/dist/routes/tokens.d.ts.map +1 -1
  330. package/dist/routes/tokens.js +162 -43
  331. package/dist/routes/tokens.js.map +1 -1
  332. package/dist/routes/tools.d.ts.map +1 -1
  333. package/dist/routes/tools.js +9 -1
  334. package/dist/routes/tools.js.map +1 -1
  335. package/dist/routes/trigger-access.d.ts +29 -0
  336. package/dist/routes/trigger-access.d.ts.map +1 -0
  337. package/dist/routes/trigger-access.js +33 -0
  338. package/dist/routes/trigger-access.js.map +1 -0
  339. package/dist/routes/webhook-endpoints.d.ts +2 -1
  340. package/dist/routes/webhook-endpoints.d.ts.map +1 -1
  341. package/dist/routes/webhook-endpoints.js +11 -3
  342. package/dist/routes/webhook-endpoints.js.map +1 -1
  343. package/dist/routes/webhooks.d.ts +5 -1
  344. package/dist/routes/webhooks.d.ts.map +1 -1
  345. package/dist/routes/webhooks.js +25 -2
  346. package/dist/routes/webhooks.js.map +1 -1
  347. package/dist/run-failure.d.ts +21 -0
  348. package/dist/run-failure.d.ts.map +1 -0
  349. package/dist/run-failure.js +29 -0
  350. package/dist/run-failure.js.map +1 -0
  351. package/dist/service-account-binding.d.ts +108 -0
  352. package/dist/service-account-binding.d.ts.map +1 -0
  353. package/dist/service-account-binding.js +4 -0
  354. package/dist/service-account-binding.js.map +1 -0
  355. package/dist/session-store-binding.d.ts +61 -13
  356. package/dist/session-store-binding.d.ts.map +1 -1
  357. package/dist/signed-export.d.ts +89 -0
  358. package/dist/signed-export.d.ts.map +1 -0
  359. package/dist/signed-export.js +149 -0
  360. package/dist/signed-export.js.map +1 -0
  361. package/dist/supervisor-binding.d.ts +186 -413
  362. package/dist/supervisor-binding.d.ts.map +1 -1
  363. package/dist/testing/app-bindings.d.ts +33 -0
  364. package/dist/testing/app-bindings.d.ts.map +1 -0
  365. package/dist/testing/app-bindings.js +112 -0
  366. package/dist/testing/app-bindings.js.map +1 -0
  367. package/dist/testing/index.d.ts +11 -0
  368. package/dist/testing/index.d.ts.map +1 -0
  369. package/dist/testing/index.js +13 -0
  370. package/dist/testing/index.js.map +1 -0
  371. package/dist/testing/stub-binding.d.ts +34 -0
  372. package/dist/testing/stub-binding.d.ts.map +1 -0
  373. package/dist/testing/stub-binding.js +42 -0
  374. package/dist/testing/stub-binding.js.map +1 -0
  375. package/dist/testing/trigger-registry.d.ts +21 -0
  376. package/dist/testing/trigger-registry.d.ts.map +1 -0
  377. package/dist/testing/trigger-registry.js +206 -0
  378. package/dist/testing/trigger-registry.js.map +1 -0
  379. package/dist/token-admin.d.ts +46 -8
  380. package/dist/token-admin.d.ts.map +1 -1
  381. package/dist/token-admin.js.map +1 -1
  382. package/dist/tool-binding.d.ts +13 -0
  383. package/dist/tool-binding.d.ts.map +1 -1
  384. package/dist/trigger-binding.d.ts +2 -2
  385. package/dist/trigger-binding.d.ts.map +1 -1
  386. package/dist/trigger-binding.js +1 -1
  387. package/dist/trigger-binding.js.map +1 -1
  388. package/dist/types.d.ts +16 -0
  389. package/dist/types.d.ts.map +1 -1
  390. package/dist/webhook-endpoint-binding.d.ts +19 -3
  391. package/dist/webhook-endpoint-binding.d.ts.map +1 -1
  392. package/dist/webhook-endpoint-binding.js +1 -1
  393. package/dist/webhook-endpoint-binding.js.map +1 -1
  394. package/openapi.json +15385 -8788
  395. package/package.json +26 -22
  396. package/src/agent-binding.ts +14 -0
  397. package/src/agent-pins.ts +18 -2
  398. package/src/app.ts +366 -80
  399. package/src/block-publish.ts +181 -0
  400. package/src/caller.ts +62 -0
  401. package/src/capability-binding.ts +12 -0
  402. package/src/derive-agent-version.ts +9 -1
  403. package/src/errors.ts +73 -7
  404. package/src/eval-case-binding.ts +17 -1
  405. package/src/eval-run-binding.ts +31 -0
  406. package/src/eval-run-dispatcher.ts +7 -0
  407. package/src/eval-sample.ts +42 -0
  408. package/src/eval-suite-binding.ts +14 -0
  409. package/src/flow-binding.ts +19 -0
  410. package/src/flow-pins.ts +18 -2
  411. package/src/gate.ts +26 -0
  412. package/src/handler-binding.ts +36 -1
  413. package/src/hitl-binding.ts +24 -0
  414. package/src/identity-directory-binding.ts +85 -4
  415. package/src/identity-provider-binding.ts +216 -21
  416. package/src/improvement-pass-binding.ts +193 -0
  417. package/src/index.ts +153 -31
  418. package/src/judged-dispatcher.ts +78 -11
  419. package/src/judgment-binding.ts +25 -1
  420. package/src/mcp-endpoint-binding.ts +7 -0
  421. package/src/memory-binding.ts +121 -17
  422. package/src/memory-erasure-binding.ts +156 -0
  423. package/src/middleware/auth.ts +228 -62
  424. package/src/middleware/authorize.ts +139 -3
  425. package/src/middleware/error-mapper.ts +15 -1
  426. package/src/middleware/idempotency.ts +230 -43
  427. package/src/middleware/key-project.ts +86 -0
  428. package/src/middleware/principal.ts +9 -5
  429. package/src/middleware/project-ref.ts +3 -0
  430. package/src/openapi/generate.ts +11 -2
  431. package/src/openapi/operations.ts +1059 -142
  432. package/src/openapi/schemas.ts +2387 -469
  433. package/src/person-grants-binding.ts +76 -0
  434. package/src/proposal-service.ts +640 -0
  435. package/src/proposal-status.ts +176 -0
  436. package/src/provider-binding.ts +10 -0
  437. package/src/publish-refused.ts +38 -9
  438. package/src/routes/adapters.ts +4 -0
  439. package/src/routes/agent-releases.ts +121 -69
  440. package/src/routes/agents.ts +128 -1
  441. package/src/routes/approvals.ts +164 -154
  442. package/src/routes/artifacts.ts +181 -11
  443. package/src/routes/auth.ts +804 -336
  444. package/src/routes/blocks.ts +2 -53
  445. package/src/routes/capabilities.ts +10 -1
  446. package/src/routes/compliance.ts +60 -99
  447. package/src/routes/conversations.ts +101 -7
  448. package/src/routes/cost.ts +32 -3
  449. package/src/routes/denied.ts +28 -0
  450. package/src/routes/deployments.ts +62 -16
  451. package/src/routes/eval-comparison.ts +81 -2
  452. package/src/routes/eval-overrides.ts +108 -0
  453. package/src/routes/eval-runs.ts +86 -6
  454. package/src/routes/eval-suites.ts +25 -1
  455. package/src/routes/event-triggers.ts +27 -3
  456. package/src/routes/export-signing-keys.ts +31 -0
  457. package/src/routes/flows.ts +12 -1
  458. package/src/routes/gate-policies.ts +37 -6
  459. package/src/routes/guardrails.ts +61 -2
  460. package/src/routes/identity.ts +328 -10
  461. package/src/routes/improvement-passes.ts +541 -0
  462. package/src/routes/judged-suites.ts +113 -43
  463. package/src/routes/judgment-context.ts +76 -5
  464. package/src/routes/judgment-flow-context.ts +16 -2
  465. package/src/routes/judgments.ts +17 -3
  466. package/src/routes/mcp.ts +29 -1
  467. package/src/routes/memory-access.ts +179 -0
  468. package/src/routes/memory-erasures.ts +240 -0
  469. package/src/routes/memory-parse.ts +250 -0
  470. package/src/routes/memory.ts +244 -286
  471. package/src/routes/observations.ts +15 -2
  472. package/src/routes/pagination.ts +12 -0
  473. package/src/routes/policies.ts +7 -1
  474. package/src/routes/project-mismatch.ts +56 -0
  475. package/src/routes/projects.ts +107 -13
  476. package/src/routes/proposals.ts +370 -611
  477. package/src/routes/provenance.ts +99 -133
  478. package/src/routes/providers.ts +142 -3
  479. package/src/routes/public-run-tokens.ts +3 -0
  480. package/src/routes/runs.ts +119 -39
  481. package/src/routes/schedules.ts +472 -60
  482. package/src/routes/segments.ts +11 -0
  483. package/src/routes/service-accounts.ts +262 -0
  484. package/src/routes/sign-in-options.ts +168 -0
  485. package/src/routes/signing-keys.ts +7 -1
  486. package/src/routes/tenant-access.ts +37 -0
  487. package/src/routes/tenant.ts +6 -0
  488. package/src/routes/token-sign-in.ts +161 -0
  489. package/src/routes/tokens.ts +172 -46
  490. package/src/routes/tools.ts +12 -1
  491. package/src/routes/trigger-access.ts +72 -0
  492. package/src/routes/webhook-endpoints.ts +15 -3
  493. package/src/routes/webhooks.ts +26 -2
  494. package/src/run-failure.ts +42 -0
  495. package/src/service-account-binding.ts +113 -0
  496. package/src/session-store-binding.ts +65 -13
  497. package/src/signed-export.ts +250 -0
  498. package/src/supervisor-binding.ts +169 -409
  499. package/src/testing/app-bindings.ts +142 -0
  500. package/src/testing/index.ts +21 -0
  501. package/src/testing/stub-binding.ts +53 -0
  502. package/src/testing/trigger-registry.ts +259 -0
  503. package/src/token-admin.ts +40 -8
  504. package/src/tool-binding.ts +14 -0
  505. package/src/trigger-binding.ts +8 -1
  506. package/src/types.ts +16 -0
  507. package/src/webhook-endpoint-binding.ts +18 -3
@@ -7,6 +7,7 @@ import type { Context } from 'hono';
7
7
  import type { Cursor, TenantId, TriggerId } from '@kindgi/types';
8
8
 
9
9
  import { statusFor, toWireError } from '../errors.js';
10
+ import type { Authorizer } from '../middleware/authorize.js';
10
11
  import type {
11
12
  EventTriggerRecord,
12
13
  RegisterEventTriggerInput,
@@ -15,6 +16,7 @@ import type {
15
16
  } from '../trigger-binding.js';
16
17
  import type { AppEnv } from '../types.js';
17
18
  import { clampLimit } from './pagination.js';
19
+ import { triggerAccess } from './trigger-access.js';
18
20
 
19
21
  /**
20
22
  * Event triggers — fire a flow run when a matching event arrives on
@@ -22,9 +24,16 @@ import { clampLimit } from './pagination.js';
22
24
  *
23
25
  * Seven routes, mirroring the schedules surface. This surface registers
24
26
  * triggers; it does not publish events.
27
+ *
28
+ * With an authorizer (T243 A), the trigger's flow decides who may see or
29
+ * change it (`trigger-access.ts`).
25
30
  */
26
- export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEnv> {
31
+ export function eventTriggersRouter(
32
+ binding: TriggerRegistryBinding,
33
+ authorizer?: Authorizer,
34
+ ): Hono<AppEnv> {
27
35
  const r = new Hono<AppEnv>();
36
+ const access = triggerAccess(binding, 'event', authorizer);
28
37
 
29
38
  // ---------- POST / (register) ----------
30
39
  r.post('/', async (c) => {
@@ -37,11 +46,14 @@ export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEn
37
46
 
38
47
  const flowId = requireString(body, 'flowId');
39
48
  const flowVersion = requireString(body, 'flowVersion');
40
- const eventKind = requireString(body.config, 'config.eventKind');
49
+ const eventKind = requireString(body, 'config.eventKind');
41
50
  if (flowId.kind === 'err') return bad(c, requestId, flowId.message);
42
51
  if (flowVersion.kind === 'err') return bad(c, requestId, flowVersion.message);
43
52
  if (eventKind.kind === 'err') return bad(c, requestId, eventKind.message);
44
53
 
54
+ const refused = await access.onRegister(c, flowId.value);
55
+ if (refused !== undefined) return refused;
56
+
45
57
  const rawConfig = (body.config ?? {}) as Record<string, unknown>;
46
58
  const registerInput: RegisterEventTriggerInput = {
47
59
  kind: 'event',
@@ -84,7 +96,9 @@ export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEn
84
96
  ...(statusFilter !== undefined && { status: statusFilter }),
85
97
  });
86
98
  return c.json({
87
- data: page.data.map((row) => serializeEventTrigger(row as EventTriggerRecord)),
99
+ data: (await access.visible(c, page.data as readonly EventTriggerRecord[])).map(
100
+ serializeEventTrigger,
101
+ ),
88
102
  hasMore: page.nextCursor !== undefined,
89
103
  ...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
90
104
  });
@@ -95,6 +109,8 @@ export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEn
95
109
  const requestId = c.get('requestId');
96
110
  const tenantId = c.get('tenantId') as TenantId;
97
111
  const triggerId = c.req.param('triggerId') as TriggerId;
112
+ const refused = await access.onTrigger(c, triggerId, ['read']);
113
+ if (refused !== undefined) return refused;
98
114
 
99
115
  const rec = await binding.get({ tenantId, triggerId });
100
116
  if (rec === null || rec.kind !== 'event') return notFound(c, requestId, triggerId);
@@ -106,6 +122,8 @@ export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEn
106
122
  const requestId = c.get('requestId');
107
123
  const tenantId = c.get('tenantId') as TenantId;
108
124
  const triggerId = c.req.param('triggerId') as TriggerId;
125
+ const refused = await access.onTrigger(c, triggerId, ['write', 'execute']);
126
+ if (refused !== undefined) return refused;
109
127
 
110
128
  const parsed = await parseJsonObject(c, requestId);
111
129
  if (parsed.kind === 'err') return parsed.response;
@@ -149,6 +167,8 @@ export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEn
149
167
  const requestId = c.get('requestId');
150
168
  const tenantId = c.get('tenantId') as TenantId;
151
169
  const triggerId = c.req.param('triggerId') as TriggerId;
170
+ const refused = await access.onTrigger(c, triggerId, ['write']);
171
+ if (refused !== undefined) return refused;
152
172
  const result = await binding.pause({ tenantId, triggerId });
153
173
  if (result.kind === 'err') return lifecycleError(c, requestId, result.error, triggerId);
154
174
  return c.json(serializeEventTrigger(result.value as EventTriggerRecord));
@@ -159,6 +179,8 @@ export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEn
159
179
  const requestId = c.get('requestId');
160
180
  const tenantId = c.get('tenantId') as TenantId;
161
181
  const triggerId = c.req.param('triggerId') as TriggerId;
182
+ const refused = await access.onTrigger(c, triggerId, ['write']);
183
+ if (refused !== undefined) return refused;
162
184
  const result = await binding.resume({ tenantId, triggerId });
163
185
  if (result.kind === 'err') return lifecycleError(c, requestId, result.error, triggerId);
164
186
  return c.json(serializeEventTrigger(result.value as EventTriggerRecord));
@@ -168,6 +190,8 @@ export function eventTriggersRouter(binding: TriggerRegistryBinding): Hono<AppEn
168
190
  r.post('/:triggerId/unregister', async (c) => {
169
191
  const tenantId = c.get('tenantId') as TenantId;
170
192
  const triggerId = c.req.param('triggerId') as TriggerId;
193
+ const refused = await access.onTrigger(c, triggerId, ['write']);
194
+ if (refused !== undefined) return refused;
171
195
  const outcome = await binding.unregister({ tenantId, triggerId });
172
196
  return c.json({
173
197
  eventTriggerId: triggerId as unknown as string,
@@ -0,0 +1,31 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+
4
+ import { Hono } from 'hono';
5
+
6
+ import type { ExportSigningBinding } from '@kindgi/crypto';
7
+
8
+ import type { AppEnv } from '../types.js';
9
+
10
+ /**
11
+ * `GET /v1/export-signing-keys`: the public keys this deployment signs
12
+ * its exports with, active first. A verifier pins them: an export's own
13
+ * embedded `publicKey` only proves it wasn't changed, these say who
14
+ * signed it. Empty when the deployment doesn't sign exports. Any
15
+ * authenticated caller may read them; they're public keys.
16
+ */
17
+ export function exportSigningKeysRouter(signer: ExportSigningBinding | undefined): Hono<AppEnv> {
18
+ const r = new Hono<AppEnv>();
19
+ r.get('/', (c) =>
20
+ c.json({
21
+ data: (signer?.listKeys() ?? []).map((key, index) => ({
22
+ keyId: key.keyId,
23
+ algorithm: key.algorithm,
24
+ publicKeyPem: key.publicKeyPem,
25
+ fingerprint: key.fingerprint,
26
+ active: index === 0,
27
+ })),
28
+ }),
29
+ );
30
+ return r;
31
+ }
@@ -18,6 +18,7 @@ import { refuseWritesWhenReadOnly } from '../registry-read-only.js';
18
18
  import type { ToolRegistryBinding } from '../tool-binding.js';
19
19
  import type { AppEnv } from '../types.js';
20
20
  import { clampLimit } from './pagination.js';
21
+ import { projectMismatch } from './project-mismatch.js';
21
22
  import { parseScopeParams } from './scope-params.js';
22
23
 
23
24
  /**
@@ -132,8 +133,15 @@ export function flowsRouter(
132
133
  ...(scopeParsed.scope !== undefined && { scope: scopeParsed.scope }),
133
134
  ...(scopeParsed.inherit !== undefined && { inherit: scopeParsed.inherit }),
134
135
  });
136
+ // Only what the caller may read (T243 A), as `GET …/:id` asks.
137
+ const visible =
138
+ authorizer === undefined
139
+ ? page.data
140
+ : await authorizer.filterByCan(c, 'read', page.data, (a) =>
141
+ ref('flow', a.id as unknown as string),
142
+ );
135
143
  return c.json({
136
- data: page.data.map(serializeGraph),
144
+ data: visible.map(serializeGraph),
137
145
  hasMore: page.nextCursor !== undefined,
138
146
  ...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
139
147
  });
@@ -334,6 +342,9 @@ export function flowsRouter(
334
342
  ),
335
343
  );
336
344
  }
345
+ if (outcome.kind === 'project-mismatch') {
346
+ return projectMismatch(c, 'flow', outcome.flowId as unknown as string, outcome.projectId);
347
+ }
337
348
  if (outcome.kind === 'project-not-found') {
338
349
  // Caller supplied a `projectId` that does not resolve within
339
350
  // this tenant. Distinct signal from `already-registered` so the
@@ -4,7 +4,7 @@
4
4
  import { type Context, Hono } from 'hono';
5
5
 
6
6
  import { ref } from '@kindgi/authz';
7
- import type { Cursor, TenantId } from '@kindgi/types';
7
+ import type { Cursor, LiveScope, TenantId } from '@kindgi/types';
8
8
 
9
9
  import { statusFor, toWireError } from '../errors.js';
10
10
  import type { GatePolicyBinding, GatePolicyError } from '../gate-policy-binding.js';
@@ -30,7 +30,10 @@ const ID_RE = /^[a-z0-9][a-z0-9._-]{0,127}$/;
30
30
  * POST /:policyId/versions/:version/unregister|reinstate
31
31
  *
32
32
  * Writes need `admin` on the tenant: whoever may promote mustn't be able
33
- * to loosen the gate on their own promotion.
33
+ * to loosen the gate on their own promotion. Reads need `read` on the
34
+ * policy's scope (a segment's: its project), as judge classes do: one the
35
+ * caller can't read answers 404, as if it weren't there, and the list
36
+ * shows only those they can.
34
37
  */
35
38
  export function gatePoliciesRouter(
36
39
  binding: GatePolicyBinding,
@@ -46,6 +49,11 @@ export function gatePoliciesRouter(
46
49
  });
47
50
  }
48
51
 
52
+ /** Whether the caller may read a policy: `read` on its scope. */
53
+ const canRead = async (c: Ctx, policy: { readonly scope: LiveScope }): Promise<boolean> =>
54
+ authorizer === undefined ||
55
+ authorizer.can(c, 'read', scopeRef(c.get('tenantId') as TenantId, policy.scope));
56
+
49
57
  r.get('/', async (c) => {
50
58
  const requestId = c.get('requestId');
51
59
  const scope = scopeFromQuery((n) => c.req.query(n), c.req.queries('segment') ?? []);
@@ -59,8 +67,14 @@ export function gatePoliciesRouter(
59
67
  ...(scope.scope !== undefined && { scope: scope.scope }),
60
68
  ...(cursor !== undefined && cursor.length > 0 && { cursor: cursor as Cursor }),
61
69
  });
70
+ const visible =
71
+ authorizer === undefined
72
+ ? page.data
73
+ : await authorizer.filterByCan(c, 'read', page.data, (p) =>
74
+ scopeRef(c.get('tenantId') as TenantId, p.scope),
75
+ );
62
76
  return c.json({
63
- data: page.data.map(serializeGatePolicy),
77
+ data: visible.map(serializeGatePolicy),
64
78
  hasMore: page.nextCursor !== undefined,
65
79
  ...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
66
80
  });
@@ -71,7 +85,7 @@ export function gatePoliciesRouter(
71
85
  tenantId: c.get('tenantId') as TenantId,
72
86
  id: c.req.param('policyId'),
73
87
  });
74
- if (found === null) return notFound(c, c.req.param('policyId'));
88
+ if (found === null || !(await canRead(c, found))) return notFound(c, c.req.param('policyId'));
75
89
  return c.json(serializeGatePolicy(found));
76
90
  });
77
91
 
@@ -80,7 +94,11 @@ export function gatePoliciesRouter(
80
94
  tenantId: c.get('tenantId') as TenantId,
81
95
  id: c.req.param('policyId'),
82
96
  });
83
- if (versions.length === 0) return notFound(c, c.req.param('policyId'));
97
+ // A policy's versions share its scope (`gate-policy-scope-changed`).
98
+ const first = versions[0];
99
+ if (first === undefined || !(await canRead(c, first))) {
100
+ return notFound(c, c.req.param('policyId'));
101
+ }
84
102
  return c.json({ data: versions.map(serializeGatePolicy), hasMore: false });
85
103
  });
86
104
 
@@ -90,7 +108,7 @@ export function gatePoliciesRouter(
90
108
  id: c.req.param('policyId'),
91
109
  version: c.req.param('version'),
92
110
  });
93
- if (found === null) {
111
+ if (found === null || !(await canRead(c, found))) {
94
112
  return notFound(c, c.req.param('policyId'), c.req.param('version'));
95
113
  }
96
114
  return c.json(serializeGatePolicy(found));
@@ -144,6 +162,19 @@ export function gatePoliciesRouter(
144
162
 
145
163
  type Ctx = Context<AppEnv>;
146
164
 
165
+ /** The resource a gate policy's scope is: what reading it needs `read` on. */
166
+ function scopeRef(tenantId: TenantId, scope: LiveScope) {
167
+ switch (scope.kind) {
168
+ case 'tenant':
169
+ return ref('tenant', tenantId as unknown as string);
170
+ case 'org':
171
+ return ref('org', scope.orgId as unknown as string);
172
+ case 'project':
173
+ case 'segment':
174
+ return ref('project', scope.projectId as unknown as string);
175
+ }
176
+ }
177
+
147
178
  function badInput(c: Ctx, requestId: string, message: string) {
148
179
  c.status(statusFor('bad-input') as never);
149
180
  return c.json(toWireError({ code: 'bad-input', message }, requestId));
@@ -4,7 +4,13 @@
4
4
  import { Hono } from 'hono';
5
5
 
6
6
  import { type Principal, ref, tuplesForCreate } from '@kindgi/authz';
7
- import { type Guardrail, validateGuardrailSpec } from '@kindgi/guardrails';
7
+ import {
8
+ type Guardrail,
9
+ type GuardrailConfigProblem,
10
+ createCheckRegistry,
11
+ describeGuardrailConfigProblems,
12
+ validateGuardrailSpec,
13
+ } from '@kindgi/guardrails';
8
14
  import type { Cursor, GuardrailId, ProjectId, TenantId, UserId } from '@kindgi/types';
9
15
 
10
16
  import { statusFor, toWireError } from '../errors.js';
@@ -28,6 +34,9 @@ import { parseScopeParams } from './scope-params.js';
28
34
  * guardrails whose check code is already bundled server-side. Check
29
35
  * code is not uploaded over this surface.
30
36
  */
37
+ /** The built-in checks, for the config of a guardrail naming one. */
38
+ const builtInChecks = createCheckRegistry();
39
+
31
40
  /**
32
41
  * Optional side-effect callback fired after a successful write
33
42
  * (register, unregister) to a guardrail. Lets an in-process
@@ -42,10 +51,26 @@ export type GuardrailWriteHook = (params: {
42
51
  readonly kind: 'register' | 'unregister';
43
52
  }) => void | Promise<void>;
44
53
 
54
+ /**
55
+ * Checks a guardrail being registered against the check it names: every
56
+ * way its `config` breaks that check's `configSchema` (a pack check's,
57
+ * from its deployment), via `guardrailConfigProblems`. Any problem
58
+ * refuses the registration with `422 guardrail-config-invalid`
59
+ * (`details.issues`). Absent, or nothing to check against (an unknown
60
+ * check, a check without a schema): no problems. A guardrail naming a
61
+ * built-in check is checked by the route itself, against the built-in's
62
+ * schema, whatever the runtime passes here.
63
+ */
64
+ export type GuardrailConfigCheck = (input: {
65
+ readonly tenantId: TenantId;
66
+ readonly guardrail: Guardrail;
67
+ }) => Promise<readonly GuardrailConfigProblem[]>;
68
+
45
69
  export function guardrailsRouter(
46
70
  binding: GuardrailRegistryBinding,
47
71
  authorizer?: Authorizer,
48
72
  onWrite?: GuardrailWriteHook,
73
+ checkConfig?: GuardrailConfigCheck,
49
74
  ): Hono<AppEnv> {
50
75
  const r = new Hono<AppEnv>();
51
76
  // A read-only registry (under `kindgi dev`, the pack's files) refuses
@@ -127,8 +152,15 @@ export function guardrailsRouter(
127
152
  ...(scopeParsed.scope !== undefined && { scope: scopeParsed.scope }),
128
153
  ...(scopeParsed.inherit !== undefined && { inherit: scopeParsed.inherit }),
129
154
  });
155
+ // Only what the caller may read (T243 A), as `GET …/:id` asks.
156
+ const visible =
157
+ authorizer === undefined
158
+ ? page.data
159
+ : await authorizer.filterByCan(c, 'read', page.data, (a) =>
160
+ ref('guardrail', a.id as unknown as string),
161
+ );
130
162
  return c.json({
131
- data: page.data.map(serializeGuardrail),
163
+ data: visible.map(serializeGuardrail),
132
164
  hasMore: page.nextCursor !== undefined,
133
165
  ...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
134
166
  });
@@ -210,6 +242,33 @@ export function guardrailsRouter(
210
242
  );
211
243
  }
212
244
 
245
+ // A built-in check's config is the route's to check (its schema ships with
246
+ // `@kindgi/guardrails`); any other check's, the runtime's.
247
+ const builtIn = builtInChecks.get(validated.value.check);
248
+ const problems =
249
+ builtIn?.configProblems !== undefined
250
+ ? builtIn.configProblems(validated.value.config)
251
+ : await checkConfig?.({ tenantId, guardrail: validated.value });
252
+ if (problems !== undefined && problems.length > 0) {
253
+ c.status(statusFor('guardrail-config-invalid') as never);
254
+ return c.json(
255
+ toWireError(
256
+ {
257
+ code: 'guardrail-config-invalid',
258
+ message: describeGuardrailConfigProblems(
259
+ {
260
+ guardrailId: validated.value.id as unknown as string,
261
+ check: validated.value.check,
262
+ },
263
+ problems,
264
+ ),
265
+ issues: problems as unknown as Record<string, unknown>[],
266
+ },
267
+ requestId,
268
+ ),
269
+ );
270
+ }
271
+
213
272
  const principal = c.get('principal') as Principal | undefined;
214
273
  const creatorUserId =
215
274
  principal?.actor.kind === 'user' ? (principal.actor.id as UserId) : undefined;