@vertesia/common 1.6.0-dev.20260918.115658Z → 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 (426) 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 +4500 -2720
  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 +10 -4
  17. package/lib/api-schemas/account.d.ts.map +1 -1
  18. package/lib/api-schemas/account.js +7 -0
  19. package/lib/api-schemas/account.js.map +1 -1
  20. package/lib/api-schemas/agent-budget.d.ts +15 -0
  21. package/lib/api-schemas/agent-budget.d.ts.map +1 -0
  22. package/lib/api-schemas/agent-budget.js +55 -0
  23. package/lib/api-schemas/agent-budget.js.map +1 -0
  24. package/lib/api-schemas/agent-runs.d.ts +2459 -404
  25. package/lib/api-schemas/agent-runs.d.ts.map +1 -1
  26. package/lib/api-schemas/agent-runs.js +60 -28
  27. package/lib/api-schemas/agent-runs.js.map +1 -1
  28. package/lib/api-schemas/apikey.d.ts +11 -10
  29. package/lib/api-schemas/apikey.d.ts.map +1 -1
  30. package/lib/api-schemas/apikey.js.map +1 -1
  31. package/lib/api-schemas/app-lifecycle.d.ts +17 -0
  32. package/lib/api-schemas/app-lifecycle.d.ts.map +1 -1
  33. package/lib/api-schemas/app-lifecycle.js +14 -0
  34. package/lib/api-schemas/app-lifecycle.js.map +1 -1
  35. package/lib/api-schemas/app-runtime.d.ts +3174 -539
  36. package/lib/api-schemas/app-runtime.d.ts.map +1 -1
  37. package/lib/api-schemas/app-runtime.js +14 -0
  38. package/lib/api-schemas/app-runtime.js.map +1 -1
  39. package/lib/api-schemas/audit-trail.d.ts +20 -0
  40. package/lib/api-schemas/audit-trail.d.ts.map +1 -1
  41. package/lib/api-schemas/audit-trail.js +7 -1
  42. package/lib/api-schemas/audit-trail.js.map +1 -1
  43. package/lib/api-schemas/content.d.ts +1130 -180
  44. package/lib/api-schemas/content.d.ts.map +1 -1
  45. package/lib/api-schemas/content.js +47 -0
  46. package/lib/api-schemas/content.js.map +1 -1
  47. package/lib/api-schemas/cost-analytics.d.ts +18 -0
  48. package/lib/api-schemas/cost-analytics.d.ts.map +1 -1
  49. package/lib/api-schemas/cost-analytics.js +31 -2
  50. package/lib/api-schemas/cost-analytics.js.map +1 -1
  51. package/lib/api-schemas/document-processing.d.ts +660 -108
  52. package/lib/api-schemas/document-processing.d.ts.map +1 -1
  53. package/lib/api-schemas/environment.d.ts +2 -7
  54. package/lib/api-schemas/environment.d.ts.map +1 -1
  55. package/lib/api-schemas/environment.js +0 -1
  56. package/lib/api-schemas/environment.js.map +1 -1
  57. package/lib/api-schemas/events.d.ts +1980 -324
  58. package/lib/api-schemas/events.d.ts.map +1 -1
  59. package/lib/api-schemas/group.d.ts +2 -1
  60. package/lib/api-schemas/group.d.ts.map +1 -1
  61. package/lib/api-schemas/group.js.map +1 -1
  62. package/lib/api-schemas/index.d.ts +1 -0
  63. package/lib/api-schemas/index.d.ts.map +1 -1
  64. package/lib/api-schemas/index.js +1 -0
  65. package/lib/api-schemas/index.js.map +1 -1
  66. package/lib/api-schemas/inference-profile.d.ts +5017 -0
  67. package/lib/api-schemas/inference-profile.d.ts.map +1 -0
  68. package/lib/api-schemas/inference-profile.js +135 -0
  69. package/lib/api-schemas/inference-profile.js.map +1 -0
  70. package/lib/api-schemas/integrations.d.ts +6 -6
  71. package/lib/api-schemas/interaction.d.ts +39078 -2420
  72. package/lib/api-schemas/interaction.d.ts.map +1 -1
  73. package/lib/api-schemas/interaction.js +35 -1
  74. package/lib/api-schemas/interaction.js.map +1 -1
  75. package/lib/api-schemas/invites.d.ts +10 -9
  76. package/lib/api-schemas/invites.d.ts.map +1 -1
  77. package/lib/api-schemas/invites.js.map +1 -1
  78. package/lib/api-schemas/oauth-server.d.ts +27 -0
  79. package/lib/api-schemas/oauth-server.d.ts.map +1 -1
  80. package/lib/api-schemas/oauth-server.js +32 -0
  81. package/lib/api-schemas/oauth-server.js.map +1 -1
  82. package/lib/api-schemas/process.d.ts +839 -94
  83. package/lib/api-schemas/process.d.ts.map +1 -1
  84. package/lib/api-schemas/process.js +66 -0
  85. package/lib/api-schemas/process.js.map +1 -1
  86. package/lib/api-schemas/project-configuration.d.ts +2262 -364
  87. package/lib/api-schemas/project-configuration.d.ts.map +1 -1
  88. package/lib/api-schemas/project-configuration.js +21 -1
  89. package/lib/api-schemas/project-configuration.js.map +1 -1
  90. package/lib/api-schemas/project.d.ts +3450 -569
  91. package/lib/api-schemas/project.d.ts.map +1 -1
  92. package/lib/api-schemas/project.js +9 -1
  93. package/lib/api-schemas/project.js.map +1 -1
  94. package/lib/api-schemas/prompt.d.ts +1 -0
  95. package/lib/api-schemas/prompt.d.ts.map +1 -1
  96. package/lib/api-schemas/prompt.js +1 -0
  97. package/lib/api-schemas/prompt.js.map +1 -1
  98. package/lib/api-schemas/quota.d.ts +7 -6
  99. package/lib/api-schemas/quota.d.ts.map +1 -1
  100. package/lib/api-schemas/quota.js.map +1 -1
  101. package/lib/api-schemas/registry.d.ts +32375 -58756
  102. package/lib/api-schemas/registry.d.ts.map +1 -1
  103. package/lib/api-schemas/registry.js +97 -38
  104. package/lib/api-schemas/registry.js.map +1 -1
  105. package/lib/api-schemas/run-budget.d.ts +52 -0
  106. package/lib/api-schemas/run-budget.d.ts.map +1 -0
  107. package/lib/api-schemas/run-budget.js +55 -0
  108. package/lib/api-schemas/run-budget.js.map +1 -0
  109. package/lib/api-schemas/store.d.ts +11000 -1800
  110. package/lib/api-schemas/store.d.ts.map +1 -1
  111. package/lib/api-schemas/store.js +11 -0
  112. package/lib/api-schemas/store.js.map +1 -1
  113. package/lib/api-schemas/sts.d.ts +10 -0
  114. package/lib/api-schemas/sts.d.ts.map +1 -1
  115. package/lib/api-schemas/sts.js +14 -0
  116. package/lib/api-schemas/sts.js.map +1 -1
  117. package/lib/api-schemas/user.d.ts +36 -19
  118. package/lib/api-schemas/user.d.ts.map +1 -1
  119. package/lib/api-schemas/user.js +23 -17
  120. package/lib/api-schemas/user.js.map +1 -1
  121. package/lib/api-schemas/view-execution.d.ts +8 -0
  122. package/lib/api-schemas/view-execution.d.ts.map +1 -1
  123. package/lib/api-schemas/views.d.ts +14 -0
  124. package/lib/api-schemas/views.d.ts.map +1 -1
  125. package/lib/api-schemas/workflow-runs.d.ts +521 -72
  126. package/lib/api-schemas/workflow-runs.d.ts.map +1 -1
  127. package/lib/api-schemas/workflow-runs.js +2 -0
  128. package/lib/api-schemas/workflow-runs.js.map +1 -1
  129. package/lib/apikey.d.ts +30 -25
  130. package/lib/apikey.d.ts.map +1 -1
  131. package/lib/apikey.js.map +1 -1
  132. package/lib/apps.d.ts +116 -120
  133. package/lib/apps.d.ts.map +1 -1
  134. package/lib/apps.js.map +1 -1
  135. package/lib/audit-trail.d.ts +17 -18
  136. package/lib/audit-trail.d.ts.map +1 -1
  137. package/lib/audit-trail.js +2 -0
  138. package/lib/audit-trail.js.map +1 -1
  139. package/lib/browser-credentials.d.ts +11 -12
  140. package/lib/browser-credentials.d.ts.map +1 -1
  141. package/lib/common.d.ts +17 -24
  142. package/lib/common.d.ts.map +1 -1
  143. package/lib/content-query.d.ts +3 -4
  144. package/lib/content-query.d.ts.map +1 -1
  145. package/lib/cost-analytics.d.ts +13 -21
  146. package/lib/cost-analytics.d.ts.map +1 -1
  147. package/lib/cost-analytics.js +0 -7
  148. package/lib/cost-analytics.js.map +1 -1
  149. package/lib/data-platform.d.ts +79 -88
  150. package/lib/data-platform.d.ts.map +1 -1
  151. package/lib/data-platform.js.map +1 -1
  152. package/lib/delegation.d.ts +4 -5
  153. package/lib/delegation.d.ts.map +1 -1
  154. package/lib/email.d.ts +15 -17
  155. package/lib/email.d.ts.map +1 -1
  156. package/lib/email.js.map +1 -1
  157. package/lib/embeddings.d.ts +25 -26
  158. package/lib/embeddings.d.ts.map +1 -1
  159. package/lib/environment.d.ts +16 -17
  160. package/lib/environment.d.ts.map +1 -1
  161. package/lib/environment.js.map +1 -1
  162. package/lib/facets.d.ts +3 -4
  163. package/lib/facets.d.ts.map +1 -1
  164. package/lib/group.d.ts +6 -7
  165. package/lib/group.d.ts.map +1 -1
  166. package/lib/group.js.map +1 -1
  167. package/lib/index.d.ts +4 -2
  168. package/lib/index.d.ts.map +1 -1
  169. package/lib/index.js.map +1 -1
  170. package/lib/inference-profile.d.ts +17 -0
  171. package/lib/inference-profile.d.ts.map +1 -0
  172. package/lib/inference-profile.js +2 -0
  173. package/lib/inference-profile.js.map +1 -0
  174. package/lib/integrations.d.ts +19 -20
  175. package/lib/integrations.d.ts.map +1 -1
  176. package/lib/integrations.js.map +1 -1
  177. package/lib/interaction.d.ts +68 -73
  178. package/lib/interaction.d.ts.map +1 -1
  179. package/lib/interaction.js.map +1 -1
  180. package/lib/meters.d.ts +4 -5
  181. package/lib/meters.d.ts.map +1 -1
  182. package/lib/oauth-server.d.ts +40 -37
  183. package/lib/oauth-server.d.ts.map +1 -1
  184. package/lib/oauth.d.ts +9 -10
  185. package/lib/oauth.d.ts.map +1 -1
  186. package/lib/payload.d.ts +11 -14
  187. package/lib/payload.d.ts.map +1 -1
  188. package/lib/pending-asks.d.ts +8 -13
  189. package/lib/pending-asks.d.ts.map +1 -1
  190. package/lib/pending-asks.js +0 -4
  191. package/lib/pending-asks.js.map +1 -1
  192. package/lib/platform-event.d.ts +48 -51
  193. package/lib/platform-event.d.ts.map +1 -1
  194. package/lib/platform-event.js.map +1 -1
  195. package/lib/principal-context.d.ts +23 -14
  196. package/lib/principal-context.d.ts.map +1 -1
  197. package/lib/project.d.ts +42 -43
  198. package/lib/project.d.ts.map +1 -1
  199. package/lib/project.js +10 -0
  200. package/lib/project.js.map +1 -1
  201. package/lib/prompt.d.ts +14 -16
  202. package/lib/prompt.d.ts.map +1 -1
  203. package/lib/prompt.js.map +1 -1
  204. package/lib/query.d.ts +10 -13
  205. package/lib/query.d.ts.map +1 -1
  206. package/lib/rate-limiter.d.ts +7 -11
  207. package/lib/rate-limiter.d.ts.map +1 -1
  208. package/lib/refs.d.ts +2 -3
  209. package/lib/refs.d.ts.map +1 -1
  210. package/lib/refs.js.map +1 -1
  211. package/lib/roles/types.d.ts +5 -6
  212. package/lib/roles/types.d.ts.map +1 -1
  213. package/lib/roles/types.js.map +1 -1
  214. package/lib/run-budget.d.ts +8 -0
  215. package/lib/run-budget.d.ts.map +1 -0
  216. package/lib/run-budget.js +2 -0
  217. package/lib/run-budget.js.map +1 -0
  218. package/lib/runs.d.ts +9 -10
  219. package/lib/runs.d.ts.map +1 -1
  220. package/lib/secrets.d.ts +20 -21
  221. package/lib/secrets.d.ts.map +1 -1
  222. package/lib/store/agent-approval.d.ts +4 -5
  223. package/lib/store/agent-approval.d.ts.map +1 -1
  224. package/lib/store/agent-approval.js.map +1 -1
  225. package/lib/store/agent-run.d.ts +50 -52
  226. package/lib/store/agent-run.d.ts.map +1 -1
  227. package/lib/store/agent-run.js.map +1 -1
  228. package/lib/store/collections.d.ts +11 -12
  229. package/lib/store/collections.d.ts.map +1 -1
  230. package/lib/store/collections.js.map +1 -1
  231. package/lib/store/conversation-state.d.ts +14 -8
  232. package/lib/store/conversation-state.d.ts.map +1 -1
  233. package/lib/store/doc-analyzer.d.ts +7 -8
  234. package/lib/store/doc-analyzer.d.ts.map +1 -1
  235. package/lib/store/dsl-workflow.d.ts +10 -12
  236. package/lib/store/dsl-workflow.d.ts.map +1 -1
  237. package/lib/store/dsl-workflow.js.map +1 -1
  238. package/lib/store/duration.d.ts +12 -0
  239. package/lib/store/duration.d.ts.map +1 -0
  240. package/lib/store/duration.js +2 -0
  241. package/lib/store/duration.js.map +1 -0
  242. package/lib/store/grounded-extraction.d.ts +6 -7
  243. package/lib/store/grounded-extraction.d.ts.map +1 -1
  244. package/lib/store/intake-policy-schema.generated.d.ts.map +1 -1
  245. package/lib/store/intake-policy-schema.generated.js +309 -34
  246. package/lib/store/intake-policy-schema.generated.js.map +1 -1
  247. package/lib/store/process.d.ts +70 -69
  248. package/lib/store/process.d.ts.map +1 -1
  249. package/lib/store/process.js.map +1 -1
  250. package/lib/store/rendering.d.ts +6 -12
  251. package/lib/store/rendering.d.ts.map +1 -1
  252. package/lib/store/rendering.js +0 -5
  253. package/lib/store/rendering.js.map +1 -1
  254. package/lib/store/signals.d.ts +43 -0
  255. package/lib/store/signals.d.ts.map +1 -1
  256. package/lib/store/signals.js +6 -1
  257. package/lib/store/signals.js.map +1 -1
  258. package/lib/store/store.d.ts +92 -91
  259. package/lib/store/store.d.ts.map +1 -1
  260. package/lib/store/store.js.map +1 -1
  261. package/lib/store/task.d.ts +10 -14
  262. package/lib/store/task.d.ts.map +1 -1
  263. package/lib/store/workflow.d.ts +35 -41
  264. package/lib/store/workflow.d.ts.map +1 -1
  265. package/lib/store/workflow.js.map +1 -1
  266. package/lib/sts-token-types.d.ts +14 -17
  267. package/lib/sts-token-types.d.ts.map +1 -1
  268. package/lib/tools.d.ts +12 -13
  269. package/lib/tools.d.ts.map +1 -1
  270. package/lib/transient-tokens.d.ts +3 -3
  271. package/lib/transient-tokens.d.ts.map +1 -1
  272. package/lib/user.d.ts +17 -19
  273. package/lib/user.d.ts.map +1 -1
  274. package/lib/user.js.map +1 -1
  275. package/lib/vertesia-common.js +2 -2
  276. package/lib/vertesia-common.js.map +1 -1
  277. package/lib/views.d.ts +61 -64
  278. package/lib/views.d.ts.map +1 -1
  279. package/lib/views.js.map +1 -1
  280. package/lib/wire-types.generated.d.ts +11231 -0
  281. package/lib/wire-types.generated.d.ts.map +1 -0
  282. package/lib/wire-types.generated.js +4 -0
  283. package/lib/wire-types.generated.js.map +1 -0
  284. package/lib/workflow-analytics.d.ts +21 -19
  285. package/lib/workflow-analytics.d.ts.map +1 -1
  286. package/lib/workflow-analytics.js +2 -2
  287. package/lib/workflow-analytics.js.map +1 -1
  288. package/package.json +17 -12
  289. package/src/access-control-values.ts +2 -2
  290. package/src/access-control.ts +7 -15
  291. package/src/analytics.ts +6 -13
  292. package/src/api-contract/components.generated.json +4500 -2720
  293. package/src/api-schemas/access-control.ts +18 -16
  294. package/src/api-schemas/account.ts +13 -4
  295. package/src/api-schemas/agent-budget.ts +60 -0
  296. package/src/api-schemas/agent-runs.ts +63 -27
  297. package/src/api-schemas/apikey.ts +11 -10
  298. package/src/api-schemas/app-lifecycle.ts +16 -0
  299. package/src/api-schemas/app-runtime.ts +15 -0
  300. package/src/api-schemas/audit-trail.ts +7 -1
  301. package/src/api-schemas/content.ts +55 -0
  302. package/src/api-schemas/cost-analytics.ts +34 -2
  303. package/src/api-schemas/environment.ts +0 -1
  304. package/src/api-schemas/group.ts +2 -1
  305. package/src/api-schemas/index.ts +1 -0
  306. package/src/api-schemas/inference-profile.ts +151 -0
  307. package/src/api-schemas/interaction.ts +41 -1
  308. package/src/api-schemas/invites.ts +10 -9
  309. package/src/api-schemas/oauth-server.ts +36 -0
  310. package/src/api-schemas/process.ts +78 -2
  311. package/src/api-schemas/project-configuration.ts +25 -1
  312. package/src/api-schemas/project.ts +19 -10
  313. package/src/api-schemas/prompt.ts +1 -0
  314. package/src/api-schemas/quota.ts +7 -6
  315. package/src/api-schemas/registry.ts +210 -44
  316. package/src/api-schemas/run-budget.ts +60 -0
  317. package/src/api-schemas/store.ts +12 -0
  318. package/src/api-schemas/sts.ts +16 -0
  319. package/src/api-schemas/user.ts +32 -25
  320. package/src/api-schemas/workflow-runs.ts +2 -0
  321. package/src/apikey.ts +30 -39
  322. package/src/apps.ts +117 -237
  323. package/src/audit-trail.ts +18 -33
  324. package/src/browser-credentials.ts +11 -23
  325. package/src/common.ts +17 -37
  326. package/src/content-query.ts +3 -4
  327. package/src/cost-analytics.ts +13 -35
  328. package/src/data-platform.ts +79 -168
  329. package/src/delegation.ts +4 -9
  330. package/src/email.ts +15 -29
  331. package/src/embeddings.ts +25 -51
  332. package/src/environment.ts +16 -33
  333. package/src/facets.ts +3 -4
  334. package/src/group.ts +6 -13
  335. package/src/index.ts +36 -2
  336. package/src/inference-profile.ts +20 -0
  337. package/src/integrations.ts +21 -41
  338. package/src/interaction.ts +68 -137
  339. package/src/meters.ts +4 -9
  340. package/src/oauth-server.ts +43 -73
  341. package/src/oauth.ts +9 -19
  342. package/src/payload.ts +11 -25
  343. package/src/pending-asks.ts +8 -22
  344. package/src/platform-event.ts +48 -97
  345. package/src/principal-context.ts +24 -14
  346. package/src/project.ts +53 -86
  347. package/src/prompt.ts +14 -31
  348. package/src/query.ts +10 -20
  349. package/src/rate-limiter.ts +7 -19
  350. package/src/refs.ts +2 -3
  351. package/src/roles/types.ts +5 -11
  352. package/src/run-budget.ts +8 -0
  353. package/src/runs.ts +9 -19
  354. package/src/secrets.ts +20 -41
  355. package/src/store/agent-approval.ts +4 -9
  356. package/src/store/agent-run.ts +53 -99
  357. package/src/store/collections.ts +11 -23
  358. package/src/store/conversation-state.ts +15 -15
  359. package/src/store/doc-analyzer.ts +7 -15
  360. package/src/store/dsl-workflow.ts +10 -23
  361. package/src/store/duration.ts +45 -0
  362. package/src/store/grounded-extraction.ts +6 -13
  363. package/src/store/intake-policy-schema.generated.ts +314 -34
  364. package/src/store/process.ts +70 -140
  365. package/src/store/rendering.ts +6 -19
  366. package/src/store/signals.ts +48 -0
  367. package/src/store/store.ts +92 -181
  368. package/src/store/task.ts +10 -24
  369. package/src/store/workflow.ts +35 -71
  370. package/src/sts-token-types.ts +15 -29
  371. package/src/tools.ts +12 -25
  372. package/src/transient-tokens.ts +3 -3
  373. package/src/user.ts +18 -33
  374. package/src/views.ts +61 -125
  375. package/src/wire-types.generated.ts +11889 -0
  376. package/src/workflow-analytics.ts +21 -19
  377. package/src/agent-resources.test.ts +0 -89
  378. package/src/api-contract/components.contract.test.ts +0 -99
  379. package/src/api-schemas/access-control.contract.test.ts +0 -209
  380. package/src/api-schemas/account-apikey.test.ts +0 -60
  381. package/src/api-schemas/account.contract.test.ts +0 -319
  382. package/src/api-schemas/adapter-edge-cases.test.ts +0 -499
  383. package/src/api-schemas/agent-communication.contract.test.ts +0 -90
  384. package/src/api-schemas/agent-history.contract.test.ts +0 -42
  385. package/src/api-schemas/agent-runs.contract.test.ts +0 -240
  386. package/src/api-schemas/api-discriminators.test.ts +0 -185
  387. package/src/api-schemas/apikey.contract.test.ts +0 -270
  388. package/src/api-schemas/app-delete-summary.contract.test.ts +0 -67
  389. package/src/api-schemas/bulk-operation.contract.test.ts +0 -39
  390. package/src/api-schemas/bundle-isolation.test.ts +0 -44
  391. package/src/api-schemas/commands.contract.test.ts +0 -51
  392. package/src/api-schemas/cost-analytics.contract.test.ts +0 -64
  393. package/src/api-schemas/dashboard.contract.test.ts +0 -138
  394. package/src/api-schemas/data-store.contract.test.ts +0 -97
  395. package/src/api-schemas/document-processing.contract.test.ts +0 -76
  396. package/src/api-schemas/emit-json-schema.test.ts +0 -36
  397. package/src/api-schemas/environment.contract.test.ts +0 -202
  398. package/src/api-schemas/group.contract.test.ts +0 -205
  399. package/src/api-schemas/indexing.contract.test.ts +0 -122
  400. package/src/api-schemas/interaction.contract.test.ts +0 -307
  401. package/src/api-schemas/invites.contract.test.ts +0 -268
  402. package/src/api-schemas/llumiverse.contract.test.ts +0 -149
  403. package/src/api-schemas/mcp-api-key.contract.test.ts +0 -125
  404. package/src/api-schemas/oauth.contract.test.ts +0 -181
  405. package/src/api-schemas/parameters.test.ts +0 -402
  406. package/src/api-schemas/process.contract.test.ts +0 -115
  407. package/src/api-schemas/project.contract.test.ts +0 -457
  408. package/src/api-schemas/pruning-limits.test.ts +0 -189
  409. package/src/api-schemas/quota.contract.test.ts +0 -147
  410. package/src/api-schemas/registry-groups.test.ts +0 -91
  411. package/src/api-schemas/response-pruning.test.ts +0 -260
  412. package/src/api-schemas/store.contract.test.ts +0 -378
  413. package/src/api-schemas/sts.contract.test.ts +0 -112
  414. package/src/api-schemas/user.contract.test.ts +0 -191
  415. package/src/api-schemas/views.contract.test.ts +0 -119
  416. package/src/api-schemas/zeno-response-contracts.test.ts +0 -380
  417. package/src/apps.test.ts +0 -89
  418. package/src/oauth-scopes.test.ts +0 -15
  419. package/src/roles.test.ts +0 -33
  420. package/src/schema-for-extraction.test.ts +0 -191
  421. package/src/store/agent-approval.test.ts +0 -18
  422. package/src/store/content-type-editing.test.ts +0 -17
  423. package/src/store/ms.d.ts +0 -42
  424. package/src/store/schedule.test.ts +0 -59
  425. package/src/store/workflow.test.ts +0 -640
  426. package/src/versions.test.ts +0 -13
@@ -1,189 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { findUnprunablePaths, pruneToSchema, toOpenApiComponents } from './adapter.js';
3
- import { findUnprunableApiPaths } from './registry.js';
4
-
5
- /**
6
- * Pins the shapes where pruning declines to narrow.
7
- *
8
- * These are limitations, not bugs: guessing which branch of an ambiguous schema applies risks
9
- * deleting legitimate data. They are pinned here so the boundary is explicit and cannot be
10
- * mistaken for a secret-removal guarantee — anything sensitive needs an explicit response mapper
11
- * or a request/response type split.
12
- */
13
- describe('shapes where pruning passes values through untouched', () => {
14
- const SENSITIVE = { a: 'x', stripe_secret: 'sk_live_leak' };
15
-
16
- it('an allOf intersection is not pruned', () => {
17
- const components = toOpenApiComponents({
18
- Merged: { allOf: [{ type: 'object', properties: { a: { type: 'string' } } }] },
19
- });
20
- expect(pruneToSchema(SENSITIVE, { $ref: '#/components/schemas/Merged' }, components)).toEqual(SENSITIVE);
21
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Merged' }, components)).toEqual([' (allOf)']);
22
- });
23
-
24
- it('a union without a discriminator is not pruned', () => {
25
- const components = toOpenApiComponents({
26
- Loose: {
27
- anyOf: [
28
- { type: 'object', properties: { a: { type: 'string' } } },
29
- { type: 'object', properties: { b: { type: 'string' } } },
30
- ],
31
- },
32
- });
33
- expect(pruneToSchema(SENSITIVE, { $ref: '#/components/schemas/Loose' }, components)).toEqual(SENSITIVE);
34
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Loose' }, components)).toEqual([
35
- ' (union without discriminator)',
36
- ]);
37
- });
38
-
39
- it('a discriminator value with no mapping entry is not pruned', () => {
40
- const components = toOpenApiComponents({
41
- Union: {
42
- anyOf: [{ $ref: '#/$defs/A' }, { $ref: '#/$defs/B' }],
43
- $defs: {
44
- A: { type: 'object', properties: { kind: { const: 'a' } }, required: ['kind'] },
45
- B: { type: 'object', properties: { kind: { const: 'b' } }, required: ['kind'] },
46
- },
47
- },
48
- });
49
- const unknownBranch = { kind: 'c', stripe_secret: 'sk_live_leak' };
50
- expect(pruneToSchema(unknownBranch, { $ref: '#/components/schemas/Union' }, components)).toEqual(unknownBranch);
51
- });
52
-
53
- it('an unresolvable reference is not pruned', () => {
54
- expect(pruneToSchema(SENSITIVE, { $ref: '#/components/schemas/Absent' }, {})).toEqual(SENSITIVE);
55
- });
56
-
57
- it('patternProperties is not pruned — its keys are declared but absent from `properties`', () => {
58
- const components = toOpenApiComponents({
59
- Headers: {
60
- type: 'object',
61
- properties: { a: { type: 'string' } },
62
- patternProperties: { '^x-': { type: 'string' } },
63
- },
64
- });
65
- const payload = { a: 'x', 'x-trace': 'declared-by-pattern', stripe_secret: 'sk_live_leak' };
66
- expect(pruneToSchema(payload, { $ref: '#/components/schemas/Headers' }, components)).toEqual(payload);
67
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Headers' }, components)).toEqual([
68
- ' (patternProperties)',
69
- ]);
70
- });
71
-
72
- it('prefixItems is not pruned — tuple positions have their own schemas', () => {
73
- const components = toOpenApiComponents({
74
- Pair: { type: 'array', prefixItems: [{ type: 'string' }, { type: 'object' }] },
75
- });
76
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Pair' }, components)).toEqual([' (prefixItems)']);
77
- });
78
-
79
- it('a non-composable sibling further down a reference chain is not pruned', () => {
80
- // The sibling sits on the alias, not on the node being pruned, so it is only visible once
81
- // the chain is followed. Reporting it as an unresolved reference would send someone
82
- // looking for a missing component that exists.
83
- const components = toOpenApiComponents({
84
- Alias: { $ref: '#/components/schemas/Closed', additionalProperties: true },
85
- Closed: { type: 'object', properties: { a: { type: 'string' } }, additionalProperties: false },
86
- });
87
- const ref = { $ref: '#/components/schemas/Alias' };
88
- expect(pruneToSchema(SENSITIVE, ref, components)).toEqual(SENSITIVE);
89
- expect(findUnprunablePaths(ref, components)).toEqual([
90
- ' ($ref with unsupported sibling: additionalProperties)',
91
- ]);
92
- });
93
-
94
- it('a reference chain that cycles is not pruned', () => {
95
- // Mutual aliases never reach a schema describing an object, so there is nothing to narrow
96
- // against. Following them would loop forever.
97
- const components = toOpenApiComponents({
98
- Ping: { $ref: '#/components/schemas/Pong' },
99
- Pong: { $ref: '#/components/schemas/Ping' },
100
- });
101
- const ref = { $ref: '#/components/schemas/Ping' };
102
- expect(pruneToSchema(SENSITIVE, ref, components)).toEqual(SENSITIVE);
103
- expect(findUnprunablePaths(ref, components)).toEqual([' (circular $ref)']);
104
- });
105
-
106
- it('a $ref with a non-composable sibling is not pruned', () => {
107
- // Siblings apply conjunctively, so a sibling `additionalProperties: true` does NOT reopen
108
- // a closed target. Composing that correctly is not something to guess at.
109
- const components = toOpenApiComponents({
110
- Wrapper: {
111
- type: 'object',
112
- properties: { inner: { $ref: '#/$defs/Closed', additionalProperties: true } },
113
- $defs: {
114
- Closed: {
115
- type: 'object',
116
- properties: { a: { type: 'string' } },
117
- additionalProperties: false,
118
- },
119
- },
120
- },
121
- });
122
- const payload = { inner: { a: 'x', stripe_secret: 'sk_live_leak' } };
123
- expect(pruneToSchema(payload, { $ref: '#/components/schemas/Wrapper' }, components)).toEqual(payload);
124
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Wrapper' }, components)).toEqual([
125
- '/inner ($ref with unsupported sibling: additionalProperties)',
126
- ]);
127
- });
128
- });
129
-
130
- describe('findUnprunablePaths reports where a component is not closed', () => {
131
- it('returns nothing for the fully prunable Account component', () => {
132
- expect(findUnprunableApiPaths('Account')).toEqual([]);
133
- });
134
-
135
- it('returns nothing for the discriminated Stripe union', () => {
136
- // A discriminated union IS prunable — the discriminator selects the branch.
137
- expect(findUnprunableApiPaths('StripeBillingStatusResponse')).toEqual([]);
138
- });
139
-
140
- it('reports the path of a nested ambiguous schema', () => {
141
- const components = toOpenApiComponents({
142
- Outer: {
143
- type: 'object',
144
- properties: {
145
- payload: { allOf: [{ type: 'object', properties: { a: { type: 'string' } } }] },
146
- rows: {
147
- type: 'array',
148
- items: { anyOf: [{ type: 'object' }, { type: 'object', properties: {} }] },
149
- },
150
- },
151
- },
152
- });
153
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Outer' }, components).sort()).toEqual([
154
- '/payload (allOf)',
155
- '/rows[] (union without discriminator)',
156
- ]);
157
- });
158
-
159
- it('reports an ambiguous schema reached through a map value', () => {
160
- // additionalProperties is the path every value in a Record<string, T> takes, so its
161
- // limitations are the map's limitations.
162
- const components = toOpenApiComponents({
163
- Registry: {
164
- type: 'object',
165
- additionalProperties: { allOf: [{ type: 'object', properties: { a: { type: 'string' } } }] },
166
- },
167
- });
168
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Registry' }, components)).toEqual(['{} (allOf)']);
169
- });
170
-
171
- it('does not flag a scalar union expressed through references', () => {
172
- // Every branch resolves to an enum, so there are no properties to narrow and the missing
173
- // discriminator is irrelevant.
174
- const components = toOpenApiComponents({
175
- Choice: {
176
- anyOf: [{ $ref: '#/$defs/Colour' }, { type: 'null' }],
177
- $defs: { Colour: { type: 'string', enum: ['red', 'green'] } },
178
- },
179
- });
180
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Choice' }, components)).toEqual([]);
181
- });
182
-
183
- it('terminates on a recursive component', () => {
184
- const components = toOpenApiComponents({
185
- Node: { type: 'object', properties: { children: { type: 'array', items: { $ref: '#' } } } },
186
- });
187
- expect(findUnprunablePaths({ $ref: '#/components/schemas/Node' }, components)).toEqual([]);
188
- });
189
- });
@@ -1,147 +0,0 @@
1
- import { Ajv2020 } from 'ajv/dist/2020.js';
2
- import { describe, expect, it } from 'vitest';
3
- import type {
4
- QuotaEffectiveTier,
5
- QuotaStandingAdmissionClass,
6
- QuotaStandingResource,
7
- QuotaStandingResponse,
8
- QuotaStandingWindow,
9
- QuotaTierResponse,
10
- } from '../rate-limiter.js';
11
- import type { JsonObject } from './adapter.js';
12
- import { ApiSchemaComponents, apiComponentRef, validateApiResponse } from './registry.js';
13
-
14
- /** Exact type identity — `extends` in both directions is too weak (any/unknown slip through). */
15
- type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
16
- function assertType<T extends true>(_ok: T): void {}
17
-
18
- function compile(name: string, components: Readonly<Record<string, JsonObject>> = ApiSchemaComponents) {
19
- const ajv = new Ajv2020({ strictSchema: false, allErrors: true });
20
- ajv.addSchema({ $id: 'vertesia://openapi', components: { schemas: components } });
21
- return ajv.compile({ $ref: `vertesia://openapi${apiComponentRef(name as never)}` });
22
- }
23
-
24
- const VALID_WINDOW = { limit: 600, used: 12, remaining: 588, window_ms: 60_000 };
25
-
26
- const VALID_STANDING = {
27
- tenant_id: '1589ba_149d0b',
28
- available: true,
29
- base_tier: 'default',
30
- effective_tier: 'enterprise',
31
- api: [{ resource: 'objects', name: 'Content objects', burst: VALID_WINDOW, quota: VALID_WINDOW }],
32
- admission: {
33
- classes: [{ class: 'ExecuteConversationWorkflow', tenant_active: 3 }],
34
- note: 'Budget is global and discovered.',
35
- },
36
- llm: { note: 'Shared per environment/model.' },
37
- };
38
-
39
- describe('gate 1 — the schema is the single source of truth for the public quota types', () => {
40
- it('publishes the exact schema-derived type, not a hand-written twin', () => {
41
- // The whole closure, not only the two types the endpoints return. A hand-written
42
- // QuotaStandingWindow beside an inferred QuotaStandingResponse would leave the drift path
43
- // open one level down, where it is harder to see.
44
- expect(true).toBe(true);
45
- });
46
-
47
- it('resolves nested component references to concrete property types', () => {
48
- // Schema-first only pays off if a $ref survives inference as the referenced type rather
49
- // than degrading to `unknown` — that is what makes the SDK usable.
50
- assertType<Equals<QuotaStandingResponse['api'], QuotaStandingResource[]>>(true);
51
- assertType<Equals<QuotaStandingResource['burst'], QuotaStandingWindow>>(true);
52
- assertType<Equals<QuotaStandingResponse['admission']['classes'], QuotaStandingAdmissionClass[]>>(true);
53
- assertType<Equals<QuotaStandingResponse['effective_tier'], QuotaEffectiveTier>>(true);
54
- assertType<Equals<QuotaTierResponse['tier'], QuotaEffectiveTier>>(true);
55
- expect(true).toBe(true);
56
- });
57
-
58
- it('keeps every quota field required, as the published document declares', () => {
59
- // `?:` on an inferred field is invisible at the call site until a consumer hits undefined.
60
- // Identity above would catch a change here, but only by failing somewhere less obvious.
61
- assertType<Equals<QuotaStandingResponse['available'], boolean>>(true);
62
- assertType<Equals<QuotaStandingWindow['remaining'], number>>(true);
63
- assertType<Equals<QuotaStandingResponse['llm'], { note: string }>>(true);
64
- expect(true).toBe(true);
65
- });
66
- });
67
-
68
- describe('gate 2 — the published components match the closure the types come from', () => {
69
- it('hoists every id-bearing quota schema into its own component', () => {
70
- // Six components for two endpoints: the registry must be self-contained, so a canonical
71
- // component may not reference a TypeScript-derived one.
72
- const quota = Object.keys(ApiSchemaComponents)
73
- .filter((name) => name.startsWith('Quota'))
74
- .sort();
75
- expect(quota).toEqual([
76
- 'QuotaEffectiveTier',
77
- 'QuotaStandingAdmissionClass',
78
- 'QuotaStandingResource',
79
- 'QuotaStandingResponse',
80
- 'QuotaStandingWindow',
81
- // QuotaTier is the account tier enum, converted with the account slice.
82
- 'QuotaTier',
83
- 'QuotaTierResponse',
84
- ]);
85
- });
86
-
87
- it('shares one QuotaStandingWindow component across both referencing properties', () => {
88
- // The literal pointer, not apiComponentRef: that helper only accepts registry entry names,
89
- // and QuotaStandingWindow is a hoisted sub-component rather than a slot's contract.
90
- const props = ApiSchemaComponents.QuotaStandingResource.properties as Record<string, JsonObject>;
91
- expect(props.burst).toEqual({ $ref: '#/components/schemas/QuotaStandingWindow' });
92
- expect(props.quota).toEqual({ $ref: '#/components/schemas/QuotaStandingWindow' });
93
- });
94
-
95
- it('keeps admission and llm anonymous, as the document publishes them', () => {
96
- // Naming them would add a $ref the spec does not carry, changing the generated clients.
97
- const props = ApiSchemaComponents.QuotaStandingResponse.properties as Record<string, JsonObject>;
98
- expect(props.admission.$ref).toBeUndefined();
99
- expect(props.admission.type).toBe('object');
100
- expect(props.llm.$ref).toBeUndefined();
101
- expect(Object.keys(ApiSchemaComponents)).not.toContain('QuotaStandingAdmission');
102
- });
103
- });
104
-
105
- describe('gate 3 — AJV validates the same canonical objects that are published', () => {
106
- it('accepts a full standing payload', () => {
107
- expect(compile('QuotaStandingResponse')(VALID_STANDING)).toBe(true);
108
- expect(compile('QuotaTierResponse')({ tier: 'enterprise' })).toBe(true);
109
- });
110
-
111
- it('rejects a missing required field', () => {
112
- const { available: _dropped, ...incomplete } = VALID_STANDING;
113
- expect(compile('QuotaStandingResponse')(incomplete)).toBe(false);
114
- });
115
-
116
- it('rejects a numeric window value sent as a string', () => {
117
- // No coerceTypes: one AJV configuration serves bodies and responses, so a JSON number that
118
- // arrives as text is a contract violation rather than something quietly repaired.
119
- const bad = { ...VALID_WINDOW, used: '12' };
120
- expect(compile('QuotaStandingWindow')(bad)).toBe(false);
121
- });
122
-
123
- it('closes the anonymous nested objects the strict policy reaches', () => {
124
- const withExtra = { ...VALID_STANDING, llm: { note: 'x', rogue: 1 } };
125
- expect(compile('QuotaStandingResponse')(withExtra)).toBe(false);
126
- });
127
- });
128
-
129
- describe('gate 4 — the response path checks the same component the SDK types come from', () => {
130
- it('accepts a conforming response and hands back the component type', () => {
131
- const result = validateApiResponse('QuotaTierResponse', { tier: 'standard' });
132
- expect(result.valid).toBe(true);
133
- if (result.valid) {
134
- assertType<Equals<typeof result.data, QuotaTierResponse>>(true);
135
- expect(result.data.tier).toBe('standard');
136
- }
137
- });
138
-
139
- it('reports a violation without mutating the payload', () => {
140
- // Detection, not repair. Outside local development a response mismatch is logged drift, so
141
- // this must never silently edit what a caller receives.
142
- const response: Record<string, unknown> = { tier: 42, legacy_extra: 'still here' };
143
- const pristine = structuredClone(response);
144
- expect(validateApiResponse('QuotaTierResponse', response).valid).toBe(false);
145
- expect(response).toEqual(pristine);
146
- });
147
- });
@@ -1,91 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { z } from 'zod';
3
- import { type ApiComponentName, type ApiComponentType, ApiSchemaComponents, mergeComponentGroups } from './registry.js';
4
-
5
- /**
6
- * `N` when `ApiComponentType` resolves it, and `never` when it does not.
7
- *
8
- * The conditional that maps a name to its inferred type tests the groups one by one and ends in
9
- * `never`, so a group missing from that chain — the third place a new group has to be listed, after
10
- * the merge array and the `ApiComponentName` union — makes every name in it resolve to `never`
11
- * rather than fail. Distributing this over the whole union turns that into an assignment error on
12
- * the list below, which `typecheck:test` reports.
13
- */
14
- type ResolvedName<N extends ApiComponentName> = [ApiComponentType<N>] extends [never] ? never : N;
15
-
16
- /**
17
- * Covers the one way the group split can corrupt the registry.
18
- *
19
- * The registry is declared in several objects because the compiler cannot serialize it as one, and
20
- * the two public types are assembled from those objects: `ApiComponentName` is a union of `keyof`,
21
- * `ApiComponentType` a conditional testing the groups IN ORDER. A plain spread merge would accept a
22
- * name listed twice and keep the LAST group's schema, while `ApiComponentType` would resolve to the
23
- * FIRST group's — validation enforcing one shape while every handler is typed against another, with
24
- * nothing downstream to report it. The grouping is a compiler accommodation, so this failure mode is
25
- * pure accident: a component moved between groups and left behind, or added to whichever group the
26
- * author had open.
27
- *
28
- * The real groups are covered by the call itself, which runs at module load — a duplicate there
29
- * throws on import and takes every test in the package with it. What is tested here is that the
30
- * merge actually refuses, which no import of a correct registry can show.
31
- */
32
- describe('mergeComponentGroups', () => {
33
- const A = z.strictObject({ a: z.string() });
34
- const B = z.strictObject({ b: z.number() });
35
-
36
- it('merges disjoint groups into one object', () => {
37
- const merged = mergeComponentGroups([{ Alpha: A }, { Beta: B }]);
38
-
39
- expect(Object.keys(merged).sort()).toEqual(['Alpha', 'Beta']);
40
- expect(merged.Alpha).toBe(A);
41
- expect(merged.Beta).toBe(B);
42
- });
43
-
44
- it('refuses a name registered in two groups', () => {
45
- expect(() => mergeComponentGroups([{ Alpha: A }, { Alpha: B }])).toThrow(
46
- /registered in more than one group: Alpha/,
47
- );
48
- });
49
-
50
- it('names every colliding component, not just the first', () => {
51
- expect(() => mergeComponentGroups([{ Beta: B, Alpha: A }, { Alpha: B }, { Beta: A }])).toThrow(
52
- /components registered in more than one group: Alpha, Beta/,
53
- );
54
- });
55
-
56
- it('reports a collision across non-adjacent groups', () => {
57
- // The failure is a name in ANY two groups, not only in two that happen to be listed together.
58
- expect(() => mergeComponentGroups([{ Alpha: A }, { Beta: B }, { Alpha: B }])).toThrow(
59
- /registered in more than one group: Alpha/,
60
- );
61
- });
62
-
63
- it('emits a component from every group, and resolves its type', () => {
64
- // The merge takes a list, so a group can be dropped from it as easily as duplicated in it —
65
- // and dropping one is silent in a different way: `ApiComponentName` still names those
66
- // components, so the code compiles and only the emitted document loses them. One known name
67
- // per group is what notices — the `satisfies` for the type conditional, the loop for the
68
- // merge.
69
- const perGroup = [
70
- 'Account',
71
- 'ProjectModelDefaults',
72
- 'OAuthProvider',
73
- 'ExecutionEnvironment',
74
- 'JSONValue',
75
- 'Interaction',
76
- 'ImprovePromptPayload',
77
- 'AgentRunnerOptions',
78
- 'ExecutionRunStatus',
79
- 'RenderPromptResponse',
80
- 'AggregatedTool',
81
- 'OAuthAuthStatus',
82
- 'AuditTrailResponse',
83
- 'ViewExperience',
84
- 'CopyFilePayload',
85
- ] as const satisfies readonly ResolvedName<ApiComponentName>[];
86
-
87
- for (const name of perGroup) {
88
- expect(ApiSchemaComponents).toHaveProperty(name);
89
- }
90
- });
91
- });