@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,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,99 +0,0 @@
1
- import { describe, expect, expectTypeOf, it } from 'vitest';
2
- import { z } from 'zod';
3
- import type { NamedInteractionExecutionPayloadSchema } from './interaction.js';
4
- import { type ApiComponentName, type ApiComponentType, ApiSchemaComponents, mergeComponentGroups } from './registry.js';
5
-
6
- /**
7
- * `N` when `ApiComponentType` resolves it, and `never` when it does not.
8
- *
9
- * The conditional that maps a name to its inferred type tests the groups one by one and ends in
10
- * `never`, so a group missing from that chain — the third place a new group has to be listed, after
11
- * the merge array and the `ApiComponentName` union — makes every name in it resolve to `never`
12
- * rather than fail. Distributing this over the whole union turns that into an assignment error on
13
- * the list below, which `typecheck:test` reports.
14
- */
15
- type ResolvedName<N extends ApiComponentName> = [ApiComponentType<N>] extends [never] ? never : N;
16
-
17
- /**
18
- * Covers the one way the group split can corrupt the registry.
19
- *
20
- * The registry is declared in several objects because the compiler cannot serialize it as one, and
21
- * the two public types are assembled from those objects: `ApiComponentName` is a union of `keyof`,
22
- * `ApiComponentType` a conditional testing the groups IN ORDER. A plain spread merge would accept a
23
- * name listed twice and keep the LAST group's schema, while `ApiComponentType` would resolve to the
24
- * FIRST group's — validation enforcing one shape while every handler is typed against another, with
25
- * nothing downstream to report it. The grouping is a compiler accommodation, so this failure mode is
26
- * pure accident: a component moved between groups and left behind, or added to whichever group the
27
- * author had open.
28
- *
29
- * The real groups are covered by the call itself, which runs at module load — a duplicate there
30
- * throws on import and takes every test in the package with it. What is tested here is that the
31
- * merge actually refuses, which no import of a correct registry can show.
32
- */
33
- describe('mergeComponentGroups', () => {
34
- it('preserves execution payload types and rejects unregistered component names', () => {
35
- expectTypeOf<ApiComponentType<'NamedInteractionExecutionPayload'>>().toEqualTypeOf<
36
- z.infer<typeof NamedInteractionExecutionPayloadSchema>
37
- >();
38
- expectTypeOf<'UnregisteredExecutionComponent'>().not.toMatchTypeOf<ApiComponentName>();
39
- });
40
-
41
- const A = z.strictObject({ a: z.string() });
42
- const B = z.strictObject({ b: z.number() });
43
-
44
- it('merges disjoint groups into one object', () => {
45
- const merged = mergeComponentGroups([{ Alpha: A }, { Beta: B }]);
46
-
47
- expect(Object.keys(merged).sort()).toEqual(['Alpha', 'Beta']);
48
- expect(merged.Alpha).toBe(A);
49
- expect(merged.Beta).toBe(B);
50
- });
51
-
52
- it('refuses a name registered in two groups', () => {
53
- expect(() => mergeComponentGroups([{ Alpha: A }, { Alpha: B }])).toThrow(
54
- /registered in more than one group: Alpha/,
55
- );
56
- });
57
-
58
- it('names every colliding component, not just the first', () => {
59
- expect(() => mergeComponentGroups([{ Beta: B, Alpha: A }, { Alpha: B }, { Beta: A }])).toThrow(
60
- /components registered in more than one group: Alpha, Beta/,
61
- );
62
- });
63
-
64
- it('reports a collision across non-adjacent groups', () => {
65
- // The failure is a name in ANY two groups, not only in two that happen to be listed together.
66
- expect(() => mergeComponentGroups([{ Alpha: A }, { Beta: B }, { Alpha: B }])).toThrow(
67
- /registered in more than one group: Alpha/,
68
- );
69
- });
70
-
71
- it('emits a component from every group, and resolves its type', () => {
72
- // The merge takes a list, so a group can be dropped from it as easily as duplicated in it —
73
- // and dropping one is silent in a different way: `ApiComponentName` still names those
74
- // components, so the code compiles and only the emitted document loses them. One known name
75
- // per group is what notices — the `satisfies` for the type conditional, the loop for the
76
- // merge.
77
- const perGroup = [
78
- 'Account',
79
- 'ProjectModelDefaults',
80
- 'OAuthProvider',
81
- 'ExecutionEnvironment',
82
- 'JSONValue',
83
- 'Interaction',
84
- 'ImprovePromptPayload',
85
- 'AgentRunnerOptions',
86
- 'ExecutionRunStatus',
87
- 'RenderPromptResponse',
88
- 'AggregatedTool',
89
- 'OAuthAuthStatus',
90
- 'AuditTrailResponse',
91
- 'ViewExperience',
92
- 'CopyFilePayload',
93
- ] as const satisfies readonly ResolvedName<ApiComponentName>[];
94
-
95
- for (const name of perGroup) {
96
- expect(ApiSchemaComponents).toHaveProperty(name);
97
- }
98
- });
99
- });