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

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 (421) 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 +2553 -1046
  12. package/lib/api-contract/engine.d.ts +65 -0
  13. package/lib/api-contract/engine.d.ts.map +1 -0
  14. package/lib/api-contract/engine.js +569 -0
  15. package/lib/api-contract/engine.js.map +1 -0
  16. package/lib/api-contract/index.d.ts +21 -182
  17. package/lib/api-contract/index.d.ts.map +1 -1
  18. package/lib/api-contract/index.js +13 -551
  19. package/lib/api-contract/index.js.map +1 -1
  20. package/lib/api-schemas/access-control.d.ts +33 -10
  21. package/lib/api-schemas/access-control.d.ts.map +1 -1
  22. package/lib/api-schemas/access-control.js +7 -6
  23. package/lib/api-schemas/access-control.js.map +1 -1
  24. package/lib/api-schemas/account.d.ts +5 -9
  25. package/lib/api-schemas/account.d.ts.map +1 -1
  26. package/lib/api-schemas/account.js +0 -7
  27. package/lib/api-schemas/account.js.map +1 -1
  28. package/lib/api-schemas/agent-budget.d.ts +15 -0
  29. package/lib/api-schemas/agent-budget.d.ts.map +1 -0
  30. package/lib/api-schemas/agent-budget.js +55 -0
  31. package/lib/api-schemas/agent-budget.js.map +1 -0
  32. package/lib/api-schemas/agent-runs.d.ts +1525 -100
  33. package/lib/api-schemas/agent-runs.d.ts.map +1 -1
  34. package/lib/api-schemas/agent-runs.js +60 -28
  35. package/lib/api-schemas/agent-runs.js.map +1 -1
  36. package/lib/api-schemas/apikey.d.ts +11 -10
  37. package/lib/api-schemas/apikey.d.ts.map +1 -1
  38. package/lib/api-schemas/apikey.js.map +1 -1
  39. package/lib/api-schemas/app-lifecycle.d.ts +13 -0
  40. package/lib/api-schemas/app-lifecycle.d.ts.map +1 -1
  41. package/lib/api-schemas/app-lifecycle.js +4 -0
  42. package/lib/api-schemas/app-lifecycle.js.map +1 -1
  43. package/lib/api-schemas/app-runtime.d.ts +1821 -108
  44. package/lib/api-schemas/app-runtime.d.ts.map +1 -1
  45. package/lib/api-schemas/audit-trail.d.ts +275 -0
  46. package/lib/api-schemas/audit-trail.d.ts.map +1 -1
  47. package/lib/api-schemas/audit-trail.js +156 -1
  48. package/lib/api-schemas/audit-trail.js.map +1 -1
  49. package/lib/api-schemas/content.d.ts +665 -30
  50. package/lib/api-schemas/content.d.ts.map +1 -1
  51. package/lib/api-schemas/content.js +47 -0
  52. package/lib/api-schemas/content.js.map +1 -1
  53. package/lib/api-schemas/cost-analytics.d.ts +19 -0
  54. package/lib/api-schemas/cost-analytics.d.ts.map +1 -1
  55. package/lib/api-schemas/cost-analytics.js +38 -2
  56. package/lib/api-schemas/cost-analytics.js.map +1 -1
  57. package/lib/api-schemas/document-processing.d.ts +381 -18
  58. package/lib/api-schemas/document-processing.d.ts.map +1 -1
  59. package/lib/api-schemas/environment.d.ts +0 -5
  60. package/lib/api-schemas/environment.d.ts.map +1 -1
  61. package/lib/api-schemas/environment.js +0 -1
  62. package/lib/api-schemas/environment.js.map +1 -1
  63. package/lib/api-schemas/events.d.ts +1143 -54
  64. package/lib/api-schemas/events.d.ts.map +1 -1
  65. package/lib/api-schemas/group.d.ts +2 -1
  66. package/lib/api-schemas/group.d.ts.map +1 -1
  67. package/lib/api-schemas/group.js.map +1 -1
  68. package/lib/api-schemas/index.d.ts +2 -0
  69. package/lib/api-schemas/index.d.ts.map +1 -1
  70. package/lib/api-schemas/index.js +2 -0
  71. package/lib/api-schemas/index.js.map +1 -1
  72. package/lib/api-schemas/inference-profile.d.ts +5017 -0
  73. package/lib/api-schemas/inference-profile.d.ts.map +1 -0
  74. package/lib/api-schemas/inference-profile.js +135 -0
  75. package/lib/api-schemas/inference-profile.js.map +1 -0
  76. package/lib/api-schemas/integrations.d.ts +6 -6
  77. package/lib/api-schemas/interaction.d.ts +34391 -703
  78. package/lib/api-schemas/interaction.d.ts.map +1 -1
  79. package/lib/api-schemas/interaction.js +34 -1
  80. package/lib/api-schemas/interaction.js.map +1 -1
  81. package/lib/api-schemas/invites.d.ts +10 -9
  82. package/lib/api-schemas/invites.d.ts.map +1 -1
  83. package/lib/api-schemas/invites.js.map +1 -1
  84. package/lib/api-schemas/process.d.ts +653 -34
  85. package/lib/api-schemas/process.d.ts.map +1 -1
  86. package/lib/api-schemas/process.js +66 -0
  87. package/lib/api-schemas/process.js.map +1 -1
  88. package/lib/api-schemas/project-configuration.d.ts +1323 -62
  89. package/lib/api-schemas/project-configuration.d.ts.map +1 -1
  90. package/lib/api-schemas/project-configuration.js +15 -1
  91. package/lib/api-schemas/project-configuration.js.map +1 -1
  92. package/lib/api-schemas/project.d.ts +2031 -116
  93. package/lib/api-schemas/project.d.ts.map +1 -1
  94. package/lib/api-schemas/project.js +9 -1
  95. package/lib/api-schemas/project.js.map +1 -1
  96. package/lib/api-schemas/quota.d.ts +7 -6
  97. package/lib/api-schemas/quota.d.ts.map +1 -1
  98. package/lib/api-schemas/quota.js.map +1 -1
  99. package/lib/api-schemas/registry.d.ts +28171 -36096
  100. package/lib/api-schemas/registry.d.ts.map +1 -1
  101. package/lib/api-schemas/registry.js +77 -30
  102. package/lib/api-schemas/registry.js.map +1 -1
  103. package/lib/api-schemas/run-budget.d.ts +16 -0
  104. package/lib/api-schemas/run-budget.d.ts.map +1 -0
  105. package/lib/api-schemas/run-budget.js +22 -0
  106. package/lib/api-schemas/run-budget.js.map +1 -0
  107. package/lib/api-schemas/secrets.d.ts +0 -71
  108. package/lib/api-schemas/secrets.d.ts.map +1 -1
  109. package/lib/api-schemas/secrets.js +0 -73
  110. package/lib/api-schemas/secrets.js.map +1 -1
  111. package/lib/api-schemas/store.d.ts +6388 -338
  112. package/lib/api-schemas/store.d.ts.map +1 -1
  113. package/lib/api-schemas/store.js +11 -0
  114. package/lib/api-schemas/store.js.map +1 -1
  115. package/lib/api-schemas/user.d.ts +9 -8
  116. package/lib/api-schemas/user.d.ts.map +1 -1
  117. package/lib/api-schemas/user.js.map +1 -1
  118. package/lib/api-schemas/view-execution.d.ts +8 -0
  119. package/lib/api-schemas/view-execution.d.ts.map +1 -1
  120. package/lib/api-schemas/views.d.ts +14 -0
  121. package/lib/api-schemas/views.d.ts.map +1 -1
  122. package/lib/api-schemas/workflow-runs.d.ts +335 -12
  123. package/lib/api-schemas/workflow-runs.d.ts.map +1 -1
  124. package/lib/api-schemas/workflow-runs.js +2 -0
  125. package/lib/api-schemas/workflow-runs.js.map +1 -1
  126. package/lib/apikey.d.ts +30 -25
  127. package/lib/apikey.d.ts.map +1 -1
  128. package/lib/apikey.js.map +1 -1
  129. package/lib/apps.d.ts +116 -121
  130. package/lib/apps.d.ts.map +1 -1
  131. package/lib/apps.js.map +1 -1
  132. package/lib/audit-trail.d.ts +30 -19
  133. package/lib/audit-trail.d.ts.map +1 -1
  134. package/lib/audit-trail.js +6 -0
  135. package/lib/audit-trail.js.map +1 -1
  136. package/lib/browser-credentials.d.ts +11 -12
  137. package/lib/browser-credentials.d.ts.map +1 -1
  138. package/lib/common.d.ts +17 -24
  139. package/lib/common.d.ts.map +1 -1
  140. package/lib/content-query.d.ts +3 -4
  141. package/lib/content-query.d.ts.map +1 -1
  142. package/lib/cost-analytics.d.ts +13 -21
  143. package/lib/cost-analytics.d.ts.map +1 -1
  144. package/lib/cost-analytics.js +0 -7
  145. package/lib/cost-analytics.js.map +1 -1
  146. package/lib/data-platform.d.ts +79 -88
  147. package/lib/data-platform.d.ts.map +1 -1
  148. package/lib/data-platform.js.map +1 -1
  149. package/lib/delegation.d.ts +4 -5
  150. package/lib/delegation.d.ts.map +1 -1
  151. package/lib/email.d.ts +15 -17
  152. package/lib/email.d.ts.map +1 -1
  153. package/lib/email.js.map +1 -1
  154. package/lib/embeddings.d.ts +25 -26
  155. package/lib/embeddings.d.ts.map +1 -1
  156. package/lib/environment.d.ts +16 -17
  157. package/lib/environment.d.ts.map +1 -1
  158. package/lib/environment.js.map +1 -1
  159. package/lib/facets.d.ts +3 -4
  160. package/lib/facets.d.ts.map +1 -1
  161. package/lib/group.d.ts +6 -7
  162. package/lib/group.d.ts.map +1 -1
  163. package/lib/group.js.map +1 -1
  164. package/lib/index.d.ts +3 -1
  165. package/lib/index.d.ts.map +1 -1
  166. package/lib/index.js.map +1 -1
  167. package/lib/inference-profile.d.ts +17 -0
  168. package/lib/inference-profile.d.ts.map +1 -0
  169. package/lib/inference-profile.js +2 -0
  170. package/lib/inference-profile.js.map +1 -0
  171. package/lib/integrations.d.ts +19 -20
  172. package/lib/integrations.d.ts.map +1 -1
  173. package/lib/integrations.js.map +1 -1
  174. package/lib/interaction.d.ts +68 -73
  175. package/lib/interaction.d.ts.map +1 -1
  176. package/lib/interaction.js.map +1 -1
  177. package/lib/meters.d.ts +4 -5
  178. package/lib/meters.d.ts.map +1 -1
  179. package/lib/oauth-server.d.ts +40 -41
  180. package/lib/oauth-server.d.ts.map +1 -1
  181. package/lib/oauth.d.ts +9 -10
  182. package/lib/oauth.d.ts.map +1 -1
  183. package/lib/payload.d.ts +11 -14
  184. package/lib/payload.d.ts.map +1 -1
  185. package/lib/pending-asks.d.ts +8 -13
  186. package/lib/pending-asks.d.ts.map +1 -1
  187. package/lib/pending-asks.js +0 -4
  188. package/lib/pending-asks.js.map +1 -1
  189. package/lib/platform-event.d.ts +48 -71
  190. package/lib/platform-event.d.ts.map +1 -1
  191. package/lib/platform-event.js.map +1 -1
  192. package/lib/principal-context.d.ts +3 -3
  193. package/lib/principal-context.d.ts.map +1 -1
  194. package/lib/project.d.ts +42 -43
  195. package/lib/project.d.ts.map +1 -1
  196. package/lib/project.js.map +1 -1
  197. package/lib/prompt.d.ts +14 -16
  198. package/lib/prompt.d.ts.map +1 -1
  199. package/lib/prompt.js.map +1 -1
  200. package/lib/query.d.ts +10 -13
  201. package/lib/query.d.ts.map +1 -1
  202. package/lib/rate-limiter.d.ts +7 -11
  203. package/lib/rate-limiter.d.ts.map +1 -1
  204. package/lib/refs.d.ts +2 -3
  205. package/lib/refs.d.ts.map +1 -1
  206. package/lib/refs.js.map +1 -1
  207. package/lib/roles/types.d.ts +5 -6
  208. package/lib/roles/types.d.ts.map +1 -1
  209. package/lib/roles/types.js.map +1 -1
  210. package/lib/run-budget.d.ts +4 -0
  211. package/lib/run-budget.d.ts.map +1 -0
  212. package/lib/run-budget.js +2 -0
  213. package/lib/run-budget.js.map +1 -0
  214. package/lib/runs.d.ts +9 -10
  215. package/lib/runs.d.ts.map +1 -1
  216. package/lib/secrets.d.ts +10 -21
  217. package/lib/secrets.d.ts.map +1 -1
  218. package/lib/store/agent-approval.d.ts +4 -5
  219. package/lib/store/agent-approval.d.ts.map +1 -1
  220. package/lib/store/agent-approval.js.map +1 -1
  221. package/lib/store/agent-run.d.ts +50 -52
  222. package/lib/store/agent-run.d.ts.map +1 -1
  223. package/lib/store/agent-run.js.map +1 -1
  224. package/lib/store/collections.d.ts +11 -12
  225. package/lib/store/collections.d.ts.map +1 -1
  226. package/lib/store/collections.js.map +1 -1
  227. package/lib/store/conversation-state.d.ts +14 -8
  228. package/lib/store/conversation-state.d.ts.map +1 -1
  229. package/lib/store/doc-analyzer.d.ts +7 -8
  230. package/lib/store/doc-analyzer.d.ts.map +1 -1
  231. package/lib/store/dsl-workflow.d.ts +10 -12
  232. package/lib/store/dsl-workflow.d.ts.map +1 -1
  233. package/lib/store/dsl-workflow.js.map +1 -1
  234. package/lib/store/duration.d.ts +12 -0
  235. package/lib/store/duration.d.ts.map +1 -0
  236. package/lib/store/duration.js +2 -0
  237. package/lib/store/duration.js.map +1 -0
  238. package/lib/store/grounded-extraction.d.ts +6 -7
  239. package/lib/store/grounded-extraction.d.ts.map +1 -1
  240. package/lib/store/intake-policy-schema.generated.d.ts.map +1 -1
  241. package/lib/store/intake-policy-schema.generated.js +143 -2
  242. package/lib/store/intake-policy-schema.generated.js.map +1 -1
  243. package/lib/store/process.d.ts +70 -69
  244. package/lib/store/process.d.ts.map +1 -1
  245. package/lib/store/process.js.map +1 -1
  246. package/lib/store/rendering.d.ts +6 -12
  247. package/lib/store/rendering.d.ts.map +1 -1
  248. package/lib/store/rendering.js +0 -5
  249. package/lib/store/rendering.js.map +1 -1
  250. package/lib/store/signals.d.ts +43 -0
  251. package/lib/store/signals.d.ts.map +1 -1
  252. package/lib/store/signals.js +6 -1
  253. package/lib/store/signals.js.map +1 -1
  254. package/lib/store/store.d.ts +92 -91
  255. package/lib/store/store.d.ts.map +1 -1
  256. package/lib/store/store.js.map +1 -1
  257. package/lib/store/task.d.ts +10 -14
  258. package/lib/store/task.d.ts.map +1 -1
  259. package/lib/store/workflow.d.ts +35 -41
  260. package/lib/store/workflow.d.ts.map +1 -1
  261. package/lib/store/workflow.js.map +1 -1
  262. package/lib/sts-token-types.d.ts +14 -19
  263. package/lib/sts-token-types.d.ts.map +1 -1
  264. package/lib/tools.d.ts +12 -13
  265. package/lib/tools.d.ts.map +1 -1
  266. package/lib/transient-tokens.d.ts +3 -3
  267. package/lib/transient-tokens.d.ts.map +1 -1
  268. package/lib/user.d.ts +16 -20
  269. package/lib/user.d.ts.map +1 -1
  270. package/lib/user.js.map +1 -1
  271. package/lib/vertesia-common.js +2 -2
  272. package/lib/vertesia-common.js.map +1 -1
  273. package/lib/views.d.ts +61 -64
  274. package/lib/views.d.ts.map +1 -1
  275. package/lib/views.js.map +1 -1
  276. package/lib/wire-types.generated.d.ts +11227 -0
  277. package/lib/wire-types.generated.d.ts.map +1 -0
  278. package/lib/wire-types.generated.js +4 -0
  279. package/lib/wire-types.generated.js.map +1 -0
  280. package/lib/workflow-analytics.d.ts +21 -19
  281. package/lib/workflow-analytics.d.ts.map +1 -1
  282. package/lib/workflow-analytics.js +2 -2
  283. package/lib/workflow-analytics.js.map +1 -1
  284. package/package.json +16 -11
  285. package/src/access-control-values.ts +2 -2
  286. package/src/access-control.ts +7 -15
  287. package/src/analytics.ts +6 -13
  288. package/src/api-contract/components.generated.json +2553 -1046
  289. package/src/api-contract/engine.ts +641 -0
  290. package/src/api-contract/index.ts +30 -661
  291. package/src/api-schemas/access-control.ts +18 -16
  292. package/src/api-schemas/account.ts +5 -12
  293. package/src/api-schemas/agent-budget.ts +60 -0
  294. package/src/api-schemas/agent-runs.ts +63 -27
  295. package/src/api-schemas/apikey.ts +11 -10
  296. package/src/api-schemas/app-lifecycle.ts +5 -0
  297. package/src/api-schemas/audit-trail.ts +175 -1
  298. package/src/api-schemas/content.ts +55 -0
  299. package/src/api-schemas/cost-analytics.ts +42 -2
  300. package/src/api-schemas/environment.ts +0 -1
  301. package/src/api-schemas/group.ts +2 -1
  302. package/src/api-schemas/index.ts +2 -0
  303. package/src/api-schemas/inference-profile.ts +151 -0
  304. package/src/api-schemas/interaction.ts +40 -1
  305. package/src/api-schemas/invites.ts +10 -9
  306. package/src/api-schemas/process.ts +78 -2
  307. package/src/api-schemas/project-configuration.ts +19 -1
  308. package/src/api-schemas/project.ts +19 -10
  309. package/src/api-schemas/quota.ts +7 -6
  310. package/src/api-schemas/registry.ts +164 -62
  311. package/src/api-schemas/run-budget.ts +23 -0
  312. package/src/api-schemas/secrets.ts +0 -84
  313. package/src/api-schemas/store.ts +12 -0
  314. package/src/api-schemas/user.ts +9 -8
  315. package/src/api-schemas/workflow-runs.ts +2 -0
  316. package/src/apikey.ts +30 -39
  317. package/src/apps.ts +116 -239
  318. package/src/audit-trail.ts +37 -35
  319. package/src/browser-credentials.ts +11 -23
  320. package/src/common.ts +17 -37
  321. package/src/content-query.ts +3 -4
  322. package/src/cost-analytics.ts +13 -35
  323. package/src/data-platform.ts +79 -168
  324. package/src/delegation.ts +4 -9
  325. package/src/email.ts +15 -29
  326. package/src/embeddings.ts +25 -51
  327. package/src/environment.ts +16 -33
  328. package/src/facets.ts +3 -4
  329. package/src/group.ts +6 -13
  330. package/src/index.ts +23 -0
  331. package/src/inference-profile.ts +20 -0
  332. package/src/integrations.ts +21 -41
  333. package/src/interaction.ts +68 -137
  334. package/src/meters.ts +4 -9
  335. package/src/oauth-server.ts +40 -81
  336. package/src/oauth.ts +9 -19
  337. package/src/payload.ts +11 -25
  338. package/src/pending-asks.ts +8 -22
  339. package/src/platform-event.ts +48 -122
  340. package/src/principal-context.ts +3 -3
  341. package/src/project.ts +43 -86
  342. package/src/prompt.ts +14 -31
  343. package/src/query.ts +10 -20
  344. package/src/rate-limiter.ts +7 -19
  345. package/src/refs.ts +2 -3
  346. package/src/roles/types.ts +5 -11
  347. package/src/run-budget.ts +4 -0
  348. package/src/runs.ts +9 -19
  349. package/src/secrets.ts +10 -42
  350. package/src/store/agent-approval.ts +4 -9
  351. package/src/store/agent-run.ts +53 -99
  352. package/src/store/collections.ts +11 -23
  353. package/src/store/conversation-state.ts +15 -15
  354. package/src/store/doc-analyzer.ts +7 -15
  355. package/src/store/dsl-workflow.ts +10 -23
  356. package/src/store/duration.ts +45 -0
  357. package/src/store/grounded-extraction.ts +6 -13
  358. package/src/store/intake-policy-schema.generated.ts +148 -2
  359. package/src/store/process.ts +70 -140
  360. package/src/store/rendering.ts +6 -19
  361. package/src/store/signals.ts +48 -0
  362. package/src/store/store.ts +92 -181
  363. package/src/store/task.ts +10 -24
  364. package/src/store/workflow.ts +35 -71
  365. package/src/sts-token-types.ts +14 -33
  366. package/src/tools.ts +12 -25
  367. package/src/transient-tokens.ts +3 -3
  368. package/src/user.ts +16 -40
  369. package/src/views.ts +61 -125
  370. package/src/wire-types.generated.ts +11888 -0
  371. package/src/workflow-analytics.ts +21 -19
  372. package/src/agent-resources.test.ts +0 -89
  373. package/src/api-contract/components.contract.test.ts +0 -99
  374. package/src/api-schemas/access-control.contract.test.ts +0 -209
  375. package/src/api-schemas/account-apikey.test.ts +0 -60
  376. package/src/api-schemas/account.contract.test.ts +0 -319
  377. package/src/api-schemas/adapter-edge-cases.test.ts +0 -499
  378. package/src/api-schemas/agent-communication.contract.test.ts +0 -90
  379. package/src/api-schemas/agent-history.contract.test.ts +0 -42
  380. package/src/api-schemas/agent-runs.contract.test.ts +0 -240
  381. package/src/api-schemas/api-discriminators.test.ts +0 -185
  382. package/src/api-schemas/apikey.contract.test.ts +0 -270
  383. package/src/api-schemas/app-delete-summary.contract.test.ts +0 -67
  384. package/src/api-schemas/bulk-operation.contract.test.ts +0 -39
  385. package/src/api-schemas/bundle-isolation.test.ts +0 -44
  386. package/src/api-schemas/commands.contract.test.ts +0 -51
  387. package/src/api-schemas/cost-analytics.contract.test.ts +0 -64
  388. package/src/api-schemas/dashboard.contract.test.ts +0 -138
  389. package/src/api-schemas/data-store.contract.test.ts +0 -97
  390. package/src/api-schemas/document-processing.contract.test.ts +0 -76
  391. package/src/api-schemas/emit-json-schema.test.ts +0 -36
  392. package/src/api-schemas/environment.contract.test.ts +0 -202
  393. package/src/api-schemas/group.contract.test.ts +0 -205
  394. package/src/api-schemas/indexing.contract.test.ts +0 -122
  395. package/src/api-schemas/interaction.contract.test.ts +0 -307
  396. package/src/api-schemas/invites.contract.test.ts +0 -268
  397. package/src/api-schemas/llumiverse.contract.test.ts +0 -179
  398. package/src/api-schemas/mcp-api-key.contract.test.ts +0 -125
  399. package/src/api-schemas/oauth.contract.test.ts +0 -181
  400. package/src/api-schemas/parameters.test.ts +0 -402
  401. package/src/api-schemas/process.contract.test.ts +0 -115
  402. package/src/api-schemas/project.contract.test.ts +0 -472
  403. package/src/api-schemas/pruning-limits.test.ts +0 -189
  404. package/src/api-schemas/quota.contract.test.ts +0 -147
  405. package/src/api-schemas/registry-groups.test.ts +0 -99
  406. package/src/api-schemas/response-pruning.test.ts +0 -260
  407. package/src/api-schemas/store.contract.test.ts +0 -378
  408. package/src/api-schemas/sts.contract.test.ts +0 -112
  409. package/src/api-schemas/user.contract.test.ts +0 -197
  410. package/src/api-schemas/views.contract.test.ts +0 -112
  411. package/src/api-schemas/zeno-response-contracts.test.ts +0 -380
  412. package/src/apps.test.ts +0 -89
  413. package/src/oauth-scopes.test.ts +0 -15
  414. package/src/roles.test.ts +0 -33
  415. package/src/schema-for-extraction.test.ts +0 -191
  416. package/src/store/agent-approval.test.ts +0 -18
  417. package/src/store/content-type-editing.test.ts +0 -17
  418. package/src/store/ms.d.ts +0 -42
  419. package/src/store/schedule.test.ts +0 -59
  420. package/src/store/workflow.test.ts +0 -640
  421. package/src/versions.test.ts +0 -13
@@ -1,319 +0,0 @@
1
- import { Ajv2020 } from 'ajv/dist/2020.js';
2
- import { describe, expect, it } from 'vitest';
3
- import type { StripeBillingStatusResponse } from '../meters.js';
4
- import { type Account, BillingMethod, type QuotaTier, type UpdateAccountPayload } from '../user.js';
5
- import { type JsonObject, SchemaAdapterError, toOpenApiComponents } from './adapter.js';
6
- import { ApiSchemaComponents, apiComponentRef, validateApiRequest, validateApiResponse } from './registry.js';
7
-
8
- /** Exact type identity — `extends` in both directions is too weak (any/unknown slip through). */
9
- type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
10
- /**
11
- * Mutual assignability. Weaker than {@link Equals}, and the right assertion when comparing a
12
- * derived type against a hand-written enum or interface: TypeScript keeps those nominally
13
- * distinct even when structurally interchangeable, and interchangeable is what consumers need.
14
- * `[A] extends [B]` rather than `A extends B` so unions do not distribute.
15
- */
16
- type MutuallyAssignable<A, B> = [A] extends [B] ? ([B] extends [A] ? true : false) : false;
17
- function assertType<T extends true>(_ok: T): void {}
18
-
19
- /**
20
- * Compiles a component through an OpenAPI-shaped envelope, so the pointer AJV resolves is the
21
- * exact pointer the spec publishes. An isolated component cannot resolve
22
- * `#/components/schemas/*` on its own.
23
- *
24
- * `strictSchema: false` (not `strict: false`) keeps AJV's type and tuple checks active while
25
- * tolerating the `components` envelope keyword.
26
- */
27
- function compile(name: string, components: Readonly<Record<string, JsonObject>> = ApiSchemaComponents) {
28
- const ajv = new Ajv2020({ strictSchema: false, allErrors: true });
29
- ajv.addSchema({ $id: 'vertesia://openapi', components: { schemas: components } });
30
- return ajv.compile({ $ref: `vertesia://openapi${apiComponentRef(name as never)}` });
31
- }
32
-
33
- const VALID_ACCOUNT = {
34
- id: 'acc_1',
35
- name: 'Acme',
36
- email_domains: ['acme.com'],
37
- onboarding: { completed: true, completed_at: '2026-07-29T10:00:00.000Z' },
38
- datacenter: 'gcp',
39
- account_type: 'customer',
40
- billing: { method: 'stripe', stripe_customer_id: 'cus_1' },
41
- created_by: 'u1',
42
- updated_by: 'u1',
43
- created_at: '2026-07-29T10:00:00.000Z',
44
- updated_at: '2026-07-29T10:00:00.000Z',
45
- };
46
-
47
- describe('gate 1 — the schema is the single source of truth for the public types', () => {
48
- it('publishes the exact schema-derived type, not a hand-written twin', () => {
49
- // `Equals`, not assignability: two structurally similar declarations would satisfy
50
- // assignability while still being free to drift. Identity is the property that makes the
51
- // schema the source of truth — there is only one definition to change.
52
- expect(true).toBe(true);
53
- });
54
-
55
- it('resolves a nested component reference to its concrete property type', () => {
56
- // The whole point of schema-first: this must not degrade to `unknown`. The enum survives
57
- // as the shared `BillingMethod` enum rather than a bare literal union, which is what keeps
58
- // it interchangeable with the value consumers already import.
59
- assertType<MutuallyAssignable<Account['billing']['method'], BillingMethod>>(true);
60
- assertType<Equals<Account['billing']['stripe_customer_id'], string | undefined>>(true);
61
- assertType<Equals<Account['email_domains'], string[]>>(true);
62
- assertType<Equals<Account['quota_tier'], QuotaTier | undefined>>(true);
63
- assertType<Equals<Account['onboarding']['completed_at'], string | undefined>>(true);
64
- expect(true).toBe(true);
65
- });
66
-
67
- it('narrows the Stripe union on its discriminator', () => {
68
- // The flat shape gave consumers `portal_url?` and `reason?` with no way to know which was
69
- // populated. Narrowing on `status` is the behaviour a client actually needs, and it only
70
- // exists because the type comes from the discriminated union the schema declares.
71
- const enabled: StripeBillingStatusResponse = {
72
- status: 'enabled',
73
- billing_method: BillingMethod.stripe,
74
- portal_url: 'https://billing.stripe.com/p/session_1',
75
- };
76
- if (enabled.status === 'enabled') {
77
- assertType<Equals<typeof enabled.portal_url, string | null>>(true);
78
- expect(enabled.portal_url).toBe('https://billing.stripe.com/p/session_1');
79
- }
80
-
81
- const disabled: StripeBillingStatusResponse = {
82
- status: 'disabled',
83
- billing_method: null,
84
- reason: 'No billing method configured',
85
- };
86
- if (disabled.status === 'disabled') {
87
- assertType<Equals<typeof disabled.reason, string>>(true);
88
- expect(disabled.reason).toBe('No billing method configured');
89
- }
90
- });
91
- });
92
-
93
- describe('gate 2 — canonical schemas carry stable OpenAPI component references', () => {
94
- it('publishes the registered component graph without migration-era names', () => {
95
- const names = Object.keys(ApiSchemaComponents);
96
- expect(new Set(names).size).toBe(names.length);
97
- expect(names).toEqual(expect.arrayContaining(['Account', 'AccountBilling', 'StripeBillingStatusResponse']));
98
- expect(names.some((name) => name.startsWith('Partial_'))).toBe(false);
99
- });
100
- it('emits only #/components/schemas pointers', () => {
101
- const serialized = JSON.stringify(ApiSchemaComponents);
102
- expect(serialized).not.toContain('#/$defs/');
103
- expect(serialized).not.toContain('$schema');
104
- expect(serialized).not.toContain('"$defs"');
105
- for (const ref of serialized.matchAll(/"\$ref":"([^"]+)"/g)) {
106
- expect(ref[1]).toMatch(/^#\/components\/schemas\/[A-Za-z0-9_]+$/);
107
- }
108
- });
109
-
110
- it('shares one AccountBilling component across both referencing schemas', () => {
111
- const fromAccount = (ApiSchemaComponents.Account.properties as JsonObject).billing;
112
- const fromPayload = (ApiSchemaComponents.UpdateAccountPayload.properties as JsonObject).billing;
113
- expect(fromAccount).toEqual({ $ref: '#/components/schemas/AccountBilling' });
114
- expect(fromPayload).toEqual({ $ref: '#/components/schemas/AccountBilling' });
115
- });
116
-
117
- it('synthesizes a discriminator for the Stripe billing union', () => {
118
- const union = ApiSchemaComponents.StripeBillingStatusResponse;
119
- expect(union.oneOf).toEqual([
120
- { $ref: '#/components/schemas/StripeBillingEnabled' },
121
- { $ref: '#/components/schemas/StripeBillingDisabled' },
122
- ]);
123
- expect(union.discriminator).toEqual({
124
- propertyName: 'status',
125
- mapping: {
126
- enabled: '#/components/schemas/StripeBillingEnabled',
127
- disabled: '#/components/schemas/StripeBillingDisabled',
128
- },
129
- });
130
- });
131
- });
132
-
133
- describe('gate 3 — AJV validates the same canonical objects that are published', () => {
134
- it('accepts a valid account and rejects a bad enum', () => {
135
- const validate = compile('Account');
136
- expect(validate(VALID_ACCOUNT)).toBe(true);
137
- expect(validate({ ...VALID_ACCOUNT, billing: { method: 'paypal' } })).toBe(false);
138
- });
139
-
140
- it('rejects a missing required field', () => {
141
- const validate = compile('Account');
142
- const { email_domains: _dropped, ...incomplete } = VALID_ACCOUNT;
143
- expect(validate(incomplete)).toBe(false);
144
- });
145
-
146
- it('enforces the discriminated union per branch', () => {
147
- const validate = compile('StripeBillingStatusResponse');
148
- expect(validate({ status: 'enabled', billing_method: 'stripe', portal_url: 'https://x' })).toBe(true);
149
- expect(validate({ status: 'enabled', billing_method: 'stripe', portal_url: null })).toBe(true);
150
- expect(validate({ status: 'disabled', billing_method: null, reason: 'No billing method' })).toBe(true);
151
- // The flattened interface allowed this; a real discriminated union does not.
152
- expect(validate({ status: 'enabled', billing_method: 'stripe', reason: 'nope' })).toBe(false);
153
- });
154
- });
155
-
156
- describe('gates 4 & 5 — unknown-field behaviour and no mutation', () => {
157
- it('reports an unknown request field without removing it', () => {
158
- // `UpdateAccountPayload` is published closed, as it always has been, so an extra property
159
- // is a contract violation. AJV must SAY SO rather than quietly delete it: a removal mode
160
- // would make the server accept a body the published schema declares invalid, which is a
161
- // silent disagreement between the spec and the code enforcing it.
162
- expect(ApiSchemaComponents.UpdateAccountPayload.additionalProperties).toBe(false);
163
- const validate = compile('UpdateAccountPayload');
164
- const payload: Record<string, unknown> = { name: 'Acme', rogue_field: 42 };
165
- expect(validate(payload)).toBe(false);
166
- expect(payload.rogue_field).toBe(42);
167
- });
168
-
169
- it('never mutates a response payload during validation', () => {
170
- const validate = compile('Account');
171
- const response = structuredClone({ ...VALID_ACCOUNT, legacy_extra: 'still here' });
172
- const pristine = structuredClone(response);
173
- // Invalid against the closed component — and left exactly as it was. Removing the extra
174
- // is response PRUNING's job, an explicit call with its own policy, never a side effect of
175
- // asking whether a payload conforms.
176
- expect(validate(response)).toBe(false);
177
- expect(response).toEqual(pristine);
178
- });
179
-
180
- it('rejects unknown fields only where a component opts in to strict', () => {
181
- const components = toOpenApiComponents(
182
- { Strict: { type: 'object', properties: { a: { type: 'string' } }, required: ['a'] } },
183
- { strictComponents: new Set(['Strict']) },
184
- );
185
- expect(components.Strict.additionalProperties).toBe(false);
186
- const ajv = new Ajv2020({ strictSchema: false });
187
- ajv.addSchema({ $id: 'vertesia://openapi', components: { schemas: components } });
188
- const validate = ajv.compile({ $ref: 'vertesia://openapi#/components/schemas/Strict' });
189
- const payload = { a: 'x', extra: 1 };
190
- expect(validate(payload)).toBe(false);
191
- expect(payload.extra).toBe(1); // rejected, not stripped
192
- });
193
- });
194
-
195
- describe('gate 7 — the adapter is library-neutral', () => {
196
- it('hoists typebox-style nested $id subschemas', () => {
197
- // TypeBox embeds the schema value (which is what preserves Static<> inference) and marks
198
- // it with $id; the adapter lifts it, exactly as it lifts zod's $defs.
199
- const components = toOpenApiComponents({
200
- Account: {
201
- type: 'object',
202
- properties: {
203
- billing: { $id: 'AccountBilling', type: 'object', properties: { method: { type: 'string' } } },
204
- history: {
205
- type: 'array',
206
- items: { $id: 'AccountBilling', type: 'object', properties: { method: { type: 'string' } } },
207
- },
208
- },
209
- },
210
- });
211
- expect(Object.keys(components).sort()).toEqual(['Account', 'AccountBilling']);
212
- const props = components.Account.properties as JsonObject;
213
- expect(props.billing).toEqual({ $ref: '#/components/schemas/AccountBilling' });
214
- expect((props.history as JsonObject).items).toEqual({ $ref: '#/components/schemas/AccountBilling' });
215
- });
216
-
217
- it('rewrites a root self-reference to its component pointer', () => {
218
- // zod emits `{"$ref": "#"}` for recursion, which would point at the whole OpenAPI
219
- // document once embedded under components.
220
- const components = toOpenApiComponents({
221
- Node: {
222
- type: 'object',
223
- properties: { name: { type: 'string' }, children: { type: 'array', items: { $ref: '#' } } },
224
- },
225
- });
226
- const props = components.Node.properties as JsonObject;
227
- expect((props.children as JsonObject).items).toEqual({ $ref: '#/components/schemas/Node' });
228
- });
229
-
230
- it('does not mutate its input', () => {
231
- const input = { A: { type: 'object', properties: { b: { $id: 'B', type: 'string' } } } };
232
- const pristine = structuredClone(input);
233
- toOpenApiComponents(input);
234
- expect(input).toEqual(pristine);
235
- });
236
-
237
- it('rejects two different schemas claiming the same component name', () => {
238
- expect(() =>
239
- toOpenApiComponents({
240
- A: { type: 'object', properties: { x: { $id: 'Dup', type: 'string' } } },
241
- B: { type: 'object', properties: { y: { $id: 'Dup', type: 'number' } } },
242
- }),
243
- ).toThrow(SchemaAdapterError);
244
- });
245
- });
246
-
247
- describe('gate 8 — runtime enforcement uses the published components', () => {
248
- it('rejects a request body that violates the published component, without mutating it', () => {
249
- const payload: Record<string, unknown> = { name: 'Acme', rogue_field: 42 };
250
- const result = validateApiRequest('UpdateAccountPayload', payload);
251
-
252
- expect(result.valid).toBe(false);
253
- if (!result.valid) {
254
- expect(result.errors.join(' ')).toContain('additional properties');
255
- }
256
- // Reported, not deleted: removing it would make the server accept a body its own published
257
- // schema calls invalid.
258
- expect(payload.rogue_field).toBe(42);
259
- });
260
-
261
- it('accepts a conforming request body and hands back the component type', () => {
262
- const result = validateApiRequest('UpdateAccountPayload', {
263
- name: 'Acme',
264
- billing: { method: 'stripe' },
265
- });
266
-
267
- expect(result.valid).toBe(true);
268
- if (result.valid) {
269
- // Typed as the component only on the valid branch, so a body missing required fields
270
- // can never be typed as complete.
271
- assertType<Equals<typeof result.data, UpdateAccountPayload>>(true);
272
- expect(result.data.name).toBe('Acme');
273
- }
274
- });
275
-
276
- it('no longer accepts quota_tier, which the handler never applied', () => {
277
- // Documented-but-ignored is the drift this work removes. The tier is written through the
278
- // admin quota API; accepting it here would eventually invite a "fix" that lets an account
279
- // admin raise their own rate limits.
280
- expect(validateApiRequest('UpdateAccountPayload', { quota_tier: 'enterprise' }).valid).toBe(false);
281
- expect(ApiSchemaComponents.UpdateAccountPayload.properties).not.toHaveProperty('quota_tier');
282
- });
283
-
284
- it('enforces date-time formats, which AJV ignores without ajv-formats', () => {
285
- // Registering the format package is what turns `format: date-time` from documentation into
286
- // a check. Without it this payload would pass and the contract would be a suggestion.
287
- const invalid = { ...VALID_ACCOUNT, created_at: 'yesterday' };
288
- expect(validateApiResponse('Account', invalid).valid).toBe(false);
289
- expect(validateApiResponse('Account', VALID_ACCOUNT).valid).toBe(true);
290
- });
291
-
292
- it('rejects a native Date where the schema declares a date-time string', () => {
293
- // Response validation runs on the object before Koa serializes it, so a mapper that passed
294
- // a Mongoose `Date` straight through would produce correct wire bytes and still be wrong
295
- // here. That is precisely the bug the mapper's date normalization prevents.
296
- const withDate = { ...VALID_ACCOUNT, created_at: new Date('2026-07-29T10:00:00.000Z') };
297
- expect(validateApiResponse('Account', withDate).valid).toBe(false);
298
- });
299
-
300
- it('honours the Stripe discriminator, which the generated Go client does not', () => {
301
- // The one backstop the Go client cannot provide. Its oneOf decoder picks a branch by
302
- // required-property presence and never reads `status`, so it happily decodes the first
303
- // payload below as the *enabled* branch (see openapi/go/tests). AJV does honour `const`,
304
- // which is what lets the server detect its own drift: routing every branch of the handler
305
- // through checkResponseContract turns "the server never emits a contradictory payload"
306
- // from an assumption into something that shows up in the logs when it stops being true.
307
- const enabled = { status: 'enabled', billing_method: 'stripe', portal_url: 'https://x' };
308
- const disabled = { status: 'disabled', billing_method: null, reason: 'No billing method' };
309
- expect(validateApiResponse('StripeBillingStatusResponse', enabled).valid).toBe(true);
310
- expect(validateApiResponse('StripeBillingStatusResponse', disabled).valid).toBe(true);
311
-
312
- // Enabled body, disabled discriminator: matches neither branch.
313
- expect(validateApiResponse('StripeBillingStatusResponse', { ...enabled, status: 'disabled' }).valid).toBe(
314
- false,
315
- );
316
- // Both branches' required properties: a real oneOf must match exactly one.
317
- expect(validateApiResponse('StripeBillingStatusResponse', { ...enabled, reason: 'nope' }).valid).toBe(false);
318
- });
319
- });