@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,919 @@
1
+ // Runtime schemas for the app runtime API domain.
2
+
3
+ import type { JSONSchema } from '@llumiverse/common';
4
+ import { z } from 'zod';
5
+ import type { CompositeAppMenuNavItem } from '../apps.js';
6
+ import type { InCodeProcessDefinition } from '../store/process.js';
7
+ import {
8
+ AgentToolDefinitionSchema,
9
+ AppInstallationOAuthBindingSchema,
10
+ AppInstallationProviderBindingSchema,
11
+ AppVersionRecordSchema,
12
+ } from './app-lifecycle.js';
13
+ import {
14
+ AppAccessControlSchema,
15
+ AppCapabilitiesSchema,
16
+ AppManifestSourceSchema,
17
+ AppSourceConfigSchema,
18
+ AppUIConfigSchema,
19
+ MCPOAuthConfigSchema,
20
+ ToolCollectionObjectSchema,
21
+ } from './apps.js';
22
+ import {
23
+ DashboardDataSourceSchema,
24
+ DashboardLayoutSchema,
25
+ DashboardPanelSchema,
26
+ DashboardQuerySchema,
27
+ } from './dashboard.js';
28
+ import { StringValueMapSchema } from './files.js';
29
+ import { RemoteActivityDefinitionSchema } from './integrations.js';
30
+ import { CatalogInteractionRefSchema } from './interaction.js';
31
+ import { ProcessDefinitionBodySchema } from './process.js';
32
+ import { RenderingTemplateDefinitionRefSchema } from './project.js';
33
+ import { InCodeTypeDefinitionSchema } from './store.js';
34
+ import { ViewExperienceConfigurationSchema } from './view-execution.js';
35
+
36
+ const JSONSchemaRefSchema: z.ZodType<JSONSchema> = z.any().meta({
37
+ $ref: '#/components/schemas/JSONSchema',
38
+ });
39
+
40
+ export const ProjectPluginArraySchema = z.array(z.string()).meta({ id: 'ProjectPluginArray' });
41
+
42
+ export const BinaryFileResponseSchema = z.string().meta({ id: 'BinaryFileResponse', format: 'binary' });
43
+
44
+ export const CompositeAppNavItemPermissionsSchema = z
45
+ .strictObject({
46
+ groupsAllowed: z
47
+ .array(z.string())
48
+ .meta({ description: 'Group IDs whose members can see this item.' })
49
+ .optional(),
50
+ usersAllowed: z.array(z.string()).meta({ description: 'User IDs who can see this item.' }).optional(),
51
+ rolesAllowed: z
52
+ .array(z.string())
53
+ .meta({ description: 'SystemRoles values (e.g. "developer", "manager") whose holders can see this item.' })
54
+ .optional(),
55
+ })
56
+ .meta({
57
+ id: 'CompositeAppNavItemPermissions',
58
+ description:
59
+ 'Access control settings for a composite app nav item.\n\nIf any of `groupsAllowed`, `usersAllowed`, or `rolesAllowed` are set, access is granted when the user matches ANY list (OR logic). All empty/absent means visible to everyone. Admin users bypass all checks.',
60
+ });
61
+
62
+ export const CompositeAppEntrySchema = z
63
+ .strictObject({
64
+ appName: z.string().meta({ description: 'App installation name (must match an installed app)' }),
65
+ })
66
+ .meta({
67
+ id: 'CompositeAppEntry',
68
+ description:
69
+ 'Configuration entry for an individual app in the CompositeApp shell. References an app installation by name.',
70
+ });
71
+
72
+ export const CompositeAppHomePluginSchema = z
73
+ .strictObject({
74
+ appName: z.string().meta({ description: 'The app name to use as the home page' }),
75
+ appRoute: z
76
+ .string()
77
+ .meta({ description: 'Optional route within the app (e.g. "/dashboard"). Defaults to "/"' })
78
+ .optional(),
79
+ })
80
+ .meta({ id: 'CompositeAppHomePlugin' });
81
+
82
+ export const CompositeAppThemeOverridesSchema = z
83
+ .strictObject({
84
+ disableDarkMode: z
85
+ .boolean()
86
+ .meta({ description: 'When true, forces light mode and disables dark mode (defaults to false)' })
87
+ .optional(),
88
+ })
89
+ .meta({ id: 'CompositeAppThemeOverrides', description: 'Theme overrides for the CompositeApp.' });
90
+
91
+ export const CompositeAppHeaderItemTargetSchema = z
92
+ .enum(['_self', '_blank'])
93
+ .meta({ id: 'CompositeAppHeaderItemTarget', description: 'Where a header link opens.' });
94
+
95
+ export const CompositeAppHeaderItemKindSchema = z.enum(['app_portal', 'docs', 'help', 'user_menu', 'custom']).meta({
96
+ id: 'CompositeAppHeaderItemKind',
97
+ description:
98
+ 'Discriminator for a header item. The four built-ins (`app_portal`, `docs`, `help`, `user_menu`) seed the default header and cannot be deleted (only hidden/customized); `custom` items are fully user-defined buttons.',
99
+ });
100
+
101
+ export const CompositeAppUserMenuOverridesSchema = z
102
+ .strictObject({
103
+ hidden: z.boolean().meta({ description: 'Whether to hide the User Menu (defaults to false)' }).optional(),
104
+ })
105
+ .meta({ id: 'CompositeAppUserMenuOverrides', description: 'User menu overrides for the CompositeApp.' });
106
+
107
+ export const CompositeAppHeaderOverridesSchema = z
108
+ .strictObject({
109
+ hideAppPortal: z
110
+ .boolean()
111
+ .meta({ description: 'Whether to hide the App Portal button (defaults to false)' })
112
+ .optional(),
113
+ hideDocs: z.boolean().meta({ description: 'Whether to hide the Docs button (defaults to false)' }).optional(),
114
+ hideHelp: z.boolean().meta({ description: 'Whether to hide the Help button (defaults to false)' }).optional(),
115
+ })
116
+ .meta({
117
+ id: 'CompositeAppHeaderOverrides',
118
+ description: 'Header button visibility overrides for the CompositeApp header.',
119
+ });
120
+
121
+ export const CompositeAppSidebarOverridesSchema = z
122
+ .strictObject({
123
+ hideSectionHeaders: z
124
+ .boolean()
125
+ .meta({ description: 'Whether to hide section title headers in the sidebar (defaults to false)' })
126
+ .optional(),
127
+ autoCollapse: z
128
+ .boolean()
129
+ .meta({
130
+ description:
131
+ 'Whether menu items auto-collapse when navigating (accordion behavior). When false, all items stay expanded. Defaults to true.',
132
+ })
133
+ .optional(),
134
+ autoCollapseSettings: z
135
+ .boolean()
136
+ .meta({
137
+ description:
138
+ 'Whether settings section items auto-collapse when navigating. Independent of autoCollapse which handles all other items. Defaults to true.',
139
+ })
140
+ .optional(),
141
+ autoCollapseFooter: z
142
+ .boolean()
143
+ .meta({
144
+ description:
145
+ 'Whether footer section items auto-collapse when navigating. Independent of autoCollapse which handles all other items. Defaults to true.',
146
+ })
147
+ .optional(),
148
+ })
149
+ .meta({ id: 'CompositeAppSidebarOverrides', description: 'Sidebar display overrides for the CompositeApp.' });
150
+
151
+ export const CompositeAppSwitchersOverridesSchema = z
152
+ .strictObject({
153
+ hideOrganization: z
154
+ .boolean()
155
+ .meta({ description: 'Whether to hide the organization switcher (defaults to false)' })
156
+ .optional(),
157
+ hideProject: z
158
+ .boolean()
159
+ .meta({ description: 'Whether to hide the project switcher (defaults to false)' })
160
+ .optional(),
161
+ })
162
+ .meta({
163
+ id: 'CompositeAppSwitchersOverrides',
164
+ description: 'Switcher visibility overrides for the CompositeApp header.',
165
+ });
166
+
167
+ export const CompositeAppMessageStyleSchema = z
168
+ .enum(['foreground', 'info', 'success', 'attention', 'destructive'])
169
+ .meta({ id: 'CompositeAppMessageStyle', description: 'Message banner overrides for the shell header.' });
170
+
171
+ export const CompositeAppLogoOverridesSchema = z
172
+ .strictObject({
173
+ lightModeUrl: z
174
+ .string()
175
+ .meta({ description: 'URL for light mode logo (overrides default Vertesia logo)' })
176
+ .optional(),
177
+ darkModeUrl: z
178
+ .string()
179
+ .meta({ description: 'URL for dark mode logo (overrides default Vertesia logo)' })
180
+ .optional(),
181
+ hideFooterLogo: z
182
+ .boolean()
183
+ .meta({
184
+ description:
185
+ 'Whether to hide the Vertesia footer logo in the sidebar when header logo is overridden (defaults to false)',
186
+ })
187
+ .optional(),
188
+ })
189
+ .meta({
190
+ id: 'CompositeAppLogoOverrides',
191
+ description:
192
+ 'Logo overrides for the CompositeApp shell header. When provided, these URLs replace the default Vertesia logo.',
193
+ });
194
+
195
+ export const CompositeAppCardOverridesSchema = z
196
+ .strictObject({
197
+ visible: z
198
+ .boolean()
199
+ .meta({ description: 'Whether to show the CompositeApp card in App Portal (default: false)' })
200
+ .optional(),
201
+ label: z.string().meta({ description: 'Override the card label (default: "Composite App")' }).optional(),
202
+ description: z.string().meta({ description: 'Override the card description' }).optional(),
203
+ icon: z
204
+ .string()
205
+ .meta({ description: 'Override the card icon (Lucide icon name or SVG content string)' })
206
+ .optional(),
207
+ color: z.string().meta({ description: 'Override the card color (e.g., "blue", "red", "purple")' }).optional(),
208
+ })
209
+ .meta({
210
+ id: 'CompositeAppCardOverrides',
211
+ description:
212
+ 'Card display overrides for the CompositeApp in the App Portal. Similar to AppManifest display properties, but specific to the CompositeApp card. Allows customers to customize the app portal card (not otherwise possible if using a shared, Vertesia-managed manifest across accounts).',
213
+ });
214
+
215
+ export const MCPOAuthConfigMapSchema = z.object({}).catchall(MCPOAuthConfigSchema).meta({ id: 'MCPOAuthConfigMap' });
216
+
217
+ export const InCodeViewDefinitionSchema = z
218
+ .strictObject({
219
+ id: z.string().meta({ description: 'App-local id. The platform normalizes it to app:<app-name>:<id>.' }),
220
+ name: z.string().meta({ description: 'App-local name used for lookup and diagnostics.' }),
221
+ title: z.string().optional(),
222
+ description: z.string().optional(),
223
+ tags: z.array(z.string()).optional(),
224
+ definition: ViewExperienceConfigurationSchema,
225
+ })
226
+ .meta({
227
+ id: 'InCodeViewDefinition',
228
+ description: 'A View definition contributed by application code through the app package endpoint.',
229
+ });
230
+
231
+ export const InCodeTypeDefinitionArraySchema = z
232
+ .array(InCodeTypeDefinitionSchema)
233
+ .meta({ id: 'InCodeTypeDefinitionArray' });
234
+
235
+ export const RenderingTemplateDefinitionRefArraySchema = z
236
+ .array(RenderingTemplateDefinitionRefSchema)
237
+ .meta({ id: 'RenderingTemplateDefinitionRefArray' });
238
+
239
+ export const InCodeProcessDefinitionSchema: z.ZodType<InCodeProcessDefinition> = z
240
+ .strictObject({
241
+ id: z.string().meta({
242
+ description:
243
+ 'Process identifier exposed by an app package. App-local ids are normalized by the platform to `app:<app-name>:<id>` when returned to callers.',
244
+ }),
245
+ name: z.string().meta({ description: 'Human-readable or app-local process name.' }),
246
+ title: z.string().optional(),
247
+ description: z.string().optional(),
248
+ tags: z.array(z.string()).optional(),
249
+ definition: ProcessDefinitionBodySchema as z.ZodType<InCodeProcessDefinition['definition']>,
250
+ })
251
+ .meta({ id: 'InCodeProcessDefinition' });
252
+
253
+ export const AppInstallationSchema = z
254
+ .strictObject({
255
+ id: z.string(),
256
+ project: z.string(),
257
+ manifest: z.string(),
258
+ settings: z.looseObject({}).optional(),
259
+ tool_allowlist: z
260
+ .array(z.string())
261
+ .meta({
262
+ description:
263
+ 'Admin-managed allowlist of tool names permitted for this installation. When undefined, all tools from the app are permitted. When set, only listed tool names are available for agent configuration and execution.',
264
+ })
265
+ .optional(),
266
+ oauth_bindings: z
267
+ .array(AppInstallationOAuthBindingSchema)
268
+ .meta({
269
+ description:
270
+ 'OAuth bindings created at install time via oauth_config provisioning. Maps collection identity (id or name) → OAuth provider ObjectId. Used by the runtime to resolve the correct OAuth provider without relying on manifest names.',
271
+ })
272
+ .optional(),
273
+ provider_bindings: z
274
+ .array(AppInstallationProviderBindingSchema)
275
+ .meta({
276
+ description:
277
+ 'OAuth bindings created at install time via oauth_providers provisioning. Maps provider key → OAuth provider ObjectId. Multiple collections sharing the same provider all resolve to the same OAuth provider.',
278
+ })
279
+ .optional(),
280
+ access_control: AppAccessControlSchema.meta({
281
+ description:
282
+ "Per-installation override of the manifest's access_control policy. When set, takes precedence over the manifest value. When undefined, the manifest value (or 'all' default) applies.",
283
+ }).optional(),
284
+ created_at: z.string(),
285
+ updated_at: z.string(),
286
+ })
287
+ .meta({ id: 'AppInstallation' });
288
+
289
+ export const AppWidgetInfoSchema = z
290
+ .strictObject({
291
+ collection: z.string(),
292
+ skill: z.string(),
293
+ url: z.string(),
294
+ })
295
+ .meta({ id: 'AppWidgetInfo' });
296
+
297
+ export const AppDashboardDefinitionSchema = z
298
+ .strictObject({
299
+ id: z.string().meta({ description: 'Local app dashboard ID.' }),
300
+ name: z.string().meta({ description: 'Machine-friendly dashboard name. Defaults to `id`.' }).optional(),
301
+ title: z.string().meta({ description: 'Display title. Defaults to `name` or `id`.' }).optional(),
302
+ description: z.string().meta({ description: 'User-facing description.' }).optional(),
303
+ tags: z.array(z.string()).meta({ description: 'Tags for discovery and filtering.' }).optional(),
304
+ dataSource: DashboardDataSourceSchema.meta({
305
+ description: 'Data source used to populate Vega `data.values`.',
306
+ }).optional(),
307
+ query: z
308
+ .string()
309
+ .meta({ description: 'SQL query shortcut for app dashboards backed by data stores.' })
310
+ .optional(),
311
+ queryLimit: z.number().meta({ description: 'Maximum SQL rows to return.' }).optional(),
312
+ queryParameters: StringValueMapSchema.meta({
313
+ description: 'Default values for SQL {{param}} placeholders.',
314
+ }).optional(),
315
+ spec: z.looseObject({}).meta({ description: 'Complete Vega-Lite specification for the dashboard.' }).optional(),
316
+ queries: z.array(DashboardQuerySchema).meta({ description: 'Legacy named SQL queries.' }).optional(),
317
+ panels: z.array(DashboardPanelSchema).meta({ description: 'Legacy panel definitions.' }).optional(),
318
+ layout: DashboardLayoutSchema.meta({ description: 'Legacy dashboard layout.' }).optional(),
319
+ })
320
+ .meta({
321
+ id: 'AppDashboardDefinition',
322
+ description:
323
+ 'Dashboard definition contributed by an app package.\n\nApp dashboard IDs are local to the app. The platform exposes them as `app:<app_name>:<id>` when listing or retrieving dashboards.',
324
+ });
325
+
326
+ export const AppManifestDataSchema = z
327
+ .strictObject({
328
+ name: z.string().meta({
329
+ description: 'The name of the app, used as the id in the system. Must be in kebab case (e.g. my-app).',
330
+ }),
331
+ visibility: z.enum(['public', 'private', 'vertesia']).meta({
332
+ description:
333
+ 'Visibility level of the app:\n- "public": visible to all accounts\n- "private": visible only to the owning account\n- "vertesia": visible only to Vertesia team members (any project)',
334
+ }),
335
+ title: z.string(),
336
+ description: z.string(),
337
+ publisher: z.string(),
338
+ icon: z.string().meta({ description: 'A svg icon for the app.' }).optional(),
339
+ color: z
340
+ .string()
341
+ .meta({
342
+ description:
343
+ 'A color name to be used as the color of the app card (e.g. blue, red, green, etc.) If not specified a random color will be picked.',
344
+ })
345
+ .optional(),
346
+ preview_screenshot: z
347
+ .strictObject({
348
+ agent_run_id: z
349
+ .string()
350
+ .meta({ description: 'Agent run id whose artifact storage holds the screenshot.' }),
351
+ artifact: z.string().meta({
352
+ description: 'Artifact path within that storage, e.g. "preview-checks/app-preview-<ts>.png".',
353
+ }),
354
+ })
355
+ .meta({
356
+ description:
357
+ "Optional preview screenshot for the app-management UI, captured by the builder during a build/QA run. Resolved client-side from the owning agent run's artifact storage, so it carries both the run id and the artifact path.",
358
+ })
359
+ .optional(),
360
+ status: z.enum(['beta', 'stable', 'deprecated']),
361
+ ui: AppUIConfigSchema.meta({
362
+ description:
363
+ 'The UI configuration of the app. If not specified and the app "ui" is in the app capabilities then the ui configuration will be fetched from the endpoint property.',
364
+ }).optional(),
365
+ tool_collections: z
366
+ .array(ToolCollectionObjectSchema)
367
+ .meta({
368
+ description:
369
+ 'A list of tool collections endpoints to be used by this app. Prefer using endpoint over tool_collections.',
370
+ })
371
+ .optional(),
372
+ oauth_providers: MCPOAuthConfigMapSchema.meta({
373
+ description:
374
+ 'Named OAuth providers shared across multiple MCP tool collections. Keys must be kebab-case identifiers. Each value is an MCPOAuthConfig blueprint. Collections reference a provider via MCPToolCollectionObject.oauth_provider. One OAuth provider is created per provider at install time; all referencing collections share that app via AppInstallation.provider_bindings.',
375
+ }).optional(),
376
+ interactions: z
377
+ .string()
378
+ .meta({
379
+ description:
380
+ 'An URL providing interactions definitions in JSON format. The URL must provide 2 endpoints: 1. GET URL - must return a JSON array with the list of interactions (as AppInteractionRef[]) 2. GET URL/{interaction_name} - must return the full interaction definition for the specified interaction. This feature is for advanced composition of interactions. Prefer using endpoint.',
381
+ })
382
+ .optional(),
383
+ settings_schema: JSONSchemaRefSchema.meta({
384
+ description:
385
+ 'A JSON chema for the app installation settings.\n\nDeprecated: Use endpoint to provide settings_schema instead',
386
+ deprecated: true,
387
+ 'x-deprecated-message': 'Use endpoint to provide settings_schema instead',
388
+ }).optional(),
389
+ capabilities: z
390
+ .array(AppCapabilitiesSchema)
391
+ .meta({ description: 'Describe the capabiltities of this app - which kind of contributions it provides.' })
392
+ .optional(),
393
+ endpoint: z
394
+ .string()
395
+ .meta({
396
+ description:
397
+ 'The app endpoint URL This URL should return a JSON object describing the contributions provided by the app. The object shape must satisfies AppPackage interface. The endpoint must support GET method and a `scope` parameter to filter which resources are included in the returned AppPackage: The supported scope values are:\n- ui\n- tools\n- interactions\n- types\n- processes\n- templates\n- dashboards\n- settings\n- all (the default if no scope is provided) You can also use comma-separated values to combine scopes (e.g. "ui,tools").\n\nExample:\n- ?scope=ui,tools - returns only the UI configuration',
398
+ })
399
+ .optional(),
400
+ endpoint_overrides: StringValueMapSchema.meta({
401
+ description:
402
+ 'Optional endpoint overrides keyed by environment name. When resolving the app endpoint, if the current environment name matches a key, the corresponding URL is used instead of the main `endpoint`. Only dev environment names are allowed as keys (starting with "desktop-" or "dev-").',
403
+ }).optional(),
404
+ version: z
405
+ .string()
406
+ .meta({ description: 'Optional app version string (e.g. "1.0.0") — informational.' })
407
+ .optional(),
408
+ source: AppSourceConfigSchema.meta({
409
+ description:
410
+ 'Source repository configuration for apps generated and maintained through AppGen. Branches are mutable development lanes; immutable app versions record their exact source commit in AppVersionRecord.source_commit and AppVersionRecord.storage.source_git.',
411
+ }).optional(),
412
+ tags: z
413
+ .array(z.string())
414
+ .meta({
415
+ description:
416
+ 'Free-form tags used for classification and filtering. Platform apps carry `"system"` so UIs can skip install/uninstall/manage-permission controls that don\'t apply to synthetic installations.',
417
+ })
418
+ .optional(),
419
+ access_control: AppAccessControlSchema.meta({
420
+ description:
421
+ "Access control policy for the app. Defaults to 'all' (ACE-gated everywhere) when undefined. See {@link AppAccessControl } for semantics. May be overridden on the AppInstallation.",
422
+ }).optional(),
423
+ })
424
+ .meta({ id: 'AppManifestData' });
425
+
426
+ export const CompositeAppMenuNavItemSchema: z.ZodType<CompositeAppMenuNavItem> = z
427
+ .strictObject({
428
+ id: z.string().meta({ description: 'Stable unique identifier' }),
429
+ label: z.string().meta({ description: 'Display label shown in the sidebar' }),
430
+ icon: z.string().meta({ description: 'Lucide icon name or SVG content string' }).optional(),
431
+ appName: z.string().meta({ description: 'Which installed app this item routes to' }).optional(),
432
+ route: z.string().meta({ description: 'Route path within the app (e.g. "/" or "/dashboard")' }).optional(),
433
+ hidden: z.boolean().meta({ description: 'When true, this item is hidden from the sidebar' }).optional(),
434
+ description: z
435
+ .string()
436
+ .nullable()
437
+ .meta({
438
+ anyOf: undefined,
439
+ type: ['string', 'null'],
440
+ description:
441
+ 'Optional description for dashboard cards and summary views. `null` = user explicitly cleared it (show no description, skip fallback). `undefined` / absent = no override (fall back to manifest description).',
442
+ })
443
+ .optional(),
444
+ hideFromDashboard: z
445
+ .boolean()
446
+ .meta({ description: 'When true, this item is excluded from the Composite App dashboard cards' })
447
+ .optional(),
448
+ permissions: CompositeAppNavItemPermissionsSchema.meta({
449
+ description: 'Optional access control settings for this nav item',
450
+ }).optional(),
451
+ get children() {
452
+ return z.array(CompositeAppMenuNavItemSchema).meta({ description: 'Ordered child nav-items' }).optional();
453
+ },
454
+ })
455
+ .meta({
456
+ id: 'CompositeAppMenuNavItem',
457
+ description:
458
+ 'A navigable item in the sidebar menu. An "app" is just a nav-item with `appName` + `route: "/"` that has children. Nav-items carry their own `appName` for routing, independent of position in the tree.',
459
+ });
460
+
461
+ export const CompositeAppHeaderItemSchema = z
462
+ .strictObject({
463
+ id: z
464
+ .string()
465
+ .meta({ description: 'Stable unique identifier. Built-ins use their kind as id (e.g. "app_portal").' }),
466
+ kind: CompositeAppHeaderItemKindSchema.meta({
467
+ description: 'Item kind. `custom` for user-added buttons; otherwise one of the four built-ins.',
468
+ }),
469
+ label: z.string().meta({ description: 'Display label, used as the button tooltip / accessible name.' }),
470
+ icon: z
471
+ .string()
472
+ .meta({ description: 'Lucide icon name or SVG content string. Ignored for `user_menu`.' })
473
+ .optional(),
474
+ href: z
475
+ .string()
476
+ .meta({ description: 'Destination route ("/...") or external URL. Ignored for `user_menu`.' })
477
+ .optional(),
478
+ target: CompositeAppHeaderItemTargetSchema.meta({
479
+ description: 'Where to open the link (defaults to "_self"). Ignored for `user_menu`.',
480
+ }).optional(),
481
+ hidden: z.boolean().meta({ description: 'When true, this item is hidden from the header.' }).optional(),
482
+ permissions: CompositeAppNavItemPermissionsSchema.meta({
483
+ description: 'Optional access control settings for this header item.',
484
+ }).optional(),
485
+ })
486
+ .meta({
487
+ id: 'CompositeAppHeaderItem',
488
+ description:
489
+ 'A single button in the CompositeApp header bar.\n\nUnlike sidebar nav-items, header items are free-form and not tied to an installed app: each is a labelled, icon-bearing button linking to a route or external URL. The `user_menu` item is special — it renders the account dropdown, so its `icon`, `href`, and `target` are ignored.',
490
+ });
491
+
492
+ export const CompositeAppMessageOverridesSchema = z
493
+ .strictObject({
494
+ text: z.string().meta({ description: 'Message text to display' }).optional(),
495
+ visible: z.boolean().meta({ description: 'Whether the message is visible (defaults to true)' }).optional(),
496
+ style: CompositeAppMessageStyleSchema.meta({
497
+ description: 'Text color style. Uses semantic colors',
498
+ }).optional(),
499
+ })
500
+ .meta({ id: 'CompositeAppMessageOverrides' });
501
+
502
+ export const AppManifestSchema = z
503
+ .strictObject({
504
+ name: z.string().meta({
505
+ description: 'The name of the app, used as the id in the system. Must be in kebab case (e.g. my-app).',
506
+ }),
507
+ visibility: z.enum(['public', 'private', 'vertesia']).meta({
508
+ description:
509
+ 'Visibility level of the app:\n- "public": visible to all accounts\n- "private": visible only to the owning account\n- "vertesia": visible only to Vertesia team members (any project)',
510
+ }),
511
+ title: z.string(),
512
+ description: z.string(),
513
+ publisher: z.string(),
514
+ icon: z.string().meta({ description: 'A svg icon for the app.' }).optional(),
515
+ color: z
516
+ .string()
517
+ .meta({
518
+ description:
519
+ 'A color name to be used as the color of the app card (e.g. blue, red, green, etc.) If not specified a random color will be picked.',
520
+ })
521
+ .optional(),
522
+ preview_screenshot: z
523
+ .strictObject({
524
+ agent_run_id: z
525
+ .string()
526
+ .meta({ description: 'Agent run id whose artifact storage holds the screenshot.' }),
527
+ artifact: z.string().meta({
528
+ description: 'Artifact path within that storage, e.g. "preview-checks/app-preview-<ts>.png".',
529
+ }),
530
+ })
531
+ .meta({
532
+ description:
533
+ "Optional preview screenshot for the app-management UI, captured by the builder during a build/QA run. Resolved client-side from the owning agent run's artifact storage, so it carries both the run id and the artifact path.",
534
+ })
535
+ .optional(),
536
+ status: z.enum(['beta', 'stable', 'deprecated']),
537
+ ui: AppUIConfigSchema.meta({
538
+ description:
539
+ 'The UI configuration of the app. If not specified and the app "ui" is in the app capabilities then the ui configuration will be fetched from the endpoint property.',
540
+ }).optional(),
541
+ tool_collections: z
542
+ .array(ToolCollectionObjectSchema)
543
+ .meta({
544
+ description:
545
+ 'A list of tool collections endpoints to be used by this app. Prefer using endpoint over tool_collections.',
546
+ })
547
+ .optional(),
548
+ oauth_providers: MCPOAuthConfigMapSchema.meta({
549
+ description:
550
+ 'Named OAuth providers shared across multiple MCP tool collections. Keys must be kebab-case identifiers. Each value is an MCPOAuthConfig blueprint. Collections reference a provider via MCPToolCollectionObject.oauth_provider. One OAuth provider is created per provider at install time; all referencing collections share that app via AppInstallation.provider_bindings.',
551
+ }).optional(),
552
+ interactions: z
553
+ .string()
554
+ .meta({
555
+ description:
556
+ 'An URL providing interactions definitions in JSON format. The URL must provide 2 endpoints: 1. GET URL - must return a JSON array with the list of interactions (as AppInteractionRef[]) 2. GET URL/{interaction_name} - must return the full interaction definition for the specified interaction. This feature is for advanced composition of interactions. Prefer using endpoint.',
557
+ })
558
+ .optional(),
559
+ settings_schema: JSONSchemaRefSchema.meta({
560
+ description:
561
+ 'A JSON chema for the app installation settings.\n\nDeprecated: Use endpoint to provide settings_schema instead',
562
+ deprecated: true,
563
+ 'x-deprecated-message': 'Use endpoint to provide settings_schema instead',
564
+ }).optional(),
565
+ capabilities: z
566
+ .array(AppCapabilitiesSchema)
567
+ .meta({ description: 'Describe the capabiltities of this app - which kind of contributions it provides.' })
568
+ .optional(),
569
+ endpoint: z
570
+ .string()
571
+ .meta({
572
+ description:
573
+ 'The app endpoint URL This URL should return a JSON object describing the contributions provided by the app. The object shape must satisfies AppPackage interface. The endpoint must support GET method and a `scope` parameter to filter which resources are included in the returned AppPackage: The supported scope values are:\n- ui\n- tools\n- interactions\n- types\n- processes\n- templates\n- dashboards\n- settings\n- all (the default if no scope is provided) You can also use comma-separated values to combine scopes (e.g. "ui,tools").\n\nExample:\n- ?scope=ui,tools - returns only the UI configuration',
574
+ })
575
+ .optional(),
576
+ endpoint_overrides: StringValueMapSchema.meta({
577
+ description:
578
+ 'Optional endpoint overrides keyed by environment name. When resolving the app endpoint, if the current environment name matches a key, the corresponding URL is used instead of the main `endpoint`. Only dev environment names are allowed as keys (starting with "desktop-" or "dev-").',
579
+ }).optional(),
580
+ version: z
581
+ .string()
582
+ .meta({ description: 'Optional app version string (e.g. "1.0.0") — informational.' })
583
+ .optional(),
584
+ source: AppManifestSourceSchema.meta({
585
+ description: 'Source metadata for generated or synced app manifests.',
586
+ }).optional(),
587
+ tags: z
588
+ .array(z.string())
589
+ .meta({
590
+ description:
591
+ 'Free-form tags used for classification and filtering. Platform apps carry `"system"` so UIs can skip install/uninstall/manage-permission controls that don\'t apply to synthetic installations.',
592
+ })
593
+ .optional(),
594
+ access_control: AppAccessControlSchema.meta({
595
+ description:
596
+ "Access control policy for the app. Defaults to 'all' (ACE-gated everywhere) when undefined. See {@link AppAccessControl } for semantics. May be overridden on the AppInstallation.",
597
+ }).optional(),
598
+ id: z.string(),
599
+ account: z
600
+ .string()
601
+ .meta({ description: 'The owning account. Undefined for apps imported from a master region.' })
602
+ .optional(),
603
+ created_at: z.string(),
604
+ updated_at: z.string(),
605
+ })
606
+ .meta({ id: 'AppManifest' });
607
+
608
+ export const InCodeViewDefinitionArraySchema = z
609
+ .array(InCodeViewDefinitionSchema)
610
+ .meta({ id: 'InCodeViewDefinitionArray' });
611
+
612
+ export const InCodeProcessDefinitionArraySchema = z
613
+ .array(InCodeProcessDefinitionSchema)
614
+ .meta({ id: 'InCodeProcessDefinitionArray' });
615
+
616
+ export const AppManifestArraySchema = z.array(AppManifestSchema).meta({ id: 'AppManifestArray' });
617
+
618
+ export const AppInstallationWithManifestSchema = z
619
+ .strictObject({
620
+ id: z.string(),
621
+ project: z.string(),
622
+ settings: z.looseObject({}).optional(),
623
+ tool_allowlist: z
624
+ .array(z.string())
625
+ .meta({
626
+ description:
627
+ 'Admin-managed allowlist of tool names permitted for this installation. When undefined, all tools from the app are permitted. When set, only listed tool names are available for agent configuration and execution.',
628
+ })
629
+ .optional(),
630
+ oauth_bindings: z
631
+ .array(AppInstallationOAuthBindingSchema)
632
+ .meta({
633
+ description:
634
+ 'OAuth bindings created at install time via oauth_config provisioning. Maps collection identity (id or name) → OAuth provider ObjectId. Used by the runtime to resolve the correct OAuth provider without relying on manifest names.',
635
+ })
636
+ .optional(),
637
+ provider_bindings: z
638
+ .array(AppInstallationProviderBindingSchema)
639
+ .meta({
640
+ description:
641
+ 'OAuth bindings created at install time via oauth_providers provisioning. Maps provider key → OAuth provider ObjectId. Multiple collections sharing the same provider all resolve to the same OAuth provider.',
642
+ })
643
+ .optional(),
644
+ access_control: AppAccessControlSchema.meta({
645
+ description:
646
+ "Per-installation override of the manifest's access_control policy. When set, takes precedence over the manifest value. When undefined, the manifest value (or 'all' default) applies.",
647
+ }).optional(),
648
+ created_at: z.string(),
649
+ updated_at: z.string(),
650
+ manifest: AppManifestSchema,
651
+ oauth_collection_ids: z
652
+ .array(z.string())
653
+ .meta({
654
+ description:
655
+ "Computed by the server: ids of MCP tool collections for this installation that require OAuth. Accounts for all three signals: manifest auth:'oauth', manifest oauth_app, and oauth_bindings. Populated by the GET /installations/all endpoint.",
656
+ })
657
+ .optional(),
658
+ })
659
+ .meta({ id: 'AppInstallationWithManifest' });
660
+
661
+ export const AppInstallationArraySchema = z.array(AppInstallationSchema).meta({ id: 'AppInstallationArray' });
662
+
663
+ export const AppInstallationListEntrySchema = z
664
+ .strictObject({
665
+ id: z.string(),
666
+ project: z.string(),
667
+ settings: z.looseObject({}).optional(),
668
+ tool_allowlist: z
669
+ .array(z.string())
670
+ .meta({
671
+ description:
672
+ 'Admin-managed allowlist of tool names permitted for this installation. When undefined, all tools from the app are permitted. When set, only listed tool names are available for agent configuration and execution.',
673
+ })
674
+ .optional(),
675
+ oauth_bindings: z
676
+ .array(AppInstallationOAuthBindingSchema)
677
+ .meta({
678
+ description:
679
+ 'OAuth bindings created at install time via oauth_config provisioning. Maps collection identity (id or name) → OAuth provider ObjectId. Used by the runtime to resolve the correct OAuth provider without relying on manifest names.',
680
+ })
681
+ .optional(),
682
+ provider_bindings: z
683
+ .array(AppInstallationProviderBindingSchema)
684
+ .meta({
685
+ description:
686
+ 'OAuth bindings created at install time via oauth_providers provisioning. Maps provider key → OAuth provider ObjectId. Multiple collections sharing the same provider all resolve to the same OAuth provider.',
687
+ })
688
+ .optional(),
689
+ access_control: AppAccessControlSchema.meta({
690
+ description:
691
+ "Per-installation override of the manifest's access_control policy. When set, takes precedence over the manifest value. When undefined, the manifest value (or 'all' default) applies.",
692
+ }).optional(),
693
+ created_at: z.string(),
694
+ updated_at: z.string(),
695
+ manifest: z.union([AppManifestSchema, z.null()]),
696
+ oauth_collection_ids: z.array(z.string()).optional(),
697
+ })
698
+ .meta({ id: 'AppInstallationListEntry' });
699
+
700
+ export const AppWidgetInfoMapSchema = z.object({}).catchall(AppWidgetInfoSchema).meta({ id: 'AppWidgetInfoMap' });
701
+
702
+ export const CompositeAppMenuSectionSchema = z
703
+ .strictObject({
704
+ id: z.string().meta({ description: 'Stable unique identifier' }),
705
+ label: z.string().meta({ description: 'Section heading label' }),
706
+ hidden: z
707
+ .boolean()
708
+ .meta({ description: 'When true, this section and its items are hidden from the sidebar' })
709
+ .optional(),
710
+ items: z.array(CompositeAppMenuNavItemSchema).meta({ description: 'Ordered nav-items within this section' }),
711
+ })
712
+ .meta({
713
+ id: 'CompositeAppMenuSection',
714
+ description:
715
+ 'A top-level section heading in the sidebar menu. Sections are always at root level and contain nav-items.',
716
+ });
717
+
718
+ export const PromoteAppVersionResponseSchema = z
719
+ .strictObject({
720
+ version: AppVersionRecordSchema,
721
+ app: AppManifestSchema.optional(),
722
+ })
723
+ .meta({ id: 'PromoteAppVersionResponse' });
724
+
725
+ export const AppInstallationWithManifestArraySchema = z
726
+ .array(AppInstallationWithManifestSchema)
727
+ .meta({ id: 'AppInstallationWithManifestArray' });
728
+
729
+ export const AppInstallationListEntryArraySchema = z
730
+ .array(AppInstallationListEntrySchema)
731
+ .meta({ id: 'AppInstallationListEntryArray' });
732
+
733
+ export const CompositeAppConfigSchema = z
734
+ .strictObject({
735
+ id: z
736
+ .string()
737
+ .meta({
738
+ description:
739
+ "The unique identifier for this CompositeApp configuration Undefined if the configuration doesn't exists yet.",
740
+ })
741
+ .optional(),
742
+ project: z.string().meta({ description: 'The project this CompositeApp belongs to' }),
743
+ card: CompositeAppCardOverridesSchema.meta({
744
+ description: 'Card display overrides (includes visibility)',
745
+ }).optional(),
746
+ logo: CompositeAppLogoOverridesSchema.meta({
747
+ description: 'Optional logo overrides (replaces default Vertesia logo)',
748
+ }).optional(),
749
+ message: CompositeAppMessageOverridesSchema.meta({
750
+ description: 'Optional message banner overrides',
751
+ }).optional(),
752
+ switchers: CompositeAppSwitchersOverridesSchema.meta({
753
+ description: 'Optional switcher visibility overrides',
754
+ }).optional(),
755
+ sidebar: CompositeAppSidebarOverridesSchema.meta({
756
+ description: 'Optional sidebar display overrides',
757
+ }).optional(),
758
+ header: CompositeAppHeaderOverridesSchema.meta({
759
+ description:
760
+ 'Deprecated: Use `headerMenu` instead. Optional header button visibility overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
761
+ deprecated: true,
762
+ 'x-deprecated-message':
763
+ 'Use `headerMenu` instead. Optional header button visibility overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
764
+ }).optional(),
765
+ userMenu: CompositeAppUserMenuOverridesSchema.meta({
766
+ description:
767
+ 'Deprecated: Use the `user_menu` item in `headerMenu` instead. Optional user menu overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
768
+ deprecated: true,
769
+ 'x-deprecated-message':
770
+ 'Use the `user_menu` item in `headerMenu` instead. Optional user menu overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
771
+ }).optional(),
772
+ headerMenu: z
773
+ .array(CompositeAppHeaderItemSchema)
774
+ .meta({
775
+ description:
776
+ "Optional free-form header menu. When present, the header renders from this ordered list instead of the legacy `header`/`userMenu` flags. Built-in items (App Portal, Docs, Help, User Menu) can be hidden/relabeled/re-icon'd/redirected; custom items are arbitrary buttons.",
777
+ })
778
+ .optional(),
779
+ theme: CompositeAppThemeOverridesSchema.meta({
780
+ description: 'Optional theme overrides (e.g. disable dark mode)',
781
+ }).optional(),
782
+ homePlugin: z
783
+ .union([CompositeAppHomePluginSchema, z.null()])
784
+ .meta({
785
+ description:
786
+ 'Optional home page override. When set, redirects "/" to the specified app route instead of the dashboard. Send null to unset.',
787
+ })
788
+ .optional(),
789
+ apps: z.array(CompositeAppEntrySchema).meta({
790
+ description:
791
+ 'List of apps to include in the CompositeApp (used for installation tracking and fallback sidebar)',
792
+ }),
793
+ menu: z
794
+ .array(CompositeAppMenuSectionSchema)
795
+ .meta({
796
+ description:
797
+ 'Optional sidebar menu. When present, the sidebar renders from this instead of the apps-based pipeline. Top-level array is sections; each section contains nav-items.',
798
+ })
799
+ .optional(),
800
+ })
801
+ .meta({
802
+ id: 'CompositeAppConfig',
803
+ description:
804
+ 'CompositeApp shell configuration. This is the main configuration interface for storing CompositeApp settings. Used as the MongoDB model for persisting CompositeApp configurations.',
805
+ });
806
+
807
+ export const AppPackageSchema = z
808
+ .strictObject({
809
+ ui: AppUIConfigSchema.meta({ description: 'The UI configuration of the app' }).optional(),
810
+ tools: z
811
+ .array(AgentToolDefinitionSchema)
812
+ .meta({ description: 'A list of tools exposed by the app.' })
813
+ .optional(),
814
+ skills: z
815
+ .array(AgentToolDefinitionSchema)
816
+ .meta({
817
+ description:
818
+ "A list of skills (`learn_*` tools) exposed by the app. Kept separate from `tools` so clients can render them distinctly — consumers that don't care (e.g. the worker building a combined tool registry) should concatenate the two lists.",
819
+ })
820
+ .optional(),
821
+ interactions: z
822
+ .array(CatalogInteractionRefSchema)
823
+ .meta({ description: 'A list of interactions exposed by the app' })
824
+ .optional(),
825
+ types: z.array(InCodeTypeDefinitionSchema).meta({ description: 'A list of types.' }).optional(),
826
+ processes: z
827
+ .array(InCodeProcessDefinitionSchema)
828
+ .meta({ description: 'A list of process definitions exposed by the app.' })
829
+ .optional(),
830
+ views: z
831
+ .array(InCodeViewDefinitionSchema)
832
+ .meta({ description: 'View Experiences exposed by the app as in-code definitions.' })
833
+ .optional(),
834
+ templates: z
835
+ .array(RenderingTemplateDefinitionRefSchema)
836
+ .meta({ description: 'Templates provided by the app.' })
837
+ .optional(),
838
+ dashboards: z
839
+ .array(AppDashboardDefinitionSchema)
840
+ .meta({ description: 'Dashboards provided by the app.' })
841
+ .optional(),
842
+ widgets: AppWidgetInfoMapSchema.meta({ description: 'Widgets provided by the app.' }).optional(),
843
+ activities: z
844
+ .array(RemoteActivityDefinitionSchema)
845
+ .meta({
846
+ description:
847
+ 'Remote activities exposed by the app for use in DSL workflows. Activities are discovered via `?scope=activities` and referenced in workflow steps using colon-separated names: `app:<app_name>:<collection>:<activity_name>`.',
848
+ })
849
+ .optional(),
850
+ settings_schema: JSONSchemaRefSchema.meta({
851
+ description: 'A JSON chema for the app installation settings.',
852
+ }).optional(),
853
+ })
854
+ .meta({ id: 'AppPackage' });
855
+
856
+ export const CompositeAppConfigPayloadSchema = z
857
+ .strictObject({
858
+ card: CompositeAppCardOverridesSchema.meta({
859
+ description: 'Card display overrides (includes visibility)',
860
+ }).optional(),
861
+ logo: CompositeAppLogoOverridesSchema.meta({
862
+ description: 'Optional logo overrides (replaces default Vertesia logo)',
863
+ }).optional(),
864
+ message: CompositeAppMessageOverridesSchema.meta({
865
+ description: 'Optional message banner overrides',
866
+ }).optional(),
867
+ switchers: CompositeAppSwitchersOverridesSchema.meta({
868
+ description: 'Optional switcher visibility overrides',
869
+ }).optional(),
870
+ sidebar: CompositeAppSidebarOverridesSchema.meta({
871
+ description: 'Optional sidebar display overrides',
872
+ }).optional(),
873
+ header: CompositeAppHeaderOverridesSchema.meta({
874
+ description:
875
+ 'Deprecated: Use `headerMenu` instead. Optional header button visibility overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
876
+ deprecated: true,
877
+ 'x-deprecated-message':
878
+ 'Use `headerMenu` instead. Optional header button visibility overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
879
+ }).optional(),
880
+ userMenu: CompositeAppUserMenuOverridesSchema.meta({
881
+ description:
882
+ 'Deprecated: Use the `user_menu` item in `headerMenu` instead. Optional user menu overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
883
+ deprecated: true,
884
+ 'x-deprecated-message':
885
+ 'Use the `user_menu` item in `headerMenu` instead. Optional user menu overrides.\nStill read to seed `headerMenu` defaults for configs saved before the header menu existed.',
886
+ }).optional(),
887
+ headerMenu: z
888
+ .array(CompositeAppHeaderItemSchema)
889
+ .meta({
890
+ description:
891
+ "Optional free-form header menu. When present, the header renders from this ordered list instead of the legacy `header`/`userMenu` flags. Built-in items (App Portal, Docs, Help, User Menu) can be hidden/relabeled/re-icon'd/redirected; custom items are arbitrary buttons.",
892
+ })
893
+ .optional(),
894
+ theme: CompositeAppThemeOverridesSchema.meta({
895
+ description: 'Optional theme overrides (e.g. disable dark mode)',
896
+ }).optional(),
897
+ homePlugin: z
898
+ .union([CompositeAppHomePluginSchema, z.null()])
899
+ .meta({
900
+ description:
901
+ 'Optional home page override. When set, redirects "/" to the specified app route instead of the dashboard. Send null to unset.',
902
+ })
903
+ .optional(),
904
+ apps: z
905
+ .array(CompositeAppEntrySchema)
906
+ .meta({
907
+ description:
908
+ 'List of apps to include in the CompositeApp (used for installation tracking and fallback sidebar)',
909
+ })
910
+ .optional(),
911
+ menu: z
912
+ .array(CompositeAppMenuSectionSchema)
913
+ .meta({
914
+ description:
915
+ 'Optional sidebar menu. When present, the sidebar renders from this instead of the apps-based pipeline. Top-level array is sections; each section contains nav-items.',
916
+ })
917
+ .optional(),
918
+ })
919
+ .meta({ id: 'CompositeAppConfigPayload' });