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

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 (521) hide show
  1. package/lib/access-control-values.d.ts +98 -0
  2. package/lib/access-control-values.d.ts.map +1 -0
  3. package/lib/access-control-values.js +101 -0
  4. package/lib/access-control-values.js.map +1 -0
  5. package/lib/access-control.d.ts +22 -119
  6. package/lib/access-control.d.ts.map +1 -1
  7. package/lib/access-control.js +6 -78
  8. package/lib/access-control.js.map +1 -1
  9. package/lib/account-values.d.ts +53 -0
  10. package/lib/account-values.d.ts.map +1 -0
  11. package/lib/account-values.js +91 -0
  12. package/lib/account-values.js.map +1 -0
  13. package/lib/analytics.d.ts +12 -38
  14. package/lib/analytics.d.ts.map +1 -1
  15. package/lib/api-schemas/access-control.d.ts +215 -0
  16. package/lib/api-schemas/access-control.d.ts.map +1 -0
  17. package/lib/api-schemas/access-control.js +165 -0
  18. package/lib/api-schemas/access-control.js.map +1 -0
  19. package/lib/api-schemas/account.d.ts +101 -0
  20. package/lib/api-schemas/account.d.ts.map +1 -0
  21. package/lib/api-schemas/account.js +136 -0
  22. package/lib/api-schemas/account.js.map +1 -0
  23. package/lib/api-schemas/adapter.d.ts +80 -0
  24. package/lib/api-schemas/adapter.d.ts.map +1 -0
  25. package/lib/api-schemas/adapter.js +726 -0
  26. package/lib/api-schemas/adapter.js.map +1 -0
  27. package/lib/api-schemas/agent-runs.d.ts +3781 -0
  28. package/lib/api-schemas/agent-runs.d.ts.map +1 -0
  29. package/lib/api-schemas/agent-runs.js +991 -0
  30. package/lib/api-schemas/agent-runs.js.map +1 -0
  31. package/lib/api-schemas/analytics.d.ts +86 -0
  32. package/lib/api-schemas/analytics.d.ts.map +1 -0
  33. package/lib/api-schemas/analytics.js +58 -0
  34. package/lib/api-schemas/analytics.js.map +1 -0
  35. package/lib/api-schemas/apikey.d.ts +231 -0
  36. package/lib/api-schemas/apikey.d.ts.map +1 -0
  37. package/lib/api-schemas/apikey.js +172 -0
  38. package/lib/api-schemas/apikey.js.map +1 -0
  39. package/lib/api-schemas/app-lifecycle.d.ts +1114 -0
  40. package/lib/api-schemas/app-lifecycle.d.ts.map +1 -0
  41. package/lib/api-schemas/app-lifecycle.js +750 -0
  42. package/lib/api-schemas/app-lifecycle.js.map +1 -0
  43. package/lib/api-schemas/app-runtime.d.ts +9056 -0
  44. package/lib/api-schemas/app-runtime.d.ts.map +1 -0
  45. package/lib/api-schemas/app-runtime.js +782 -0
  46. package/lib/api-schemas/app-runtime.js.map +1 -0
  47. package/lib/api-schemas/apps.d.ts +247 -0
  48. package/lib/api-schemas/apps.d.ts.map +1 -0
  49. package/lib/api-schemas/apps.js +366 -0
  50. package/lib/api-schemas/apps.js.map +1 -0
  51. package/lib/api-schemas/audit-trail.d.ts +465 -0
  52. package/lib/api-schemas/audit-trail.d.ts.map +1 -0
  53. package/lib/api-schemas/audit-trail.js +218 -0
  54. package/lib/api-schemas/audit-trail.js.map +1 -0
  55. package/lib/api-schemas/bulk-operation.d.ts +104 -0
  56. package/lib/api-schemas/bulk-operation.d.ts.map +1 -0
  57. package/lib/api-schemas/bulk-operation.js +66 -0
  58. package/lib/api-schemas/bulk-operation.js.map +1 -0
  59. package/lib/api-schemas/commands.d.ts +50 -0
  60. package/lib/api-schemas/commands.d.ts.map +1 -0
  61. package/lib/api-schemas/commands.js +58 -0
  62. package/lib/api-schemas/commands.js.map +1 -0
  63. package/lib/api-schemas/content.d.ts +3561 -0
  64. package/lib/api-schemas/content.d.ts.map +1 -0
  65. package/lib/api-schemas/content.js +842 -0
  66. package/lib/api-schemas/content.js.map +1 -0
  67. package/lib/api-schemas/cost-analytics.d.ts +300 -0
  68. package/lib/api-schemas/cost-analytics.d.ts.map +1 -0
  69. package/lib/api-schemas/cost-analytics.js +218 -0
  70. package/lib/api-schemas/cost-analytics.js.map +1 -0
  71. package/lib/api-schemas/dashboard.d.ts +408 -0
  72. package/lib/api-schemas/dashboard.d.ts.map +1 -0
  73. package/lib/api-schemas/dashboard.js +311 -0
  74. package/lib/api-schemas/dashboard.js.map +1 -0
  75. package/lib/api-schemas/data-store.d.ts +1650 -0
  76. package/lib/api-schemas/data-store.d.ts.map +1 -0
  77. package/lib/api-schemas/data-store.js +504 -0
  78. package/lib/api-schemas/data-store.js.map +1 -0
  79. package/lib/api-schemas/document-processing.d.ts +1501 -0
  80. package/lib/api-schemas/document-processing.d.ts.map +1 -0
  81. package/lib/api-schemas/document-processing.js +312 -0
  82. package/lib/api-schemas/document-processing.js.map +1 -0
  83. package/lib/api-schemas/embeddings.d.ts +184 -0
  84. package/lib/api-schemas/embeddings.d.ts.map +1 -0
  85. package/lib/api-schemas/embeddings.js +102 -0
  86. package/lib/api-schemas/embeddings.js.map +1 -0
  87. package/lib/api-schemas/environment.d.ts +412 -0
  88. package/lib/api-schemas/environment.d.ts.map +1 -0
  89. package/lib/api-schemas/environment.js +170 -0
  90. package/lib/api-schemas/environment.js.map +1 -0
  91. package/lib/api-schemas/events.d.ts +4880 -0
  92. package/lib/api-schemas/events.d.ts.map +1 -0
  93. package/lib/api-schemas/events.js +832 -0
  94. package/lib/api-schemas/events.js.map +1 -0
  95. package/lib/api-schemas/files.d.ts +107 -0
  96. package/lib/api-schemas/files.d.ts.map +1 -0
  97. package/lib/api-schemas/files.js +137 -0
  98. package/lib/api-schemas/files.js.map +1 -0
  99. package/lib/api-schemas/group.d.ts +122 -0
  100. package/lib/api-schemas/group.d.ts.map +1 -0
  101. package/lib/api-schemas/group.js +142 -0
  102. package/lib/api-schemas/group.js.map +1 -0
  103. package/lib/api-schemas/index.d.ts +36 -0
  104. package/lib/api-schemas/index.d.ts.map +1 -0
  105. package/lib/api-schemas/index.js +36 -0
  106. package/lib/api-schemas/index.js.map +1 -0
  107. package/lib/api-schemas/indexing.d.ts +144 -0
  108. package/lib/api-schemas/indexing.d.ts.map +1 -0
  109. package/lib/api-schemas/indexing.js +217 -0
  110. package/lib/api-schemas/indexing.js.map +1 -0
  111. package/lib/api-schemas/integrations.d.ts +269 -0
  112. package/lib/api-schemas/integrations.d.ts.map +1 -0
  113. package/lib/api-schemas/integrations.js +335 -0
  114. package/lib/api-schemas/integrations.js.map +1 -0
  115. package/lib/api-schemas/interaction.d.ts +22454 -0
  116. package/lib/api-schemas/interaction.d.ts.map +1 -0
  117. package/lib/api-schemas/interaction.js +2065 -0
  118. package/lib/api-schemas/interaction.js.map +1 -0
  119. package/lib/api-schemas/invites.d.ts +162 -0
  120. package/lib/api-schemas/invites.d.ts.map +1 -0
  121. package/lib/api-schemas/invites.js +106 -0
  122. package/lib/api-schemas/invites.js.map +1 -0
  123. package/lib/api-schemas/oauth-server.d.ts +415 -0
  124. package/lib/api-schemas/oauth-server.d.ts.map +1 -0
  125. package/lib/api-schemas/oauth-server.js +193 -0
  126. package/lib/api-schemas/oauth-server.js.map +1 -0
  127. package/lib/api-schemas/oauth.d.ts +150 -0
  128. package/lib/api-schemas/oauth.d.ts.map +1 -0
  129. package/lib/api-schemas/oauth.js +148 -0
  130. package/lib/api-schemas/oauth.js.map +1 -0
  131. package/lib/api-schemas/parameters.d.ts +64 -0
  132. package/lib/api-schemas/parameters.d.ts.map +1 -0
  133. package/lib/api-schemas/parameters.js +246 -0
  134. package/lib/api-schemas/parameters.js.map +1 -0
  135. package/lib/api-schemas/process.d.ts +499 -0
  136. package/lib/api-schemas/process.d.ts.map +1 -0
  137. package/lib/api-schemas/process.js +817 -0
  138. package/lib/api-schemas/process.js.map +1 -0
  139. package/lib/api-schemas/project-configuration.d.ts +4900 -0
  140. package/lib/api-schemas/project-configuration.d.ts.map +1 -0
  141. package/lib/api-schemas/project-configuration.js +425 -0
  142. package/lib/api-schemas/project-configuration.js.map +1 -0
  143. package/lib/api-schemas/project.d.ts +7247 -0
  144. package/lib/api-schemas/project.d.ts.map +1 -0
  145. package/lib/api-schemas/project.js +185 -0
  146. package/lib/api-schemas/project.js.map +1 -0
  147. package/lib/api-schemas/prompt.d.ts +70 -0
  148. package/lib/api-schemas/prompt.d.ts.map +1 -0
  149. package/lib/api-schemas/prompt.js +77 -0
  150. package/lib/api-schemas/prompt.js.map +1 -0
  151. package/lib/api-schemas/quota.d.ts +90 -0
  152. package/lib/api-schemas/quota.d.ts.map +1 -0
  153. package/lib/api-schemas/quota.js +95 -0
  154. package/lib/api-schemas/quota.js.map +1 -0
  155. package/lib/api-schemas/registry.d.ts +97458 -0
  156. package/lib/api-schemas/registry.d.ts.map +1 -0
  157. package/lib/api-schemas/registry.js +2586 -0
  158. package/lib/api-schemas/registry.js.map +1 -0
  159. package/lib/api-schemas/schema-primitives.d.ts +5 -0
  160. package/lib/api-schemas/schema-primitives.d.ts.map +1 -0
  161. package/lib/api-schemas/schema-primitives.js +11 -0
  162. package/lib/api-schemas/schema-primitives.js.map +1 -0
  163. package/lib/api-schemas/secrets.d.ts +497 -0
  164. package/lib/api-schemas/secrets.d.ts.map +1 -0
  165. package/lib/api-schemas/secrets.js +298 -0
  166. package/lib/api-schemas/secrets.js.map +1 -0
  167. package/lib/api-schemas/store.d.ts +22140 -0
  168. package/lib/api-schemas/store.d.ts.map +1 -0
  169. package/lib/api-schemas/store.js +557 -0
  170. package/lib/api-schemas/store.js.map +1 -0
  171. package/lib/api-schemas/sts.d.ts +156 -0
  172. package/lib/api-schemas/sts.d.ts.map +1 -0
  173. package/lib/api-schemas/sts.js +96 -0
  174. package/lib/api-schemas/sts.js.map +1 -0
  175. package/lib/api-schemas/task.d.ts +215 -0
  176. package/lib/api-schemas/task.d.ts.map +1 -0
  177. package/lib/api-schemas/task.js +95 -0
  178. package/lib/api-schemas/task.js.map +1 -0
  179. package/lib/api-schemas/tools.d.ts +111 -0
  180. package/lib/api-schemas/tools.d.ts.map +1 -0
  181. package/lib/api-schemas/tools.js +122 -0
  182. package/lib/api-schemas/tools.js.map +1 -0
  183. package/lib/api-schemas/user.d.ts +208 -0
  184. package/lib/api-schemas/user.d.ts.map +1 -0
  185. package/lib/api-schemas/user.js +180 -0
  186. package/lib/api-schemas/user.js.map +1 -0
  187. package/lib/api-schemas/view-execution.d.ts +3163 -0
  188. package/lib/api-schemas/view-execution.d.ts.map +1 -0
  189. package/lib/api-schemas/view-execution.js +172 -0
  190. package/lib/api-schemas/view-execution.js.map +1 -0
  191. package/lib/api-schemas/views.d.ts +5990 -0
  192. package/lib/api-schemas/views.d.ts.map +1 -0
  193. package/lib/api-schemas/views.js +396 -0
  194. package/lib/api-schemas/views.js.map +1 -0
  195. package/lib/api-schemas/workflow-runs.d.ts +2209 -0
  196. package/lib/api-schemas/workflow-runs.d.ts.map +1 -0
  197. package/lib/api-schemas/workflow-runs.js +589 -0
  198. package/lib/api-schemas/workflow-runs.js.map +1 -0
  199. package/lib/apikey-values.d.ts +10 -0
  200. package/lib/apikey-values.d.ts.map +1 -0
  201. package/lib/apikey-values.js +11 -0
  202. package/lib/apikey-values.js.map +1 -0
  203. package/lib/apikey.d.ts +37 -36
  204. package/lib/apikey.d.ts.map +1 -1
  205. package/lib/apikey.js +5 -4
  206. package/lib/apikey.js.map +1 -1
  207. package/lib/apps.d.ts +107 -1151
  208. package/lib/apps.d.ts.map +1 -1
  209. package/lib/apps.js.map +1 -1
  210. package/lib/ask-user.d.ts +8 -1
  211. package/lib/ask-user.d.ts.map +1 -1
  212. package/lib/audit-trail.d.ts +17 -128
  213. package/lib/audit-trail.d.ts.map +1 -1
  214. package/lib/audit-trail.js.map +1 -1
  215. package/lib/browser-credentials.d.ts +11 -106
  216. package/lib/browser-credentials.d.ts.map +1 -1
  217. package/lib/common.d.ts +59 -81
  218. package/lib/common.d.ts.map +1 -1
  219. package/lib/cost-analytics.d.ts +14 -167
  220. package/lib/cost-analytics.d.ts.map +1 -1
  221. package/lib/cost-analytics.js.map +1 -1
  222. package/lib/data-platform.d.ts +122 -786
  223. package/lib/data-platform.d.ts.map +1 -1
  224. package/lib/data-platform.js +41 -61
  225. package/lib/data-platform.js.map +1 -1
  226. package/lib/email.d.ts +5 -17
  227. package/lib/email.d.ts.map +1 -1
  228. package/lib/email.js +0 -3
  229. package/lib/email.js.map +1 -1
  230. package/lib/embeddings.d.ts +14 -56
  231. package/lib/embeddings.d.ts.map +1 -1
  232. package/lib/environment.d.ts +19 -115
  233. package/lib/environment.d.ts.map +1 -1
  234. package/lib/environment.js +3 -0
  235. package/lib/environment.js.map +1 -1
  236. package/lib/facets.d.ts +4 -7
  237. package/lib/facets.d.ts.map +1 -1
  238. package/lib/group.d.ts +33 -39
  239. package/lib/group.d.ts.map +1 -1
  240. package/lib/group.js +0 -1
  241. package/lib/group.js.map +1 -1
  242. package/lib/index.d.ts +7 -0
  243. package/lib/index.d.ts.map +1 -1
  244. package/lib/index.js.map +1 -1
  245. package/lib/integrations.d.ts +20 -108
  246. package/lib/integrations.d.ts.map +1 -1
  247. package/lib/integrations.js.map +1 -1
  248. package/lib/interaction-values.d.ts +11 -0
  249. package/lib/interaction-values.d.ts.map +1 -0
  250. package/lib/interaction-values.js +24 -0
  251. package/lib/interaction-values.js.map +1 -0
  252. package/lib/interaction.d.ts +88 -778
  253. package/lib/interaction.d.ts.map +1 -1
  254. package/lib/interaction.js +8 -12
  255. package/lib/interaction.js.map +1 -1
  256. package/lib/meters.d.ts +11 -7
  257. package/lib/meters.d.ts.map +1 -1
  258. package/lib/meters.js.map +1 -1
  259. package/lib/oauth-server.d.ts +33 -119
  260. package/lib/oauth-server.d.ts.map +1 -1
  261. package/lib/oauth.d.ts +14 -96
  262. package/lib/oauth.d.ts.map +1 -1
  263. package/lib/oauth.js +0 -4
  264. package/lib/oauth.js.map +1 -1
  265. package/lib/payload.d.ts +15 -38
  266. package/lib/payload.d.ts.map +1 -1
  267. package/lib/platform-event.d.ts +49 -462
  268. package/lib/platform-event.d.ts.map +1 -1
  269. package/lib/platform-event.js.map +1 -1
  270. package/lib/principal-context.d.ts +10 -15
  271. package/lib/principal-context.d.ts.map +1 -1
  272. package/lib/project-values.d.ts +24 -0
  273. package/lib/project-values.d.ts.map +1 -0
  274. package/lib/project-values.js +42 -0
  275. package/lib/project-values.js.map +1 -0
  276. package/lib/project.d.ts +55 -503
  277. package/lib/project.d.ts.map +1 -1
  278. package/lib/project.js +6 -76
  279. package/lib/project.js.map +1 -1
  280. package/lib/prompt.d.ts +20 -51
  281. package/lib/prompt.d.ts.map +1 -1
  282. package/lib/prompt.js.map +1 -1
  283. package/lib/query.d.ts +27 -88
  284. package/lib/query.d.ts.map +1 -1
  285. package/lib/rate-limiter.d.ts +19 -70
  286. package/lib/rate-limiter.d.ts.map +1 -1
  287. package/lib/rate-limiter.js +0 -3
  288. package/lib/rate-limiter.js.map +1 -1
  289. package/lib/refs.d.ts +3 -11
  290. package/lib/refs.d.ts.map +1 -1
  291. package/lib/refs.js.map +1 -1
  292. package/lib/roles/types.d.ts +14 -20
  293. package/lib/roles/types.d.ts.map +1 -1
  294. package/lib/roles/types.js +5 -9
  295. package/lib/roles/types.js.map +1 -1
  296. package/lib/runs.d.ts +6 -25
  297. package/lib/runs.d.ts.map +1 -1
  298. package/lib/secrets.d.ts +20 -105
  299. package/lib/secrets.d.ts.map +1 -1
  300. package/lib/store/agent-approval.d.ts +5 -14
  301. package/lib/store/agent-approval.d.ts.map +1 -1
  302. package/lib/store/agent-approval.js.map +1 -1
  303. package/lib/store/agent-run.d.ts +57 -358
  304. package/lib/store/agent-run.d.ts.map +1 -1
  305. package/lib/store/collections.d.ts +11 -63
  306. package/lib/store/collections.d.ts.map +1 -1
  307. package/lib/store/collections.js.map +1 -1
  308. package/lib/store/conversation-state.d.ts +61 -61
  309. package/lib/store/conversation-state.d.ts.map +1 -1
  310. package/lib/store/conversation-state.js +2 -0
  311. package/lib/store/conversation-state.js.map +1 -1
  312. package/lib/store/doc-analyzer.d.ts +9 -32
  313. package/lib/store/doc-analyzer.d.ts.map +1 -1
  314. package/lib/store/dsl-workflow.d.ts +37 -151
  315. package/lib/store/dsl-workflow.d.ts.map +1 -1
  316. package/lib/store/dsl-workflow.js.map +1 -1
  317. package/lib/store/editing-policy-schema.generated.d.ts +3 -0
  318. package/lib/store/editing-policy-schema.generated.d.ts.map +1 -0
  319. package/lib/store/editing-policy-schema.generated.js +28 -0
  320. package/lib/store/editing-policy-schema.generated.js.map +1 -0
  321. package/lib/store/grounded-extraction.d.ts +7 -104
  322. package/lib/store/grounded-extraction.d.ts.map +1 -1
  323. package/lib/store/grounded-extraction.js.map +1 -1
  324. package/lib/store/index.d.ts +2 -0
  325. package/lib/store/index.d.ts.map +1 -1
  326. package/lib/store/index.js +3 -0
  327. package/lib/store/index.js.map +1 -1
  328. package/lib/store/intake-policy-schema.generated.d.ts +3 -0
  329. package/lib/store/intake-policy-schema.generated.d.ts.map +1 -0
  330. package/lib/store/intake-policy-schema.generated.js +1425 -0
  331. package/lib/store/intake-policy-schema.generated.js.map +1 -0
  332. package/lib/store/process-schema.d.ts +80 -0
  333. package/lib/store/process-schema.d.ts.map +1 -1
  334. package/lib/store/process-schema.js +79 -0
  335. package/lib/store/process-schema.js.map +1 -1
  336. package/lib/store/process-validation.d.ts.map +1 -1
  337. package/lib/store/process-validation.js +70 -2
  338. package/lib/store/process-validation.js.map +1 -1
  339. package/lib/store/process.d.ts +36 -125
  340. package/lib/store/process.d.ts.map +1 -1
  341. package/lib/store/process.js.map +1 -1
  342. package/lib/store/rendering.d.ts +9 -64
  343. package/lib/store/rendering.d.ts.map +1 -1
  344. package/lib/store/rendering.js.map +1 -1
  345. package/lib/store/store.d.ts +98 -700
  346. package/lib/store/store.d.ts.map +1 -1
  347. package/lib/store/store.js +4 -456
  348. package/lib/store/store.js.map +1 -1
  349. package/lib/store/task.d.ts +15 -59
  350. package/lib/store/task.d.ts.map +1 -1
  351. package/lib/store/task.js +0 -3
  352. package/lib/store/task.js.map +1 -1
  353. package/lib/store/workflow.d.ts +54 -518
  354. package/lib/store/workflow.d.ts.map +1 -1
  355. package/lib/store/workflow.js +23 -11
  356. package/lib/store/workflow.js.map +1 -1
  357. package/lib/sts-token-types.d.ts +12 -66
  358. package/lib/sts-token-types.d.ts.map +1 -1
  359. package/lib/sts-token-types.js.map +1 -1
  360. package/lib/tools.d.ts +8 -100
  361. package/lib/tools.d.ts.map +1 -1
  362. package/lib/transient-tokens-values.d.ts +11 -0
  363. package/lib/transient-tokens-values.d.ts.map +1 -0
  364. package/lib/transient-tokens-values.js +12 -0
  365. package/lib/transient-tokens-values.js.map +1 -0
  366. package/lib/transient-tokens.d.ts +15 -13
  367. package/lib/transient-tokens.d.ts.map +1 -1
  368. package/lib/transient-tokens.js +5 -5
  369. package/lib/transient-tokens.js.map +1 -1
  370. package/lib/user.d.ts +54 -155
  371. package/lib/user.d.ts.map +1 -1
  372. package/lib/user.js +1 -78
  373. package/lib/user.js.map +1 -1
  374. package/lib/versions.d.ts +24 -1
  375. package/lib/versions.d.ts.map +1 -1
  376. package/lib/versions.js +23 -0
  377. package/lib/versions.js.map +1 -1
  378. package/lib/vertesia-common.js +6 -2
  379. package/lib/vertesia-common.js.map +1 -1
  380. package/lib/views-schema.d.ts +4 -4
  381. package/lib/views.d.ts +56 -312
  382. package/lib/views.d.ts.map +1 -1
  383. package/lib/views.js.map +1 -1
  384. package/package.json +13 -4
  385. package/src/access-control-values.ts +113 -0
  386. package/src/access-control.ts +33 -138
  387. package/src/account-values.ts +95 -0
  388. package/src/analytics.ts +18 -42
  389. package/src/api-schemas/access-control.contract.test.ts +209 -0
  390. package/src/api-schemas/access-control.ts +208 -0
  391. package/src/api-schemas/account.contract.test.ts +318 -0
  392. package/src/api-schemas/account.ts +150 -0
  393. package/src/api-schemas/adapter-edge-cases.test.ts +480 -0
  394. package/src/api-schemas/adapter.ts +778 -0
  395. package/src/api-schemas/agent-runs.ts +1081 -0
  396. package/src/api-schemas/analytics.ts +65 -0
  397. package/src/api-schemas/apikey.contract.test.ts +270 -0
  398. package/src/api-schemas/apikey.ts +199 -0
  399. package/src/api-schemas/app-lifecycle.ts +841 -0
  400. package/src/api-schemas/app-runtime.ts +919 -0
  401. package/src/api-schemas/apps.ts +415 -0
  402. package/src/api-schemas/audit-trail.ts +243 -0
  403. package/src/api-schemas/bulk-operation.contract.test.ts +39 -0
  404. package/src/api-schemas/bulk-operation.ts +75 -0
  405. package/src/api-schemas/bundle-isolation.test.ts +80 -0
  406. package/src/api-schemas/commands.contract.test.ts +51 -0
  407. package/src/api-schemas/commands.ts +62 -0
  408. package/src/api-schemas/content.ts +939 -0
  409. package/src/api-schemas/cost-analytics.contract.test.ts +64 -0
  410. package/src/api-schemas/cost-analytics.ts +235 -0
  411. package/src/api-schemas/dashboard.contract.test.ts +127 -0
  412. package/src/api-schemas/dashboard.ts +351 -0
  413. package/src/api-schemas/data-store.contract.test.ts +91 -0
  414. package/src/api-schemas/data-store.ts +571 -0
  415. package/src/api-schemas/document-processing.contract.test.ts +76 -0
  416. package/src/api-schemas/document-processing.ts +344 -0
  417. package/src/api-schemas/embeddings.ts +113 -0
  418. package/src/api-schemas/environment.contract.test.ts +184 -0
  419. package/src/api-schemas/environment.ts +190 -0
  420. package/src/api-schemas/events.ts +921 -0
  421. package/src/api-schemas/files.ts +159 -0
  422. package/src/api-schemas/group.contract.test.ts +205 -0
  423. package/src/api-schemas/group.ts +155 -0
  424. package/src/api-schemas/index.ts +35 -0
  425. package/src/api-schemas/indexing.contract.test.ts +83 -0
  426. package/src/api-schemas/indexing.ts +234 -0
  427. package/src/api-schemas/integrations.ts +369 -0
  428. package/src/api-schemas/interaction.ts +2357 -0
  429. package/src/api-schemas/invites.contract.test.ts +268 -0
  430. package/src/api-schemas/invites.ts +127 -0
  431. package/src/api-schemas/llumiverse.contract.test.ts +108 -0
  432. package/src/api-schemas/oauth-server.ts +219 -0
  433. package/src/api-schemas/oauth.contract.test.ts +118 -0
  434. package/src/api-schemas/oauth.ts +166 -0
  435. package/src/api-schemas/parameters.test.ts +402 -0
  436. package/src/api-schemas/parameters.ts +310 -0
  437. package/src/api-schemas/process.ts +929 -0
  438. package/src/api-schemas/project-configuration.ts +478 -0
  439. package/src/api-schemas/project.contract.test.ts +365 -0
  440. package/src/api-schemas/project.ts +214 -0
  441. package/src/api-schemas/prompt.ts +88 -0
  442. package/src/api-schemas/pruning-limits.test.ts +189 -0
  443. package/src/api-schemas/quota.contract.test.ts +147 -0
  444. package/src/api-schemas/quota.ts +122 -0
  445. package/src/api-schemas/registry-groups.test.ts +91 -0
  446. package/src/api-schemas/registry.ts +3487 -0
  447. package/src/api-schemas/response-pruning.test.ts +260 -0
  448. package/src/api-schemas/schema-primitives.ts +12 -0
  449. package/src/api-schemas/secrets.ts +332 -0
  450. package/src/api-schemas/store.contract.test.ts +450 -0
  451. package/src/api-schemas/store.ts +604 -0
  452. package/src/api-schemas/sts.contract.test.ts +80 -0
  453. package/src/api-schemas/sts.ts +110 -0
  454. package/src/api-schemas/task.ts +104 -0
  455. package/src/api-schemas/tools.ts +140 -0
  456. package/src/api-schemas/user.contract.test.ts +191 -0
  457. package/src/api-schemas/user.ts +204 -0
  458. package/src/api-schemas/view-execution.ts +200 -0
  459. package/src/api-schemas/views.ts +437 -0
  460. package/src/api-schemas/workflow-runs.ts +653 -0
  461. package/src/apikey-values.ts +10 -0
  462. package/src/apikey.ts +49 -40
  463. package/src/apps.ts +234 -1213
  464. package/src/ask-user.ts +9 -1
  465. package/src/audit-trail.ts +45 -137
  466. package/src/browser-credentials.ts +21 -106
  467. package/src/common.ts +67 -78
  468. package/src/cost-analytics.ts +37 -176
  469. package/src/data-platform.ts +205 -776
  470. package/src/email.ts +5 -17
  471. package/src/embeddings.ts +22 -60
  472. package/src/environment.ts +52 -126
  473. package/src/facets.ts +4 -7
  474. package/src/group.ts +38 -42
  475. package/src/index.ts +11 -0
  476. package/src/integrations.ts +39 -129
  477. package/src/interaction-values.ts +23 -0
  478. package/src/interaction.ts +162 -902
  479. package/src/meters.ts +11 -7
  480. package/src/oauth-server.ts +58 -127
  481. package/src/oauth.ts +24 -108
  482. package/src/payload.ts +25 -40
  483. package/src/platform-event.ts +98 -484
  484. package/src/principal-context.ts +11 -15
  485. package/src/project-values.ts +41 -0
  486. package/src/project.ts +116 -588
  487. package/src/prompt.ts +34 -61
  488. package/src/query.ts +34 -93
  489. package/src/rate-limiter.ts +27 -75
  490. package/src/refs.ts +4 -11
  491. package/src/roles/types.ts +20 -20
  492. package/src/runs.ts +11 -24
  493. package/src/secrets.ts +38 -117
  494. package/src/store/agent-approval.ts +9 -14
  495. package/src/store/agent-run.ts +93 -450
  496. package/src/store/collections.ts +21 -63
  497. package/src/store/content-type-editing.test.ts +1 -1
  498. package/src/store/conversation-state.ts +75 -64
  499. package/src/store/doc-analyzer.ts +17 -33
  500. package/src/store/dsl-workflow.ts +62 -158
  501. package/src/store/editing-policy-schema.generated.ts +30 -0
  502. package/src/store/grounded-extraction.ts +13 -104
  503. package/src/store/index.ts +3 -0
  504. package/src/store/intake-policy-schema.generated.ts +1442 -0
  505. package/src/store/process-schema.test.ts +43 -0
  506. package/src/store/process-schema.ts +79 -0
  507. package/src/store/process-validation.test.ts +141 -0
  508. package/src/store/process-validation.ts +82 -2
  509. package/src/store/process.ts +70 -146
  510. package/src/store/rendering.ts +15 -64
  511. package/src/store/store.ts +197 -1204
  512. package/src/store/task.ts +25 -59
  513. package/src/store/workflow.ts +97 -557
  514. package/src/sts-token-types.ts +24 -75
  515. package/src/tools.ts +18 -97
  516. package/src/transient-tokens-values.ts +11 -0
  517. package/src/transient-tokens.ts +16 -13
  518. package/src/user.ts +74 -214
  519. package/src/versions.ts +24 -0
  520. package/src/views-schema.test.ts +9 -1
  521. package/src/views.ts +106 -329
@@ -0,0 +1,64 @@
1
+ import { describe, expect, expectTypeOf, it } from 'vitest';
2
+ import type {
3
+ CostAnalyticsQuery,
4
+ CostAnalyticsResponse,
5
+ CostRunPriceQuery,
6
+ ModelPriceComparisonResponse,
7
+ } from '../cost-analytics.js';
8
+ import type {
9
+ CostAnalyticsQuerySchema,
10
+ CostAnalyticsResponseSchema,
11
+ CostRunPriceQuerySchema,
12
+ ModelPriceComparisonResponseSchema,
13
+ } from './cost-analytics.js';
14
+ import { ApiSchemaComponents, validateApiRequest, validateApiResponse } from './registry.js';
15
+
16
+ describe('cost analytics API contracts', () => {
17
+ it('derives the public types from the runtime schemas', () => {
18
+ expectTypeOf<CostAnalyticsQuery>().toEqualTypeOf<import('zod').z.infer<typeof CostAnalyticsQuerySchema>>();
19
+ expectTypeOf<CostAnalyticsResponse>().toEqualTypeOf<
20
+ import('zod').z.infer<typeof CostAnalyticsResponseSchema>
21
+ >();
22
+ expectTypeOf<CostRunPriceQuery>().toEqualTypeOf<import('zod').z.infer<typeof CostRunPriceQuerySchema>>();
23
+ expectTypeOf<ModelPriceComparisonResponse>().toEqualTypeOf<
24
+ import('zod').z.infer<typeof ModelPriceComparisonResponseSchema>
25
+ >();
26
+ });
27
+
28
+ it('accepts string and epoch time boundaries', () => {
29
+ expect(validateApiRequest('CostAnalyticsQuery', { from: '2026-08-01T00:00:00Z' }).valid).toBe(true);
30
+ expect(validateApiRequest('CostAnalyticsQuery', { from: 1_786_060_800_000 }).valid).toBe(true);
31
+ });
32
+
33
+ it('rejects undeclared request fields through the published component', () => {
34
+ expect(validateApiRequest('CostRunPriceQuery', { run_id: 'run-1', hidden_filter: true }).valid).toBe(false);
35
+ });
36
+
37
+ it('validates the published model-price response', () => {
38
+ const response: ModelPriceComparisonResponse = {
39
+ prices: [
40
+ {
41
+ model: 'gpt-5',
42
+ source: 'model_pricing_daily',
43
+ input_list_price_per_m_tokens: 1.25,
44
+ },
45
+ ],
46
+ effective_range: { from: '2026-08-01', to: '2026-08-02' },
47
+ };
48
+ expect(validateApiResponse('ModelPriceComparisonResponse', response).valid).toBe(true);
49
+ });
50
+
51
+ it('registers the complete cost analytics closure', () => {
52
+ for (const name of [
53
+ 'CostAnalyticsQuery',
54
+ 'CostRunPriceQuery',
55
+ 'CostModelPricesQuery',
56
+ 'CostExportQuery',
57
+ 'CostAnalyticsResponse',
58
+ 'ModelPriceComparisonResponse',
59
+ 'CostRunPriceResponse',
60
+ ]) {
61
+ expect(ApiSchemaComponents[name]).toBeDefined();
62
+ }
63
+ });
64
+ });
@@ -0,0 +1,235 @@
1
+ import { z } from 'zod';
2
+
3
+ // Zod renders a union as `anyOf`, while the published contract uses JSON Schema's compact type
4
+ // array. Runtime enforcement compiles the emitted JSON Schema with AJV, so the metadata is both the
5
+ // published shape and the validator; the annotation keeps the inferred TypeScript type equally
6
+ // narrow.
7
+ const timeBoundarySchema: z.ZodType<string | number> = z.any().meta({ type: ['string', 'number'] });
8
+
9
+ export const PricingSyncPayloadSchema = z
10
+ .strictObject({
11
+ date: z.string().optional(),
12
+ backfill_from: z.string().optional(),
13
+ })
14
+ .meta({ id: 'PricingSyncPayload' });
15
+
16
+ export const PricingSyncDayResultSchema = z
17
+ .strictObject({
18
+ date: z.string(),
19
+ gcp_list: z.number(),
20
+ gcp_effective: z.number(),
21
+ aws_pricing: z.number(),
22
+ })
23
+ .meta({ id: 'PricingSyncDayResult' });
24
+
25
+ export const PricingSyncResultSchema = z
26
+ .strictObject({
27
+ days: z.array(PricingSyncDayResultSchema),
28
+ total_days: z.number(),
29
+ })
30
+ .meta({ id: 'PricingSyncResult' });
31
+
32
+ export const CostAnalyticsQuerySchema = z
33
+ .strictObject({
34
+ from: timeBoundarySchema.meta({ description: 'Start time (ISO string or epoch ms)' }).optional(),
35
+ to: timeBoundarySchema.meta({ description: 'End time (ISO string or epoch ms)' }).optional(),
36
+ group_by: z
37
+ .enum(['model', 'environment', 'account', 'project', 'project_tag', 'provider', 'interaction', 'workflow'])
38
+ .meta({ description: 'Group results by this dimension' })
39
+ .optional(),
40
+ resolution: z.enum(['hour', 'day', 'week', 'month']).meta({ description: 'Time series resolution' }).optional(),
41
+ model: z.string().meta({ description: 'Filter by model pattern' }).optional(),
42
+ environment_id: z.string().meta({ description: 'Filter by environment ID' }).optional(),
43
+ provider: z.string().meta({ description: 'Filter by provider' }).optional(),
44
+ project_id: z.string().meta({ description: 'Filter by project ID (optional, for org scope)' }).optional(),
45
+ workflow_id: z.string().meta({ description: 'Filter by workflow / agent run ID' }).optional(),
46
+ workflow_run_id: z.string().meta({ description: 'Filter by Temporal workflow run ID' }).optional(),
47
+ run_id: z.string().meta({ description: 'Filter by interaction execution run ID' }).optional(),
48
+ agent_run_id: z.string().meta({ description: 'Filter by agent run ID' }).optional(),
49
+ interaction_id: z
50
+ .string()
51
+ .meta({ description: 'Filter by interaction id: stored ObjectId or namespaced in-code id' })
52
+ .optional(),
53
+ principal_id: z
54
+ .string()
55
+ .meta({
56
+ description:
57
+ 'Filter by principal (bare user or API key id; matched against the suffix of principal_id)',
58
+ })
59
+ .optional(),
60
+ account_id: z.string().meta({ description: 'Filter by account ID (set automatically by server)' }).optional(),
61
+ scope: z
62
+ .enum(['project', 'org'])
63
+ .meta({ description: "Scope: 'project' (default, current project) or 'org' (all projects in account)" })
64
+ .optional(),
65
+ pricing_source: z
66
+ .enum(['list', 'historical'])
67
+ .meta({
68
+ description:
69
+ "Pricing source: 'list' (latest daily prices) or 'historical' (daily effective prices over the query range). Default: 'list'",
70
+ })
71
+ .optional(),
72
+ no_cache: z.boolean().meta({ description: 'Skip cache and force fresh query' }).optional(),
73
+ })
74
+ .meta({ id: 'CostAnalyticsQuery' });
75
+
76
+ export const CostRunPriceQuerySchema = z
77
+ .strictObject({
78
+ run_id: z.string().meta({ description: 'Interaction execution run ID' }).optional(),
79
+ agent_run_id: z.string().meta({ description: 'Agent run ID' }).optional(),
80
+ workflow_id: z.string().meta({ description: 'Workflow ID, when known' }).optional(),
81
+ workflow_run_id: z.string().meta({ description: 'Temporal workflow run ID, when known' }).optional(),
82
+ from: timeBoundarySchema.meta({ description: 'Optional lower bound for audit events' }).optional(),
83
+ to: timeBoundarySchema.meta({ description: 'Optional upper bound for audit events' }).optional(),
84
+ pricing_source: z
85
+ .enum(['list', 'historical'])
86
+ .meta({ description: 'Pricing source. Defaults to historical effective prices for run pricing.' })
87
+ .optional(),
88
+ include_comparison_pricing: z
89
+ .boolean()
90
+ .meta({ description: 'Include the full pricing catalog for cross-model comparison. Defaults to false.' })
91
+ .optional(),
92
+ project_id: z
93
+ .string()
94
+ .meta({ description: 'Project filter; server fills current project by default' })
95
+ .optional(),
96
+ account_id: z.string().meta({ description: 'Account filter; server fills current account' }).optional(),
97
+ scope: z
98
+ .enum(['project', 'org'])
99
+ .meta({ description: "Scope: 'project' (default, current project) or 'org'" })
100
+ .optional(),
101
+ })
102
+ .meta({ id: 'CostRunPriceQuery' });
103
+
104
+ export const CostModelPricesQuerySchema = z
105
+ .object({
106
+ from: timeBoundarySchema.meta({ description: 'Start time (ISO string or epoch ms)' }).optional(),
107
+ to: timeBoundarySchema.meta({ description: 'End time (ISO string or epoch ms)' }).optional(),
108
+ })
109
+ .meta({ id: 'CostModelPricesQuery' });
110
+
111
+ export const CostExportQuerySchema = z
112
+ .object({
113
+ from: timeBoundarySchema.meta({ description: 'Start time (ISO string or epoch ms)' }).optional(),
114
+ to: timeBoundarySchema.meta({ description: 'End time (ISO string or epoch ms)' }).optional(),
115
+ scope: z
116
+ .enum(['project', 'org'])
117
+ .meta({ description: "Scope: 'project' (default, current project) or 'org' (all projects in account)" })
118
+ .optional(),
119
+ project_id: z.string().meta({ description: 'Filter by project ID (optional, for org scope)' }).optional(),
120
+ workflow_id: z.string().meta({ description: 'Filter by workflow / agent run ID' }).optional(),
121
+ })
122
+ .meta({ id: 'CostExportQuery' });
123
+
124
+ export const ModelPricingSchema = z
125
+ .strictObject({
126
+ model: z.string(),
127
+ provider: z.string().optional(),
128
+ provider_account_id: z.string().optional(),
129
+ input_price_per_m_tokens: z.number(),
130
+ cached_input_price_per_m_tokens: z.number().optional(),
131
+ cache_write_input_price_per_m_tokens: z.number().optional(),
132
+ output_price_per_m_tokens: z.number(),
133
+ source: z.enum(['billing_export', 'model_pricing_daily', 'unavailable']),
134
+ })
135
+ .meta({ id: 'ModelPricing' });
136
+
137
+ export const CostTimeSeriesPointSchema = z
138
+ .strictObject({
139
+ timestamp: z.string(),
140
+ cost: z.number(),
141
+ input_tokens: z.number(),
142
+ cached_input_tokens: z.number().optional(),
143
+ cache_write_input_tokens: z.number().optional(),
144
+ output_tokens: z.number(),
145
+ calls: z.number(),
146
+ })
147
+ .meta({ id: 'CostTimeSeriesPoint' });
148
+
149
+ export const CostSummarySchema = z
150
+ .strictObject({
151
+ total_cost: z.number(),
152
+ total_input_tokens: z.number(),
153
+ total_cached_input_tokens: z.number().optional(),
154
+ total_cache_write_input_tokens: z.number().optional(),
155
+ total_output_tokens: z.number(),
156
+ total_calls: z.number(),
157
+ total_duration_ms: z.number(),
158
+ })
159
+ .meta({ id: 'CostSummary' });
160
+
161
+ export const ModelPriceComparisonSchema = z
162
+ .strictObject({
163
+ model: z.string(),
164
+ provider: z.string().optional(),
165
+ provider_account_id: z.string().optional(),
166
+ list_price_date: z.string().optional(),
167
+ effective_from: z.string().optional(),
168
+ effective_to: z.string().optional(),
169
+ input_list_price_per_m_tokens: z.number().optional(),
170
+ input_effective_price_per_m_tokens: z.number().optional(),
171
+ cached_input_list_price_per_m_tokens: z.number().optional(),
172
+ cached_input_effective_price_per_m_tokens: z.number().optional(),
173
+ cache_write_input_list_price_per_m_tokens: z.number().optional(),
174
+ cache_write_input_effective_price_per_m_tokens: z.number().optional(),
175
+ output_list_price_per_m_tokens: z.number().optional(),
176
+ output_effective_price_per_m_tokens: z.number().optional(),
177
+ source: z.literal('model_pricing_daily'),
178
+ })
179
+ .meta({ id: 'ModelPriceComparison' });
180
+
181
+ export const CostByDimensionSchema = z
182
+ .strictObject({
183
+ dimension: z.string(),
184
+ label: z.string().optional(),
185
+ provider: z.string().optional(),
186
+ cost: z.number(),
187
+ input_tokens: z.number(),
188
+ cached_input_tokens: z.number().optional(),
189
+ cache_write_input_tokens: z.number().optional(),
190
+ output_tokens: z.number(),
191
+ calls: z.number(),
192
+ periods: z.array(CostTimeSeriesPointSchema).optional(),
193
+ })
194
+ .meta({ id: 'CostByDimension' });
195
+
196
+ export const ModelPriceComparisonResponseSchema = z
197
+ .strictObject({
198
+ prices: z.array(ModelPriceComparisonSchema),
199
+ effective_range: z.strictObject({
200
+ from: z.string(),
201
+ to: z.string(),
202
+ }),
203
+ list_price_date: z.string().optional(),
204
+ })
205
+ .meta({ id: 'ModelPriceComparisonResponse' });
206
+
207
+ export const CostAnalyticsResponseSchema = z
208
+ .strictObject({
209
+ summary: CostSummarySchema,
210
+ by_dimension: z.array(CostByDimensionSchema),
211
+ time_series: z.array(CostTimeSeriesPointSchema),
212
+ pricing: z.array(ModelPricingSchema),
213
+ query_range: z.strictObject({
214
+ from: z.string(),
215
+ to: z.string(),
216
+ }),
217
+ cached: z.boolean(),
218
+ })
219
+ .meta({ id: 'CostAnalyticsResponse' });
220
+
221
+ export const CostRunPriceResponseSchema = z
222
+ .strictObject({
223
+ summary: CostSummarySchema,
224
+ by_model: z.array(CostByDimensionSchema),
225
+ pricing: z.array(ModelPricingSchema).optional(),
226
+ query_range: z
227
+ .strictObject({
228
+ from: z.string(),
229
+ to: z.string(),
230
+ })
231
+ .optional(),
232
+ pricing_source: z.enum(['list', 'historical']),
233
+ matched_events: z.number(),
234
+ })
235
+ .meta({ id: 'CostRunPriceResponse' });
@@ -0,0 +1,127 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import type { z } from 'zod';
3
+ import type {
4
+ CreateDashboardPayload,
5
+ Dashboard,
6
+ DashboardDataSource,
7
+ DashboardItem,
8
+ DashboardStatus,
9
+ DashboardVersion,
10
+ UpdateDashboardPayload,
11
+ } from '../data-platform.js';
12
+ import type {
13
+ CreateDashboardPayloadSchema,
14
+ DashboardDataSourceSchema,
15
+ DashboardItemSchema,
16
+ DashboardSchema,
17
+ DashboardStatusSchema,
18
+ DashboardVersionSchema,
19
+ UpdateDashboardPayloadSchema,
20
+ } from './dashboard.js';
21
+ import { ApiSchemaComponents, validateApiRequest, validateApiResponse } from './registry.js';
22
+
23
+ type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
24
+ function assertType<T extends true>(_ok: T): void {}
25
+
26
+ describe('the dashboard public types', () => {
27
+ it('derive from the runtime schemas instead of restating them', () => {
28
+ assertType<Equals<DashboardStatus, z.infer<typeof DashboardStatusSchema>>>(true);
29
+ assertType<Equals<DashboardDataSource, z.infer<typeof DashboardDataSourceSchema>>>(true);
30
+ assertType<Equals<DashboardItem, z.infer<typeof DashboardItemSchema>>>(true);
31
+ assertType<Equals<Dashboard, z.infer<typeof DashboardSchema>>>(true);
32
+ assertType<Equals<DashboardVersion, z.infer<typeof DashboardVersionSchema>>>(true);
33
+ assertType<Equals<CreateDashboardPayload, z.infer<typeof CreateDashboardPayloadSchema>>>(true);
34
+ assertType<Equals<UpdateDashboardPayload, z.infer<typeof UpdateDashboardPayloadSchema>>>(true);
35
+ });
36
+
37
+ it('keeps the runtime status values available without importing Zod from the root entry', async () => {
38
+ const common = await import('../data-platform.js');
39
+ expect(common.DashboardStatus).toEqual({ ACTIVE: 'active', ARCHIVED: 'archived' });
40
+ });
41
+ });
42
+
43
+ describe('dashboard request validation', () => {
44
+ const create = {
45
+ name: 'Revenue',
46
+ dataSource: { kind: 'data_sql', query: 'select * from revenue' },
47
+ spec: { mark: 'bar' },
48
+ };
49
+
50
+ it('accepts the two documented data-source branches', () => {
51
+ expect(validateApiRequest('CreateDashboardPayload', create)).toMatchObject({ valid: true });
52
+ expect(
53
+ validateApiRequest('CreateDashboardPayload', {
54
+ ...create,
55
+ dataSource: { kind: 'store_es_dsl', dsl: { size: 20 }, result: { type: 'hits' } },
56
+ }),
57
+ ).toMatchObject({ valid: true });
58
+ });
59
+
60
+ it('rejects an unknown data-source discriminator and undeclared payload fields', () => {
61
+ expect(
62
+ validateApiRequest('CreateDashboardPayload', {
63
+ ...create,
64
+ dataSource: { kind: 'http', url: 'https://example.test/data' },
65
+ }).valid,
66
+ ).toBe(false);
67
+ expect(validateApiRequest('CreateDashboardPayload', { ...create, project: 'ignored-before' }).valid).toBe(
68
+ false,
69
+ );
70
+ });
71
+
72
+ it('derives update as the partial create shape plus skip_versioning', () => {
73
+ expect(validateApiRequest('UpdateDashboardPayload', {})).toMatchObject({ valid: true });
74
+ expect(validateApiRequest('UpdateDashboardPayload', { spec: { mark: 'line' } })).toMatchObject({
75
+ valid: true,
76
+ });
77
+ expect(validateApiRequest('UpdateDashboardPayload', { skip_versioning: true })).toMatchObject({ valid: true });
78
+ expect(validateApiRequest('UpdateDashboardPayload', { unknown: true }).valid).toBe(false);
79
+ });
80
+
81
+ it('keeps the two bulk bodies as the free-form string-array map already published', () => {
82
+ expect(validateApiRequest('StringArrayMap', { ids: ['one', 'two'] })).toMatchObject({ valid: true });
83
+ expect(validateApiRequest('StringArrayMap', { labels: ['one'] })).toMatchObject({ valid: true });
84
+ expect(validateApiRequest('StringArrayMap', { ids: 'one' }).valid).toBe(false);
85
+ });
86
+ });
87
+
88
+ describe('dashboard response validation', () => {
89
+ const item = {
90
+ id: 'dashboard-1',
91
+ name: 'Revenue',
92
+ tags: [],
93
+ updated_by: 'user:editor',
94
+ created_by: 'user:author',
95
+ created_at: '2026-08-01T00:00:00.000Z',
96
+ updated_at: '2026-08-02T00:00:00.000Z',
97
+ store_id: 'store-1',
98
+ status: 'active',
99
+ panel_count: 0,
100
+ query_count: 0,
101
+ };
102
+
103
+ it('accepts the mapper-produced listing and full response shapes', () => {
104
+ expect(validateApiResponse('DashboardItem', item)).toMatchObject({ valid: true });
105
+ expect(
106
+ validateApiResponse('Dashboard', {
107
+ ...item,
108
+ query: 'select * from revenue',
109
+ spec: { mark: 'bar' },
110
+ queries: [],
111
+ panels: [],
112
+ layout: { columns: 2, cellWidth: 600, cellHeight: 400, padding: 20 },
113
+ }),
114
+ ).toMatchObject({ valid: true });
115
+ });
116
+
117
+ it('rejects persistence-only fields instead of allowing a document spread to escape', () => {
118
+ expect(validateApiResponse('DashboardItem', { ...item, account: 'account-1' }).valid).toBe(false);
119
+ });
120
+
121
+ it('registers the complete response closure used by the endpoints', () => {
122
+ expect(ApiSchemaComponents).toHaveProperty('DashboardItemArray');
123
+ expect(ApiSchemaComponents).toHaveProperty('DashboardVersionItemArray');
124
+ expect(ApiSchemaComponents).toHaveProperty('DashboardVersion');
125
+ expect(ApiSchemaComponents).toHaveProperty('Dashboard');
126
+ });
127
+ });