@vertesia/common 1.5.0-dev.20260725.083715Z → 1.5.0-dev.20260806.125520Z

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 (552) hide show
  1. package/lib/Progress.d.ts.map +1 -1
  2. package/lib/Progress.js.map +1 -1
  3. package/lib/access-control-values.d.ts +98 -0
  4. package/lib/access-control-values.d.ts.map +1 -0
  5. package/lib/access-control-values.js +101 -0
  6. package/lib/access-control-values.js.map +1 -0
  7. package/lib/access-control.d.ts +22 -119
  8. package/lib/access-control.d.ts.map +1 -1
  9. package/lib/access-control.js +6 -78
  10. package/lib/access-control.js.map +1 -1
  11. package/lib/account-values.d.ts +53 -0
  12. package/lib/account-values.d.ts.map +1 -0
  13. package/lib/account-values.js +91 -0
  14. package/lib/account-values.js.map +1 -0
  15. package/lib/analytics.d.ts +12 -38
  16. package/lib/analytics.d.ts.map +1 -1
  17. package/lib/api-schemas/access-control.d.ts +215 -0
  18. package/lib/api-schemas/access-control.d.ts.map +1 -0
  19. package/lib/api-schemas/access-control.js +165 -0
  20. package/lib/api-schemas/access-control.js.map +1 -0
  21. package/lib/api-schemas/account.d.ts +101 -0
  22. package/lib/api-schemas/account.d.ts.map +1 -0
  23. package/lib/api-schemas/account.js +136 -0
  24. package/lib/api-schemas/account.js.map +1 -0
  25. package/lib/api-schemas/adapter.d.ts +80 -0
  26. package/lib/api-schemas/adapter.d.ts.map +1 -0
  27. package/lib/api-schemas/adapter.js +726 -0
  28. package/lib/api-schemas/adapter.js.map +1 -0
  29. package/lib/api-schemas/agent-runs.d.ts +3786 -0
  30. package/lib/api-schemas/agent-runs.d.ts.map +1 -0
  31. package/lib/api-schemas/agent-runs.js +1000 -0
  32. package/lib/api-schemas/agent-runs.js.map +1 -0
  33. package/lib/api-schemas/analytics.d.ts +86 -0
  34. package/lib/api-schemas/analytics.d.ts.map +1 -0
  35. package/lib/api-schemas/analytics.js +58 -0
  36. package/lib/api-schemas/analytics.js.map +1 -0
  37. package/lib/api-schemas/apikey.d.ts +231 -0
  38. package/lib/api-schemas/apikey.d.ts.map +1 -0
  39. package/lib/api-schemas/apikey.js +172 -0
  40. package/lib/api-schemas/apikey.js.map +1 -0
  41. package/lib/api-schemas/app-lifecycle.d.ts +1148 -0
  42. package/lib/api-schemas/app-lifecycle.d.ts.map +1 -0
  43. package/lib/api-schemas/app-lifecycle.js +801 -0
  44. package/lib/api-schemas/app-lifecycle.js.map +1 -0
  45. package/lib/api-schemas/app-runtime.d.ts +10951 -0
  46. package/lib/api-schemas/app-runtime.d.ts.map +1 -0
  47. package/lib/api-schemas/app-runtime.js +874 -0
  48. package/lib/api-schemas/app-runtime.js.map +1 -0
  49. package/lib/api-schemas/apps.d.ts +271 -0
  50. package/lib/api-schemas/apps.d.ts.map +1 -0
  51. package/lib/api-schemas/apps.js +426 -0
  52. package/lib/api-schemas/apps.js.map +1 -0
  53. package/lib/api-schemas/audit-trail.d.ts +465 -0
  54. package/lib/api-schemas/audit-trail.d.ts.map +1 -0
  55. package/lib/api-schemas/audit-trail.js +218 -0
  56. package/lib/api-schemas/audit-trail.js.map +1 -0
  57. package/lib/api-schemas/bulk-operation.d.ts +104 -0
  58. package/lib/api-schemas/bulk-operation.d.ts.map +1 -0
  59. package/lib/api-schemas/bulk-operation.js +66 -0
  60. package/lib/api-schemas/bulk-operation.js.map +1 -0
  61. package/lib/api-schemas/commands.d.ts +50 -0
  62. package/lib/api-schemas/commands.d.ts.map +1 -0
  63. package/lib/api-schemas/commands.js +58 -0
  64. package/lib/api-schemas/commands.js.map +1 -0
  65. package/lib/api-schemas/content.d.ts +3565 -0
  66. package/lib/api-schemas/content.d.ts.map +1 -0
  67. package/lib/api-schemas/content.js +854 -0
  68. package/lib/api-schemas/content.js.map +1 -0
  69. package/lib/api-schemas/cost-analytics.d.ts +300 -0
  70. package/lib/api-schemas/cost-analytics.d.ts.map +1 -0
  71. package/lib/api-schemas/cost-analytics.js +218 -0
  72. package/lib/api-schemas/cost-analytics.js.map +1 -0
  73. package/lib/api-schemas/dashboard.d.ts +408 -0
  74. package/lib/api-schemas/dashboard.d.ts.map +1 -0
  75. package/lib/api-schemas/dashboard.js +311 -0
  76. package/lib/api-schemas/dashboard.js.map +1 -0
  77. package/lib/api-schemas/data-store.d.ts +1650 -0
  78. package/lib/api-schemas/data-store.d.ts.map +1 -0
  79. package/lib/api-schemas/data-store.js +504 -0
  80. package/lib/api-schemas/data-store.js.map +1 -0
  81. package/lib/api-schemas/document-processing.d.ts +1501 -0
  82. package/lib/api-schemas/document-processing.d.ts.map +1 -0
  83. package/lib/api-schemas/document-processing.js +312 -0
  84. package/lib/api-schemas/document-processing.js.map +1 -0
  85. package/lib/api-schemas/embeddings.d.ts +184 -0
  86. package/lib/api-schemas/embeddings.d.ts.map +1 -0
  87. package/lib/api-schemas/embeddings.js +102 -0
  88. package/lib/api-schemas/embeddings.js.map +1 -0
  89. package/lib/api-schemas/environment.d.ts +412 -0
  90. package/lib/api-schemas/environment.d.ts.map +1 -0
  91. package/lib/api-schemas/environment.js +170 -0
  92. package/lib/api-schemas/environment.js.map +1 -0
  93. package/lib/api-schemas/events.d.ts +4918 -0
  94. package/lib/api-schemas/events.d.ts.map +1 -0
  95. package/lib/api-schemas/events.js +888 -0
  96. package/lib/api-schemas/events.js.map +1 -0
  97. package/lib/api-schemas/files.d.ts +107 -0
  98. package/lib/api-schemas/files.d.ts.map +1 -0
  99. package/lib/api-schemas/files.js +137 -0
  100. package/lib/api-schemas/files.js.map +1 -0
  101. package/lib/api-schemas/group.d.ts +122 -0
  102. package/lib/api-schemas/group.d.ts.map +1 -0
  103. package/lib/api-schemas/group.js +142 -0
  104. package/lib/api-schemas/group.js.map +1 -0
  105. package/lib/api-schemas/index.d.ts +36 -0
  106. package/lib/api-schemas/index.d.ts.map +1 -0
  107. package/lib/api-schemas/index.js +36 -0
  108. package/lib/api-schemas/index.js.map +1 -0
  109. package/lib/api-schemas/indexing.d.ts +144 -0
  110. package/lib/api-schemas/indexing.d.ts.map +1 -0
  111. package/lib/api-schemas/indexing.js +217 -0
  112. package/lib/api-schemas/indexing.js.map +1 -0
  113. package/lib/api-schemas/integrations.d.ts +269 -0
  114. package/lib/api-schemas/integrations.d.ts.map +1 -0
  115. package/lib/api-schemas/integrations.js +335 -0
  116. package/lib/api-schemas/integrations.js.map +1 -0
  117. package/lib/api-schemas/interaction.d.ts +22456 -0
  118. package/lib/api-schemas/interaction.d.ts.map +1 -0
  119. package/lib/api-schemas/interaction.js +2071 -0
  120. package/lib/api-schemas/interaction.js.map +1 -0
  121. package/lib/api-schemas/invites.d.ts +162 -0
  122. package/lib/api-schemas/invites.d.ts.map +1 -0
  123. package/lib/api-schemas/invites.js +106 -0
  124. package/lib/api-schemas/invites.js.map +1 -0
  125. package/lib/api-schemas/oauth-server.d.ts +415 -0
  126. package/lib/api-schemas/oauth-server.d.ts.map +1 -0
  127. package/lib/api-schemas/oauth-server.js +193 -0
  128. package/lib/api-schemas/oauth-server.js.map +1 -0
  129. package/lib/api-schemas/oauth.d.ts +150 -0
  130. package/lib/api-schemas/oauth.d.ts.map +1 -0
  131. package/lib/api-schemas/oauth.js +148 -0
  132. package/lib/api-schemas/oauth.js.map +1 -0
  133. package/lib/api-schemas/parameters.d.ts +64 -0
  134. package/lib/api-schemas/parameters.d.ts.map +1 -0
  135. package/lib/api-schemas/parameters.js +246 -0
  136. package/lib/api-schemas/parameters.js.map +1 -0
  137. package/lib/api-schemas/process.d.ts +499 -0
  138. package/lib/api-schemas/process.d.ts.map +1 -0
  139. package/lib/api-schemas/process.js +817 -0
  140. package/lib/api-schemas/process.js.map +1 -0
  141. package/lib/api-schemas/project-configuration.d.ts +4900 -0
  142. package/lib/api-schemas/project-configuration.d.ts.map +1 -0
  143. package/lib/api-schemas/project-configuration.js +425 -0
  144. package/lib/api-schemas/project-configuration.js.map +1 -0
  145. package/lib/api-schemas/project.d.ts +7247 -0
  146. package/lib/api-schemas/project.d.ts.map +1 -0
  147. package/lib/api-schemas/project.js +185 -0
  148. package/lib/api-schemas/project.js.map +1 -0
  149. package/lib/api-schemas/prompt.d.ts +70 -0
  150. package/lib/api-schemas/prompt.d.ts.map +1 -0
  151. package/lib/api-schemas/prompt.js +77 -0
  152. package/lib/api-schemas/prompt.js.map +1 -0
  153. package/lib/api-schemas/quota.d.ts +90 -0
  154. package/lib/api-schemas/quota.d.ts.map +1 -0
  155. package/lib/api-schemas/quota.js +95 -0
  156. package/lib/api-schemas/quota.js.map +1 -0
  157. package/lib/api-schemas/registry.d.ts +98506 -0
  158. package/lib/api-schemas/registry.d.ts.map +1 -0
  159. package/lib/api-schemas/registry.js +2606 -0
  160. package/lib/api-schemas/registry.js.map +1 -0
  161. package/lib/api-schemas/schema-primitives.d.ts +5 -0
  162. package/lib/api-schemas/schema-primitives.d.ts.map +1 -0
  163. package/lib/api-schemas/schema-primitives.js +11 -0
  164. package/lib/api-schemas/schema-primitives.js.map +1 -0
  165. package/lib/api-schemas/secrets.d.ts +497 -0
  166. package/lib/api-schemas/secrets.d.ts.map +1 -0
  167. package/lib/api-schemas/secrets.js +298 -0
  168. package/lib/api-schemas/secrets.js.map +1 -0
  169. package/lib/api-schemas/store.d.ts +22140 -0
  170. package/lib/api-schemas/store.d.ts.map +1 -0
  171. package/lib/api-schemas/store.js +557 -0
  172. package/lib/api-schemas/store.js.map +1 -0
  173. package/lib/api-schemas/sts.d.ts +166 -0
  174. package/lib/api-schemas/sts.d.ts.map +1 -0
  175. package/lib/api-schemas/sts.js +107 -0
  176. package/lib/api-schemas/sts.js.map +1 -0
  177. package/lib/api-schemas/task.d.ts +215 -0
  178. package/lib/api-schemas/task.d.ts.map +1 -0
  179. package/lib/api-schemas/task.js +95 -0
  180. package/lib/api-schemas/task.js.map +1 -0
  181. package/lib/api-schemas/tools.d.ts +111 -0
  182. package/lib/api-schemas/tools.d.ts.map +1 -0
  183. package/lib/api-schemas/tools.js +122 -0
  184. package/lib/api-schemas/tools.js.map +1 -0
  185. package/lib/api-schemas/user.d.ts +208 -0
  186. package/lib/api-schemas/user.d.ts.map +1 -0
  187. package/lib/api-schemas/user.js +180 -0
  188. package/lib/api-schemas/user.js.map +1 -0
  189. package/lib/api-schemas/view-execution.d.ts +3163 -0
  190. package/lib/api-schemas/view-execution.d.ts.map +1 -0
  191. package/lib/api-schemas/view-execution.js +172 -0
  192. package/lib/api-schemas/view-execution.js.map +1 -0
  193. package/lib/api-schemas/views.d.ts +5990 -0
  194. package/lib/api-schemas/views.d.ts.map +1 -0
  195. package/lib/api-schemas/views.js +396 -0
  196. package/lib/api-schemas/views.js.map +1 -0
  197. package/lib/api-schemas/workflow-runs.d.ts +2210 -0
  198. package/lib/api-schemas/workflow-runs.d.ts.map +1 -0
  199. package/lib/api-schemas/workflow-runs.js +589 -0
  200. package/lib/api-schemas/workflow-runs.js.map +1 -0
  201. package/lib/apikey-values.d.ts +10 -0
  202. package/lib/apikey-values.d.ts.map +1 -0
  203. package/lib/apikey-values.js +11 -0
  204. package/lib/apikey-values.js.map +1 -0
  205. package/lib/apikey.d.ts +37 -36
  206. package/lib/apikey.d.ts.map +1 -1
  207. package/lib/apikey.js +5 -4
  208. package/lib/apikey.js.map +1 -1
  209. package/lib/apps.d.ts +142 -1172
  210. package/lib/apps.d.ts.map +1 -1
  211. package/lib/apps.js +4 -0
  212. package/lib/apps.js.map +1 -1
  213. package/lib/ask-user.d.ts +8 -1
  214. package/lib/ask-user.d.ts.map +1 -1
  215. package/lib/audit-trail.d.ts +20 -131
  216. package/lib/audit-trail.d.ts.map +1 -1
  217. package/lib/audit-trail.js.map +1 -1
  218. package/lib/browser-credentials.d.ts +11 -106
  219. package/lib/browser-credentials.d.ts.map +1 -1
  220. package/lib/common.d.ts +59 -81
  221. package/lib/common.d.ts.map +1 -1
  222. package/lib/cost-analytics.d.ts +14 -167
  223. package/lib/cost-analytics.d.ts.map +1 -1
  224. package/lib/cost-analytics.js.map +1 -1
  225. package/lib/data-platform.d.ts +122 -786
  226. package/lib/data-platform.d.ts.map +1 -1
  227. package/lib/data-platform.js +41 -61
  228. package/lib/data-platform.js.map +1 -1
  229. package/lib/email.d.ts +5 -17
  230. package/lib/email.d.ts.map +1 -1
  231. package/lib/email.js +0 -3
  232. package/lib/email.js.map +1 -1
  233. package/lib/embeddings.d.ts +14 -56
  234. package/lib/embeddings.d.ts.map +1 -1
  235. package/lib/environment.d.ts +22 -118
  236. package/lib/environment.d.ts.map +1 -1
  237. package/lib/environment.js +3 -0
  238. package/lib/environment.js.map +1 -1
  239. package/lib/facets.d.ts +4 -7
  240. package/lib/facets.d.ts.map +1 -1
  241. package/lib/group.d.ts +33 -39
  242. package/lib/group.d.ts.map +1 -1
  243. package/lib/group.js +0 -1
  244. package/lib/group.js.map +1 -1
  245. package/lib/index.d.ts +8 -0
  246. package/lib/index.d.ts.map +1 -1
  247. package/lib/index.js +1 -0
  248. package/lib/index.js.map +1 -1
  249. package/lib/integrations.d.ts +20 -108
  250. package/lib/integrations.d.ts.map +1 -1
  251. package/lib/integrations.js.map +1 -1
  252. package/lib/interaction-values.d.ts +11 -0
  253. package/lib/interaction-values.d.ts.map +1 -0
  254. package/lib/interaction-values.js +24 -0
  255. package/lib/interaction-values.js.map +1 -0
  256. package/lib/interaction.d.ts +88 -778
  257. package/lib/interaction.d.ts.map +1 -1
  258. package/lib/interaction.js +8 -12
  259. package/lib/interaction.js.map +1 -1
  260. package/lib/meters.d.ts +11 -7
  261. package/lib/meters.d.ts.map +1 -1
  262. package/lib/meters.js.map +1 -1
  263. package/lib/oauth-server.d.ts +33 -119
  264. package/lib/oauth-server.d.ts.map +1 -1
  265. package/lib/oauth.d.ts +14 -96
  266. package/lib/oauth.d.ts.map +1 -1
  267. package/lib/oauth.js +0 -4
  268. package/lib/oauth.js.map +1 -1
  269. package/lib/payload.d.ts +15 -38
  270. package/lib/payload.d.ts.map +1 -1
  271. package/lib/platform-event-validation.d.ts.map +1 -1
  272. package/lib/platform-event-validation.js +15 -2
  273. package/lib/platform-event-validation.js.map +1 -1
  274. package/lib/platform-event.d.ts +79 -464
  275. package/lib/platform-event.d.ts.map +1 -1
  276. package/lib/platform-event.js.map +1 -1
  277. package/lib/principal-context.d.ts +10 -15
  278. package/lib/principal-context.d.ts.map +1 -1
  279. package/lib/project-values.d.ts +24 -0
  280. package/lib/project-values.d.ts.map +1 -0
  281. package/lib/project-values.js +42 -0
  282. package/lib/project-values.js.map +1 -0
  283. package/lib/project.d.ts +56 -504
  284. package/lib/project.d.ts.map +1 -1
  285. package/lib/project.js +6 -76
  286. package/lib/project.js.map +1 -1
  287. package/lib/prompt.d.ts +20 -51
  288. package/lib/prompt.d.ts.map +1 -1
  289. package/lib/prompt.js.map +1 -1
  290. package/lib/query.d.ts +27 -88
  291. package/lib/query.d.ts.map +1 -1
  292. package/lib/rate-limiter.d.ts +19 -70
  293. package/lib/rate-limiter.d.ts.map +1 -1
  294. package/lib/rate-limiter.js +0 -3
  295. package/lib/rate-limiter.js.map +1 -1
  296. package/lib/refs.d.ts +3 -11
  297. package/lib/refs.d.ts.map +1 -1
  298. package/lib/refs.js.map +1 -1
  299. package/lib/roles/types.d.ts +14 -20
  300. package/lib/roles/types.d.ts.map +1 -1
  301. package/lib/roles/types.js +5 -9
  302. package/lib/roles/types.js.map +1 -1
  303. package/lib/runs.d.ts +6 -25
  304. package/lib/runs.d.ts.map +1 -1
  305. package/lib/schema-for-extraction.js.map +1 -1
  306. package/lib/secrets.d.ts +20 -105
  307. package/lib/secrets.d.ts.map +1 -1
  308. package/lib/store/agent-approval.d.ts +6 -15
  309. package/lib/store/agent-approval.d.ts.map +1 -1
  310. package/lib/store/agent-approval.js.map +1 -1
  311. package/lib/store/agent-run.d.ts +57 -358
  312. package/lib/store/agent-run.d.ts.map +1 -1
  313. package/lib/store/collections.d.ts +11 -63
  314. package/lib/store/collections.d.ts.map +1 -1
  315. package/lib/store/collections.js.map +1 -1
  316. package/lib/store/conversation-state.d.ts +61 -61
  317. package/lib/store/conversation-state.d.ts.map +1 -1
  318. package/lib/store/conversation-state.js +2 -0
  319. package/lib/store/conversation-state.js.map +1 -1
  320. package/lib/store/doc-analyzer.d.ts +9 -32
  321. package/lib/store/doc-analyzer.d.ts.map +1 -1
  322. package/lib/store/dsl-workflow.d.ts +37 -151
  323. package/lib/store/dsl-workflow.d.ts.map +1 -1
  324. package/lib/store/dsl-workflow.js.map +1 -1
  325. package/lib/store/editing-policy-schema.generated.d.ts +3 -0
  326. package/lib/store/editing-policy-schema.generated.d.ts.map +1 -0
  327. package/lib/store/editing-policy-schema.generated.js +28 -0
  328. package/lib/store/editing-policy-schema.generated.js.map +1 -0
  329. package/lib/store/grounded-extraction.d.ts +7 -104
  330. package/lib/store/grounded-extraction.d.ts.map +1 -1
  331. package/lib/store/grounded-extraction.js.map +1 -1
  332. package/lib/store/index.d.ts +2 -0
  333. package/lib/store/index.d.ts.map +1 -1
  334. package/lib/store/index.js +3 -0
  335. package/lib/store/index.js.map +1 -1
  336. package/lib/store/intake-policy-schema.generated.d.ts +3 -0
  337. package/lib/store/intake-policy-schema.generated.d.ts.map +1 -0
  338. package/lib/store/intake-policy-schema.generated.js +1425 -0
  339. package/lib/store/intake-policy-schema.generated.js.map +1 -0
  340. package/lib/store/process-schema.d.ts +81 -1
  341. package/lib/store/process-schema.d.ts.map +1 -1
  342. package/lib/store/process-schema.js +79 -0
  343. package/lib/store/process-schema.js.map +1 -1
  344. package/lib/store/process-validation.d.ts.map +1 -1
  345. package/lib/store/process-validation.js +70 -2
  346. package/lib/store/process-validation.js.map +1 -1
  347. package/lib/store/process.d.ts +36 -125
  348. package/lib/store/process.d.ts.map +1 -1
  349. package/lib/store/process.js.map +1 -1
  350. package/lib/store/rendering.d.ts +9 -64
  351. package/lib/store/rendering.d.ts.map +1 -1
  352. package/lib/store/rendering.js.map +1 -1
  353. package/lib/store/schedule.d.ts +6 -6
  354. package/lib/store/schedule.d.ts.map +1 -1
  355. package/lib/store/store.d.ts +99 -701
  356. package/lib/store/store.d.ts.map +1 -1
  357. package/lib/store/store.js +4 -456
  358. package/lib/store/store.js.map +1 -1
  359. package/lib/store/task.d.ts +15 -59
  360. package/lib/store/task.d.ts.map +1 -1
  361. package/lib/store/task.js +0 -3
  362. package/lib/store/task.js.map +1 -1
  363. package/lib/store/workflow.d.ts +58 -516
  364. package/lib/store/workflow.d.ts.map +1 -1
  365. package/lib/store/workflow.js +31 -11
  366. package/lib/store/workflow.js.map +1 -1
  367. package/lib/sts-errors.d.ts +7 -0
  368. package/lib/sts-errors.d.ts.map +1 -0
  369. package/lib/sts-errors.js +11 -0
  370. package/lib/sts-errors.js.map +1 -0
  371. package/lib/sts-token-types.d.ts +13 -66
  372. package/lib/sts-token-types.d.ts.map +1 -1
  373. package/lib/sts-token-types.js.map +1 -1
  374. package/lib/tools.d.ts +8 -100
  375. package/lib/tools.d.ts.map +1 -1
  376. package/lib/transient-tokens-values.d.ts +11 -0
  377. package/lib/transient-tokens-values.d.ts.map +1 -0
  378. package/lib/transient-tokens-values.js +12 -0
  379. package/lib/transient-tokens-values.js.map +1 -0
  380. package/lib/transient-tokens.d.ts +15 -13
  381. package/lib/transient-tokens.d.ts.map +1 -1
  382. package/lib/transient-tokens.js +5 -5
  383. package/lib/transient-tokens.js.map +1 -1
  384. package/lib/user.d.ts +55 -156
  385. package/lib/user.d.ts.map +1 -1
  386. package/lib/user.js +2 -79
  387. package/lib/user.js.map +1 -1
  388. package/lib/versions.d.ts +34 -1
  389. package/lib/versions.d.ts.map +1 -1
  390. package/lib/versions.js +33 -0
  391. package/lib/versions.js.map +1 -1
  392. package/lib/vertesia-common.js +6 -2
  393. package/lib/vertesia-common.js.map +1 -1
  394. package/lib/view-configuration-validation.js.map +1 -1
  395. package/lib/view-query-validation.js.map +1 -1
  396. package/lib/view-validation-helpers.d.ts +1 -1
  397. package/lib/view-validation-helpers.d.ts.map +1 -1
  398. package/lib/views-schema.d.ts +51 -51
  399. package/lib/views-schema.d.ts.map +1 -1
  400. package/lib/views-validation.js.map +1 -1
  401. package/lib/views.d.ts +58 -314
  402. package/lib/views.d.ts.map +1 -1
  403. package/lib/views.js.map +1 -1
  404. package/lib/workflow-analytics.d.ts +10 -3
  405. package/lib/workflow-analytics.d.ts.map +1 -1
  406. package/package.json +14 -5
  407. package/src/access-control-values.ts +113 -0
  408. package/src/access-control.ts +33 -138
  409. package/src/account-values.ts +95 -0
  410. package/src/analytics.ts +18 -42
  411. package/src/api-schemas/access-control.contract.test.ts +209 -0
  412. package/src/api-schemas/access-control.ts +208 -0
  413. package/src/api-schemas/account.contract.test.ts +318 -0
  414. package/src/api-schemas/account.ts +150 -0
  415. package/src/api-schemas/adapter-edge-cases.test.ts +480 -0
  416. package/src/api-schemas/adapter.ts +778 -0
  417. package/src/api-schemas/agent-runs.ts +1091 -0
  418. package/src/api-schemas/analytics.ts +65 -0
  419. package/src/api-schemas/apikey.contract.test.ts +270 -0
  420. package/src/api-schemas/apikey.ts +199 -0
  421. package/src/api-schemas/app-delete-summary.contract.test.ts +67 -0
  422. package/src/api-schemas/app-lifecycle.ts +900 -0
  423. package/src/api-schemas/app-runtime.ts +1022 -0
  424. package/src/api-schemas/apps.ts +484 -0
  425. package/src/api-schemas/audit-trail.ts +243 -0
  426. package/src/api-schemas/bulk-operation.contract.test.ts +39 -0
  427. package/src/api-schemas/bulk-operation.ts +75 -0
  428. package/src/api-schemas/bundle-isolation.test.ts +80 -0
  429. package/src/api-schemas/commands.contract.test.ts +51 -0
  430. package/src/api-schemas/commands.ts +62 -0
  431. package/src/api-schemas/content.ts +952 -0
  432. package/src/api-schemas/cost-analytics.contract.test.ts +64 -0
  433. package/src/api-schemas/cost-analytics.ts +235 -0
  434. package/src/api-schemas/dashboard.contract.test.ts +127 -0
  435. package/src/api-schemas/dashboard.ts +351 -0
  436. package/src/api-schemas/data-store.contract.test.ts +91 -0
  437. package/src/api-schemas/data-store.ts +571 -0
  438. package/src/api-schemas/document-processing.contract.test.ts +76 -0
  439. package/src/api-schemas/document-processing.ts +344 -0
  440. package/src/api-schemas/embeddings.ts +113 -0
  441. package/src/api-schemas/environment.contract.test.ts +184 -0
  442. package/src/api-schemas/environment.ts +190 -0
  443. package/src/api-schemas/events.ts +981 -0
  444. package/src/api-schemas/files.ts +159 -0
  445. package/src/api-schemas/group.contract.test.ts +205 -0
  446. package/src/api-schemas/group.ts +155 -0
  447. package/src/api-schemas/index.ts +35 -0
  448. package/src/api-schemas/indexing.contract.test.ts +83 -0
  449. package/src/api-schemas/indexing.ts +234 -0
  450. package/src/api-schemas/integrations.ts +369 -0
  451. package/src/api-schemas/interaction.contract.test.ts +27 -0
  452. package/src/api-schemas/interaction.ts +2364 -0
  453. package/src/api-schemas/invites.contract.test.ts +268 -0
  454. package/src/api-schemas/invites.ts +127 -0
  455. package/src/api-schemas/llumiverse.contract.test.ts +108 -0
  456. package/src/api-schemas/mcp-api-key.contract.test.ts +86 -0
  457. package/src/api-schemas/oauth-server.ts +219 -0
  458. package/src/api-schemas/oauth.contract.test.ts +118 -0
  459. package/src/api-schemas/oauth.ts +166 -0
  460. package/src/api-schemas/parameters.test.ts +402 -0
  461. package/src/api-schemas/parameters.ts +310 -0
  462. package/src/api-schemas/process.ts +929 -0
  463. package/src/api-schemas/project-configuration.ts +478 -0
  464. package/src/api-schemas/project.contract.test.ts +365 -0
  465. package/src/api-schemas/project.ts +214 -0
  466. package/src/api-schemas/prompt.ts +88 -0
  467. package/src/api-schemas/pruning-limits.test.ts +189 -0
  468. package/src/api-schemas/quota.contract.test.ts +147 -0
  469. package/src/api-schemas/quota.ts +122 -0
  470. package/src/api-schemas/registry-groups.test.ts +91 -0
  471. package/src/api-schemas/registry.ts +3512 -0
  472. package/src/api-schemas/response-pruning.test.ts +260 -0
  473. package/src/api-schemas/schema-primitives.ts +12 -0
  474. package/src/api-schemas/secrets.ts +332 -0
  475. package/src/api-schemas/store.contract.test.ts +471 -0
  476. package/src/api-schemas/store.ts +604 -0
  477. package/src/api-schemas/sts.contract.test.ts +112 -0
  478. package/src/api-schemas/sts.ts +123 -0
  479. package/src/api-schemas/task.ts +104 -0
  480. package/src/api-schemas/tools.ts +140 -0
  481. package/src/api-schemas/user.contract.test.ts +191 -0
  482. package/src/api-schemas/user.ts +204 -0
  483. package/src/api-schemas/view-execution.ts +200 -0
  484. package/src/api-schemas/views.ts +437 -0
  485. package/src/api-schemas/workflow-runs.ts +653 -0
  486. package/src/apikey-values.ts +10 -0
  487. package/src/apikey.ts +49 -40
  488. package/src/apps.test.ts +82 -0
  489. package/src/apps.ts +283 -1228
  490. package/src/ask-user.ts +9 -1
  491. package/src/audit-trail.ts +45 -137
  492. package/src/browser-credentials.ts +21 -106
  493. package/src/common.ts +67 -78
  494. package/src/cost-analytics.ts +37 -176
  495. package/src/data-platform.ts +205 -776
  496. package/src/email.ts +5 -17
  497. package/src/embeddings.ts +22 -60
  498. package/src/environment.ts +52 -126
  499. package/src/facets.ts +4 -7
  500. package/src/group.ts +38 -42
  501. package/src/index.ts +12 -0
  502. package/src/integrations.ts +39 -129
  503. package/src/interaction-values.ts +23 -0
  504. package/src/interaction.ts +162 -902
  505. package/src/meters.ts +11 -7
  506. package/src/oauth-server.ts +58 -127
  507. package/src/oauth.ts +24 -108
  508. package/src/payload.ts +25 -40
  509. package/src/platform-event-validation.test.ts +26 -0
  510. package/src/platform-event-validation.ts +15 -2
  511. package/src/platform-event.ts +141 -484
  512. package/src/principal-context.ts +11 -15
  513. package/src/project-values.ts +41 -0
  514. package/src/project.ts +116 -588
  515. package/src/prompt.ts +34 -61
  516. package/src/query.ts +34 -93
  517. package/src/rate-limiter.ts +27 -75
  518. package/src/refs.ts +4 -11
  519. package/src/roles/types.ts +20 -20
  520. package/src/runs.ts +11 -24
  521. package/src/secrets.ts +38 -117
  522. package/src/store/agent-approval.ts +9 -14
  523. package/src/store/agent-run.ts +93 -450
  524. package/src/store/collections.ts +21 -63
  525. package/src/store/content-type-editing.test.ts +1 -1
  526. package/src/store/conversation-state.ts +75 -64
  527. package/src/store/doc-analyzer.ts +17 -33
  528. package/src/store/dsl-workflow.ts +62 -158
  529. package/src/store/editing-policy-schema.generated.ts +30 -0
  530. package/src/store/grounded-extraction.ts +13 -104
  531. package/src/store/index.ts +3 -0
  532. package/src/store/intake-policy-schema.generated.ts +1442 -0
  533. package/src/store/process-schema.test.ts +43 -0
  534. package/src/store/process-schema.ts +79 -0
  535. package/src/store/process-validation.test.ts +141 -0
  536. package/src/store/process-validation.ts +82 -2
  537. package/src/store/process.ts +70 -146
  538. package/src/store/rendering.ts +15 -64
  539. package/src/store/store.ts +197 -1204
  540. package/src/store/task.ts +25 -59
  541. package/src/store/workflow.ts +103 -554
  542. package/src/sts-errors.ts +13 -0
  543. package/src/sts-token-types.ts +26 -75
  544. package/src/tools.ts +18 -97
  545. package/src/transient-tokens-values.ts +11 -0
  546. package/src/transient-tokens.ts +16 -13
  547. package/src/user.ts +75 -215
  548. package/src/versions.test.ts +13 -0
  549. package/src/versions.ts +36 -0
  550. package/src/views-schema.test.ts +9 -1
  551. package/src/views.ts +106 -329
  552. package/src/workflow-analytics.ts +10 -3
@@ -0,0 +1,219 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * The contracts for Vertesia's OWN OAuth server: the clients registered against it and the grants
5
+ * their users have approved. Vertesia acting as a client of someone else's authorization server is
6
+ * `./oauth.js`.
7
+ *
8
+ * Only the three resources backed by the studio API have slots here. The token server's own surface
9
+ * — authorize, token, device code, consent — is still TypeScript-derived and has not been converted,
10
+ * so the types it uses stay declared in `../oauth-server.ts` rather than moving here.
11
+ */
12
+
13
+ export const OAuthClientTypeSchema = z.enum(['public', 'confidential']).meta({ id: 'OAuthClientType' });
14
+
15
+ export const OAuthClientStatusSchema = z.enum(['active', 'disabled']).meta({ id: 'OAuthClientStatus' });
16
+
17
+ export const OAuthRegistrationSourceSchema = z.enum(['admin', 'dynamic']).meta({ id: 'OAuthRegistrationSource' });
18
+
19
+ export const OAuthProjectBindingModeSchema = z.enum(['user_select', 'fixed']).meta({ id: 'OAuthProjectBindingMode' });
20
+
21
+ export const OAuthTokenEndpointAuthMethodSchema = z
22
+ .enum(['none', 'client_secret_post', 'client_secret_basic'])
23
+ .meta({ id: 'OAuthTokenEndpointAuthMethod' });
24
+
25
+ export const OAuthGrantTypeSchema = z
26
+ .enum(['authorization_code', 'refresh_token', 'urn:ietf:params:oauth:grant-type:device_code'])
27
+ .meta({ id: 'OAuthGrantType' });
28
+
29
+ export const OAuthResponseTypeSchema = z.literal('code').meta({ id: 'OAuthResponseType' });
30
+
31
+ export const OAuthGrantStatusSchema = z.enum(['active', 'revoked', 'expired']).meta({ id: 'OAuthGrantStatus' });
32
+
33
+ export const OAuthGrantSortFieldSchema = z
34
+ .enum(['granted_at', 'client_name', 'user_name', 'resource', 'last_used_at', 'expires_at', 'status'])
35
+ .meta({ id: 'OAuthGrantSortField' });
36
+
37
+ export const OAuthGrantSortOrderSchema = z.enum(['asc', 'desc']).meta({ id: 'OAuthGrantSortOrder' });
38
+
39
+ /**
40
+ * A client's registration, without its issued id.
41
+ *
42
+ * Split from {@link OAuthClientSchema} because `OAuthClient extends OAuthClientData` in the published
43
+ * types and both names are exported. No `id` in its meta, so it is never a component: the document
44
+ * publishes these properties inline under `OAuthClient`, with `client_id` last.
45
+ */
46
+ export const OAuthClientDataSchema = z.strictObject({
47
+ client_name: z.string(),
48
+ client_type: OAuthClientTypeSchema,
49
+ redirect_uris: z.array(z.string()),
50
+ grant_types: z.array(OAuthGrantTypeSchema),
51
+ response_types: z.array(OAuthResponseTypeSchema),
52
+ token_endpoint_auth_method: OAuthTokenEndpointAuthMethodSchema,
53
+ allowed_scopes: z.array(z.string()),
54
+ default_scopes: z.array(z.string()).optional(),
55
+ registration_source: OAuthRegistrationSourceSchema,
56
+ status: OAuthClientStatusSchema,
57
+ project_binding_mode: OAuthProjectBindingModeSchema,
58
+ fixed_project_id: z.string().optional(),
59
+ restrict_to_owner_account: z
60
+ .boolean()
61
+ .meta({
62
+ description:
63
+ 'When true (the default for new clients), the client may only be authorized for projects in its owning account/organization. Set to false to allow authorization for any project the approving user can access, regardless of account — required for OAuth/MCP clients used across organizations. The owning account itself is internal and not exposed here.',
64
+ })
65
+ .optional(),
66
+ metadata: z.looseObject({}).optional(),
67
+ created_by: z.string().optional(),
68
+ client_secret_configured: z.boolean().optional(),
69
+ created_at: z.string(),
70
+ updated_at: z.string(),
71
+ });
72
+
73
+ export const OAuthClientSchema = OAuthClientDataSchema.extend({
74
+ client_id: z.string(),
75
+ }).meta({ id: 'OAuthClient' });
76
+
77
+ export const OAuthClientArraySchema = z.array(OAuthClientSchema).meta({ id: 'OAuthClientArray' });
78
+
79
+ /**
80
+ * The create response, which is the read shape plus the one field that is never readable again.
81
+ *
82
+ * `client_secret` is returned exactly once, by the call that generates it; every later read of the
83
+ * same client publishes `client_secret_configured` instead. Two components rather than one optional
84
+ * field on `OAuthClient` is what keeps that one-time disclosure visible in the document.
85
+ */
86
+ export const OAuthClientCreateResponseSchema = OAuthClientSchema.extend({
87
+ client_secret: z.string().optional(),
88
+ }).meta({ id: 'OAuthClientCreateResponse' });
89
+
90
+ export const OAuthClientScopeMetadataSchema = z
91
+ .strictObject({
92
+ supported_scopes: z.array(z.string()),
93
+ })
94
+ .meta({ id: 'OAuthClientScopeMetadata' });
95
+
96
+ export const CreateOAuthClientPayloadSchema = z
97
+ .strictObject({
98
+ client_name: z.string(),
99
+ client_type: OAuthClientTypeSchema.optional(),
100
+ redirect_uris: z.array(z.string()),
101
+ grant_types: z.array(OAuthGrantTypeSchema).optional(),
102
+ response_types: z.array(OAuthResponseTypeSchema).optional(),
103
+ token_endpoint_auth_method: OAuthTokenEndpointAuthMethodSchema.optional(),
104
+ allowed_scopes: z.array(z.string()).optional(),
105
+ default_scopes: z.array(z.string()).optional(),
106
+ project_binding_mode: OAuthProjectBindingModeSchema.optional(),
107
+ fixed_project_id: z.string().optional(),
108
+ restrict_to_owner_account: z.boolean().optional(),
109
+ client_secret: z.string().optional(),
110
+ metadata: z.looseObject({}).optional(),
111
+ })
112
+ .meta({ id: 'CreateOAuthClientPayload' });
113
+
114
+ /**
115
+ * Not `.partial()` of the create payload, and the difference is deliberate rather than an oversight
116
+ * to tidy up: an update accepts `status`, which a create does not (a new client is always `active`),
117
+ * and cannot accept `client_type`, which is fixed at registration because the auth method and secret
118
+ * are decided from it. Deriving one from the other would publish both of those wrong.
119
+ */
120
+ export const UpdateOAuthClientPayloadSchema = z
121
+ .strictObject({
122
+ client_name: z.string().optional(),
123
+ redirect_uris: z.array(z.string()).optional(),
124
+ grant_types: z.array(OAuthGrantTypeSchema).optional(),
125
+ response_types: z.array(OAuthResponseTypeSchema).optional(),
126
+ token_endpoint_auth_method: OAuthTokenEndpointAuthMethodSchema.optional(),
127
+ allowed_scopes: z.array(z.string()).optional(),
128
+ default_scopes: z.array(z.string()).optional(),
129
+ status: OAuthClientStatusSchema.optional(),
130
+ project_binding_mode: OAuthProjectBindingModeSchema.optional(),
131
+ fixed_project_id: z.string().optional(),
132
+ restrict_to_owner_account: z.boolean().optional(),
133
+ client_secret: z.string().optional(),
134
+ metadata: z.looseObject({}).optional(),
135
+ })
136
+ .meta({ id: 'UpdateOAuthClientPayload' });
137
+
138
+ export const OAuthGrantSchema = z
139
+ .strictObject({
140
+ grant_id: z.string(),
141
+ client_id: z.string(),
142
+ client_name: z.string(),
143
+ user_id: z.string(),
144
+ user_name: z.string().optional(),
145
+ user_email: z.string().optional(),
146
+ account_id: z.string(),
147
+ project_id: z.string(),
148
+ resource: z.string(),
149
+ scope: z.array(z.string()),
150
+ status: OAuthGrantStatusSchema,
151
+ token_count: z.number(),
152
+ granted_at: z.string(),
153
+ created_at: z.string(),
154
+ last_used_at: z.string().optional(),
155
+ expires_at: z.string().optional(),
156
+ })
157
+ .meta({ id: 'OAuthGrant' });
158
+
159
+ /**
160
+ * What `?status=` accepts: every {@link OAuthGrantStatusSchema} member, plus `all` for "do not filter".
161
+ *
162
+ * Written out rather than composed from the status enum, because the two are published differently
163
+ * and have to be: a query parameter is expanded inline, so a union would reach the document as an
164
+ * `anyOf` of a `$ref` and a `const` — a shape no generator turns into a usable enum, and one this
165
+ * parameter has never had. `oauth-grant-status-filter.test.ts` pins the members to the status enum
166
+ * plus the sentinel so the two cannot drift apart silently.
167
+ */
168
+ const OAuthGrantStatusFilterSchema = z.enum(['active', 'revoked', 'expired', 'all']);
169
+
170
+ /**
171
+ * The listing filters, shared with the bulk revoke body because `BulkRevokeOAuthGrantsPayload
172
+ * extends ListOAuthGrantsQuery` — selecting grants to revoke is selecting grants to list, and two
173
+ * copies of ten filters would be two chances for the selection to mean something different from the
174
+ * preview the caller looked at.
175
+ */
176
+ const oauthGrantFilterFields = {
177
+ account_id: z.string().optional(),
178
+ project_id: z.string().optional(),
179
+ user_id: z.string().optional(),
180
+ client_id: z.string().optional(),
181
+ resource: z.string().optional(),
182
+ status: OAuthGrantStatusFilterSchema.optional(),
183
+ limit: z.number().optional(),
184
+ offset: z.number().optional(),
185
+ sort_by: OAuthGrantSortFieldSchema.optional(),
186
+ sort_order: OAuthGrantSortOrderSchema.optional(),
187
+ };
188
+
189
+ export const ListOAuthGrantsQuerySchema = z.strictObject(oauthGrantFilterFields).meta({ id: 'ListOAuthGrantsQuery' });
190
+
191
+ export const RevokeOAuthGrantQuerySchema = z
192
+ .strictObject({
193
+ include_consent: z.boolean().optional(),
194
+ })
195
+ .meta({ id: 'RevokeOAuthGrantQuery' });
196
+
197
+ export const BulkRevokeOAuthGrantsPayloadSchema = z
198
+ .strictObject({
199
+ ...oauthGrantFilterFields,
200
+ grant_ids: z.array(z.string()).optional(),
201
+ include_consent: z.boolean().optional(),
202
+ })
203
+ .meta({ id: 'BulkRevokeOAuthGrantsPayload' });
204
+
205
+ export const OAuthGrantListResponseSchema = z
206
+ .strictObject({
207
+ grants: z.array(OAuthGrantSchema),
208
+ total_count: z.number(),
209
+ limit: z.number(),
210
+ offset: z.number(),
211
+ })
212
+ .meta({ id: 'OAuthGrantListResponse' });
213
+
214
+ export const OAuthGrantRevokeResponseSchema = z
215
+ .strictObject({
216
+ revoked_tokens: z.number(),
217
+ revoked_consents: z.number(),
218
+ })
219
+ .meta({ id: 'OAuthGrantRevokeResponse' });
@@ -0,0 +1,118 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { OAuthGrantStatusSchema } from './oauth-server.js';
3
+ import { ApiSchemaComponents, validateApiRequest, validateApiResponse } from './registry.js';
4
+
5
+ /**
6
+ * The OAuth contracts, pinned where converting them changed what the document says or where the
7
+ * conversion had a choice to make.
8
+ *
9
+ * The provider/client/grant closure is 31 components and almost all of it re-emits byte-identically;
10
+ * what is asserted here is the handful of places it does not, plus the request/response secret split
11
+ * that is the reason these components are shaped the way they are.
12
+ */
13
+
14
+ describe('the OAuth grant status filter', () => {
15
+ /**
16
+ * `?status=` takes the grant statuses plus `all`, and the query schema spells all four out rather
17
+ * than composing them, because a union would reach the document as an `anyOf` of a `$ref` and a
18
+ * `const` once the parameter is expanded. That leaves two lists that have to agree, so this is
19
+ * the assertion that they do: adding a fourth grant status without adding it to the filter would
20
+ * publish a status the caller cannot filter for.
21
+ */
22
+ it('offers every grant status, plus the all sentinel', () => {
23
+ expect(statusEnumOf('ListOAuthGrantsQuery')).toEqual([...OAuthGrantStatusSchema.options, 'all']);
24
+ });
25
+
26
+ it('is the same list on the bulk revoke body as on the listing query', () => {
27
+ // Revoking in bulk selects grants exactly the way listing them does — a filter that meant
28
+ // something different from the preview the caller looked at is the failure mode here.
29
+ expect(statusEnumOf('BulkRevokeOAuthGrantsPayload')).toEqual(statusEnumOf('ListOAuthGrantsQuery'));
30
+ });
31
+
32
+ it('rejects a status that is neither, rather than listing everything', () => {
33
+ expect(validateApiRequest('BulkRevokeOAuthGrantsPayload', { status: 'pending' }).valid).toBe(false);
34
+ expect(validateApiRequest('BulkRevokeOAuthGrantsPayload', { status: 'all' }).valid).toBe(true);
35
+ });
36
+ });
37
+
38
+ describe('the OAuth provider secret boundary', () => {
39
+ it('accepts a client secret on create', () => {
40
+ expect(
41
+ validateApiRequest('CreateOAuthProviderPayload', {
42
+ name: 'acme',
43
+ display_name: 'Acme',
44
+ client_id: 'client-123',
45
+ client_secret: 'shhh',
46
+ }),
47
+ ).toMatchObject({ valid: true });
48
+ });
49
+
50
+ it('refuses to publish one on the way back out', () => {
51
+ // The read shape says whether a secret exists and nothing more. `additionalProperties: false`
52
+ // is what turns a mapper that spread the document into a failed response instead of a leak.
53
+ const response = {
54
+ id: '68b1779130afe5403a1589ba',
55
+ name: 'acme',
56
+ display_name: 'Acme',
57
+ project: '69d4762f24d3048c99149d0b',
58
+ client_id: 'client-123',
59
+ has_client_secret: true,
60
+ use_pkce: true,
61
+ created_at: '2026-01-01T00:00:00.000Z',
62
+ updated_at: '2026-01-01T00:00:00.000Z',
63
+ };
64
+
65
+ expect(validateApiResponse('OAuthProvider', response)).toMatchObject({ valid: true });
66
+ expect(validateApiResponse('OAuthProvider', { ...response, client_secret: 'shhh' }).valid).toBe(false);
67
+ });
68
+
69
+ it('publishes the client secret on the create response only', () => {
70
+ // The one call that generates it returns it once; every later read of the same client gets
71
+ // `client_secret_configured`. Two components rather than one optional field is what keeps
72
+ // that visible in the document.
73
+ const client = {
74
+ client_id: 'vts_abc',
75
+ client_name: 'Acme CLI',
76
+ client_type: 'public',
77
+ redirect_uris: ['https://acme.example/callback'],
78
+ grant_types: ['authorization_code'],
79
+ response_types: ['code'],
80
+ token_endpoint_auth_method: 'none',
81
+ allowed_scopes: ['openid'],
82
+ registration_source: 'admin',
83
+ status: 'active',
84
+ project_binding_mode: 'user_select',
85
+ created_at: '2026-01-01T00:00:00.000Z',
86
+ updated_at: '2026-01-01T00:00:00.000Z',
87
+ };
88
+
89
+ expect(validateApiResponse('OAuthClientCreateResponse', { ...client, client_secret: 'vss_x' })).toMatchObject({
90
+ valid: true,
91
+ });
92
+ expect(validateApiResponse('OAuthClient', { ...client, client_secret: 'vss_x' }).valid).toBe(false);
93
+ });
94
+ });
95
+
96
+ describe('UpdateOAuthProviderPayload', () => {
97
+ it('accepts an empty body and a single-field body, and still rejects a typo', () => {
98
+ expect(validateApiRequest('UpdateOAuthProviderPayload', {}).valid).toBe(true);
99
+ expect(validateApiRequest('UpdateOAuthProviderPayload', { display_name: 'Acme' }).valid).toBe(true);
100
+ expect(validateApiRequest('UpdateOAuthProviderPayload', { displayName: 'Acme' }).valid).toBe(false);
101
+ });
102
+ });
103
+
104
+ /**
105
+ * A component's `status` enum, as the registry emits it.
106
+ *
107
+ * Read off the component rather than off a generated document: generating one needs the scanner,
108
+ * which is a package this one does not depend on. The expansion of a query component into parameters
109
+ * inlines exactly this, and has its own tests in `parameters.test.ts`.
110
+ */
111
+ function statusEnumOf(component: 'ListOAuthGrantsQuery' | 'BulkRevokeOAuthGrantsPayload'): string[] {
112
+ const emitted = ApiSchemaComponents[component] as { properties?: Record<string, { enum?: unknown }> } | undefined;
113
+ const status = emitted?.properties?.status;
114
+ if (!Array.isArray(status?.enum)) {
115
+ throw new Error(`${component} does not publish status as an inline enum`);
116
+ }
117
+ return status.enum as string[];
118
+ }
@@ -0,0 +1,166 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * The OAuth *provider* contracts: Vertesia acting as an OAuth CLIENT against a third-party
5
+ * authorization server.
6
+ *
7
+ * The other direction — clients registered against Vertesia's own OAuth server, and the grants they
8
+ * hold — is `./oauth-server.js`. The split mirrors the one the TypeScript declarations already had,
9
+ * so each schema sits in the module its type came from and the canonical-alias map stays readable.
10
+ */
11
+
12
+ /**
13
+ * The success acknowledgement four provider endpoints and the client delete return.
14
+ *
15
+ * Here rather than in a module of its own because these five slots are its only callers, which is
16
+ * the same reason `DeleteOperationResult` lives in `./apikey.js`. `common.ts` aliases the type so
17
+ * `SuccessResponse` keeps being imported from where it always was.
18
+ *
19
+ * `z.boolean()`, not `z.literal(true)`, and that is what the document has always published: the
20
+ * scanner widened the declared `success: true` to `type: boolean` on the way out. Publishing the
21
+ * literal would newly forbid `{ success: false }` for every existing client, while the handlers
22
+ * return `true` either way.
23
+ */
24
+ export const SuccessResponseSchema = z
25
+ .strictObject({
26
+ success: z.boolean(),
27
+ })
28
+ .meta({ id: 'SuccessResponse' });
29
+
30
+ /**
31
+ * A provider's stored configuration, without its id.
32
+ *
33
+ * Split from {@link OAuthProviderSchema} because `OAuthProvider extends OAuthProviderData` in the
34
+ * published types and both names are exported from the package. It carries no `id` in its meta, so
35
+ * it is never a component of its own: the document has only ever published `OAuthProvider`, with
36
+ * these properties inline and `id` last.
37
+ */
38
+ export const OAuthProviderDataSchema = z.strictObject({
39
+ name: z.string().meta({ description: 'Unique name within the project (kebab-case identifier).' }),
40
+ display_name: z.string().meta({ description: 'Human-readable display name.' }),
41
+ project: z.string().meta({ description: 'The project this OAuth provider belongs to.' }),
42
+ grant_type: z
43
+ .enum(['authorization_code', 'client_credentials'])
44
+ .meta({
45
+ description:
46
+ "The OAuth 2.0 grant type to use.\n- 'authorization_code': 3-legged flow requiring user authorization (default).\n- 'client_credentials': 2-legged server-to-server flow using client_id + client_secret.",
47
+ })
48
+ .optional(),
49
+ authorization_endpoint: z
50
+ .string()
51
+ .meta({
52
+ description:
53
+ 'The OAuth 2.0 authorization endpoint URL. Only used for authorization_code flow. Optional when endpoints are discovered via .well-known (e.g. MCP servers).',
54
+ })
55
+ .optional(),
56
+ token_endpoint: z
57
+ .string()
58
+ .meta({
59
+ description:
60
+ 'The OAuth 2.0 token endpoint URL. Optional when endpoints are discovered via .well-known (e.g. MCP servers).',
61
+ })
62
+ .optional(),
63
+ client_id: z.string().meta({ description: 'The OAuth client ID (always required).' }),
64
+ has_client_secret: z
65
+ .boolean()
66
+ .meta({ description: 'Whether a client_secret is configured (never exposes the actual secret).' })
67
+ .optional(),
68
+ default_scopes: z
69
+ .array(z.string())
70
+ .meta({ description: 'Default scopes to request during authorization.' })
71
+ .optional(),
72
+ use_pkce: z.boolean().meta({
73
+ description:
74
+ 'Whether to use PKCE (Proof Key for Code Exchange) in the authorization flow. Only applies to authorization_code flow. Defaults to true.',
75
+ }),
76
+ revocation_endpoint: z.string().meta({ description: 'Optional OAuth 2.0 revocation endpoint URL.' }).optional(),
77
+ created_at: z.string(),
78
+ updated_at: z.string(),
79
+ });
80
+
81
+ export const OAuthProviderSchema = OAuthProviderDataSchema.extend({
82
+ id: z.string(),
83
+ }).meta({ id: 'OAuthProvider', description: 'OAuth Provider as returned by the API (with id).' });
84
+
85
+ export const OAuthProviderArraySchema = z.array(OAuthProviderSchema).meta({ id: 'OAuthProviderArray' });
86
+
87
+ /**
88
+ * What a create accepts, which is deliberately not what a read returns.
89
+ *
90
+ * `client_secret` goes IN and never comes back out: the read shape carries `has_client_secret`
91
+ * instead. That request/response split is the rule for any component holding a credential, and
92
+ * keeping the two schemas separate is what makes it structural rather than a convention the next
93
+ * handler has to remember.
94
+ */
95
+ export const CreateOAuthProviderPayloadSchema = z
96
+ .strictObject({
97
+ name: z.string(),
98
+ display_name: z.string(),
99
+ grant_type: z.enum(['authorization_code', 'client_credentials']).optional(),
100
+ authorization_endpoint: z.string().optional(),
101
+ token_endpoint: z.string().optional(),
102
+ client_id: z.string(),
103
+ client_secret: z
104
+ .string()
105
+ .meta({
106
+ description:
107
+ 'Optional client secret for confidential clients. Will be encrypted at rest and never returned in API responses.',
108
+ })
109
+ .optional(),
110
+ default_scopes: z.array(z.string()).optional(),
111
+ use_pkce: z.boolean().optional(),
112
+ revocation_endpoint: z.string().optional(),
113
+ })
114
+ .meta({
115
+ id: 'CreateOAuthProviderPayload',
116
+ description:
117
+ 'Payload for creating an OAuth Provider. The client_secret is accepted as plaintext on create and stored encrypted.',
118
+ });
119
+
120
+ /**
121
+ * The update contract shares the create fields but makes each optional; the handler writes only the
122
+ * fields present in the request.
123
+ */
124
+ export const UpdateOAuthProviderPayloadSchema = CreateOAuthProviderPayloadSchema.partial().meta({
125
+ id: 'UpdateOAuthProviderPayload',
126
+ description:
127
+ 'Payload for updating an OAuth Provider. All fields are optional — only provided fields are updated. To clear the client_secret, set it to an empty string.',
128
+ });
129
+
130
+ export const OAuthProviderAuthStatusSchema = z
131
+ .strictObject({
132
+ oauth_provider_id: z.string(),
133
+ oauth_provider_name: z.string(),
134
+ authenticated: z.boolean(),
135
+ expires_at: z.string().optional(),
136
+ scope: z.string().optional(),
137
+ })
138
+ .meta({
139
+ id: 'OAuthProviderAuthStatus',
140
+ description: 'OAuth authentication status for a user against an OAuth Provider.',
141
+ });
142
+
143
+ export const OAuthProviderAuthorizeResponseSchema = z
144
+ .strictObject({
145
+ authorization_url: z.string().optional(),
146
+ state: z.string().optional(),
147
+ connected: z.boolean().optional(),
148
+ })
149
+ .meta({
150
+ id: 'OAuthProviderAuthorizeResponse',
151
+ description:
152
+ 'Response from the OAuth authorize endpoint. For authorization_code flow: contains authorization_url and state for browser redirect. For client_credentials flow: contains connected=true (token was fetched server-side, no redirect needed).',
153
+ });
154
+
155
+ export const OAuthProviderAccessTokenResponseSchema = z
156
+ .strictObject({
157
+ access_token: z.string(),
158
+ })
159
+ .meta({ id: 'OAuthProviderAccessTokenResponse' });
160
+
161
+ export const OAuthProviderExchangePayloadSchema = z
162
+ .strictObject({
163
+ code: z.string(),
164
+ state: z.string(),
165
+ })
166
+ .meta({ id: 'OAuthProviderExchangePayload' });