@vertesia/common 1.5.0-dev.20260807.073259Z → 1.5.0-dev.20260901.005903Z

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 (451) hide show
  1. package/lib/access-control.d.ts +0 -14
  2. package/lib/access-control.d.ts.map +1 -1
  3. package/lib/access-control.js +0 -23
  4. package/lib/access-control.js.map +1 -1
  5. package/lib/account-values.d.ts +0 -10
  6. package/lib/account-values.d.ts.map +1 -1
  7. package/lib/account-values.js +0 -44
  8. package/lib/account-values.js.map +1 -1
  9. package/lib/api-contract/components.generated.json +40405 -0
  10. package/lib/api-contract/index.d.ts +186 -0
  11. package/lib/api-contract/index.d.ts.map +1 -0
  12. package/lib/api-contract/index.js +554 -0
  13. package/lib/api-contract/index.js.map +1 -0
  14. package/lib/api-schemas/agent-communication.d.ts +199 -0
  15. package/lib/api-schemas/agent-communication.d.ts.map +1 -0
  16. package/lib/api-schemas/agent-communication.js +150 -0
  17. package/lib/api-schemas/agent-communication.js.map +1 -0
  18. package/lib/api-schemas/agent-runs.d.ts +593 -0
  19. package/lib/api-schemas/agent-runs.d.ts.map +1 -1
  20. package/lib/api-schemas/agent-runs.js +44 -2
  21. package/lib/api-schemas/agent-runs.js.map +1 -1
  22. package/lib/api-schemas/app-lifecycle.d.ts +19 -0
  23. package/lib/api-schemas/app-lifecycle.d.ts.map +1 -1
  24. package/lib/api-schemas/app-lifecycle.js +34 -4
  25. package/lib/api-schemas/app-lifecycle.js.map +1 -1
  26. package/lib/api-schemas/app-runtime.d.ts +9871 -9257
  27. package/lib/api-schemas/app-runtime.d.ts.map +1 -1
  28. package/lib/api-schemas/app-runtime.js +7 -0
  29. package/lib/api-schemas/app-runtime.js.map +1 -1
  30. package/lib/api-schemas/apps.d.ts +1 -0
  31. package/lib/api-schemas/apps.d.ts.map +1 -1
  32. package/lib/api-schemas/apps.js +4 -3
  33. package/lib/api-schemas/apps.js.map +1 -1
  34. package/lib/api-schemas/content-query.d.ts +39 -0
  35. package/lib/api-schemas/content-query.d.ts.map +1 -0
  36. package/lib/api-schemas/content-query.js +30 -0
  37. package/lib/api-schemas/content-query.js.map +1 -0
  38. package/lib/api-schemas/content.d.ts +835 -29
  39. package/lib/api-schemas/content.d.ts.map +1 -1
  40. package/lib/api-schemas/content.js +82 -15
  41. package/lib/api-schemas/content.js.map +1 -1
  42. package/lib/api-schemas/dashboard.d.ts +4 -0
  43. package/lib/api-schemas/dashboard.d.ts.map +1 -1
  44. package/lib/api-schemas/dashboard.js +3 -0
  45. package/lib/api-schemas/dashboard.js.map +1 -1
  46. package/lib/api-schemas/document-processing.d.ts +333 -0
  47. package/lib/api-schemas/document-processing.d.ts.map +1 -1
  48. package/lib/api-schemas/events.d.ts +1007 -4
  49. package/lib/api-schemas/events.d.ts.map +1 -1
  50. package/lib/api-schemas/events.js +4 -1
  51. package/lib/api-schemas/events.js.map +1 -1
  52. package/lib/api-schemas/files.d.ts +17 -0
  53. package/lib/api-schemas/files.d.ts.map +1 -1
  54. package/lib/api-schemas/files.js +23 -0
  55. package/lib/api-schemas/files.js.map +1 -1
  56. package/lib/api-schemas/group.d.ts +7 -0
  57. package/lib/api-schemas/group.d.ts.map +1 -1
  58. package/lib/api-schemas/group.js +9 -0
  59. package/lib/api-schemas/group.js.map +1 -1
  60. package/lib/api-schemas/index.d.ts +4 -0
  61. package/lib/api-schemas/index.d.ts.map +1 -1
  62. package/lib/api-schemas/index.js +4 -0
  63. package/lib/api-schemas/index.js.map +1 -1
  64. package/lib/api-schemas/integrations.d.ts +19 -5
  65. package/lib/api-schemas/integrations.d.ts.map +1 -1
  66. package/lib/api-schemas/integrations.js +25 -2
  67. package/lib/api-schemas/integrations.js.map +1 -1
  68. package/lib/api-schemas/interaction.d.ts +8399 -1076
  69. package/lib/api-schemas/interaction.d.ts.map +1 -1
  70. package/lib/api-schemas/interaction.js +161 -9
  71. package/lib/api-schemas/interaction.js.map +1 -1
  72. package/lib/api-schemas/oauth-server.d.ts +131 -3
  73. package/lib/api-schemas/oauth-server.d.ts.map +1 -1
  74. package/lib/api-schemas/oauth-server.js +137 -3
  75. package/lib/api-schemas/oauth-server.js.map +1 -1
  76. package/lib/api-schemas/process.d.ts +1295 -0
  77. package/lib/api-schemas/process.d.ts.map +1 -1
  78. package/lib/api-schemas/process.js +318 -2
  79. package/lib/api-schemas/process.js.map +1 -1
  80. package/lib/api-schemas/project-configuration.d.ts +1118 -1
  81. package/lib/api-schemas/project-configuration.d.ts.map +1 -1
  82. package/lib/api-schemas/project-configuration.js +6 -2
  83. package/lib/api-schemas/project-configuration.js.map +1 -1
  84. package/lib/api-schemas/project.d.ts +1680 -6
  85. package/lib/api-schemas/project.d.ts.map +1 -1
  86. package/lib/api-schemas/registry.d.ts +87529 -69142
  87. package/lib/api-schemas/registry.d.ts.map +1 -1
  88. package/lib/api-schemas/registry.js +234 -413
  89. package/lib/api-schemas/registry.js.map +1 -1
  90. package/lib/api-schemas/schema-primitives.d.ts +4 -0
  91. package/lib/api-schemas/schema-primitives.d.ts.map +1 -1
  92. package/lib/api-schemas/schema-primitives.js +10 -0
  93. package/lib/api-schemas/schema-primitives.js.map +1 -1
  94. package/lib/api-schemas/store.d.ts +5596 -37
  95. package/lib/api-schemas/store.d.ts.map +1 -1
  96. package/lib/api-schemas/store.js +53 -8
  97. package/lib/api-schemas/store.js.map +1 -1
  98. package/lib/api-schemas/tools.d.ts +115 -0
  99. package/lib/api-schemas/tools.d.ts.map +1 -1
  100. package/lib/api-schemas/tools.js +55 -0
  101. package/lib/api-schemas/tools.js.map +1 -1
  102. package/lib/api-schemas/view-execution.d.ts +330 -854
  103. package/lib/api-schemas/view-execution.d.ts.map +1 -1
  104. package/lib/api-schemas/view-execution.js +26 -2
  105. package/lib/api-schemas/view-execution.js.map +1 -1
  106. package/lib/api-schemas/views.d.ts +452 -2562
  107. package/lib/api-schemas/views.d.ts.map +1 -1
  108. package/lib/api-schemas/views.js +119 -3
  109. package/lib/api-schemas/views.js.map +1 -1
  110. package/lib/api-schemas/workflow-runs.d.ts +344 -5
  111. package/lib/api-schemas/workflow-runs.d.ts.map +1 -1
  112. package/lib/api-schemas/workflow-runs.js +9 -7
  113. package/lib/api-schemas/workflow-runs.js.map +1 -1
  114. package/lib/apps.d.ts +8 -145
  115. package/lib/apps.d.ts.map +1 -1
  116. package/lib/apps.js +1 -54
  117. package/lib/apps.js.map +1 -1
  118. package/lib/ask-user.d.ts +2 -1
  119. package/lib/ask-user.d.ts.map +1 -1
  120. package/lib/audit-trail.d.ts +2 -2
  121. package/lib/audit-trail.d.ts.map +1 -1
  122. package/lib/audit-trail.js +2 -2
  123. package/lib/audit-trail.js.map +1 -1
  124. package/lib/browser-credentials.d.ts +2 -7
  125. package/lib/browser-credentials.d.ts.map +1 -1
  126. package/lib/common.d.ts +4 -1
  127. package/lib/common.d.ts.map +1 -1
  128. package/lib/content-query.d.ts +5 -0
  129. package/lib/content-query.d.ts.map +1 -0
  130. package/lib/content-query.js +2 -0
  131. package/lib/content-query.js.map +1 -0
  132. package/lib/data-platform.d.ts +4 -46
  133. package/lib/data-platform.d.ts.map +1 -1
  134. package/lib/data-platform.js.map +1 -1
  135. package/lib/email.d.ts +12 -18
  136. package/lib/email.d.ts.map +1 -1
  137. package/lib/email.js.map +1 -1
  138. package/lib/environment.d.ts +0 -10
  139. package/lib/environment.d.ts.map +1 -1
  140. package/lib/environment.js +1 -12
  141. package/lib/environment.js.map +1 -1
  142. package/lib/facets.d.ts +0 -4
  143. package/lib/facets.d.ts.map +1 -1
  144. package/lib/group.d.ts +2 -12
  145. package/lib/group.d.ts.map +1 -1
  146. package/lib/group.js.map +1 -1
  147. package/lib/index.d.ts +3 -10
  148. package/lib/index.d.ts.map +1 -1
  149. package/lib/index.js +2 -10
  150. package/lib/index.js.map +1 -1
  151. package/lib/integrations.d.ts +1 -27
  152. package/lib/integrations.d.ts.map +1 -1
  153. package/lib/integrations.js +0 -6
  154. package/lib/integrations.js.map +1 -1
  155. package/lib/interaction.d.ts +10 -222
  156. package/lib/interaction.d.ts.map +1 -1
  157. package/lib/interaction.js +0 -31
  158. package/lib/interaction.js.map +1 -1
  159. package/lib/meters.d.ts +5 -10
  160. package/lib/meters.d.ts.map +1 -1
  161. package/lib/meters.js +1 -9
  162. package/lib/meters.js.map +1 -1
  163. package/lib/oauth-scopes.d.ts +2 -16
  164. package/lib/oauth-scopes.d.ts.map +1 -1
  165. package/lib/oauth-scopes.js +9 -49
  166. package/lib/oauth-scopes.js.map +1 -1
  167. package/lib/oauth-server.d.ts +16 -195
  168. package/lib/oauth-server.d.ts.map +1 -1
  169. package/lib/payload.d.ts +2 -5
  170. package/lib/payload.d.ts.map +1 -1
  171. package/lib/pending-asks.d.ts +9 -41
  172. package/lib/pending-asks.d.ts.map +1 -1
  173. package/lib/platform-event.d.ts +4 -142
  174. package/lib/platform-event.d.ts.map +1 -1
  175. package/lib/platform-event.js.map +1 -1
  176. package/lib/project.d.ts +7 -46
  177. package/lib/project.d.ts.map +1 -1
  178. package/lib/project.js +2 -132
  179. package/lib/project.js.map +1 -1
  180. package/lib/prompt.d.ts +4 -7
  181. package/lib/prompt.d.ts.map +1 -1
  182. package/lib/prompt.js.map +1 -1
  183. package/lib/query.d.ts +0 -8
  184. package/lib/query.d.ts.map +1 -1
  185. package/lib/rate-limiter.d.ts +4 -3
  186. package/lib/rate-limiter.d.ts.map +1 -1
  187. package/lib/runs.d.ts +5 -1
  188. package/lib/runs.d.ts.map +1 -1
  189. package/lib/schema-for-extraction.d.ts +0 -1
  190. package/lib/schema-for-extraction.d.ts.map +1 -1
  191. package/lib/schema-for-extraction.js +1 -1
  192. package/lib/schema-for-extraction.js.map +1 -1
  193. package/lib/secrets.d.ts +2 -1
  194. package/lib/secrets.d.ts.map +1 -1
  195. package/lib/skill.d.ts +0 -13
  196. package/lib/skill.d.ts.map +1 -1
  197. package/lib/store/activity-catalog.d.ts +2 -0
  198. package/lib/store/activity-catalog.d.ts.map +1 -1
  199. package/lib/store/agent-approval.d.ts +0 -1
  200. package/lib/store/agent-approval.d.ts.map +1 -1
  201. package/lib/store/agent-approval.js +0 -3
  202. package/lib/store/agent-approval.js.map +1 -1
  203. package/lib/store/agent-run.d.ts +32 -69
  204. package/lib/store/agent-run.d.ts.map +1 -1
  205. package/lib/store/collections.d.ts +2 -6
  206. package/lib/store/collections.d.ts.map +1 -1
  207. package/lib/store/collections.js.map +1 -1
  208. package/lib/store/conversation-state.d.ts +11 -12
  209. package/lib/store/conversation-state.d.ts.map +1 -1
  210. package/lib/store/conversation-state.js +0 -18
  211. package/lib/store/conversation-state.js.map +1 -1
  212. package/lib/store/doc-analyzer.d.ts +0 -22
  213. package/lib/store/doc-analyzer.d.ts.map +1 -1
  214. package/lib/store/dsl-workflow.d.ts +22 -5
  215. package/lib/store/dsl-workflow.d.ts.map +1 -1
  216. package/lib/store/dsl-workflow.js.map +1 -1
  217. package/lib/store/grounded-extraction.d.ts +0 -14
  218. package/lib/store/grounded-extraction.d.ts.map +1 -1
  219. package/lib/store/grounded-extraction.js +1 -7
  220. package/lib/store/grounded-extraction.js.map +1 -1
  221. package/lib/store/index.d.ts +0 -5
  222. package/lib/store/index.d.ts.map +1 -1
  223. package/lib/store/index.js +0 -6
  224. package/lib/store/index.js.map +1 -1
  225. package/lib/store/intake-policy-schema.generated.d.ts.map +1 -1
  226. package/lib/store/intake-policy-schema.generated.js +279 -1
  227. package/lib/store/intake-policy-schema.generated.js.map +1 -1
  228. package/lib/store/process.d.ts +43 -1
  229. package/lib/store/process.d.ts.map +1 -1
  230. package/lib/store/process.js.map +1 -1
  231. package/lib/store/rendering.d.ts +3 -5
  232. package/lib/store/rendering.d.ts.map +1 -1
  233. package/lib/store/rendering.js +0 -4
  234. package/lib/store/rendering.js.map +1 -1
  235. package/lib/store/schedule.d.ts +0 -16
  236. package/lib/store/schedule.d.ts.map +1 -1
  237. package/lib/store/schedule.js.map +1 -1
  238. package/lib/store/signals.d.ts +12 -0
  239. package/lib/store/signals.d.ts.map +1 -1
  240. package/lib/store/store.d.ts +80 -94
  241. package/lib/store/store.d.ts.map +1 -1
  242. package/lib/store/store.js +5 -25
  243. package/lib/store/store.js.map +1 -1
  244. package/lib/store/workflow.d.ts +35 -86
  245. package/lib/store/workflow.d.ts.map +1 -1
  246. package/lib/store/workflow.js +0 -47
  247. package/lib/store/workflow.js.map +1 -1
  248. package/lib/sts-errors.d.ts +0 -1
  249. package/lib/sts-errors.d.ts.map +1 -1
  250. package/lib/sts-token-types.d.ts +2 -8
  251. package/lib/sts-token-types.d.ts.map +1 -1
  252. package/lib/sts-token-types.js +1 -19
  253. package/lib/sts-token-types.js.map +1 -1
  254. package/lib/tools.d.ts +6 -1
  255. package/lib/tools.d.ts.map +1 -1
  256. package/lib/transient-tokens.d.ts +0 -2
  257. package/lib/transient-tokens.d.ts.map +1 -1
  258. package/lib/user.d.ts +0 -17
  259. package/lib/user.d.ts.map +1 -1
  260. package/lib/user.js.map +1 -1
  261. package/lib/utils/schemas.d.ts +2 -24
  262. package/lib/utils/schemas.d.ts.map +1 -1
  263. package/lib/utils/schemas.js +0 -151
  264. package/lib/utils/schemas.js.map +1 -1
  265. package/lib/vertesia-common.js +3 -4
  266. package/lib/vertesia-common.js.map +1 -1
  267. package/lib/views.d.ts +23 -27
  268. package/lib/views.d.ts.map +1 -1
  269. package/lib/views.js +5 -26
  270. package/lib/views.js.map +1 -1
  271. package/lib/workflow-analytics.d.ts +12 -34
  272. package/lib/workflow-analytics.d.ts.map +1 -1
  273. package/package.json +12 -6
  274. package/src/access-control.ts +0 -26
  275. package/src/account-values.ts +0 -49
  276. package/src/agent-resources.test.ts +1 -12
  277. package/src/api-contract/components.contract.test.ts +99 -0
  278. package/src/api-contract/components.generated.json +40405 -0
  279. package/src/api-contract/index.ts +664 -0
  280. package/src/api-schemas/agent-communication.contract.test.ts +90 -0
  281. package/src/api-schemas/agent-communication.ts +169 -0
  282. package/src/api-schemas/agent-runs.ts +46 -1
  283. package/src/api-schemas/api-discriminators.test.ts +101 -0
  284. package/src/api-schemas/app-lifecycle.ts +39 -4
  285. package/src/api-schemas/app-runtime.ts +8 -0
  286. package/src/api-schemas/apps.ts +4 -3
  287. package/src/api-schemas/content-query.ts +31 -0
  288. package/src/api-schemas/content.ts +88 -15
  289. package/src/api-schemas/dashboard.contract.test.ts +16 -5
  290. package/src/api-schemas/dashboard.ts +3 -0
  291. package/src/api-schemas/events.ts +9 -1
  292. package/src/api-schemas/files.ts +27 -0
  293. package/src/api-schemas/group.ts +10 -0
  294. package/src/api-schemas/index.ts +4 -0
  295. package/src/api-schemas/integrations.ts +27 -2
  296. package/src/api-schemas/interaction.contract.test.ts +204 -1
  297. package/src/api-schemas/interaction.ts +176 -8
  298. package/src/api-schemas/llumiverse.contract.test.ts +33 -2
  299. package/src/api-schemas/oauth-server.ts +152 -3
  300. package/src/api-schemas/oauth.contract.test.ts +64 -1
  301. package/src/api-schemas/process.ts +352 -2
  302. package/src/api-schemas/project-configuration.ts +11 -7
  303. package/src/api-schemas/project.contract.test.ts +83 -6
  304. package/src/api-schemas/registry.ts +290 -457
  305. package/src/api-schemas/schema-primitives.ts +13 -0
  306. package/src/api-schemas/store.contract.test.ts +30 -1
  307. package/src/api-schemas/store.ts +58 -11
  308. package/src/api-schemas/tools.ts +62 -0
  309. package/src/api-schemas/view-execution.ts +28 -2
  310. package/src/api-schemas/views.contract.test.ts +119 -0
  311. package/src/api-schemas/views.ts +142 -3
  312. package/src/api-schemas/workflow-runs.ts +9 -7
  313. package/src/api-schemas/zeno-response-contracts.test.ts +344 -0
  314. package/src/apps.test.ts +2 -40
  315. package/src/apps.ts +14 -181
  316. package/src/ask-user.ts +1 -1
  317. package/src/audit-trail.ts +3 -3
  318. package/src/browser-credentials.ts +3 -7
  319. package/src/common.ts +13 -1
  320. package/src/content-query.ts +5 -0
  321. package/src/data-platform.ts +4 -51
  322. package/src/email.ts +24 -18
  323. package/src/environment.ts +1 -14
  324. package/src/facets.ts +0 -6
  325. package/src/group.ts +2 -12
  326. package/src/index.ts +3 -15
  327. package/src/integrations.ts +1 -52
  328. package/src/interaction.ts +12 -271
  329. package/src/meters.ts +10 -11
  330. package/src/oauth-scopes.test.ts +15 -0
  331. package/src/oauth-scopes.ts +10 -64
  332. package/src/oauth-server.ts +28 -215
  333. package/src/payload.ts +1 -6
  334. package/src/pending-asks.ts +17 -42
  335. package/src/platform-event.ts +3 -156
  336. package/src/project.ts +12 -160
  337. package/src/prompt.ts +9 -8
  338. package/src/query.ts +0 -9
  339. package/src/rate-limiter.ts +3 -3
  340. package/src/runs.ts +8 -0
  341. package/src/schema-for-extraction.ts +1 -1
  342. package/src/secrets.ts +3 -0
  343. package/src/skill.ts +0 -15
  344. package/src/store/activity-catalog.ts +3 -0
  345. package/src/store/agent-approval.ts +0 -4
  346. package/src/store/agent-run.ts +39 -93
  347. package/src/store/collections.ts +3 -6
  348. package/src/store/conversation-state.ts +12 -25
  349. package/src/store/doc-analyzer.ts +0 -26
  350. package/src/store/dsl-workflow.ts +28 -5
  351. package/src/store/grounded-extraction.ts +0 -18
  352. package/src/store/index.ts +0 -6
  353. package/src/store/intake-policy-schema.generated.ts +293 -1
  354. package/src/store/process.ts +84 -0
  355. package/src/store/rendering.ts +3 -8
  356. package/src/store/schedule.ts +0 -19
  357. package/src/store/signals.ts +14 -0
  358. package/src/store/store.ts +118 -127
  359. package/src/store/workflow.ts +32 -120
  360. package/src/sts-errors.ts +0 -2
  361. package/src/sts-token-types.ts +3 -28
  362. package/src/tools.ts +15 -0
  363. package/src/transient-tokens.ts +0 -2
  364. package/src/user.ts +0 -20
  365. package/src/utils/schemas.ts +2 -159
  366. package/src/views.ts +50 -47
  367. package/src/workflow-analytics.ts +12 -40
  368. package/tsconfig.dist.json +4 -1
  369. package/lib/Progress.d.ts +0 -22
  370. package/lib/Progress.d.ts.map +0 -1
  371. package/lib/Progress.js +0 -57
  372. package/lib/Progress.js.map +0 -1
  373. package/lib/agent-request-template.d.ts +0 -4
  374. package/lib/agent-request-template.d.ts.map +0 -1
  375. package/lib/agent-request-template.js +0 -46
  376. package/lib/agent-request-template.js.map +0 -1
  377. package/lib/channels.d.ts +0 -22
  378. package/lib/channels.d.ts.map +0 -1
  379. package/lib/channels.js +0 -57
  380. package/lib/channels.js.map +0 -1
  381. package/lib/host-utils.d.ts +0 -8
  382. package/lib/host-utils.d.ts.map +0 -1
  383. package/lib/host-utils.js +0 -84
  384. package/lib/host-utils.js.map +0 -1
  385. package/lib/platform-event-validation.d.ts +0 -45
  386. package/lib/platform-event-validation.d.ts.map +0 -1
  387. package/lib/platform-event-validation.js +0 -336
  388. package/lib/platform-event-validation.js.map +0 -1
  389. package/lib/store/hive-memory.d.ts +0 -117
  390. package/lib/store/hive-memory.d.ts.map +0 -1
  391. package/lib/store/hive-memory.js +0 -2
  392. package/lib/store/hive-memory.js.map +0 -1
  393. package/lib/store/object-types.d.ts +0 -24
  394. package/lib/store/object-types.d.ts.map +0 -1
  395. package/lib/store/object-types.js +0 -95
  396. package/lib/store/object-types.js.map +0 -1
  397. package/lib/store/process-schema.d.ts +0 -561
  398. package/lib/store/process-schema.d.ts.map +0 -1
  399. package/lib/store/process-schema.js +0 -561
  400. package/lib/store/process-schema.js.map +0 -1
  401. package/lib/store/process-validation.d.ts +0 -17
  402. package/lib/store/process-validation.d.ts.map +0 -1
  403. package/lib/store/process-validation.js +0 -515
  404. package/lib/store/process-validation.js.map +0 -1
  405. package/lib/store/temporalio.d.ts +0 -17
  406. package/lib/store/temporalio.d.ts.map +0 -1
  407. package/lib/store/temporalio.js +0 -41
  408. package/lib/store/temporalio.js.map +0 -1
  409. package/lib/view-configuration-validation.d.ts +0 -15
  410. package/lib/view-configuration-validation.d.ts.map +0 -1
  411. package/lib/view-configuration-validation.js +0 -63
  412. package/lib/view-configuration-validation.js.map +0 -1
  413. package/lib/view-query-validation.d.ts +0 -13
  414. package/lib/view-query-validation.d.ts.map +0 -1
  415. package/lib/view-query-validation.js +0 -266
  416. package/lib/view-query-validation.js.map +0 -1
  417. package/lib/view-validation-helpers.d.ts +0 -15
  418. package/lib/view-validation-helpers.d.ts.map +0 -1
  419. package/lib/view-validation-helpers.js +0 -25
  420. package/lib/view-validation-helpers.js.map +0 -1
  421. package/lib/views-schema.d.ts +0 -1992
  422. package/lib/views-schema.d.ts.map +0 -1
  423. package/lib/views-schema.js +0 -674
  424. package/lib/views-schema.js.map +0 -1
  425. package/lib/views-validation.d.ts +0 -21
  426. package/lib/views-validation.d.ts.map +0 -1
  427. package/lib/views-validation.js +0 -164
  428. package/lib/views-validation.js.map +0 -1
  429. package/src/Progress.ts +0 -59
  430. package/src/agent-request-template.test.ts +0 -40
  431. package/src/agent-request-template.ts +0 -45
  432. package/src/channels.ts +0 -70
  433. package/src/host-utils.test.ts +0 -61
  434. package/src/host-utils.ts +0 -93
  435. package/src/platform-event-validation.test.ts +0 -251
  436. package/src/platform-event-validation.ts +0 -372
  437. package/src/project.test.ts +0 -44
  438. package/src/store/hive-memory.ts +0 -167
  439. package/src/store/object-types.ts +0 -123
  440. package/src/store/process-schema.test.ts +0 -149
  441. package/src/store/process-schema.ts +0 -564
  442. package/src/store/process-validation.test.ts +0 -635
  443. package/src/store/process-validation.ts +0 -646
  444. package/src/store/temporalio.ts +0 -54
  445. package/src/view-configuration-validation.ts +0 -74
  446. package/src/view-query-validation.test.ts +0 -21
  447. package/src/view-query-validation.ts +0 -319
  448. package/src/view-validation-helpers.ts +0 -28
  449. package/src/views-schema.test.ts +0 -372
  450. package/src/views-schema.ts +0 -689
  451. package/src/views-validation.ts +0 -234
@@ -0,0 +1,554 @@
1
+ import { Ajv2020 } from 'ajv/dist/2020.js';
2
+ import ajvFormats from 'ajv-formats';
3
+ import { findUnprunablePaths, isPlainObject, pruneToSchema } from '../api-schemas/adapter.js';
4
+ import { normalizeParameters, } from '../api-schemas/parameters.js';
5
+ import API_SCHEMA_COMPONENTS from './components.generated.json' with { type: 'json' };
6
+ // ajv-formats is CommonJS with an ESM-style declaration file. Node's interop makes the default
7
+ // import the whole `module.exports` (itself callable), while TypeScript sees the namespace — and
8
+ // `.default` is the plugin function in both shapes.
9
+ const addFormats = ajvFormats.default;
10
+ /**
11
+ * The canonical `components.schemas` for all documented endpoints.
12
+ *
13
+ * This exact object is what the OpenAPI spec publishes AND what AJV compiles, so the published
14
+ * contract and the enforced contract cannot diverge. It is the prebuilt emission of the Zod
15
+ * registry rather than a live conversion of it — see the module comment.
16
+ *
17
+ * Widened on import on purpose: `resolveJsonModule` would otherwise infer the literal type of a
18
+ * 1187-key document and bake it into this package's `.d.ts`.
19
+ */
20
+ export const ApiSchemaComponents = API_SCHEMA_COMPONENTS;
21
+ /**
22
+ * A canonical component as a SELF-CONTAINED JSON Schema, for consumers that compile it directly.
23
+ *
24
+ * `components` defaults to the generated artifact, which is what a server wants. A GENERATOR must
25
+ * pass `buildApiSchemaComponents()` instead: the artifact on disk is the previous run's output, so
26
+ * bundling from it would emit an artifact derived from the last contract rather than the current Zod
27
+ * schemas — and, run in the wrong order, would leave the two generated files describing different
28
+ * shapes. Passing the fresh emission makes each generator independent of the others' ordering.
29
+ *
30
+ * The published component `$ref`s its neighbours through `#/components/schemas/...`, which resolves
31
+ * only inside the OpenAPI document. AJV and the Monaco editor need a document they can compile on
32
+ * its own, so the transitive closure is inlined under `$defs` and the pointers rewritten. Nothing
33
+ * about the shapes changes — this is a re-rooting of the same objects, plus the removal of the
34
+ * OpenAPI-only discriminator keywords described below, which is what lets a generated artifact be
35
+ * compared with the component it came from.
36
+ */
37
+ export function bundleCanonicalComponent(name, components = ApiSchemaComponents) {
38
+ const seen = new Set();
39
+ const queue = [name];
40
+ while (queue.length > 0) {
41
+ const current = queue.shift();
42
+ if (seen.has(current))
43
+ continue;
44
+ seen.add(current);
45
+ for (const referenced of collectComponentRefs(components[current])) {
46
+ if (!seen.has(referenced))
47
+ queue.push(referenced);
48
+ }
49
+ }
50
+ seen.delete(name);
51
+ const defs = {};
52
+ for (const dependency of [...seen].sort()) {
53
+ defs[dependency] = toPlainJsonSchema(components[dependency]);
54
+ }
55
+ const root = toPlainJsonSchema(components[name]);
56
+ return seen.size > 0 ? { ...root, $defs: defs } : root;
57
+ }
58
+ const COMPONENT_REF_PREFIX = '#/components/schemas/';
59
+ /**
60
+ * Re-roots the component pointers AND drops the discriminator keywords, which are OpenAPI's, not
61
+ * JSON Schema's.
62
+ *
63
+ * `synthesizeDiscriminator` in the adapter gives a discriminated union a `discriminator` plus a
64
+ * restated `type: 'object'` and `required: [propertyName]` ON THE UNION NODE, so a generated
65
+ * Java/Go client can pick a subtype from the union rather than the branches. That restatement is a
66
+ * codegen hint: the node carries no `properties`, so it says "an object that must have
67
+ * `_option_id`" while declaring nothing that could be one.
68
+ *
69
+ * A JSON Schema validator does not mind — `required` needs no matching `properties`, and each
70
+ * branch requires the same key anyway, so removing all three is validation-neutral. Gemini's
71
+ * function-declaration validator does mind, and rejects the whole tool:
72
+ *
73
+ * schema at properties.intake.properties.extraction.properties.config.properties.model_options
74
+ * requires unspecified property '_option_id'
75
+ *
76
+ * That was a 400 on every agent turn offering `create_or_update_type`, because the intake-policy
77
+ * artifact reaches Vertex inside that tool's input schema. Stripping here rather than at the tool
78
+ * keeps the next component someone bundles from reintroducing it. The OpenAPI document is untouched
79
+ * — `ApiSchemaComponents` still carries the hint, and the generated clients still read it.
80
+ */
81
+ function toPlainJsonSchema(value) {
82
+ const rerooted = rerootComponentRefs(value);
83
+ return stripDiscriminators(rerooted);
84
+ }
85
+ function stripDiscriminators(value) {
86
+ if (Array.isArray(value))
87
+ return value.map(stripDiscriminators);
88
+ if (!value || typeof value !== 'object')
89
+ return value;
90
+ const node = value;
91
+ // `properties` present means the node describes an object in its own right, so its `type` and
92
+ // `required` are the schema's own rather than the restatement — only the OpenAPI keyword goes.
93
+ const restated = node.discriminator !== undefined && node.properties === undefined;
94
+ const out = {};
95
+ for (const [key, item] of Object.entries(node)) {
96
+ if (key === 'discriminator')
97
+ continue;
98
+ if (restated && (key === 'type' || key === 'required'))
99
+ continue;
100
+ out[key] = stripDiscriminators(item);
101
+ }
102
+ return out;
103
+ }
104
+ function collectComponentRefs(value, out = new Set()) {
105
+ if (Array.isArray(value)) {
106
+ for (const item of value)
107
+ collectComponentRefs(item, out);
108
+ return out;
109
+ }
110
+ if (!value || typeof value !== 'object')
111
+ return out;
112
+ for (const [key, item] of Object.entries(value)) {
113
+ if (key === '$ref' && typeof item === 'string' && item.startsWith(COMPONENT_REF_PREFIX)) {
114
+ out.add(item.slice(COMPONENT_REF_PREFIX.length));
115
+ }
116
+ else {
117
+ collectComponentRefs(item, out);
118
+ }
119
+ }
120
+ return out;
121
+ }
122
+ function rerootComponentRefs(value) {
123
+ if (Array.isArray(value))
124
+ return value.map(rerootComponentRefs);
125
+ if (!value || typeof value !== 'object')
126
+ return value;
127
+ const out = {};
128
+ for (const [key, item] of Object.entries(value)) {
129
+ out[key] =
130
+ key === '$ref' && typeof item === 'string' && item.startsWith(COMPONENT_REF_PREFIX)
131
+ ? `#/$defs/${item.slice(COMPONENT_REF_PREFIX.length)}`
132
+ : rerootComponentRefs(item);
133
+ }
134
+ return out;
135
+ }
136
+ /** The `$ref` pointer for a component, in the same spelling the spec publishes. */
137
+ export function apiComponentRef(name) {
138
+ return `#/components/schemas/${name}`;
139
+ }
140
+ /**
141
+ * Validators compiled against the published components, through an envelope so the pointer AJV
142
+ * resolves is the exact pointer the spec publishes. `strictSchema: false` tolerates the
143
+ * `components` wrapper while leaving type and tuple checks active.
144
+ *
145
+ * Compiled lazily and cached: AJV compilation is the expensive step, and most components are
146
+ * never validated in a given process.
147
+ */
148
+ const validators = new Map();
149
+ /**
150
+ * One instance for the process, built on first validation.
151
+ *
152
+ * Per-component instances meant re-registering the whole thousand-component envelope for every
153
+ * component ever validated, and AJV walks a schema when it is added. Sharing one instance also lets
154
+ * it reuse the compiled form of a component that two others reference.
155
+ */
156
+ let ajvInstance;
157
+ /**
158
+ * The published components as AJV can consume them: the same schemas, with the two adjustments
159
+ * AJV's discriminator support requires and the OpenAPI document must not have.
160
+ *
161
+ * `discriminator: true` below is what makes AJV validate a discriminated union through the branch
162
+ * its tag names, instead of trying every branch and reporting all of their failures at once. The
163
+ * difference is not cosmetic — a legacy MCP tool collection missing `id` used to report the real
164
+ * error alongside two impossible ones from the branch it was never meant to match:
165
+ *
166
+ * / must have required property 'id' <- the real one
167
+ * / must NOT have additional properties: oauth_app <- vertesia_sdk branch
168
+ * /type must be equal to constant <- vertesia_sdk branch
169
+ * / must match exactly one schema in oneOf
170
+ *
171
+ * AJV rejects `mapping` outright ("discriminator: mapping is not supported"), because it derives
172
+ * the tag-to-branch map from each branch's own `const`/`enum` instead. The OpenAPI document still
173
+ * needs the mapping — a generated Java or Go client reads it to pick a concrete subtype — so both
174
+ * fixups here apply to AJV's copy only, and `ApiSchemaComponents` is published exactly as built.
175
+ *
176
+ * AJV's remaining requirements — the tag required in every branch, carrying `const` or a
177
+ * single-valued `enum`, with the union node typed as an object — are what `synthesizeDiscriminator`
178
+ * in the adapter already checks before it emits a discriminator at all, and what the hand-written
179
+ * `.meta({ discriminator })` declarations restate. `api-discriminators.test.ts` compiles every
180
+ * registered component so a union satisfying neither fails the build rather than the request.
181
+ */
182
+ function toAjvComponents() {
183
+ const schemas = structuredClone(ApiSchemaComponents);
184
+ const resolve = (value) => {
185
+ if (!isPlainObject(value))
186
+ return undefined;
187
+ const ref = value.$ref;
188
+ if (typeof ref !== 'string' || !ref.startsWith(COMPONENT_REF_PREFIX))
189
+ return value;
190
+ return schemas[ref.slice(COMPONENT_REF_PREFIX.length)];
191
+ };
192
+ visitSchemaNodes(schemas, (node) => {
193
+ const discriminator = node.discriminator;
194
+ if (!isPlainObject(discriminator) || !Array.isArray(node.oneOf))
195
+ return;
196
+ // AJV derives the tag-to-branch map from each branch's own literal, so `mapping` is both
197
+ // redundant and rejected.
198
+ delete discriminator.mapping;
199
+ const tag = discriminator.propertyName;
200
+ if (typeof tag !== 'string')
201
+ return;
202
+ for (const member of node.oneOf) {
203
+ const branch = resolve(member);
204
+ const properties = branch && isPlainObject(branch.properties) ? branch.properties : undefined;
205
+ const tagSchema = properties?.[tag];
206
+ if (!isPlainObject(tagSchema) || tagSchema.const !== undefined || tagSchema.enum !== undefined)
207
+ continue;
208
+ // The tag is a `$ref` to a named literal component — `TaskType_ACTIVITY`,
209
+ // `SupportedIntegrations_gladia` — because the literal carries its own `.meta({ id })`.
210
+ // AJV reads `properties/<tag>` looking for `const` or `enum` and does not follow a
211
+ // `$ref` to find one, so it refuses to compile the union at all. Restating the resolved
212
+ // literal ALONGSIDE the `$ref` is validation-neutral: `$ref` has no special precedence
213
+ // in 2020-12, both keywords apply, and they carry the same value by construction.
214
+ const target = resolve(tagSchema);
215
+ if (!target)
216
+ continue;
217
+ if (target.const !== undefined)
218
+ tagSchema.const = target.const;
219
+ else if (Array.isArray(target.enum))
220
+ tagSchema.enum = target.enum;
221
+ }
222
+ });
223
+ return schemas;
224
+ }
225
+ /** Every object node in the component graph, parents before children. */
226
+ function visitSchemaNodes(value, visit) {
227
+ if (Array.isArray(value)) {
228
+ for (const item of value)
229
+ visitSchemaNodes(item, visit);
230
+ return;
231
+ }
232
+ if (!isPlainObject(value))
233
+ return;
234
+ visit(value);
235
+ for (const item of Object.values(value))
236
+ visitSchemaNodes(item, visit);
237
+ }
238
+ /** The `$id` the whole component envelope is registered under, and the base of every `$ref` to it. */
239
+ const AJV_SCHEMA_ID = 'vertesia://openapi';
240
+ function getAjv() {
241
+ if (ajvInstance)
242
+ return ajvInstance;
243
+ // `verbose` carries two things {@link collectIssues} needs and nothing else supplies: the schema
244
+ // object that raised each error, which is the only unambiguous way to tell one union candidate
245
+ // from another, and the value under evaluation, which is what a failed union is re-checked
246
+ // against. Both are populated only when validation fails, and both are references rather than
247
+ // copies.
248
+ // `allowUnionTypes` because a few published components declare `type: [...]` on purpose:
249
+ // `DurationValue` is `['string', 'number']` specifically so the generated Java client gets one
250
+ // writable property instead of the unusable `AnyOfnumber` an `anyOf` produces. AJV's
251
+ // `strictTypes` default of "log" reported that deliberate choice to its logger on every startup.
252
+ // The default logger is `console`, so the notice left on stderr, where log collectors routinely
253
+ // classify it as an error — turning a healthy design decision into recurring server error noise.
254
+ const ajv = new Ajv2020({
255
+ strictSchema: false,
256
+ allErrors: true,
257
+ discriminator: true,
258
+ verbose: true,
259
+ allowUnionTypes: true,
260
+ });
261
+ // Without this, AJV treats `format` as an annotation and ignores it, so a `date-time` property
262
+ // would document a constraint nothing checks — the exact spec/enforcement gap this design is
263
+ // meant to close.
264
+ addFormats(ajv);
265
+ ajv.addSchema({ $id: AJV_SCHEMA_ID, components: { schemas: toAjvComponents() } });
266
+ ajvInstance = ajv;
267
+ return ajv;
268
+ }
269
+ function getValidator(name) {
270
+ const cached = validators.get(name);
271
+ if (cached)
272
+ return cached;
273
+ const validate = getAjv().compile({ $ref: `${AJV_SCHEMA_ID}${apiComponentRef(name)}` });
274
+ validators.set(name, validate);
275
+ return validate;
276
+ }
277
+ function additionalProperty(error) {
278
+ // AJV writes "must NOT have additional properties" and puts the offending key in `params`,
279
+ // so the message alone says a body is wrong without saying which property made it wrong.
280
+ // Every other keyword names its subject already — `required` quotes the missing property,
281
+ // `enum` and `type` describe the value in place — and this is the one a caller most often
282
+ // trips, so it is the one worth spelling out rather than reformatting all of them.
283
+ return error.params?.additionalProperty;
284
+ }
285
+ /**
286
+ * The failures, with the undeclared properties a SINGLE schema reported at a given path gathered
287
+ * into one issue, and each failed untagged union expanded per candidate.
288
+ *
289
+ * AJV reports `additionalProperties` per property, so a value carrying a whole foreign object — a
290
+ * Mongoose document that reached the response mapper unmapped, say — produces one error per own key
291
+ * and buries every other failure in the payload. Gathering is lossless: every name is kept, in the
292
+ * order AJV found it. It is keyed by the schema that raised the error as well as the path, so two
293
+ * candidates complaining at one path never merge into a single line. `schemaPath` will not do: a
294
+ * `$ref`'d candidate resets it to `#/additionalProperties`, identical for every candidate. The
295
+ * schema object itself is unambiguous, and `verbose: true` supplies it.
296
+ *
297
+ * `discriminator: true` narrows a TAGGED union to the one branch its tag names, so nothing below
298
+ * applies to those. What is left is the unions with no tag: AJV runs the value against every
299
+ * candidate and reports all of their failures, flat and unattributed. Read as facts they are
300
+ * nonsense — for a condition branch `{ to, when }` with a malformed `when`, raw AJV says
301
+ *
302
+ * /nodes/a/branches/0/when must be object <- BranchDefinition
303
+ * /nodes/a/branches/0 must have required property 'id' <- BranchNodeBranchDefinition
304
+ * /nodes/a/branches/0 must NOT have additional properties: to, when <- BranchNodeBranchDefinition
305
+ * /nodes/a/branches/0 must match exactly one schema in oneOf
306
+ *
307
+ * where `to` and `when` are declared on `BranchDefinition` and only wrong for a candidate the value
308
+ * never meant. Nothing in the error list says which claim belongs to which candidate, and the
309
+ * candidates fail at DIFFERENT paths, so no rule based on the path can recover it.
310
+ *
311
+ * So the union is re-validated candidate by candidate, and each candidate's own failures are
312
+ * attributed to it by name. That is exact rather than inferred, at the cost of one extra validation
313
+ * per candidate — paid only on a response that is already failing:
314
+ *
315
+ * /nodes/a/branches/0 must match exactly one schema in oneOf
316
+ * /nodes/a/branches/0/when as BranchDefinition: must be object
317
+ * /nodes/a/branches/0 as BranchNodeBranchDefinition: must have required property 'id'
318
+ * /nodes/a/branches/0 as BranchNodeBranchDefinition: must NOT have additional properties: to, when
319
+ *
320
+ * Expansion goes ONE level deep: a candidate's own errors are collected without expanding any union
321
+ * nested inside it, which bounds the work and keeps the output readable.
322
+ */
323
+ function collectIssues(validate) {
324
+ return toIssues(validate.errors ?? [], true);
325
+ }
326
+ function toIssues(errors, expandUnions) {
327
+ const expansions = new Map();
328
+ if (expandUnions) {
329
+ for (const error of errors) {
330
+ if (error.keyword !== 'oneOf' && error.keyword !== 'anyOf')
331
+ continue;
332
+ const expanded = expandUnion(error);
333
+ if (expanded)
334
+ expansions.set(error.instancePath, expanded);
335
+ }
336
+ }
337
+ /** Whether an expanded union already accounts for this error, making the raw form redundant. */
338
+ const superseded = (error) => {
339
+ for (const base of expansions.keys()) {
340
+ if (error.instancePath === base || error.instancePath.startsWith(`${base}/`))
341
+ return true;
342
+ }
343
+ return false;
344
+ };
345
+ const issues = [];
346
+ // Keyed by the raising schema, then by path: two candidates at one path stay separate, and one
347
+ // schema's repeats at one path merge.
348
+ const gathered = new Map();
349
+ for (const error of errors) {
350
+ const path = error.instancePath || '/';
351
+ const message = error.message ?? 'is invalid';
352
+ const expanded = expansions.get(error.instancePath);
353
+ if (expanded && (error.keyword === 'oneOf' || error.keyword === 'anyOf')) {
354
+ // The union's own line frames the candidates that follow it.
355
+ issues.push({ path, message });
356
+ issues.push(...expanded);
357
+ continue;
358
+ }
359
+ if (superseded(error))
360
+ continue;
361
+ const additional = additionalProperty(error);
362
+ if (additional === undefined) {
363
+ issues.push({ path, message });
364
+ continue;
365
+ }
366
+ let byPath = gathered.get(error.parentSchema);
367
+ if (!byPath) {
368
+ byPath = new Map();
369
+ gathered.set(error.parentSchema, byPath);
370
+ }
371
+ const existing = byPath.get(path);
372
+ if (existing) {
373
+ // One schema reporting the same name twice is not a second fact.
374
+ if (!existing.names.has(additional)) {
375
+ existing.names.add(additional);
376
+ existing.issue.undeclared?.push(additional);
377
+ }
378
+ continue;
379
+ }
380
+ const issue = { path, message, undeclared: [additional] };
381
+ byPath.set(path, { issue, names: new Set([additional]) });
382
+ issues.push(issue);
383
+ }
384
+ return issues;
385
+ }
386
+ /**
387
+ * One failed union, re-stated as what each candidate objected to.
388
+ *
389
+ * `undefined` when the union cannot be attributed exactly — a candidate that is not a `$ref` to a
390
+ * registered component has no name to report it under, and a partly-named expansion would read as
391
+ * though the unnamed candidate had no objection. The raw errors are kept in that case, which is what
392
+ * AJV would have produced anyway.
393
+ */
394
+ function expandUnion(error) {
395
+ const parent = error.parentSchema;
396
+ if (!isPlainObject(parent))
397
+ return undefined;
398
+ const members = Array.isArray(parent.oneOf) ? parent.oneOf : Array.isArray(parent.anyOf) ? parent.anyOf : undefined;
399
+ if (!members?.length)
400
+ return undefined;
401
+ const issues = [];
402
+ for (const member of members) {
403
+ const ref = isPlainObject(member) && typeof member.$ref === 'string' ? member.$ref : undefined;
404
+ if (!ref?.startsWith(COMPONENT_REF_PREFIX))
405
+ return undefined;
406
+ const validateMember = getAjv().getSchema(`${AJV_SCHEMA_ID}${ref}`);
407
+ if (!validateMember)
408
+ return undefined;
409
+ // `verbose: true` puts the value under evaluation on the error, so the candidates are run
410
+ // against exactly what the union saw.
411
+ if (validateMember(error.data))
412
+ continue;
413
+ const component = ref.slice(COMPONENT_REF_PREFIX.length);
414
+ for (const issue of toIssues(validateMember.errors ?? [], false)) {
415
+ issues.push({ ...issue, path: joinInstancePath(error.instancePath, issue.path), component });
416
+ }
417
+ }
418
+ return issues.length > 0 ? issues : undefined;
419
+ }
420
+ /** Re-roots a candidate-relative path under the union's own path. */
421
+ function joinInstancePath(base, relative) {
422
+ if (relative === '/')
423
+ return base || '/';
424
+ return `${base}${relative}`;
425
+ }
426
+ /**
427
+ * The complete rendering of one issue — every name, no budget.
428
+ *
429
+ * This is what gets logged. A caller-facing message renders from {@link ApiValidationIssue} itself
430
+ * with a length limit rather than shortening this string; see `reportableErrors` in the enforcer.
431
+ */
432
+ export function renderApiValidationIssue(issue) {
433
+ const head = renderApiValidationIssueHead(issue);
434
+ return issue.undeclared?.length ? `${head}: ${issue.undeclared.join(', ')}` : head;
435
+ }
436
+ /**
437
+ * Everything in a rendered issue except the property names: `<path> [as <component>]: <message>`.
438
+ *
439
+ * Exported because it is not the only renderer. A caller that has to bound the length of a message
440
+ * cannot use {@link renderApiValidationIssue} — it emits every name — and has to rebuild the line
441
+ * from {@link ApiValidationIssue} with its own budget for the names. Rebuilding the HEAD too is what
442
+ * lets the two drift: when `component` was added, the bounded renderer at the HTTP boundary went on
443
+ * concatenating path and message and silently dropped it, so callers were told
444
+ * `must NOT have additional properties: to, when` with no sign it was one candidate's claim. There is
445
+ * one definition of the head so that cannot happen again.
446
+ */
447
+ export function renderApiValidationIssueHead(issue) {
448
+ return issue.component ? `${issue.path} as ${issue.component}: ${issue.message}` : `${issue.path} ${issue.message}`;
449
+ }
450
+ /** The failed branch of every validator here, so the two views cannot be built inconsistently. */
451
+ function invalidResult(validate) {
452
+ const issues = collectIssues(validate);
453
+ return { valid: false, errors: issues.map(renderApiValidationIssue), issues };
454
+ }
455
+ /**
456
+ * Validates an untyped request body against the component the endpoint publishes.
457
+ *
458
+ * Non-mutating by design. AJV's removal modes are never used here: the server would then accept a
459
+ * body the published schema declares invalid, silently disagreeing with its own spec — and
460
+ * `removeAdditional: 'all'` additionally empties freeform maps. An undeclared property is reported,
461
+ * not deleted.
462
+ *
463
+ * The component type is handed back only on the `valid` branch, so a body missing required fields
464
+ * cannot be typed as complete. What the caller does with a failure — reject, or log and continue —
465
+ * is the endpoint's policy, not this function's.
466
+ */
467
+ export function validateApiRequest(name, value) {
468
+ const validate = getValidator(name);
469
+ if (validate(value)) {
470
+ return { valid: true, data: value };
471
+ }
472
+ return invalidResult(validate);
473
+ }
474
+ /**
475
+ * Validates an already-mapped response against the component it is published as.
476
+ *
477
+ * Separate from {@link pruneAndValidateApiResponse} because a resource mapper has already produced
478
+ * the wire shape: there is nothing to prune, and pruning would only mask a mapper bug. Use this at
479
+ * the response boundary to detect drift between what the mapper builds and what the spec promises.
480
+ */
481
+ export function validateApiResponse(name, value) {
482
+ const validate = getValidator(name);
483
+ if (validate(value)) {
484
+ return { valid: true, data: value };
485
+ }
486
+ return invalidResult(validate);
487
+ }
488
+ /**
489
+ * Best-effort normalization of a response payload towards the fields its published component
490
+ * declares. Use this on the response path INSTEAD of an AJV removal mode, which would empty
491
+ * freeform maps such as `Account.feature_flags`.
492
+ *
493
+ * NOT a secret-removal boundary. Ambiguous schema shapes pass values through untouched — see
494
+ * {@link pruneToSchema} and check a component with {@link findUnprunablePaths} before treating its
495
+ * output as closed. Fields that must never ship still need an explicit response mapper.
496
+ *
497
+ * Never throws and never rejects: an undocumented field is server-side drift, and failing the
498
+ * response would punish the caller for it.
499
+ *
500
+ * Takes a value the caller has already typed as the component. Pruning only REMOVES undeclared
501
+ * extras, so a conforming input yields a conforming output and the return type is honest. It does
502
+ * NOT validate, which is why it cannot accept `unknown` — narrowing a payload that is missing
503
+ * required fields would hand TypeScript a complete `Account` that does not exist at runtime. Use
504
+ * {@link pruneAndValidateApiResponse} when the payload's shape is not already established.
505
+ *
506
+ * Request validation stays separate and non-mutating — pruning a request would make the server
507
+ * silently disagree with the permissive schema it publishes.
508
+ */
509
+ export function pruneApiResponse(name, value) {
510
+ return pruneToSchema(value, { $ref: apiComponentRef(name) }, ApiSchemaComponents);
511
+ }
512
+ /**
513
+ * Prunes an untyped payload and validates the result against the published component.
514
+ *
515
+ * The only sound entry point for a payload of unknown shape: the component type is handed back
516
+ * exclusively on the `valid` branch, so a document missing required fields cannot be typed as
517
+ * complete. On failure the pruned value is still returned — the caller decides whether to ship it
518
+ * and log, or fail — which keeps the "never turn drift into a 500" property a policy choice rather
519
+ * than something baked in here.
520
+ *
521
+ */
522
+ export function pruneAndValidateApiResponse(name, value) {
523
+ const pruned = pruneToSchema(value, { $ref: apiComponentRef(name) }, ApiSchemaComponents);
524
+ const validate = getValidator(name);
525
+ if (validate(pruned)) {
526
+ return { valid: true, data: pruned };
527
+ }
528
+ return { ...invalidResult(validate), data: pruned };
529
+ }
530
+ /**
531
+ * Paths inside a component where pruning cannot narrow. Empty means no STRUCTURAL gaps for
532
+ * schema-conforming input — see {@link findUnprunablePaths} for why that is weaker than "nothing
533
+ * can escape". Anything listed needs an explicit response mapper.
534
+ */
535
+ export function findUnprunableApiPaths(name) {
536
+ return findUnprunablePaths({ $ref: apiComponentRef(name) }, ApiSchemaComponents);
537
+ }
538
+ /**
539
+ * Normalizes raw query or header text into the value a component describes.
540
+ *
541
+ * Binds {@link normalizeParameters} to {@link ApiSchemaComponents} — the same objects the OpenAPI
542
+ * document publishes and {@link validateApiRequest} compiles. That is what keeps the published
543
+ * parameter and the enforced one the same declaration: the scanner expands this component's
544
+ * properties into `in: query` parameters, and the coercion below is decided by those same property
545
+ * schemas, so neither can be changed without changing the other.
546
+ *
547
+ * Validate the result with {@link validateApiRequest}, which is non-coercing: everything type-related
548
+ * has already happened here, so a value this could not coerce is reported against the published
549
+ * schema rather than by a second rule.
550
+ */
551
+ export function normalizeApiParameters(name, raw, location) {
552
+ return normalizeParameters(name, raw, location, ApiSchemaComponents[name], ApiSchemaComponents);
553
+ }
554
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api-contract/index.ts"],"names":[],"mappings":"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"}