@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,260 @@
1
+ import { Ajv2020 } from 'ajv/dist/2020.js';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { AccountType, BillingMethod } from '../user.js';
4
+ import { findUnprunablePaths, type JsonObject, pruneToSchema, toOpenApiComponents } from './adapter.js';
5
+ import {
6
+ type ApiComponentType,
7
+ ApiSchemaComponents,
8
+ apiComponentRef,
9
+ pruneAndValidateApiResponse,
10
+ pruneApiResponse,
11
+ } from './registry.js';
12
+
13
+ function compile(name: string) {
14
+ const ajv = new Ajv2020({ strictSchema: false, allErrors: true });
15
+ ajv.addSchema({ $id: 'vertesia://openapi', components: { schemas: ApiSchemaComponents } });
16
+ return ajv.compile({ $ref: `vertesia://openapi${apiComponentRef(name as never)}` });
17
+ }
18
+
19
+ const ACCOUNT: ApiComponentType<'Account'> = {
20
+ id: 'acc_1',
21
+ name: 'Acme',
22
+ email_domains: ['acme.com'],
23
+ onboarding: { completed: true, completed_at: '2026-07-29T10:00:00.000Z' },
24
+ datacenter: 'gcp',
25
+ account_type: AccountType.customer,
26
+ billing: { method: BillingMethod.stripe, stripe_customer_id: 'cus_1' },
27
+ feature_flags: { new_editor: true, beta_agents: 'on' },
28
+ created_by: 'u1',
29
+ updated_by: 'u1',
30
+ created_at: '2026-07-29T10:00:00.000Z',
31
+ updated_at: '2026-07-29T10:00:00.000Z',
32
+ };
33
+
34
+ /**
35
+ * An Account carrying extra runtime fields — what a Mongo document actually is. The cast models
36
+ * the gap the pruner exists to close: the value is typed as the component, but at runtime it has
37
+ * more than the component declares.
38
+ */
39
+ const withExtras = (extra: Record<string, unknown>): ApiComponentType<'Account'> =>
40
+ ({ ...ACCOUNT, ...extra }) as ApiComponentType<'Account'>;
41
+
42
+ describe('response pruning narrows payloads to the published contract', () => {
43
+ it('drops undeclared top-level fields', () => {
44
+ const pruned = pruneApiResponse(
45
+ 'Account',
46
+ withExtras({ __v: 3, internal_notes: 'do not ship', stripe_secret: 'sk_live_leak' }),
47
+ );
48
+ expect(pruned).toEqual(ACCOUNT);
49
+ expect('stripe_secret' in pruned).toBe(false);
50
+ });
51
+
52
+ it('drops undeclared fields nested inside a declared object', () => {
53
+ const pruned = pruneApiResponse(
54
+ 'Account',
55
+ withExtras({
56
+ onboarding: { ...ACCOUNT.onboarding, internal_step: 7 },
57
+ billing: { ...ACCOUNT.billing, stripe_secret_key: 'sk_live_leak' },
58
+ }),
59
+ );
60
+ expect(pruned.onboarding).toEqual(ACCOUNT.onboarding);
61
+ expect(pruned.billing).toEqual(ACCOUNT.billing);
62
+ });
63
+
64
+ it('PRESERVES the contents of freeform maps', () => {
65
+ // The regression this design exists to avoid: AJV's removeAdditional:'all' strips keys
66
+ // from objects that declare additionalProperties too, which is how launch_workstream's
67
+ // `data` was emptied. `feature_flags` is `{additionalProperties:{}}` with no `properties`,
68
+ // so every operator flag would vanish under a blanket removal mode.
69
+ const pruned = pruneApiResponse('Account', ACCOUNT);
70
+ expect(pruned.feature_flags).toEqual({ new_editor: true, beta_agents: 'on' });
71
+ });
72
+
73
+ it('leaves a conforming payload byte-identical', () => {
74
+ expect(pruneApiResponse('Account', ACCOUNT)).toEqual(ACCOUNT);
75
+ });
76
+
77
+ it('never mutates the payload it is given', () => {
78
+ const input = withExtras({ rogue: 1 });
79
+ const pristine = structuredClone(input);
80
+ pruneApiResponse('Account', input);
81
+ expect(input).toEqual(pristine);
82
+ });
83
+
84
+ it('produces output that validates against the published schema', () => {
85
+ const validate = compile('Account');
86
+ const pruned = pruneApiResponse('Account', withExtras({ leaked: 'x' }));
87
+ expect(validate(pruned)).toBe(true);
88
+ });
89
+
90
+ it('does not throw on a payload that is missing required fields', () => {
91
+ // Pruning is not validation. A malformed document still reaches the client rather than
92
+ // becoming a 500 — surfacing drift is the validator's job, not the pruner's.
93
+ const malformed = { id: 'acc_1', junk: true } as unknown as ApiComponentType<'Account'>;
94
+ expect(() => pruneApiResponse('Account', malformed)).not.toThrow();
95
+ expect(pruneApiResponse('Account', malformed)).toEqual({ id: 'acc_1' });
96
+ });
97
+ });
98
+
99
+ describe('pruneAndValidateApiResponse is the sound entry point for untyped payloads', () => {
100
+ it('returns the component type only on the valid branch', () => {
101
+ const result = pruneAndValidateApiResponse('Account', withExtras({ leaked: 'x' }));
102
+ expect(result.valid).toBe(true);
103
+ if (result.valid) {
104
+ // Reachable as the component type only after validation succeeded.
105
+ const id: string = result.data.id;
106
+ expect(id).toBe('acc_1');
107
+ expect('leaked' in result.data).toBe(false);
108
+ }
109
+ });
110
+
111
+ it('reports errors instead of typing an incomplete payload as complete', () => {
112
+ // The unsoundness this replaces: narrowing `{id}` and handing it back as a full Account.
113
+ const result = pruneAndValidateApiResponse('Account', { id: 'acc_1', junk: true });
114
+ expect(result.valid).toBe(false);
115
+ if (!result.valid) {
116
+ expect(result.errors.join(' ')).toContain("must have required property 'name'");
117
+ // The pruned value is still available, so the caller chooses ship-and-log or fail.
118
+ expect(result.data).toEqual({ id: 'acc_1' });
119
+ }
120
+ });
121
+
122
+ it('flags a legacy account missing created_by/updated_by', () => {
123
+ // Real migration hazard: the Mongo schema declares these without `required`, and the
124
+ // BackfillAccountCreatedBy migration skips ownerless accounts by design.
125
+ const { created_by: _c, updated_by: _u, ...legacy } = ACCOUNT;
126
+ const result = pruneAndValidateApiResponse('Account', legacy);
127
+ expect(result.valid).toBe(false);
128
+ if (!result.valid) {
129
+ expect(result.errors.join(' ')).toContain('created_by');
130
+ expect(result.errors.join(' ')).toContain('updated_by');
131
+ }
132
+ });
133
+ });
134
+
135
+ describe('response pruning through structural schema features', () => {
136
+ it('follows the discriminator to the matching union branch', () => {
137
+ const enabled = pruneApiResponse('StripeBillingStatusResponse', {
138
+ status: 'enabled',
139
+ billing_method: 'stripe',
140
+ portal_url: 'https://billing',
141
+ internal_session_id: 'leak',
142
+ } as never);
143
+ expect(enabled).toEqual({ status: 'enabled', billing_method: 'stripe', portal_url: 'https://billing' });
144
+
145
+ const disabled = pruneApiResponse('StripeBillingStatusResponse', {
146
+ status: 'disabled',
147
+ billing_method: null,
148
+ reason: 'No billing method',
149
+ internal_trace: 'leak',
150
+ } as never);
151
+ expect(disabled).toEqual({ status: 'disabled', billing_method: null, reason: 'No billing method' });
152
+ });
153
+
154
+ it('prunes inside arrays', () => {
155
+ const components = toOpenApiComponents({
156
+ Page: {
157
+ type: 'object',
158
+ properties: {
159
+ items: {
160
+ type: 'array',
161
+ items: { $id: 'Row', type: 'object', properties: { id: { type: 'string' } } },
162
+ },
163
+ },
164
+ },
165
+ });
166
+ const pruned = pruneToSchema(
167
+ {
168
+ items: [
169
+ { id: 'a', secret: 1 },
170
+ { id: 'b', secret: 2 },
171
+ ],
172
+ extra: true,
173
+ },
174
+ { $ref: '#/components/schemas/Page' },
175
+ components,
176
+ ) as JsonObject;
177
+ expect(pruned).toEqual({ items: [{ id: 'a' }, { id: 'b' }] });
178
+ });
179
+
180
+ it('leaves ambiguous schemas untouched rather than guessing', () => {
181
+ // An undiscriminated union and an allOf could each drop fields that belong to a branch we
182
+ // cannot identify, so the payload passes through intact.
183
+ const components = toOpenApiComponents({
184
+ Loose: { anyOf: [{ type: 'object', properties: { a: { type: 'string' } } }, { type: 'object' }] },
185
+ Merged: { allOf: [{ type: 'object', properties: { a: { type: 'string' } } }] },
186
+ });
187
+ const payload = { a: 'x', b: 'keep' };
188
+ expect(pruneToSchema(payload, { $ref: '#/components/schemas/Loose' }, components)).toEqual(payload);
189
+ expect(pruneToSchema(payload, { $ref: '#/components/schemas/Merged' }, components)).toEqual(payload);
190
+ });
191
+
192
+ it('keeps extras where a component explicitly declares itself extensible', () => {
193
+ const components = toOpenApiComponents({
194
+ Open: { type: 'object', properties: { a: { type: 'string' } }, additionalProperties: true },
195
+ });
196
+ expect(pruneToSchema({ a: 'x', b: 'keep' }, { $ref: '#/components/schemas/Open' }, components)).toEqual({
197
+ a: 'x',
198
+ b: 'keep',
199
+ });
200
+ });
201
+
202
+ it('keeps properties documented on a $ref sibling', () => {
203
+ // 2020-12 applies $ref siblings as additional constraints, so `extra` is declared here
204
+ // and must survive pruning rather than being dropped as unknown.
205
+ const components = toOpenApiComponents({
206
+ Wrapper: {
207
+ type: 'object',
208
+ properties: {
209
+ inner: {
210
+ $ref: '#/$defs/Base',
211
+ properties: { extra: { type: 'string' } },
212
+ required: ['extra'],
213
+ },
214
+ },
215
+ $defs: { Base: { type: 'object', properties: { a: { type: 'string' } }, required: ['a'] } },
216
+ },
217
+ });
218
+ const pruned = pruneToSchema(
219
+ { inner: { a: 'x', extra: 'documented', undeclared: 'drop' } },
220
+ { $ref: '#/components/schemas/Wrapper' },
221
+ components,
222
+ );
223
+ expect(pruned).toEqual({ inner: { a: 'x', extra: 'documented' } });
224
+ });
225
+
226
+ it('follows a chain of aliased references to the terminal schema', () => {
227
+ // A component that is itself a reference is an alias. Resolving only one hop would leave a
228
+ // node whose `properties` lists just `extra`, so pruning would read that as the entire
229
+ // shape and drop `a` — which Base requires, making the pruned response fail validation.
230
+ const components = toOpenApiComponents({
231
+ Alias: {
232
+ $ref: '#/components/schemas/Base',
233
+ properties: { extra: { type: 'string' } },
234
+ required: ['extra'],
235
+ },
236
+ Base: { type: 'object', properties: { a: { type: 'string' } }, required: ['a'] },
237
+ });
238
+ const ref = { $ref: '#/components/schemas/Alias' };
239
+
240
+ const pruned = pruneToSchema({ a: 'x', extra: 'documented', undeclared: 'drop' }, ref, components);
241
+ expect(pruned).toEqual({ a: 'x', extra: 'documented' });
242
+ // The detector recurses through references, so it must reach the same terminal schema —
243
+ // a divergence here means it certifies a component the pruner then mangles.
244
+ expect(findUnprunablePaths(ref, components)).toEqual([]);
245
+
246
+ const ajv = new Ajv2020({ strictSchema: false, allErrors: true });
247
+ ajv.addSchema({ $id: 'vertesia://chain', components: { schemas: components } });
248
+ expect(ajv.validate({ $ref: 'vertesia://chain#/components/schemas/Alias' }, pruned)).toBe(true);
249
+ });
250
+
251
+ it('strips undeclared fields on a component closed with additionalProperties:false', () => {
252
+ const components = toOpenApiComponents(
253
+ { Closed: { type: 'object', properties: { a: { type: 'string' } } } },
254
+ { strictComponents: new Set(['Closed']) },
255
+ );
256
+ expect(pruneToSchema({ a: 'x', b: 'drop' }, { $ref: '#/components/schemas/Closed' }, components)).toEqual({
257
+ a: 'x',
258
+ });
259
+ });
260
+ });
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+
3
+ /** Nullable scalar encodings shared by schemas that preserve the compact OpenAPI 3.1 spelling. */
4
+ export const nullableStringSchema = z
5
+ .string()
6
+ .nullable()
7
+ .meta({ anyOf: undefined, type: ['string', 'null'] });
8
+
9
+ export const nullableNumberSchema = z
10
+ .number()
11
+ .nullable()
12
+ .meta({ anyOf: undefined, type: ['number', 'null'] });
@@ -0,0 +1,332 @@
1
+ // Runtime schemas for the secrets API domain.
2
+ import { z } from 'zod';
3
+ import { EventCategorySchema } from './audit-trail.js';
4
+
5
+ export const EventWebhookSigningSecretRequestSchema = z
6
+ .strictObject({
7
+ account_id: z.string().optional(),
8
+ project_id: z.string(),
9
+ })
10
+ .meta({ id: 'EventWebhookSigningSecretRequest' });
11
+
12
+ export const EventWebhookSigningSecretResponseSchema = z
13
+ .strictObject({
14
+ subscription_id: z.string(),
15
+ secret: z.string(),
16
+ secret_label: z.string(),
17
+ })
18
+ .meta({ id: 'EventWebhookSigningSecretResponse' });
19
+
20
+ export const SignEventWebhookRequestSchema = EventWebhookSigningSecretRequestSchema.extend({
21
+ delivery_id: z.string(),
22
+ body: z.string(),
23
+ event_id: z.string(),
24
+ event_category: EventCategorySchema,
25
+ action: z.string(),
26
+ timestamp: z.number().optional(),
27
+ }).meta({ id: 'SignEventWebhookRequest' });
28
+
29
+ export const SignEventWebhookResponseSchema = z
30
+ .strictObject({
31
+ headers: z.record(z.string(), z.string()),
32
+ timestamp: z.number(),
33
+ signature: z.string(),
34
+ })
35
+ .meta({ id: 'SignEventWebhookResponse' });
36
+
37
+ export const EventIngestSigningSecretRequestSchema = z
38
+ .strictObject({
39
+ account_id: z.string().optional(),
40
+ project_id: z.string(),
41
+ })
42
+ .meta({ id: 'EventIngestSigningSecretRequest' });
43
+
44
+ export const EventIngestSigningSecretResponseSchema = z
45
+ .strictObject({
46
+ channel_id: z.string(),
47
+ secret: z.string(),
48
+ secret_label: z.string(),
49
+ })
50
+ .meta({ id: 'EventIngestSigningSecretResponse' });
51
+
52
+ export const VerifyEventIngestSignatureRequestSchema = EventIngestSigningSecretRequestSchema.extend({
53
+ body: z.string(),
54
+ signature_header: z.string(),
55
+ algorithm: z.enum(['sha256', 'sha1']).optional(),
56
+ encoding: z.enum(['hex', 'base64']).optional(),
57
+ prefix: z.string().optional(),
58
+ }).meta({ id: 'VerifyEventIngestSignatureRequest' });
59
+
60
+ export const VerifyEventIngestSignatureResponseSchema = z
61
+ .strictObject({
62
+ valid: z.boolean(),
63
+ })
64
+ .meta({ id: 'VerifyEventIngestSignatureResponse' });
65
+
66
+ export const GithubInstallationTokenRequestSchema = z
67
+ .strictObject({
68
+ account_id: z.string().optional(),
69
+ project_id: z.string(),
70
+ installation_id: z.string(),
71
+ repo: z.string(),
72
+ })
73
+ .meta({ id: 'GithubInstallationTokenRequest' });
74
+
75
+ export const GithubInstallationTokenResponseSchema = z
76
+ .strictObject({
77
+ token: z.string(),
78
+ expires_at: z.string().optional(),
79
+ })
80
+ .meta({ id: 'GithubInstallationTokenResponse' });
81
+
82
+ export const InternalSecretDeleteResponseSchema = z
83
+ .strictObject({
84
+ deleted: z.literal(true),
85
+ })
86
+ .meta({ id: 'InternalSecretDeleteResponse' });
87
+
88
+ export const WebsiteCredentialTotpAlgorithmSchema = z
89
+ .enum(['SHA1', 'SHA256', 'SHA512'])
90
+ .meta({ id: 'WebsiteCredentialTotpAlgorithm' });
91
+
92
+ export const WebsiteCredentialTotpMetadataSchema = z
93
+ .strictObject({
94
+ algorithm: WebsiteCredentialTotpAlgorithmSchema.optional(),
95
+ digits: z
96
+ .union([z.literal(6), z.literal(8)])
97
+ .meta({ anyOf: undefined, type: 'number', enum: [6, 8] })
98
+ .optional(),
99
+ period: z.number().optional(),
100
+ issuer: z.string().optional(),
101
+ account: z.string().optional(),
102
+ })
103
+ .meta({ id: 'WebsiteCredentialTotpMetadata' });
104
+
105
+ export const WebsiteCredentialSecretInputSchema = z
106
+ .strictObject({
107
+ username: z
108
+ .string()
109
+ .meta({
110
+ description:
111
+ 'Optional encrypted username. Prefer metadata.username unless the username itself is sensitive.',
112
+ })
113
+ .optional(),
114
+ password: z.string().optional(),
115
+ totp: z
116
+ .strictObject({
117
+ seed: z.string(),
118
+ algorithm: WebsiteCredentialTotpAlgorithmSchema.optional(),
119
+ digits: z
120
+ .union([z.literal(6), z.literal(8)])
121
+ .meta({ anyOf: undefined, type: 'number', enum: [6, 8] })
122
+ .optional(),
123
+ period: z.number().optional(),
124
+ issuer: z.string().optional(),
125
+ account: z.string().optional(),
126
+ })
127
+ .optional(),
128
+ oauth: z
129
+ .strictObject({
130
+ provider_id: z.string().optional(),
131
+ token_owner: z.enum(['user', 'project']).optional(),
132
+ token_ref: z.string().optional(),
133
+ })
134
+ .meta({
135
+ description: 'Future OAuth materialization hook. The token itself remains in the OAuth secret store.',
136
+ })
137
+ .optional(),
138
+ })
139
+ .meta({ id: 'WebsiteCredentialSecretInput' });
140
+
141
+ export const WebsiteCredentialCapabilitySchema = z
142
+ .enum(['password', 'totp', 'oauth'])
143
+ .meta({ id: 'WebsiteCredentialCapability' });
144
+
145
+ export const WebsiteCredentialWebsiteSchema = z
146
+ .strictObject({
147
+ host: z.string().meta({ description: 'Hostname this credential is allowed on. Subdomains match.' }),
148
+ login_url: z.string().meta({ description: 'Optional login URL used by agents as a hint.' }).optional(),
149
+ allowed_origins: z
150
+ .array(z.string())
151
+ .meta({ description: 'Optional narrower origin allowlist for this credential.' })
152
+ .optional(),
153
+ })
154
+ .meta({ id: 'WebsiteCredentialWebsite' });
155
+
156
+ export const SecretKindSchema = z.literal('website_credential').meta({ id: 'SecretKind' });
157
+
158
+ export const SecretProjectQuerySchema = z
159
+ .object({
160
+ project_id: z
161
+ .string()
162
+ .meta({
163
+ description: 'Project scope for top-level secret APIs. Must match the authenticated project context.',
164
+ })
165
+ .optional(),
166
+ })
167
+ .meta({ id: 'SecretProjectQuery' });
168
+
169
+ export const ListSecretsQuerySchema = SecretProjectQuerySchema.extend({
170
+ kind: SecretKindSchema.optional(),
171
+ host: z.string().optional(),
172
+ enabled: z.boolean().optional(),
173
+ }).meta({ id: 'ListSecretsQuery' });
174
+
175
+ export const SecretLookupQuerySchema = SecretProjectQuerySchema.extend({
176
+ kind: SecretKindSchema.optional(),
177
+ }).meta({ id: 'SecretLookupQuery' });
178
+
179
+ export const WebsiteCredentialRecordSchema = z
180
+ .strictObject({
181
+ id: z.string(),
182
+ credential_ref: z.string(),
183
+ project: z.string(),
184
+ name: z.string(),
185
+ websites: z.array(WebsiteCredentialWebsiteSchema),
186
+ username: z.string().optional(),
187
+ username_hint: z.string().optional(),
188
+ username_secret_enabled: z.boolean(),
189
+ properties: z.looseObject({}).optional(),
190
+ tags: z.array(z.string()).optional(),
191
+ enabled: z.boolean().optional(),
192
+ capabilities: z.array(WebsiteCredentialCapabilitySchema).optional(),
193
+ notes: z.string().optional(),
194
+ totp_metadata: WebsiteCredentialTotpMetadataSchema.optional(),
195
+ expires_at: z
196
+ .string()
197
+ .meta({
198
+ description:
199
+ 'Optional ISO timestamp after which the credential is no longer usable. Expired credentials are hidden from lookup and cannot be filled.',
200
+ })
201
+ .optional(),
202
+ created_at: z.string().optional(),
203
+ updated_at: z.string().optional(),
204
+ has_username_secret: z.boolean(),
205
+ has_password: z.boolean(),
206
+ has_totp: z.boolean(),
207
+ has_oauth: z.boolean(),
208
+ password_hint: z.string().optional(),
209
+ })
210
+ .meta({ id: 'WebsiteCredentialRecord' });
211
+
212
+ export const WebsiteCredentialFillResponseSchema = z
213
+ .strictObject({
214
+ ok: z.boolean(),
215
+ credential_ref: z.string(),
216
+ url: z.string(),
217
+ title: z.string(),
218
+ filled: z.strictObject({
219
+ username: z.boolean(),
220
+ password: z.boolean(),
221
+ totp: z.boolean(),
222
+ submitted: z.boolean(),
223
+ }),
224
+ })
225
+ .meta({ id: 'WebsiteCredentialFillResponse' });
226
+
227
+ export const WebsiteCredentialFillRequestSchema = z
228
+ .strictObject({
229
+ username_target_id: z.string().optional(),
230
+ password_target_id: z.string().optional(),
231
+ totp_target_id: z.string().optional(),
232
+ submit_target_id: z.string().optional(),
233
+ browser_workflow_id: z.string().meta({
234
+ description:
235
+ 'Browser-use parent workflow id. The API resolves the Daytona sandbox and observes the current page server-side before decrypting the credential.',
236
+ }),
237
+ })
238
+ .meta({ id: 'WebsiteCredentialFillRequest' });
239
+
240
+ export const DeleteSecretResponseSchema = z
241
+ .strictObject({
242
+ ok: z.boolean(),
243
+ })
244
+ .meta({ id: 'DeleteSecretResponse' });
245
+
246
+ export const WebsiteCredentialMetadataSchema = z
247
+ .strictObject({
248
+ name: z.string(),
249
+ websites: z.array(WebsiteCredentialWebsiteSchema),
250
+ username: z.string().optional(),
251
+ username_hint: z.string().optional(),
252
+ username_secret: z.boolean().optional(),
253
+ properties: z.looseObject({}).optional(),
254
+ tags: z.array(z.string()).optional(),
255
+ enabled: z.boolean().optional(),
256
+ capabilities: z.array(WebsiteCredentialCapabilitySchema).optional(),
257
+ notes: z.string().optional(),
258
+ totp: WebsiteCredentialTotpMetadataSchema.optional(),
259
+ expires_at: z
260
+ .string()
261
+ .meta({
262
+ description:
263
+ 'Optional ISO timestamp after which the credential is no longer usable. Expired credentials are hidden from lookup and cannot be filled.',
264
+ })
265
+ .optional(),
266
+ })
267
+ .meta({ id: 'WebsiteCredentialMetadata' });
268
+
269
+ export const WebsiteCredentialMetadataUpdateSchema = z
270
+ .strictObject({
271
+ name: z.string().optional(),
272
+ websites: z.array(WebsiteCredentialWebsiteSchema).optional(),
273
+ username: z.string().optional(),
274
+ username_hint: z.string().optional(),
275
+ username_secret: z.boolean().optional(),
276
+ properties: z.looseObject({}).optional(),
277
+ tags: z.array(z.string()).optional(),
278
+ enabled: z.boolean().optional(),
279
+ capabilities: z.array(WebsiteCredentialCapabilitySchema).optional(),
280
+ notes: z.string().optional(),
281
+ totp: WebsiteCredentialTotpMetadataSchema.optional(),
282
+ expires_at: z
283
+ .string()
284
+ .meta({
285
+ description:
286
+ 'Optional ISO timestamp after which the credential is no longer usable. Expired credentials are hidden from lookup and cannot be filled.',
287
+ })
288
+ .optional(),
289
+ })
290
+ .meta({ id: 'WebsiteCredentialMetadataUpdate' });
291
+
292
+ export const SecretRecordSchema = z
293
+ .strictObject({
294
+ id: z.string(),
295
+ secret_ref: z.string(),
296
+ kind: SecretKindSchema,
297
+ project: z.string(),
298
+ name: z.string(),
299
+ enabled: z.boolean().optional(),
300
+ tags: z.array(z.string()).optional(),
301
+ properties: z.looseObject({}).optional(),
302
+ created_at: z.string().optional(),
303
+ updated_at: z.string().optional(),
304
+ details: WebsiteCredentialRecordSchema.optional(),
305
+ })
306
+ .meta({ id: 'SecretRecord' });
307
+
308
+ export const CreateSecretRequestSchema = z
309
+ .strictObject({
310
+ kind: SecretKindSchema,
311
+ metadata: WebsiteCredentialMetadataSchema,
312
+ secret: WebsiteCredentialSecretInputSchema.optional(),
313
+ })
314
+ .meta({ id: 'CreateSecretRequest' });
315
+
316
+ export const UpdateSecretRequestSchema = z
317
+ .strictObject({
318
+ kind: SecretKindSchema.optional(),
319
+ metadata: WebsiteCredentialMetadataUpdateSchema.optional(),
320
+ secret: WebsiteCredentialSecretInputSchema.optional(),
321
+ clear_username_secret: z.boolean().optional(),
322
+ clear_password: z.boolean().optional(),
323
+ clear_totp: z.boolean().optional(),
324
+ clear_oauth: z.boolean().optional(),
325
+ })
326
+ .meta({ id: 'UpdateSecretRequest' });
327
+
328
+ export const ListSecretsResponseSchema = z
329
+ .strictObject({
330
+ secrets: z.array(SecretRecordSchema),
331
+ })
332
+ .meta({ id: 'ListSecretsResponse' });