@vertesia/common 1.5.0-dev.20260722.120446Z → 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 (522) 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 +116 -1121
  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 -113
  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 +116 -734
  253. package/lib/interaction.d.ts.map +1 -1
  254. package/lib/interaction.js +56 -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 +63 -342
  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 +63 -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 -693
  346. package/lib/store/store.d.ts.map +1 -1
  347. package/lib/store/store.js +4 -443
  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 +56 -516
  354. package/lib/store/workflow.d.ts.map +1 -1
  355. package/lib/store/workflow.js +28 -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 +14 -5
  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/agent-resources.test.ts +100 -0
  389. package/src/analytics.ts +18 -42
  390. package/src/api-schemas/access-control.contract.test.ts +209 -0
  391. package/src/api-schemas/access-control.ts +208 -0
  392. package/src/api-schemas/account.contract.test.ts +318 -0
  393. package/src/api-schemas/account.ts +150 -0
  394. package/src/api-schemas/adapter-edge-cases.test.ts +480 -0
  395. package/src/api-schemas/adapter.ts +778 -0
  396. package/src/api-schemas/agent-runs.ts +1081 -0
  397. package/src/api-schemas/analytics.ts +65 -0
  398. package/src/api-schemas/apikey.contract.test.ts +270 -0
  399. package/src/api-schemas/apikey.ts +199 -0
  400. package/src/api-schemas/app-lifecycle.ts +841 -0
  401. package/src/api-schemas/app-runtime.ts +919 -0
  402. package/src/api-schemas/apps.ts +415 -0
  403. package/src/api-schemas/audit-trail.ts +243 -0
  404. package/src/api-schemas/bulk-operation.contract.test.ts +39 -0
  405. package/src/api-schemas/bulk-operation.ts +75 -0
  406. package/src/api-schemas/bundle-isolation.test.ts +80 -0
  407. package/src/api-schemas/commands.contract.test.ts +51 -0
  408. package/src/api-schemas/commands.ts +62 -0
  409. package/src/api-schemas/content.ts +939 -0
  410. package/src/api-schemas/cost-analytics.contract.test.ts +64 -0
  411. package/src/api-schemas/cost-analytics.ts +235 -0
  412. package/src/api-schemas/dashboard.contract.test.ts +127 -0
  413. package/src/api-schemas/dashboard.ts +351 -0
  414. package/src/api-schemas/data-store.contract.test.ts +91 -0
  415. package/src/api-schemas/data-store.ts +571 -0
  416. package/src/api-schemas/document-processing.contract.test.ts +76 -0
  417. package/src/api-schemas/document-processing.ts +344 -0
  418. package/src/api-schemas/embeddings.ts +113 -0
  419. package/src/api-schemas/environment.contract.test.ts +184 -0
  420. package/src/api-schemas/environment.ts +190 -0
  421. package/src/api-schemas/events.ts +921 -0
  422. package/src/api-schemas/files.ts +159 -0
  423. package/src/api-schemas/group.contract.test.ts +205 -0
  424. package/src/api-schemas/group.ts +155 -0
  425. package/src/api-schemas/index.ts +35 -0
  426. package/src/api-schemas/indexing.contract.test.ts +83 -0
  427. package/src/api-schemas/indexing.ts +234 -0
  428. package/src/api-schemas/integrations.ts +369 -0
  429. package/src/api-schemas/interaction.ts +2357 -0
  430. package/src/api-schemas/invites.contract.test.ts +268 -0
  431. package/src/api-schemas/invites.ts +127 -0
  432. package/src/api-schemas/llumiverse.contract.test.ts +108 -0
  433. package/src/api-schemas/oauth-server.ts +219 -0
  434. package/src/api-schemas/oauth.contract.test.ts +118 -0
  435. package/src/api-schemas/oauth.ts +166 -0
  436. package/src/api-schemas/parameters.test.ts +402 -0
  437. package/src/api-schemas/parameters.ts +310 -0
  438. package/src/api-schemas/process.ts +929 -0
  439. package/src/api-schemas/project-configuration.ts +478 -0
  440. package/src/api-schemas/project.contract.test.ts +365 -0
  441. package/src/api-schemas/project.ts +214 -0
  442. package/src/api-schemas/prompt.ts +88 -0
  443. package/src/api-schemas/pruning-limits.test.ts +189 -0
  444. package/src/api-schemas/quota.contract.test.ts +147 -0
  445. package/src/api-schemas/quota.ts +122 -0
  446. package/src/api-schemas/registry-groups.test.ts +91 -0
  447. package/src/api-schemas/registry.ts +3487 -0
  448. package/src/api-schemas/response-pruning.test.ts +260 -0
  449. package/src/api-schemas/schema-primitives.ts +12 -0
  450. package/src/api-schemas/secrets.ts +332 -0
  451. package/src/api-schemas/store.contract.test.ts +450 -0
  452. package/src/api-schemas/store.ts +604 -0
  453. package/src/api-schemas/sts.contract.test.ts +80 -0
  454. package/src/api-schemas/sts.ts +110 -0
  455. package/src/api-schemas/task.ts +104 -0
  456. package/src/api-schemas/tools.ts +140 -0
  457. package/src/api-schemas/user.contract.test.ts +191 -0
  458. package/src/api-schemas/user.ts +204 -0
  459. package/src/api-schemas/view-execution.ts +200 -0
  460. package/src/api-schemas/views.ts +437 -0
  461. package/src/api-schemas/workflow-runs.ts +653 -0
  462. package/src/apikey-values.ts +10 -0
  463. package/src/apikey.ts +49 -40
  464. package/src/apps.ts +249 -1179
  465. package/src/ask-user.ts +9 -1
  466. package/src/audit-trail.ts +45 -137
  467. package/src/browser-credentials.ts +21 -106
  468. package/src/common.ts +67 -78
  469. package/src/cost-analytics.ts +37 -176
  470. package/src/data-platform.ts +205 -776
  471. package/src/email.ts +5 -17
  472. package/src/embeddings.ts +22 -60
  473. package/src/environment.ts +52 -124
  474. package/src/facets.ts +4 -7
  475. package/src/group.ts +38 -42
  476. package/src/index.ts +11 -0
  477. package/src/integrations.ts +39 -129
  478. package/src/interaction-values.ts +23 -0
  479. package/src/interaction.ts +231 -841
  480. package/src/meters.ts +11 -7
  481. package/src/oauth-server.ts +58 -127
  482. package/src/oauth.ts +24 -108
  483. package/src/payload.ts +25 -40
  484. package/src/platform-event.ts +98 -484
  485. package/src/principal-context.ts +11 -15
  486. package/src/project-values.ts +41 -0
  487. package/src/project.ts +116 -588
  488. package/src/prompt.ts +34 -61
  489. package/src/query.ts +34 -93
  490. package/src/rate-limiter.ts +27 -75
  491. package/src/refs.ts +4 -11
  492. package/src/roles/types.ts +20 -20
  493. package/src/runs.ts +11 -24
  494. package/src/secrets.ts +38 -117
  495. package/src/store/agent-approval.ts +9 -14
  496. package/src/store/agent-run.ts +106 -434
  497. package/src/store/collections.ts +21 -63
  498. package/src/store/content-type-editing.test.ts +17 -0
  499. package/src/store/conversation-state.ts +78 -64
  500. package/src/store/doc-analyzer.ts +17 -33
  501. package/src/store/dsl-workflow.ts +62 -158
  502. package/src/store/editing-policy-schema.generated.ts +30 -0
  503. package/src/store/grounded-extraction.ts +13 -104
  504. package/src/store/index.ts +3 -0
  505. package/src/store/intake-policy-schema.generated.ts +1442 -0
  506. package/src/store/process-schema.test.ts +43 -0
  507. package/src/store/process-schema.ts +79 -0
  508. package/src/store/process-validation.test.ts +141 -0
  509. package/src/store/process-validation.ts +82 -2
  510. package/src/store/process.ts +70 -146
  511. package/src/store/rendering.ts +15 -64
  512. package/src/store/store.ts +197 -1182
  513. package/src/store/task.ts +25 -59
  514. package/src/store/workflow.ts +103 -554
  515. package/src/sts-token-types.ts +24 -75
  516. package/src/tools.ts +18 -97
  517. package/src/transient-tokens-values.ts +11 -0
  518. package/src/transient-tokens.ts +16 -13
  519. package/src/user.ts +74 -214
  520. package/src/versions.ts +24 -0
  521. package/src/views-schema.test.ts +9 -1
  522. 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
+ });