@vertesia/common 1.6.0-dev.20260923.085325Z → 1.6.0-dev.20261004.085740Z

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 (405) hide show
  1. package/lib/access-control-values.d.ts +2 -2
  2. package/lib/access-control-values.d.ts.map +1 -1
  3. package/lib/access-control-values.js +2 -2
  4. package/lib/access-control-values.js.map +1 -1
  5. package/lib/access-control.d.ts +7 -8
  6. package/lib/access-control.d.ts.map +1 -1
  7. package/lib/access-control.js +5 -0
  8. package/lib/access-control.js.map +1 -1
  9. package/lib/analytics.d.ts +6 -7
  10. package/lib/analytics.d.ts.map +1 -1
  11. package/lib/api-contract/components.generated.json +1389 -45
  12. package/lib/api-schemas/access-control.d.ts +33 -10
  13. package/lib/api-schemas/access-control.d.ts.map +1 -1
  14. package/lib/api-schemas/access-control.js +7 -6
  15. package/lib/api-schemas/access-control.js.map +1 -1
  16. package/lib/api-schemas/account.d.ts +5 -4
  17. package/lib/api-schemas/account.d.ts.map +1 -1
  18. package/lib/api-schemas/account.js.map +1 -1
  19. package/lib/api-schemas/agent-budget.d.ts +15 -0
  20. package/lib/api-schemas/agent-budget.d.ts.map +1 -0
  21. package/lib/api-schemas/agent-budget.js +55 -0
  22. package/lib/api-schemas/agent-budget.js.map +1 -0
  23. package/lib/api-schemas/agent-runs.d.ts +1525 -100
  24. package/lib/api-schemas/agent-runs.d.ts.map +1 -1
  25. package/lib/api-schemas/agent-runs.js +60 -28
  26. package/lib/api-schemas/agent-runs.js.map +1 -1
  27. package/lib/api-schemas/apikey.d.ts +11 -10
  28. package/lib/api-schemas/apikey.d.ts.map +1 -1
  29. package/lib/api-schemas/apikey.js.map +1 -1
  30. package/lib/api-schemas/app-lifecycle.d.ts +13 -0
  31. package/lib/api-schemas/app-lifecycle.d.ts.map +1 -1
  32. package/lib/api-schemas/app-lifecycle.js +4 -0
  33. package/lib/api-schemas/app-lifecycle.js.map +1 -1
  34. package/lib/api-schemas/app-runtime.d.ts +1821 -108
  35. package/lib/api-schemas/app-runtime.d.ts.map +1 -1
  36. package/lib/api-schemas/audit-trail.d.ts +20 -0
  37. package/lib/api-schemas/audit-trail.d.ts.map +1 -1
  38. package/lib/api-schemas/audit-trail.js +7 -1
  39. package/lib/api-schemas/audit-trail.js.map +1 -1
  40. package/lib/api-schemas/content.d.ts +665 -30
  41. package/lib/api-schemas/content.d.ts.map +1 -1
  42. package/lib/api-schemas/content.js +47 -0
  43. package/lib/api-schemas/content.js.map +1 -1
  44. package/lib/api-schemas/cost-analytics.d.ts +18 -0
  45. package/lib/api-schemas/cost-analytics.d.ts.map +1 -1
  46. package/lib/api-schemas/cost-analytics.js +31 -2
  47. package/lib/api-schemas/cost-analytics.js.map +1 -1
  48. package/lib/api-schemas/document-processing.d.ts +381 -18
  49. package/lib/api-schemas/document-processing.d.ts.map +1 -1
  50. package/lib/api-schemas/environment.d.ts +0 -5
  51. package/lib/api-schemas/environment.d.ts.map +1 -1
  52. package/lib/api-schemas/environment.js +0 -1
  53. package/lib/api-schemas/environment.js.map +1 -1
  54. package/lib/api-schemas/events.d.ts +1143 -54
  55. package/lib/api-schemas/events.d.ts.map +1 -1
  56. package/lib/api-schemas/group.d.ts +2 -1
  57. package/lib/api-schemas/group.d.ts.map +1 -1
  58. package/lib/api-schemas/group.js.map +1 -1
  59. package/lib/api-schemas/index.d.ts +1 -0
  60. package/lib/api-schemas/index.d.ts.map +1 -1
  61. package/lib/api-schemas/index.js +1 -0
  62. package/lib/api-schemas/index.js.map +1 -1
  63. package/lib/api-schemas/inference-profile.d.ts +5017 -0
  64. package/lib/api-schemas/inference-profile.d.ts.map +1 -0
  65. package/lib/api-schemas/inference-profile.js +135 -0
  66. package/lib/api-schemas/inference-profile.js.map +1 -0
  67. package/lib/api-schemas/integrations.d.ts +6 -6
  68. package/lib/api-schemas/interaction.d.ts +34391 -703
  69. package/lib/api-schemas/interaction.d.ts.map +1 -1
  70. package/lib/api-schemas/interaction.js +34 -1
  71. package/lib/api-schemas/interaction.js.map +1 -1
  72. package/lib/api-schemas/invites.d.ts +10 -9
  73. package/lib/api-schemas/invites.d.ts.map +1 -1
  74. package/lib/api-schemas/invites.js.map +1 -1
  75. package/lib/api-schemas/process.d.ts +653 -34
  76. package/lib/api-schemas/process.d.ts.map +1 -1
  77. package/lib/api-schemas/process.js +66 -0
  78. package/lib/api-schemas/process.js.map +1 -1
  79. package/lib/api-schemas/project-configuration.d.ts +1323 -62
  80. package/lib/api-schemas/project-configuration.d.ts.map +1 -1
  81. package/lib/api-schemas/project-configuration.js +15 -1
  82. package/lib/api-schemas/project-configuration.js.map +1 -1
  83. package/lib/api-schemas/project.d.ts +2031 -116
  84. package/lib/api-schemas/project.d.ts.map +1 -1
  85. package/lib/api-schemas/project.js +9 -1
  86. package/lib/api-schemas/project.js.map +1 -1
  87. package/lib/api-schemas/quota.d.ts +7 -6
  88. package/lib/api-schemas/quota.d.ts.map +1 -1
  89. package/lib/api-schemas/quota.js.map +1 -1
  90. package/lib/api-schemas/registry.d.ts +27820 -35892
  91. package/lib/api-schemas/registry.d.ts.map +1 -1
  92. package/lib/api-schemas/registry.js +55 -5
  93. package/lib/api-schemas/registry.js.map +1 -1
  94. package/lib/api-schemas/run-budget.d.ts +52 -0
  95. package/lib/api-schemas/run-budget.d.ts.map +1 -0
  96. package/lib/api-schemas/run-budget.js +55 -0
  97. package/lib/api-schemas/run-budget.js.map +1 -0
  98. package/lib/api-schemas/store.d.ts +6388 -338
  99. package/lib/api-schemas/store.d.ts.map +1 -1
  100. package/lib/api-schemas/store.js +11 -0
  101. package/lib/api-schemas/store.js.map +1 -1
  102. package/lib/api-schemas/user.d.ts +9 -8
  103. package/lib/api-schemas/user.d.ts.map +1 -1
  104. package/lib/api-schemas/user.js.map +1 -1
  105. package/lib/api-schemas/view-execution.d.ts +8 -0
  106. package/lib/api-schemas/view-execution.d.ts.map +1 -1
  107. package/lib/api-schemas/views.d.ts +14 -0
  108. package/lib/api-schemas/views.d.ts.map +1 -1
  109. package/lib/api-schemas/workflow-runs.d.ts +335 -12
  110. package/lib/api-schemas/workflow-runs.d.ts.map +1 -1
  111. package/lib/api-schemas/workflow-runs.js +2 -0
  112. package/lib/api-schemas/workflow-runs.js.map +1 -1
  113. package/lib/apikey.d.ts +30 -25
  114. package/lib/apikey.d.ts.map +1 -1
  115. package/lib/apikey.js.map +1 -1
  116. package/lib/apps.d.ts +116 -121
  117. package/lib/apps.d.ts.map +1 -1
  118. package/lib/apps.js.map +1 -1
  119. package/lib/audit-trail.d.ts +17 -18
  120. package/lib/audit-trail.d.ts.map +1 -1
  121. package/lib/audit-trail.js +2 -0
  122. package/lib/audit-trail.js.map +1 -1
  123. package/lib/browser-credentials.d.ts +11 -12
  124. package/lib/browser-credentials.d.ts.map +1 -1
  125. package/lib/common.d.ts +17 -24
  126. package/lib/common.d.ts.map +1 -1
  127. package/lib/content-query.d.ts +3 -4
  128. package/lib/content-query.d.ts.map +1 -1
  129. package/lib/cost-analytics.d.ts +13 -21
  130. package/lib/cost-analytics.d.ts.map +1 -1
  131. package/lib/cost-analytics.js +0 -7
  132. package/lib/cost-analytics.js.map +1 -1
  133. package/lib/data-platform.d.ts +79 -88
  134. package/lib/data-platform.d.ts.map +1 -1
  135. package/lib/data-platform.js.map +1 -1
  136. package/lib/delegation.d.ts +4 -5
  137. package/lib/delegation.d.ts.map +1 -1
  138. package/lib/email.d.ts +15 -17
  139. package/lib/email.d.ts.map +1 -1
  140. package/lib/email.js.map +1 -1
  141. package/lib/embeddings.d.ts +25 -26
  142. package/lib/embeddings.d.ts.map +1 -1
  143. package/lib/environment.d.ts +16 -17
  144. package/lib/environment.d.ts.map +1 -1
  145. package/lib/environment.js.map +1 -1
  146. package/lib/facets.d.ts +3 -4
  147. package/lib/facets.d.ts.map +1 -1
  148. package/lib/group.d.ts +6 -7
  149. package/lib/group.d.ts.map +1 -1
  150. package/lib/group.js.map +1 -1
  151. package/lib/index.d.ts +3 -1
  152. package/lib/index.d.ts.map +1 -1
  153. package/lib/index.js.map +1 -1
  154. package/lib/inference-profile.d.ts +17 -0
  155. package/lib/inference-profile.d.ts.map +1 -0
  156. package/lib/inference-profile.js +2 -0
  157. package/lib/inference-profile.js.map +1 -0
  158. package/lib/integrations.d.ts +19 -20
  159. package/lib/integrations.d.ts.map +1 -1
  160. package/lib/integrations.js.map +1 -1
  161. package/lib/interaction.d.ts +68 -73
  162. package/lib/interaction.d.ts.map +1 -1
  163. package/lib/interaction.js.map +1 -1
  164. package/lib/meters.d.ts +4 -5
  165. package/lib/meters.d.ts.map +1 -1
  166. package/lib/oauth-server.d.ts +40 -41
  167. package/lib/oauth-server.d.ts.map +1 -1
  168. package/lib/oauth.d.ts +9 -10
  169. package/lib/oauth.d.ts.map +1 -1
  170. package/lib/payload.d.ts +11 -14
  171. package/lib/payload.d.ts.map +1 -1
  172. package/lib/pending-asks.d.ts +8 -13
  173. package/lib/pending-asks.d.ts.map +1 -1
  174. package/lib/pending-asks.js +0 -4
  175. package/lib/pending-asks.js.map +1 -1
  176. package/lib/platform-event.d.ts +48 -51
  177. package/lib/platform-event.d.ts.map +1 -1
  178. package/lib/platform-event.js.map +1 -1
  179. package/lib/principal-context.d.ts +3 -3
  180. package/lib/principal-context.d.ts.map +1 -1
  181. package/lib/project.d.ts +42 -43
  182. package/lib/project.d.ts.map +1 -1
  183. package/lib/project.js.map +1 -1
  184. package/lib/prompt.d.ts +14 -16
  185. package/lib/prompt.d.ts.map +1 -1
  186. package/lib/prompt.js.map +1 -1
  187. package/lib/query.d.ts +10 -13
  188. package/lib/query.d.ts.map +1 -1
  189. package/lib/rate-limiter.d.ts +7 -11
  190. package/lib/rate-limiter.d.ts.map +1 -1
  191. package/lib/refs.d.ts +2 -3
  192. package/lib/refs.d.ts.map +1 -1
  193. package/lib/refs.js.map +1 -1
  194. package/lib/roles/types.d.ts +5 -6
  195. package/lib/roles/types.d.ts.map +1 -1
  196. package/lib/roles/types.js.map +1 -1
  197. package/lib/run-budget.d.ts +8 -0
  198. package/lib/run-budget.d.ts.map +1 -0
  199. package/lib/run-budget.js +2 -0
  200. package/lib/run-budget.js.map +1 -0
  201. package/lib/runs.d.ts +9 -10
  202. package/lib/runs.d.ts.map +1 -1
  203. package/lib/secrets.d.ts +20 -21
  204. package/lib/secrets.d.ts.map +1 -1
  205. package/lib/store/agent-approval.d.ts +4 -5
  206. package/lib/store/agent-approval.d.ts.map +1 -1
  207. package/lib/store/agent-approval.js.map +1 -1
  208. package/lib/store/agent-run.d.ts +50 -52
  209. package/lib/store/agent-run.d.ts.map +1 -1
  210. package/lib/store/agent-run.js.map +1 -1
  211. package/lib/store/collections.d.ts +11 -12
  212. package/lib/store/collections.d.ts.map +1 -1
  213. package/lib/store/collections.js.map +1 -1
  214. package/lib/store/conversation-state.d.ts +14 -8
  215. package/lib/store/conversation-state.d.ts.map +1 -1
  216. package/lib/store/doc-analyzer.d.ts +7 -8
  217. package/lib/store/doc-analyzer.d.ts.map +1 -1
  218. package/lib/store/dsl-workflow.d.ts +10 -12
  219. package/lib/store/dsl-workflow.d.ts.map +1 -1
  220. package/lib/store/dsl-workflow.js.map +1 -1
  221. package/lib/store/duration.d.ts +12 -0
  222. package/lib/store/duration.d.ts.map +1 -0
  223. package/lib/store/duration.js +2 -0
  224. package/lib/store/duration.js.map +1 -0
  225. package/lib/store/grounded-extraction.d.ts +6 -7
  226. package/lib/store/grounded-extraction.d.ts.map +1 -1
  227. package/lib/store/intake-policy-schema.generated.d.ts.map +1 -1
  228. package/lib/store/intake-policy-schema.generated.js +143 -2
  229. package/lib/store/intake-policy-schema.generated.js.map +1 -1
  230. package/lib/store/process.d.ts +70 -69
  231. package/lib/store/process.d.ts.map +1 -1
  232. package/lib/store/process.js.map +1 -1
  233. package/lib/store/rendering.d.ts +6 -12
  234. package/lib/store/rendering.d.ts.map +1 -1
  235. package/lib/store/rendering.js +0 -5
  236. package/lib/store/rendering.js.map +1 -1
  237. package/lib/store/signals.d.ts +43 -0
  238. package/lib/store/signals.d.ts.map +1 -1
  239. package/lib/store/signals.js +6 -1
  240. package/lib/store/signals.js.map +1 -1
  241. package/lib/store/store.d.ts +92 -91
  242. package/lib/store/store.d.ts.map +1 -1
  243. package/lib/store/store.js.map +1 -1
  244. package/lib/store/task.d.ts +10 -14
  245. package/lib/store/task.d.ts.map +1 -1
  246. package/lib/store/workflow.d.ts +35 -41
  247. package/lib/store/workflow.d.ts.map +1 -1
  248. package/lib/store/workflow.js.map +1 -1
  249. package/lib/sts-token-types.d.ts +14 -19
  250. package/lib/sts-token-types.d.ts.map +1 -1
  251. package/lib/tools.d.ts +12 -13
  252. package/lib/tools.d.ts.map +1 -1
  253. package/lib/transient-tokens.d.ts +3 -3
  254. package/lib/transient-tokens.d.ts.map +1 -1
  255. package/lib/user.d.ts +17 -20
  256. package/lib/user.d.ts.map +1 -1
  257. package/lib/user.js.map +1 -1
  258. package/lib/vertesia-common.js +2 -2
  259. package/lib/vertesia-common.js.map +1 -1
  260. package/lib/views.d.ts +61 -64
  261. package/lib/views.d.ts.map +1 -1
  262. package/lib/views.js.map +1 -1
  263. package/lib/wire-types.generated.d.ts +11231 -0
  264. package/lib/wire-types.generated.d.ts.map +1 -0
  265. package/lib/wire-types.generated.js +4 -0
  266. package/lib/wire-types.generated.js.map +1 -0
  267. package/lib/workflow-analytics.d.ts +21 -19
  268. package/lib/workflow-analytics.d.ts.map +1 -1
  269. package/lib/workflow-analytics.js +2 -2
  270. package/lib/workflow-analytics.js.map +1 -1
  271. package/package.json +15 -10
  272. package/src/access-control-values.ts +2 -2
  273. package/src/access-control.ts +7 -15
  274. package/src/analytics.ts +6 -13
  275. package/src/api-contract/components.generated.json +1389 -45
  276. package/src/api-schemas/access-control.ts +18 -16
  277. package/src/api-schemas/account.ts +5 -4
  278. package/src/api-schemas/agent-budget.ts +60 -0
  279. package/src/api-schemas/agent-runs.ts +63 -27
  280. package/src/api-schemas/apikey.ts +11 -10
  281. package/src/api-schemas/app-lifecycle.ts +5 -0
  282. package/src/api-schemas/audit-trail.ts +7 -1
  283. package/src/api-schemas/content.ts +55 -0
  284. package/src/api-schemas/cost-analytics.ts +34 -2
  285. package/src/api-schemas/environment.ts +0 -1
  286. package/src/api-schemas/group.ts +2 -1
  287. package/src/api-schemas/index.ts +1 -0
  288. package/src/api-schemas/inference-profile.ts +151 -0
  289. package/src/api-schemas/interaction.ts +40 -1
  290. package/src/api-schemas/invites.ts +10 -9
  291. package/src/api-schemas/process.ts +78 -2
  292. package/src/api-schemas/project-configuration.ts +19 -1
  293. package/src/api-schemas/project.ts +19 -10
  294. package/src/api-schemas/quota.ts +7 -6
  295. package/src/api-schemas/registry.ts +131 -33
  296. package/src/api-schemas/run-budget.ts +60 -0
  297. package/src/api-schemas/store.ts +12 -0
  298. package/src/api-schemas/user.ts +9 -8
  299. package/src/api-schemas/workflow-runs.ts +2 -0
  300. package/src/apikey.ts +30 -39
  301. package/src/apps.ts +116 -239
  302. package/src/audit-trail.ts +18 -33
  303. package/src/browser-credentials.ts +11 -23
  304. package/src/common.ts +17 -37
  305. package/src/content-query.ts +3 -4
  306. package/src/cost-analytics.ts +13 -35
  307. package/src/data-platform.ts +79 -168
  308. package/src/delegation.ts +4 -9
  309. package/src/email.ts +15 -29
  310. package/src/embeddings.ts +25 -51
  311. package/src/environment.ts +16 -33
  312. package/src/facets.ts +3 -4
  313. package/src/group.ts +6 -13
  314. package/src/index.ts +27 -0
  315. package/src/inference-profile.ts +20 -0
  316. package/src/integrations.ts +21 -41
  317. package/src/interaction.ts +68 -137
  318. package/src/meters.ts +4 -9
  319. package/src/oauth-server.ts +40 -81
  320. package/src/oauth.ts +9 -19
  321. package/src/payload.ts +11 -25
  322. package/src/pending-asks.ts +8 -22
  323. package/src/platform-event.ts +48 -97
  324. package/src/principal-context.ts +3 -3
  325. package/src/project.ts +43 -86
  326. package/src/prompt.ts +14 -31
  327. package/src/query.ts +10 -20
  328. package/src/rate-limiter.ts +7 -19
  329. package/src/refs.ts +2 -3
  330. package/src/roles/types.ts +5 -11
  331. package/src/run-budget.ts +8 -0
  332. package/src/runs.ts +9 -19
  333. package/src/secrets.ts +20 -41
  334. package/src/store/agent-approval.ts +4 -9
  335. package/src/store/agent-run.ts +53 -99
  336. package/src/store/collections.ts +11 -23
  337. package/src/store/conversation-state.ts +15 -15
  338. package/src/store/doc-analyzer.ts +7 -15
  339. package/src/store/dsl-workflow.ts +10 -23
  340. package/src/store/duration.ts +45 -0
  341. package/src/store/grounded-extraction.ts +6 -13
  342. package/src/store/intake-policy-schema.generated.ts +148 -2
  343. package/src/store/process.ts +70 -140
  344. package/src/store/rendering.ts +6 -19
  345. package/src/store/signals.ts +48 -0
  346. package/src/store/store.ts +92 -181
  347. package/src/store/task.ts +10 -24
  348. package/src/store/workflow.ts +35 -71
  349. package/src/sts-token-types.ts +14 -33
  350. package/src/tools.ts +12 -25
  351. package/src/transient-tokens.ts +3 -3
  352. package/src/user.ts +17 -39
  353. package/src/views.ts +61 -125
  354. package/src/wire-types.generated.ts +11889 -0
  355. package/src/workflow-analytics.ts +21 -19
  356. package/src/agent-resources.test.ts +0 -89
  357. package/src/api-contract/components.contract.test.ts +0 -99
  358. package/src/api-schemas/access-control.contract.test.ts +0 -209
  359. package/src/api-schemas/account-apikey.test.ts +0 -60
  360. package/src/api-schemas/account.contract.test.ts +0 -319
  361. package/src/api-schemas/adapter-edge-cases.test.ts +0 -499
  362. package/src/api-schemas/agent-communication.contract.test.ts +0 -90
  363. package/src/api-schemas/agent-history.contract.test.ts +0 -42
  364. package/src/api-schemas/agent-runs.contract.test.ts +0 -240
  365. package/src/api-schemas/api-discriminators.test.ts +0 -185
  366. package/src/api-schemas/apikey.contract.test.ts +0 -270
  367. package/src/api-schemas/app-delete-summary.contract.test.ts +0 -67
  368. package/src/api-schemas/bulk-operation.contract.test.ts +0 -39
  369. package/src/api-schemas/bundle-isolation.test.ts +0 -44
  370. package/src/api-schemas/commands.contract.test.ts +0 -51
  371. package/src/api-schemas/cost-analytics.contract.test.ts +0 -64
  372. package/src/api-schemas/dashboard.contract.test.ts +0 -138
  373. package/src/api-schemas/data-store.contract.test.ts +0 -97
  374. package/src/api-schemas/document-processing.contract.test.ts +0 -76
  375. package/src/api-schemas/emit-json-schema.test.ts +0 -36
  376. package/src/api-schemas/environment.contract.test.ts +0 -202
  377. package/src/api-schemas/group.contract.test.ts +0 -205
  378. package/src/api-schemas/indexing.contract.test.ts +0 -122
  379. package/src/api-schemas/interaction.contract.test.ts +0 -307
  380. package/src/api-schemas/invites.contract.test.ts +0 -268
  381. package/src/api-schemas/llumiverse.contract.test.ts +0 -179
  382. package/src/api-schemas/mcp-api-key.contract.test.ts +0 -125
  383. package/src/api-schemas/oauth.contract.test.ts +0 -181
  384. package/src/api-schemas/parameters.test.ts +0 -402
  385. package/src/api-schemas/process.contract.test.ts +0 -115
  386. package/src/api-schemas/project.contract.test.ts +0 -472
  387. package/src/api-schemas/pruning-limits.test.ts +0 -189
  388. package/src/api-schemas/quota.contract.test.ts +0 -147
  389. package/src/api-schemas/registry-groups.test.ts +0 -99
  390. package/src/api-schemas/response-pruning.test.ts +0 -260
  391. package/src/api-schemas/store.contract.test.ts +0 -378
  392. package/src/api-schemas/sts.contract.test.ts +0 -112
  393. package/src/api-schemas/user.contract.test.ts +0 -197
  394. package/src/api-schemas/views.contract.test.ts +0 -112
  395. package/src/api-schemas/zeno-response-contracts.test.ts +0 -380
  396. package/src/apps.test.ts +0 -89
  397. package/src/oauth-scopes.test.ts +0 -15
  398. package/src/roles.test.ts +0 -33
  399. package/src/schema-for-extraction.test.ts +0 -191
  400. package/src/store/agent-approval.test.ts +0 -18
  401. package/src/store/content-type-editing.test.ts +0 -17
  402. package/src/store/ms.d.ts +0 -42
  403. package/src/store/schedule.test.ts +0 -59
  404. package/src/store/workflow.test.ts +0 -640
  405. package/src/versions.test.ts +0 -13
@@ -1,112 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import type { z } from 'zod';
3
- import type {
4
- AgentTokenRequest,
5
- ApiKeyTokenRequest,
6
- EnvironmentTokenRequest,
7
- IssueTokenForbiddenResponse,
8
- IssueTokenRequest,
9
- IssueTokenResponse,
10
- ProjectTokenRequest,
11
- ServiceAccountTokenRequest,
12
- SigningAlgorithm,
13
- UserTokenRequest,
14
- } from '../sts-token-types.js';
15
- import { validateApiRequest, validateApiResponse } from './registry.js';
16
- import type {
17
- AgentTokenRequestSchema,
18
- ApiKeyTokenRequestSchema,
19
- EnvironmentTokenRequestSchema,
20
- IssueTokenForbiddenResponseSchema,
21
- IssueTokenRequestSchema,
22
- IssueTokenResponseSchema,
23
- ProjectTokenRequestSchema,
24
- ServiceAccountTokenRequestSchema,
25
- SigningAlgorithmSchema,
26
- UserTokenRequestSchema,
27
- } from './sts.js';
28
-
29
- type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
30
- function assertType<T extends true>(_value: T): void {}
31
-
32
- describe('STS canonical contracts', () => {
33
- it('derives every public component type from its schema', () => {
34
- assertType<Equals<SigningAlgorithm, z.infer<typeof SigningAlgorithmSchema>>>(true);
35
- assertType<Equals<ApiKeyTokenRequest, z.infer<typeof ApiKeyTokenRequestSchema>>>(true);
36
- assertType<Equals<UserTokenRequest, z.infer<typeof UserTokenRequestSchema>>>(true);
37
- assertType<Equals<ProjectTokenRequest, z.infer<typeof ProjectTokenRequestSchema>>>(true);
38
- assertType<Equals<EnvironmentTokenRequest, z.infer<typeof EnvironmentTokenRequestSchema>>>(true);
39
- assertType<Equals<AgentTokenRequest, z.infer<typeof AgentTokenRequestSchema>>>(true);
40
- assertType<Equals<ServiceAccountTokenRequest, z.infer<typeof ServiceAccountTokenRequestSchema>>>(true);
41
- assertType<Equals<IssueTokenRequest, z.infer<typeof IssueTokenRequestSchema>>>(true);
42
- assertType<Equals<IssueTokenResponse, z.infer<typeof IssueTokenResponseSchema>>>(true);
43
- assertType<Equals<IssueTokenForbiddenResponse, z.infer<typeof IssueTokenForbiddenResponseSchema>>>(true);
44
- expect(true).toBe(true);
45
- });
46
-
47
- it('enforces the discriminated request branch and closed object policy', () => {
48
- expect(
49
- validateApiRequest('IssueTokenRequest', {
50
- type: 'project',
51
- account_id: 'acc_1',
52
- project_id: 'proj_1',
53
- }).valid,
54
- ).toBe(true);
55
- expect(
56
- validateApiRequest('IssueTokenRequest', {
57
- type: 'project',
58
- account_id: 'acc_1',
59
- project_id: 'proj_1',
60
- key: 'not-valid-on-this-branch',
61
- }).valid,
62
- ).toBe(false);
63
- expect(validateApiRequest('IssueTokenRequest', { type: 'project', account_id: 'acc_1' }).valid).toBe(false);
64
- });
65
-
66
- it('checks every documented response shape and forbidden error-code literal', () => {
67
- expect(validateApiResponse('IssueTokenResponse', { token: 'signed', token_type: 'Bearer' }).valid).toBe(true);
68
- expect(validateApiResponse('IssueTokenResponse', { token: 'signed', token_type: 'bearer' }).valid).toBe(false);
69
- for (const errorCode of [
70
- 'requested_scope_unavailable',
71
- 'no_accessible_account',
72
- 'restricted_environment',
73
- 'token_issuance_forbidden',
74
- ]) {
75
- expect(
76
- validateApiResponse('IssueTokenForbiddenResponse', {
77
- error: 'Forbidden',
78
- message: 'The requested scope is unavailable',
79
- errorCode,
80
- }).valid,
81
- ).toBe(true);
82
- }
83
- expect(
84
- validateApiResponse('IssueTokenForbiddenResponse', {
85
- error: 'Forbidden',
86
- message: 'No',
87
- errorCode: 'resource_not_found',
88
- }).valid,
89
- ).toBe(false);
90
- expect(
91
- validateApiResponse('IssueTokenForbiddenResponse', {
92
- error: 'Forbidden',
93
- message: 'No',
94
- errorCode: 'requested_scope_unavailable',
95
- project_id: 'secret',
96
- }).valid,
97
- ).toBe(false);
98
- expect(
99
- validateApiResponse('IssueTokenUnavailableResponse', {
100
- error: 'Service Unavailable',
101
- message: 'Token signing temporarily unavailable',
102
- }).valid,
103
- ).toBe(true);
104
- expect(
105
- validateApiResponse('IssueTokenUnavailableResponse', {
106
- error: 'Service Unavailable',
107
- message: 'Token signing temporarily unavailable',
108
- retry_after: 5,
109
- }).valid,
110
- ).toBe(false);
111
- });
112
- });
@@ -1,197 +0,0 @@
1
- import { Ajv2020 } from 'ajv/dist/2020.js';
2
- import { describe, expect, it } from 'vitest';
3
- import type { AbacPrincipalContext, PrincipalIdentity } from '../principal-context.js';
4
- import type { UpdateUserPayload, User } from '../user.js';
5
- import type { JsonObject } from './adapter.js';
6
- import { ApiSchemaComponents, apiComponentRef, validateApiRequest, validateApiResponse } from './registry.js';
7
- import type { AbacPrincipalContextFromSchema, UserArrayFromSchema } from './user.js';
8
-
9
- /** Exact type identity — `extends` in both directions is too weak (any/unknown slip through). */
10
- type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
11
- function assertType<T extends true>(_ok: T): void {}
12
-
13
- function compile(name: string, components: Readonly<Record<string, JsonObject>> = ApiSchemaComponents) {
14
- const ajv = new Ajv2020({ strictSchema: false, allErrors: true });
15
- ajv.addSchema({ $id: 'vertesia://openapi', components: { schemas: components } });
16
- return ajv.compile({ $ref: `vertesia://openapi${apiComponentRef(name as never)}` });
17
- }
18
-
19
- const VALID_USER = {
20
- id: 'u1',
21
- email: 'someone@acme.com',
22
- name: 'Someone',
23
- created_at: '2026-07-30T10:00:00.000Z',
24
- updated_at: '2026-07-30T10:00:00.000Z',
25
- };
26
-
27
- describe('gate 1 — the schema is the single source of truth for the public IAM types', () => {
28
- it('publishes the exact schema-derived type, not a hand-written twin', () => {
29
- assertType<Equals<UserArrayFromSchema, User[]>>(true);
30
- assertType<Equals<AbacPrincipalContext, AbacPrincipalContextFromSchema>>(true);
31
- expect(true).toBe(true);
32
- });
33
-
34
- it('derives the identity fields from the ABAC context rather than restating them', () => {
35
- // PrincipalIdentity `extends AbacPrincipalContext`, so composing the schemas is what keeps
36
- // the inherited fields from becoming a twin one level down — the failure mode this batch was
37
- // scoped to avoid. `kind` and `id` are part of the ABAC context itself (resolvable as
38
- // `$principal.*`), not identity-only metadata.
39
- assertType<Equals<PrincipalIdentity['kind'], AbacPrincipalContext['kind']>>(true);
40
- assertType<Equals<PrincipalIdentity['id'], AbacPrincipalContext['id']>>(true);
41
- assertType<Equals<PrincipalIdentity['clearance'], AbacPrincipalContext['clearance']>>(true);
42
- assertType<Equals<PrincipalIdentity['compartments'], AbacPrincipalContext['compartments']>>(true);
43
- assertType<Equals<PrincipalIdentity['email'], AbacPrincipalContext['email']>>(true);
44
- assertType<Equals<PrincipalIdentity['tags'], AbacPrincipalContext['tags']>>(true);
45
- assertType<Equals<PrincipalIdentity['properties'], AbacPrincipalContext['properties']>>(true);
46
- assertType<Equals<PrincipalIdentity['kind'], 'user' | 'apikey'>>(true);
47
- assertType<Equals<PrincipalIdentity['id'], string>>(true);
48
- expect(true).toBe(true);
49
- });
50
-
51
- it('derives the update payload from the user rather than restating nine fields', () => {
52
- // A `.pick()` of UserSchema plus `.partial()`: the field types and constraints come from the
53
- // response declaration, and the ONLY thing the payload changes about them is requiredness.
54
- assertType<Equals<UpdateUserPayload['name'], string | undefined>>(true);
55
- assertType<Equals<UpdateUserPayload['clearance'], User['clearance']>>(true);
56
- assertType<Equals<UpdateUserPayload['compartments'], User['compartments']>>(true);
57
- assertType<Equals<UpdateUserPayload['properties'], User['properties']>>(true);
58
- // What is NOT picked is the whitelist. `email`, `source`, `annotations` and the timestamps
59
- // are server- or IdP-owned, and adding one now means naming it in the pick.
60
- assertType<
61
- Equals<
62
- keyof UpdateUserPayload,
63
- | 'name'
64
- | 'username'
65
- | 'picture'
66
- | 'language'
67
- | 'phone'
68
- | 'last_selected_account'
69
- | 'properties'
70
- | 'clearance'
71
- | 'compartments'
72
- >
73
- >(true);
74
- expect(true).toBe(true);
75
- });
76
-
77
- it('keeps the wire type optionality the document declares', () => {
78
- assertType<Equals<User['email'], string>>(true);
79
- assertType<Equals<User['created_at'], string>>(true);
80
- assertType<Equals<User['source'], 'firebase' | 'scim' | undefined>>(true);
81
- assertType<Equals<User['clearance'], number | undefined>>(true);
82
- expect(true).toBe(true);
83
- });
84
- });
85
-
86
- describe('gate 2 — the published components match the closure the types come from', () => {
87
- it('does not hoist AbacPrincipalContext into a component of its own', () => {
88
- // It is a public TYPE but has never been a published component. Hoisting it would add a
89
- // $ref to PrincipalIdentity that every generated client would have to follow.
90
- expect(Object.keys(ApiSchemaComponents)).not.toContain('AbacPrincipalContext');
91
- const props = ApiSchemaComponents.PrincipalIdentity.properties as Record<string, JsonObject>;
92
- expect(props.kind).toEqual({ type: 'string', enum: ['user', 'apikey'] });
93
- expect(props.clearance).toEqual({ type: 'number' });
94
- expect(props.id).toEqual({ type: 'string' });
95
- });
96
-
97
- it('publishes the composed property order — kind and id first', () => {
98
- // `AbacPrincipalContext` lists its discriminators (kind, id) ahead of the merged BLP
99
- // attributes; PrincipalIdentity `.extend({})`s it, adding nothing, so the order is the
100
- // context's own.
101
- const props = ApiSchemaComponents.PrincipalIdentity.properties as JsonObject;
102
- expect(Object.keys(props)).toEqual(['kind', 'id', 'clearance', 'compartments', 'email', 'tags', 'properties']);
103
- });
104
-
105
- it('declares the timestamps the endpoint has always shipped', () => {
106
- // The published component was closed and did not declare these, while the handler
107
- // serialized the whole Mongo document — so every response violated its own schema.
108
- const props = ApiSchemaComponents.User.properties as Record<string, JsonObject>;
109
- expect(props.created_at.type).toBe('string');
110
- expect(props.updated_at.type).toBe('string');
111
- expect(ApiSchemaComponents.User.required).toContain('created_at');
112
- expect(ApiSchemaComponents.User.additionalProperties).toBe(false);
113
- });
114
- });
115
-
116
- describe('gate 3 — AJV validates the same canonical objects that are published', () => {
117
- it('accepts a minimal user and rejects a missing required field', () => {
118
- const validate = compile('User');
119
- expect(validate(VALID_USER)).toBe(true);
120
- const { created_at: _dropped, ...incomplete } = VALID_USER;
121
- expect(validate(incomplete)).toBe(false);
122
- });
123
-
124
- it('rejects a source outside the published enum', () => {
125
- expect(compile('User')({ ...VALID_USER, source: 'ldap' })).toBe(false);
126
- expect(compile('User')({ ...VALID_USER, source: 'scim' })).toBe(true);
127
- });
128
-
129
- it('rejects an undeclared property on the closed user component', () => {
130
- // Specifically the internal fields a spread of the Mongo document would have leaked.
131
- expect(compile('User')({ ...VALID_USER, _id: 'deadbeef' })).toBe(false);
132
- });
133
-
134
- it('accepts an empty update payload but rejects an undeclared field', () => {
135
- const validate = compile('UpdateUserPayload');
136
- expect(validate({})).toBe(true);
137
- expect(validate({ name: 'New name' })).toBe(true);
138
- // `email` is deliberately not updatable through this endpoint and never has been.
139
- expect(validate({ email: 'new@acme.com' })).toBe(false);
140
- });
141
- });
142
-
143
- describe('gate 4 — runtime enforcement uses the published components', () => {
144
- it('rejects an undeclared update field without removing it', () => {
145
- // The handler used to whitelist fields and silently ignore the rest; the published schema
146
- // has always said additionalProperties: false. Enforcement makes the two agree.
147
- const payload: Record<string, unknown> = { name: 'Acme', rogue_field: 42 };
148
- const result = validateApiRequest('UpdateUserPayload', payload);
149
- expect(result.valid).toBe(false);
150
- expect(payload.rogue_field).toBe(42);
151
- });
152
-
153
- it('accepts a conforming update payload and hands back the component type', () => {
154
- const result = validateApiRequest('UpdateUserPayload', { name: 'Acme', clearance: 3 });
155
- expect(result.valid).toBe(true);
156
- if (result.valid) {
157
- assertType<Equals<typeof result.data, UpdateUserPayload>>(true);
158
- expect(result.data.clearance).toBe(3);
159
- }
160
- });
161
-
162
- it('checks the user response against the same component the SDK type comes from', () => {
163
- const result = validateApiResponse('User', VALID_USER);
164
- expect(result.valid).toBe(true);
165
- if (result.valid) {
166
- assertType<Equals<typeof result.data, User>>(true);
167
- }
168
- // A document spread straight onto the wire is what this catches.
169
- expect(validateApiResponse('User', { ...VALID_USER, _id: 'x' }).valid).toBe(false);
170
- });
171
-
172
- it('enforces the date-time format the timestamps claim', () => {
173
- // Through the registry rather than the local `compile` helper: the production validator
174
- // registers ajv-formats, and a bare Ajv2020 ignores `format` entirely — which is precisely
175
- // why the description alone was not enough. A plain string schema accepts 'yesterday'.
176
- expect(validateApiResponse('User', { ...VALID_USER, created_at: 'yesterday' }).valid).toBe(false);
177
- expect(validateApiResponse('User', { ...VALID_USER, created_at: '2026-07-30' }).valid).toBe(false);
178
- expect(validateApiResponse('User', VALID_USER).valid).toBe(true);
179
- });
180
-
181
- it('checks every member of the account listing against the same User component', () => {
182
- // The gap this closes: `UserArray` items $ref `User`, so publishing the array without
183
- // enforcing it would document the contract for each member while checking none of them.
184
- expect(validateApiResponse('UserArray', [VALID_USER, VALID_USER]).valid).toBe(true);
185
- expect(validateApiResponse('UserArray', []).valid).toBe(true);
186
- // A legacy member with no timestamps, which is exactly what the old jsonDocs() could emit.
187
- const { created_at: _dropped, ...legacyMember } = VALID_USER;
188
- expect(validateApiResponse('UserArray', [VALID_USER, legacyMember]).valid).toBe(false);
189
- // And one carrying a null the component cannot publish.
190
- expect(validateApiResponse('UserArray', [{ ...VALID_USER, phone: null }]).valid).toBe(false);
191
- });
192
-
193
- it('validates the shared DeleteByIdResult that seven other endpoints also publish', () => {
194
- expect(validateApiResponse('DeleteByIdResult', { id: 'abc' }).valid).toBe(true);
195
- expect(validateApiResponse('DeleteByIdResult', {}).valid).toBe(false);
196
- });
197
- });
@@ -1,112 +0,0 @@
1
- import { assertType, describe, expect, it } from 'vitest';
2
- import type { z } from 'zod';
3
- import { type ViewExperienceConfiguration, viewExperienceRoute } from '../views.js';
4
- import { ApiSchemaComponents, validateApiRequest, validateApiResponse } from './registry.js';
5
- import type { ViewExperienceConfigurationSchema } from './view-execution.js';
6
-
7
- type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
8
-
9
- /**
10
- * Lives here rather than next to the JSON Schema artifact that consumes it. Both subjects are
11
- * declarations of THIS package — the public TypeScript type and the Zod schema it must mirror — and
12
- * asserting it from the consuming package would have made that package depend on Zod, which it must
13
- * not: it is loaded in the browser.
14
- */
15
- describe('ViewExperienceConfiguration', () => {
16
- it('keeps the temporary named TypeScript bridge identical to the runtime schema', () => {
17
- assertType<Equals<ViewExperienceConfiguration, z.infer<typeof ViewExperienceConfigurationSchema>>>(true);
18
- });
19
-
20
- it('publishes selection, app actions, upload drops, generated presentation mode, and reranking', () => {
21
- expect(Object.keys(ApiSchemaComponents)).toEqual(
22
- expect.arrayContaining([
23
- 'AgenticViewRerankConfiguration',
24
- 'ViewActionConfiguration',
25
- 'ViewActionsConfiguration',
26
- 'ViewDropConfiguration',
27
- 'ViewExecutionRerankResult',
28
- 'ViewSelectionConfiguration',
29
- ]),
30
- );
31
-
32
- expect(
33
- validateApiRequest('PreviewViewExperienceRequest', {
34
- configuration: {
35
- name: 'Orders',
36
- search: {
37
- mode: 'agentic',
38
- agentic: {
39
- mode: 'query_and_view',
40
- rerank: { max_candidates: 24, include_why_match: true, timeout_ms: 30_000 },
41
- },
42
- },
43
- results: {
44
- default_display: 'table',
45
- displays: [{ id: 'table', label: 'Orders', type: 'table', columns: [] }],
46
- selection: { mode: 'multiple', select_all: 'page' },
47
- actions: {
48
- include_defaults: true,
49
- items: [{ id: 'approve', label: 'Approve', handler: 'approve-orders' }],
50
- },
51
- drop: { handler: 'upload', accept: ['files'], params: { type_id: 'sales-order' } },
52
- },
53
- },
54
- }).valid,
55
- ).toBe(true);
56
- });
57
-
58
- it('keeps executable custom drop handlers out of the persisted wire contract', () => {
59
- expect(
60
- validateApiRequest('PreviewViewExperienceRequest', {
61
- configuration: {
62
- name: 'Orders',
63
- results: {
64
- default_display: 'table',
65
- displays: [{ id: 'table', label: 'Orders', type: 'table', columns: [] }],
66
- drop: { handler: 'custom-drop' },
67
- },
68
- },
69
- }).valid,
70
- ).toBe(false);
71
- });
72
-
73
- it('accepts untagged View options and preserves the shared options schema reference', () => {
74
- // View options and shared model options both permit an omitted family ID.
75
- const authored = { model_options: { temperature: 0.2, max_tokens: 1024 } };
76
- expect(validateApiResponse('ViewAgenticExecutionConfiguration', authored).valid).toBe(true);
77
-
78
- // Keep the shared component wired to the canonical options contract.
79
- const modelOptions = (name: string) =>
80
- (ApiSchemaComponents[name] as { properties: Record<string, unknown> }).properties.model_options;
81
- expect(modelOptions('InteractionExecutionConfiguration')).toEqual({
82
- $ref: '#/components/schemas/ModelOptions',
83
- });
84
- expect(modelOptions('ViewAgenticExecutionConfiguration')).toMatchObject({
85
- type: 'object',
86
- additionalProperties: true,
87
- });
88
- });
89
-
90
- it('keeps the View config otherwise identical to the shared execution configuration', () => {
91
- // Only `model_options` may differ. Anything else diverging means the two drifted apart
92
- // rather than the union being deliberately relaxed for authored options.
93
- const properties = (name: string) =>
94
- (ApiSchemaComponents[name] as { properties: Record<string, unknown> }).properties;
95
- const view = properties('ViewAgenticExecutionConfiguration');
96
- const shared = properties('InteractionExecutionConfiguration');
97
-
98
- expect(Object.keys(view)).toEqual(Object.keys(shared));
99
- for (const key of Object.keys(shared)) {
100
- if (key === 'model_options') continue;
101
- expect(JSON.stringify(view[key]), `${key} drifted from the shared configuration`).toBe(
102
- JSON.stringify(shared[key]),
103
- );
104
- }
105
- });
106
-
107
- it('builds generic routes for system and app-contributed Views without exposing path material', () => {
108
- expect(viewExperienceRoute('app:content:document-library')).toBe('/view/app%3Acontent%3Adocument-library');
109
- expect(viewExperienceRoute('sys:AgenticDocumentExplorer')).toBe('/view/sys%3AAgenticDocumentExplorer');
110
- expect(viewExperienceRoute('unsafe/id')).toBe('/view/unsafe%2Fid');
111
- });
112
- });