veryfront 0.1.501 → 0.1.503

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 (699) hide show
  1. package/esm/cli/commands/analyze-chunks/handler.d.ts +4 -4
  2. package/esm/cli/commands/analyze-chunks/handler.d.ts.map +1 -1
  3. package/esm/cli/commands/analyze-chunks/handler.js +6 -5
  4. package/esm/cli/commands/build/handler.d.ts +39 -27
  5. package/esm/cli/commands/build/handler.d.ts.map +1 -1
  6. package/esm/cli/commands/build/handler.js +15 -14
  7. package/esm/cli/commands/clean/command.js +1 -1
  8. package/esm/cli/commands/clean/handler.d.ts.map +1 -1
  9. package/esm/cli/commands/clean/handler.js +9 -8
  10. package/esm/cli/commands/demo/handler.d.ts +5 -5
  11. package/esm/cli/commands/demo/handler.d.ts.map +1 -1
  12. package/esm/cli/commands/demo/handler.js +7 -6
  13. package/esm/cli/commands/deploy/command.d.ts +30 -19
  14. package/esm/cli/commands/deploy/command.d.ts.map +1 -1
  15. package/esm/cli/commands/deploy/command.js +11 -10
  16. package/esm/cli/commands/dev/handler.d.ts +6 -6
  17. package/esm/cli/commands/dev/handler.d.ts.map +1 -1
  18. package/esm/cli/commands/dev/handler.js +8 -7
  19. package/esm/cli/commands/doctor/handler.d.ts +3 -3
  20. package/esm/cli/commands/doctor/handler.d.ts.map +1 -1
  21. package/esm/cli/commands/doctor/handler.js +5 -4
  22. package/esm/cli/commands/files/command.d.ts +38 -36
  23. package/esm/cli/commands/files/command.d.ts.map +1 -1
  24. package/esm/cli/commands/files/command.js +35 -31
  25. package/esm/cli/commands/generate/handler.d.ts +4 -4
  26. package/esm/cli/commands/generate/handler.d.ts.map +1 -1
  27. package/esm/cli/commands/generate/handler.js +6 -5
  28. package/esm/cli/commands/generate/integration-generator-helpers.js +4 -4
  29. package/esm/cli/commands/generate/integration-generator.js +8 -4
  30. package/esm/cli/commands/install/handler.d.ts +5 -5
  31. package/esm/cli/commands/install/handler.d.ts.map +1 -1
  32. package/esm/cli/commands/install/handler.js +7 -6
  33. package/esm/cli/commands/install/install.d.ts.map +1 -1
  34. package/esm/cli/commands/install/install.js +7 -4
  35. package/esm/cli/commands/install/types.d.ts +52 -43
  36. package/esm/cli/commands/install/types.d.ts.map +1 -1
  37. package/esm/cli/commands/install/types.js +26 -21
  38. package/esm/cli/commands/install/uninstall.d.ts.map +1 -1
  39. package/esm/cli/commands/install/uninstall.js +4 -2
  40. package/esm/cli/commands/knowledge/command.d.ts +19 -17
  41. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  42. package/esm/cli/commands/knowledge/command.js +21 -20
  43. package/esm/cli/commands/lock/handler.d.ts.map +1 -1
  44. package/esm/cli/commands/lock/handler.js +10 -9
  45. package/esm/cli/commands/mcp/handler.d.ts +3 -3
  46. package/esm/cli/commands/mcp/handler.d.ts.map +1 -1
  47. package/esm/cli/commands/mcp/handler.js +5 -4
  48. package/esm/cli/commands/merge/command.d.ts +21 -15
  49. package/esm/cli/commands/merge/command.d.ts.map +1 -1
  50. package/esm/cli/commands/merge/command.js +9 -8
  51. package/esm/cli/commands/open/command.d.ts +17 -12
  52. package/esm/cli/commands/open/command.d.ts.map +1 -1
  53. package/esm/cli/commands/open/command.js +7 -6
  54. package/esm/cli/commands/pull/command.d.ts +36 -25
  55. package/esm/cli/commands/pull/command.d.ts.map +1 -1
  56. package/esm/cli/commands/pull/command.js +14 -13
  57. package/esm/cli/commands/push/command.d.ts +27 -19
  58. package/esm/cli/commands/push/command.d.ts.map +1 -1
  59. package/esm/cli/commands/push/command.js +11 -10
  60. package/esm/cli/commands/routes/handler.d.ts +4 -4
  61. package/esm/cli/commands/routes/handler.d.ts.map +1 -1
  62. package/esm/cli/commands/routes/handler.js +6 -5
  63. package/esm/cli/commands/schema/handler.d.ts.map +1 -1
  64. package/esm/cli/commands/schema/handler.js +5 -4
  65. package/esm/cli/commands/serve/handler.d.ts +9 -9
  66. package/esm/cli/commands/serve/handler.d.ts.map +1 -1
  67. package/esm/cli/commands/serve/handler.js +10 -9
  68. package/esm/cli/commands/start/handler.d.ts +6 -6
  69. package/esm/cli/commands/start/handler.d.ts.map +1 -1
  70. package/esm/cli/commands/start/handler.js +8 -7
  71. package/esm/cli/commands/studio/handler.d.ts +5 -5
  72. package/esm/cli/commands/studio/handler.d.ts.map +1 -1
  73. package/esm/cli/commands/studio/handler.js +7 -6
  74. package/esm/cli/commands/styles/command.d.ts.map +1 -1
  75. package/esm/cli/commands/styles/command.js +9 -8
  76. package/esm/cli/commands/styles/handler.d.ts +12 -12
  77. package/esm/cli/commands/styles/handler.d.ts.map +1 -1
  78. package/esm/cli/commands/styles/handler.js +7 -6
  79. package/esm/cli/commands/task/handler.d.ts +12 -12
  80. package/esm/cli/commands/task/handler.d.ts.map +1 -1
  81. package/esm/cli/commands/task/handler.js +7 -6
  82. package/esm/cli/commands/test/handler.d.ts.map +1 -1
  83. package/esm/cli/commands/test/handler.js +6 -5
  84. package/esm/cli/commands/up/command.d.ts +14 -10
  85. package/esm/cli/commands/up/command.d.ts.map +1 -1
  86. package/esm/cli/commands/up/command.js +6 -5
  87. package/esm/cli/commands/uploads/command.d.ts +43 -41
  88. package/esm/cli/commands/uploads/command.d.ts.map +1 -1
  89. package/esm/cli/commands/uploads/command.js +40 -36
  90. package/esm/cli/commands/worker/handler.d.ts +20 -23
  91. package/esm/cli/commands/worker/handler.d.ts.map +1 -1
  92. package/esm/cli/commands/worker/handler.js +11 -10
  93. package/esm/cli/commands/workflow/handler.d.ts +14 -16
  94. package/esm/cli/commands/workflow/handler.d.ts.map +1 -1
  95. package/esm/cli/commands/workflow/handler.js +8 -7
  96. package/esm/cli/mcp/jsonrpc.d.ts +34 -18
  97. package/esm/cli/mcp/jsonrpc.d.ts.map +1 -1
  98. package/esm/cli/mcp/jsonrpc.js +21 -17
  99. package/esm/cli/mcp/remote-file-tools.d.ts +79 -83
  100. package/esm/cli/mcp/remote-file-tools.d.ts.map +1 -1
  101. package/esm/cli/mcp/remote-file-tools.js +79 -67
  102. package/esm/cli/mcp/server.d.ts +0 -1
  103. package/esm/cli/mcp/server.d.ts.map +1 -1
  104. package/esm/cli/mcp/server.js +2 -60
  105. package/esm/cli/mcp/tools/bootstrap-tool.d.ts +5 -5
  106. package/esm/cli/mcp/tools/bootstrap-tool.d.ts.map +1 -1
  107. package/esm/cli/mcp/tools/bootstrap-tool.js +5 -4
  108. package/esm/cli/mcp/tools/build-tool.d.ts +9 -9
  109. package/esm/cli/mcp/tools/build-tool.d.ts.map +1 -1
  110. package/esm/cli/mcp/tools/build-tool.js +9 -8
  111. package/esm/cli/mcp/tools/catalog-tools.d.ts +18 -33
  112. package/esm/cli/mcp/tools/catalog-tools.d.ts.map +1 -1
  113. package/esm/cli/mcp/tools/catalog-tools.js +19 -14
  114. package/esm/cli/mcp/tools/context7-tools.d.ts.map +1 -1
  115. package/esm/cli/mcp/tools/context7-tools.js +9 -9
  116. package/esm/cli/mcp/tools/deploy-tool.d.ts +7 -7
  117. package/esm/cli/mcp/tools/deploy-tool.d.ts.map +1 -1
  118. package/esm/cli/mcp/tools/deploy-tool.js +7 -6
  119. package/esm/cli/mcp/tools/dev-tools.d.ts +31 -35
  120. package/esm/cli/mcp/tools/dev-tools.d.ts.map +1 -1
  121. package/esm/cli/mcp/tools/dev-tools.js +31 -25
  122. package/esm/cli/mcp/tools/introspection-tools.d.ts.map +1 -1
  123. package/esm/cli/mcp/tools/introspection-tools.js +6 -6
  124. package/esm/cli/mcp/tools/project-tools.d.ts +20 -25
  125. package/esm/cli/mcp/tools/project-tools.d.ts.map +1 -1
  126. package/esm/cli/mcp/tools/project-tools.js +20 -16
  127. package/esm/cli/mcp/tools/run-lint-tool.d.ts +5 -5
  128. package/esm/cli/mcp/tools/run-lint-tool.d.ts.map +1 -1
  129. package/esm/cli/mcp/tools/run-lint-tool.js +5 -4
  130. package/esm/cli/mcp/tools/run-tests-tool.d.ts +7 -7
  131. package/esm/cli/mcp/tools/run-tests-tool.d.ts.map +1 -1
  132. package/esm/cli/mcp/tools/run-tests-tool.js +7 -6
  133. package/esm/cli/mcp/tools/scaffold-tools.d.ts +12 -33
  134. package/esm/cli/mcp/tools/scaffold-tools.d.ts.map +1 -1
  135. package/esm/cli/mcp/tools/scaffold-tools.js +23 -21
  136. package/esm/cli/mcp/tools/skill-tools.d.ts +10 -10
  137. package/esm/cli/mcp/tools/skill-tools.d.ts.map +1 -1
  138. package/esm/cli/mcp/tools/skill-tools.js +8 -8
  139. package/esm/cli/mcp/tools.d.ts +27 -48
  140. package/esm/cli/mcp/tools.d.ts.map +1 -1
  141. package/esm/cli/mcp/tools.js +26 -21
  142. package/esm/cli/shared/args.d.ts +11 -8
  143. package/esm/cli/shared/args.d.ts.map +1 -1
  144. package/esm/cli/shared/args.js +9 -6
  145. package/esm/cli/shared/config.d.ts +38 -20
  146. package/esm/cli/shared/config.d.ts.map +1 -1
  147. package/esm/cli/shared/config.js +20 -17
  148. package/esm/cli/shared/types.d.ts +4 -7
  149. package/esm/cli/shared/types.d.ts.map +1 -1
  150. package/esm/cli/shared/types.js +3 -2
  151. package/esm/cli/skills/types.d.ts +30 -16
  152. package/esm/cli/skills/types.d.ts.map +1 -1
  153. package/esm/cli/skills/types.js +17 -15
  154. package/esm/cli/templates/manifest.js +211 -211
  155. package/esm/deno.d.ts +5 -0
  156. package/esm/deno.js +10 -4
  157. package/esm/extensions/ext-zod/src/adapter.d.ts +22 -0
  158. package/esm/extensions/ext-zod/src/adapter.d.ts.map +1 -0
  159. package/esm/extensions/ext-zod/src/adapter.js +159 -0
  160. package/esm/extensions/ext-zod/src/index.d.ts +19 -0
  161. package/esm/extensions/ext-zod/src/index.d.ts.map +1 -0
  162. package/esm/extensions/ext-zod/src/index.js +32 -0
  163. package/esm/extensions/ext-zod/src/json-schema.d.ts +15 -0
  164. package/esm/extensions/ext-zod/src/json-schema.d.ts.map +1 -0
  165. package/esm/extensions/ext-zod/src/json-schema.js +247 -0
  166. package/esm/src/agent/ag-ui-detached-start.d.ts +97 -50
  167. package/esm/src/agent/ag-ui-detached-start.d.ts.map +1 -1
  168. package/esm/src/agent/ag-ui-detached-start.js +26 -17
  169. package/esm/src/agent/ag-ui-forwarded-context.d.ts +3 -3
  170. package/esm/src/agent/ag-ui-forwarded-context.d.ts.map +1 -1
  171. package/esm/src/agent/ag-ui-forwarded-context.js +3 -2
  172. package/esm/src/agent/ag-ui-handler.d.ts.map +1 -1
  173. package/esm/src/agent/ag-ui-handler.js +5 -3
  174. package/esm/src/agent/ag-ui-host-support.d.ts +119 -65
  175. package/esm/src/agent/ag-ui-host-support.d.ts.map +1 -1
  176. package/esm/src/agent/ag-ui-host-support.js +48 -42
  177. package/esm/src/agent/ag-ui-request-shared.d.ts.map +1 -1
  178. package/esm/src/agent/ag-ui-request-shared.js +11 -2
  179. package/esm/src/agent/ag-ui-run-control.d.ts +15 -8
  180. package/esm/src/agent/ag-ui-run-control.d.ts.map +1 -1
  181. package/esm/src/agent/ag-ui-run-control.js +18 -13
  182. package/esm/src/agent/ag-ui-runtime-handler.d.ts.map +1 -1
  183. package/esm/src/agent/ag-ui-runtime-handler.js +5 -3
  184. package/esm/src/agent/ag-ui-sse-parser.d.ts +57 -0
  185. package/esm/src/agent/ag-ui-sse-parser.d.ts.map +1 -0
  186. package/esm/src/agent/ag-ui-sse-parser.js +227 -0
  187. package/esm/src/agent/ag-ui-tool-shared.d.ts.map +1 -1
  188. package/esm/src/agent/ag-ui-tool-shared.js +3 -2
  189. package/esm/src/agent/chat-handler.d.ts.map +1 -1
  190. package/esm/src/agent/chat-handler.js +58 -57
  191. package/esm/src/agent/composition/composition.js +2 -2
  192. package/esm/src/agent/conversation-bootstrap.d.ts +13 -16
  193. package/esm/src/agent/conversation-bootstrap.d.ts.map +1 -1
  194. package/esm/src/agent/conversation-bootstrap.js +19 -12
  195. package/esm/src/agent/conversation-hosted-lifecycle.d.ts.map +1 -1
  196. package/esm/src/agent/conversation-run-context.d.ts +1 -10
  197. package/esm/src/agent/conversation-run-context.d.ts.map +1 -1
  198. package/esm/src/agent/conversation-run-events.d.ts +9 -5
  199. package/esm/src/agent/conversation-run-events.d.ts.map +1 -1
  200. package/esm/src/agent/conversation-run-events.js +6 -4
  201. package/esm/src/agent/default-hosted-invoke-agent-tool.d.ts +37 -16
  202. package/esm/src/agent/default-hosted-invoke-agent-tool.d.ts.map +1 -1
  203. package/esm/src/agent/default-hosted-invoke-agent-tool.js +10 -5
  204. package/esm/src/agent/durable.d.ts +70 -129
  205. package/esm/src/agent/durable.d.ts.map +1 -1
  206. package/esm/src/agent/durable.js +107 -109
  207. package/esm/src/agent/hosted-ag-ui-chat-request.d.ts +29 -11
  208. package/esm/src/agent/hosted-ag-ui-chat-request.d.ts.map +1 -1
  209. package/esm/src/agent/hosted-ag-ui-chat-request.js +16 -15
  210. package/esm/src/agent/hosted-agent-service-config.d.ts +6 -6
  211. package/esm/src/agent/hosted-agent-service-routes.d.ts.map +1 -1
  212. package/esm/src/agent/hosted-agent-service-routes.js +4 -3
  213. package/esm/src/agent/hosted-chat-request-parser.d.ts.map +1 -1
  214. package/esm/src/agent/hosted-chat-request-parser.js +7 -4
  215. package/esm/src/agent/hosted-chat-request.d.ts +291 -20
  216. package/esm/src/agent/hosted-chat-request.d.ts.map +1 -1
  217. package/esm/src/agent/hosted-chat-request.js +33 -31
  218. package/esm/src/agent/hosted-child-fork-step-message-preparation.d.ts.map +1 -1
  219. package/esm/src/agent/hosted-child-status.d.ts.map +1 -1
  220. package/esm/src/agent/hosted-child-status.js +2 -0
  221. package/esm/src/agent/hosted-child-tool-input.d.ts +21 -11
  222. package/esm/src/agent/hosted-child-tool-input.d.ts.map +1 -1
  223. package/esm/src/agent/hosted-child-tool-input.js +12 -10
  224. package/esm/src/agent/hosted-form-input-tool.d.ts +78 -86
  225. package/esm/src/agent/hosted-form-input-tool.d.ts.map +1 -1
  226. package/esm/src/agent/hosted-form-input-tool.js +10 -3
  227. package/esm/src/agent/human-input.d.ts +337 -277
  228. package/esm/src/agent/human-input.d.ts.map +1 -1
  229. package/esm/src/agent/human-input.js +88 -72
  230. package/esm/src/agent/index.d.ts +8 -7
  231. package/esm/src/agent/index.d.ts.map +1 -1
  232. package/esm/src/agent/index.js +8 -7
  233. package/esm/src/agent/input-request-protocol.d.ts +461 -1611
  234. package/esm/src/agent/input-request-protocol.d.ts.map +1 -1
  235. package/esm/src/agent/input-request-protocol.js +120 -107
  236. package/esm/src/agent/invoke-agent-child-runs.d.ts +109 -107
  237. package/esm/src/agent/invoke-agent-child-runs.d.ts.map +1 -1
  238. package/esm/src/agent/invoke-agent-child-runs.js +36 -29
  239. package/esm/src/agent/runtime-ag-ui-contract.d.ts +206 -206
  240. package/esm/src/agent/runtime-ag-ui-contract.d.ts.map +1 -1
  241. package/esm/src/agent/runtime-ag-ui-contract.js +96 -91
  242. package/esm/src/agent/runtime-agent-definition.d.ts +47 -24
  243. package/esm/src/agent/runtime-agent-definition.d.ts.map +1 -1
  244. package/esm/src/agent/runtime-agent-definition.js +26 -20
  245. package/esm/src/agent/runtime-agent-invocation-contract.d.ts +306 -168
  246. package/esm/src/agent/runtime-agent-invocation-contract.d.ts.map +1 -1
  247. package/esm/src/agent/runtime-agent-invocation-contract.js +116 -101
  248. package/esm/src/agent/runtime-builtin-skill-files.d.ts.map +1 -1
  249. package/esm/src/agent/runtime-builtin-skill-files.js +3 -2
  250. package/esm/src/agent/runtime-client-profile.d.ts +23 -32
  251. package/esm/src/agent/runtime-client-profile.d.ts.map +1 -1
  252. package/esm/src/agent/runtime-client-profile.js +29 -27
  253. package/esm/src/agent/runtime-load-skill-tool.d.ts +6 -7
  254. package/esm/src/agent/runtime-load-skill-tool.d.ts.map +1 -1
  255. package/esm/src/agent/runtime-load-skill-tool.js +7 -6
  256. package/esm/src/agent/runtime-project-files-client.d.ts +19 -10
  257. package/esm/src/agent/runtime-project-files-client.d.ts.map +1 -1
  258. package/esm/src/agent/runtime-project-files-client.js +33 -35
  259. package/esm/src/agent/runtime-skill-metadata.d.ts +6 -20
  260. package/esm/src/agent/runtime-skill-metadata.d.ts.map +1 -1
  261. package/esm/src/agent/runtime-skill-metadata.js +24 -18
  262. package/esm/src/agent/runtime-upload-url-client.d.ts.map +1 -1
  263. package/esm/src/agent/runtime-upload-url-client.js +19 -25
  264. package/esm/src/agent/schemas/agent.schema.d.ts +258 -307
  265. package/esm/src/agent/schemas/agent.schema.d.ts.map +1 -1
  266. package/esm/src/agent/schemas/agent.schema.js +105 -101
  267. package/esm/src/agent/schemas/index.d.ts +2 -2
  268. package/esm/src/agent/schemas/index.d.ts.map +1 -1
  269. package/esm/src/agent/schemas/index.js +2 -2
  270. package/esm/src/agent/schemas/tool.schema.d.ts +5 -5
  271. package/esm/src/agent/schemas/tool.schema.d.ts.map +1 -1
  272. package/esm/src/agent/schemas/tool.schema.js +4 -4
  273. package/esm/src/cache/schemas/cache-backend.schema.d.ts +15 -14
  274. package/esm/src/cache/schemas/cache-backend.schema.d.ts.map +1 -1
  275. package/esm/src/cache/schemas/cache-backend.schema.js +10 -7
  276. package/esm/src/cache/schemas/cache-key.schema.d.ts +12 -10
  277. package/esm/src/cache/schemas/cache-key.schema.d.ts.map +1 -1
  278. package/esm/src/cache/schemas/cache-key.schema.js +8 -6
  279. package/esm/src/channels/control-plane.d.ts +246 -156
  280. package/esm/src/channels/control-plane.d.ts.map +1 -1
  281. package/esm/src/channels/control-plane.js +80 -73
  282. package/esm/src/channels/invoke.d.ts +220 -134
  283. package/esm/src/channels/invoke.d.ts.map +1 -1
  284. package/esm/src/channels/invoke.js +105 -93
  285. package/esm/src/chat/ag-ui.d.ts +494 -273
  286. package/esm/src/chat/ag-ui.d.ts.map +1 -1
  287. package/esm/src/chat/ag-ui.js +164 -180
  288. package/esm/src/chat/conversation.d.ts +273 -183
  289. package/esm/src/chat/conversation.d.ts.map +1 -1
  290. package/esm/src/chat/conversation.js +97 -111
  291. package/esm/src/chat/types.d.ts +635 -14
  292. package/esm/src/chat/types.d.ts.map +1 -1
  293. package/esm/src/chat/types.js +146 -174
  294. package/esm/src/config/schemas/config.schema.d.ts +799 -395
  295. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  296. package/esm/src/config/schemas/config.schema.js +300 -268
  297. package/esm/src/data/schemas/data.schema.d.ts +89 -48
  298. package/esm/src/data/schemas/data.schema.d.ts.map +1 -1
  299. package/esm/src/data/schemas/data.schema.js +36 -29
  300. package/esm/src/extensions/builtin-extensions.d.ts.map +1 -1
  301. package/esm/src/extensions/builtin-extensions.js +9 -0
  302. package/esm/src/extensions/schema/index.d.ts +1 -1
  303. package/esm/src/extensions/schema/index.d.ts.map +1 -1
  304. package/esm/src/extensions/schema/json-schema.d.ts +23 -0
  305. package/esm/src/extensions/schema/json-schema.d.ts.map +1 -0
  306. package/esm/src/extensions/schema/json-schema.js +8 -0
  307. package/esm/src/extensions/schema/schema-validator.d.ts +97 -4
  308. package/esm/src/extensions/schema/schema-validator.d.ts.map +1 -1
  309. package/esm/src/html/hydration-script-builder/hydration-data-generator.js +1 -1
  310. package/esm/src/html/schemas/html.schema.d.ts +107 -90
  311. package/esm/src/html/schemas/html.schema.d.ts.map +1 -1
  312. package/esm/src/html/schemas/html.schema.js +60 -52
  313. package/esm/src/html/utils.d.ts.map +1 -1
  314. package/esm/src/html/utils.js +1 -1
  315. package/esm/src/integrations/schema.d.ts +455 -433
  316. package/esm/src/integrations/schema.d.ts.map +1 -1
  317. package/esm/src/integrations/schema.js +105 -95
  318. package/esm/src/internal-agents/ag-ui-sse.d.ts.map +1 -1
  319. package/esm/src/internal-agents/ag-ui-sse.js +60 -82
  320. package/esm/src/internal-agents/control-plane-auth.d.ts +10 -10
  321. package/esm/src/internal-agents/control-plane-auth.d.ts.map +1 -1
  322. package/esm/src/internal-agents/run-stream.d.ts.map +1 -1
  323. package/esm/src/internal-agents/run-stream.js +3 -2
  324. package/esm/src/internal-agents/schema.d.ts +272 -281
  325. package/esm/src/internal-agents/schema.d.ts.map +1 -1
  326. package/esm/src/internal-agents/schema.js +55 -47
  327. package/esm/src/issues/core.d.ts.map +1 -1
  328. package/esm/src/issues/mcp.d.ts.map +1 -1
  329. package/esm/src/issues/mcp.js +47 -41
  330. package/esm/src/issues/schemas/index.d.ts +1 -1
  331. package/esm/src/issues/schemas/index.d.ts.map +1 -1
  332. package/esm/src/issues/schemas/index.js +1 -1
  333. package/esm/src/issues/schemas/issue.schema.d.ts +151 -116
  334. package/esm/src/issues/schemas/issue.schema.d.ts.map +1 -1
  335. package/esm/src/issues/schemas/issue.schema.js +64 -55
  336. package/esm/src/jobs/schemas.d.ts +1087 -658
  337. package/esm/src/jobs/schemas.d.ts.map +1 -1
  338. package/esm/src/jobs/schemas.js +244 -214
  339. package/esm/src/mcp/index.d.ts +6 -2
  340. package/esm/src/mcp/index.d.ts.map +1 -1
  341. package/esm/src/mcp/index.js +6 -2
  342. package/esm/src/mcp/schemas/index.d.ts +1 -1
  343. package/esm/src/mcp/schemas/index.d.ts.map +1 -1
  344. package/esm/src/mcp/schemas/index.js +1 -1
  345. package/esm/src/mcp/schemas/mcp.schema.d.ts +59 -31
  346. package/esm/src/mcp/schemas/mcp.schema.d.ts.map +1 -1
  347. package/esm/src/mcp/schemas/mcp.schema.js +28 -24
  348. package/esm/src/mcp/types.d.ts +2 -2
  349. package/esm/src/mcp/types.d.ts.map +1 -1
  350. package/esm/src/oauth/providers/atlassian.d.ts +36 -30
  351. package/esm/src/oauth/providers/atlassian.d.ts.map +1 -1
  352. package/esm/src/oauth/providers/common.d.ts +312 -260
  353. package/esm/src/oauth/providers/common.d.ts.map +1 -1
  354. package/esm/src/oauth/providers/google.d.ts +48 -40
  355. package/esm/src/oauth/providers/google.d.ts.map +1 -1
  356. package/esm/src/oauth/providers/microsoft.d.ts +48 -40
  357. package/esm/src/oauth/providers/microsoft.d.ts.map +1 -1
  358. package/esm/src/oauth/schemas/oauth.schema.d.ts +180 -92
  359. package/esm/src/oauth/schemas/oauth.schema.d.ts.map +1 -1
  360. package/esm/src/oauth/schemas/oauth.schema.js +67 -59
  361. package/esm/src/platform/adapters/fs/github/github-api-client.d.ts.map +1 -1
  362. package/esm/src/platform/adapters/fs/github/github-api-client.js +4 -4
  363. package/esm/src/platform/adapters/fs/github/index.d.ts +1 -1
  364. package/esm/src/platform/adapters/fs/github/index.d.ts.map +1 -1
  365. package/esm/src/platform/adapters/fs/github/index.js +1 -1
  366. package/esm/src/platform/adapters/fs/github/schemas/github-api.schema.d.ts +97 -140
  367. package/esm/src/platform/adapters/fs/github/schemas/github-api.schema.d.ts.map +1 -1
  368. package/esm/src/platform/adapters/fs/github/schemas/github-api.schema.js +40 -37
  369. package/esm/src/platform/adapters/fs/github/schemas/index.d.ts +1 -1
  370. package/esm/src/platform/adapters/fs/github/schemas/index.d.ts.map +1 -1
  371. package/esm/src/platform/adapters/fs/github/schemas/index.js +1 -1
  372. package/esm/src/platform/adapters/fs/veryfront/proxy-manager.d.ts.map +1 -1
  373. package/esm/src/platform/adapters/fs/veryfront/proxy-manager.js +7 -4
  374. package/esm/src/platform/adapters/fs/veryfront/schemas/index.d.ts +1 -1
  375. package/esm/src/platform/adapters/fs/veryfront/schemas/index.d.ts.map +1 -1
  376. package/esm/src/platform/adapters/fs/veryfront/schemas/index.js +1 -1
  377. package/esm/src/platform/adapters/fs/veryfront/schemas/proxy-manager.schema.d.ts +11 -11
  378. package/esm/src/platform/adapters/fs/veryfront/schemas/proxy-manager.schema.d.ts.map +1 -1
  379. package/esm/src/platform/adapters/fs/veryfront/schemas/proxy-manager.schema.js +10 -10
  380. package/esm/src/platform/adapters/fs/veryfront/stat-operations.d.ts.map +1 -1
  381. package/esm/src/platform/adapters/fs/veryfront/stat-operations.js +1 -0
  382. package/esm/src/platform/adapters/veryfront-api-client/client.d.ts +63 -63
  383. package/esm/src/platform/adapters/veryfront-api-client/index.d.ts +1 -1
  384. package/esm/src/platform/adapters/veryfront-api-client/index.d.ts.map +1 -1
  385. package/esm/src/platform/adapters/veryfront-api-client/index.js +1 -1
  386. package/esm/src/platform/adapters/veryfront-api-client/operations.d.ts.map +1 -1
  387. package/esm/src/platform/adapters/veryfront-api-client/operations.js +11 -21
  388. package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.d.ts +444 -471
  389. package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.d.ts.map +1 -1
  390. package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.js +150 -122
  391. package/esm/src/platform/adapters/veryfront-api-client/schemas/index.d.ts +1 -1
  392. package/esm/src/platform/adapters/veryfront-api-client/schemas/index.d.ts.map +1 -1
  393. package/esm/src/platform/adapters/veryfront-api-client/schemas/index.js +1 -1
  394. package/esm/src/prompt/schemas/prompt.schema.d.ts +10 -9
  395. package/esm/src/prompt/schemas/prompt.schema.d.ts.map +1 -1
  396. package/esm/src/prompt/schemas/prompt.schema.js +8 -8
  397. package/esm/src/proxy/handler.d.ts.map +1 -1
  398. package/esm/src/proxy/handler.js +0 -1
  399. package/esm/src/repositories/schemas/repository.schema.d.ts +40 -25
  400. package/esm/src/repositories/schemas/repository.schema.d.ts.map +1 -1
  401. package/esm/src/repositories/schemas/repository.schema.js +23 -19
  402. package/esm/src/resource/index.d.ts +6 -2
  403. package/esm/src/resource/index.d.ts.map +1 -1
  404. package/esm/src/resource/index.js +6 -2
  405. package/esm/src/resource/schemas/index.d.ts +1 -1
  406. package/esm/src/resource/schemas/index.d.ts.map +1 -1
  407. package/esm/src/resource/schemas/index.js +1 -1
  408. package/esm/src/resource/schemas/resource.schema.d.ts +13 -16
  409. package/esm/src/resource/schemas/resource.schema.d.ts.map +1 -1
  410. package/esm/src/resource/schemas/resource.schema.js +9 -6
  411. package/esm/src/resource/types.d.ts +3 -3
  412. package/esm/src/resource/types.d.ts.map +1 -1
  413. package/esm/src/routing/api/openapi/types.d.ts +4 -4
  414. package/esm/src/routing/api/openapi/types.d.ts.map +1 -1
  415. package/esm/src/sandbox/hosted-tools.d.ts.map +1 -1
  416. package/esm/src/sandbox/hosted-tools.js +11 -13
  417. package/esm/src/schemas/common.d.ts +48 -28
  418. package/esm/src/schemas/common.d.ts.map +1 -1
  419. package/esm/src/schemas/common.js +67 -28
  420. package/esm/src/schemas/define.d.ts +3 -2
  421. package/esm/src/schemas/define.d.ts.map +1 -1
  422. package/esm/src/schemas/define.js +12 -6
  423. package/esm/src/schemas/index.d.ts +8 -4
  424. package/esm/src/schemas/index.d.ts.map +1 -1
  425. package/esm/src/schemas/index.js +8 -7
  426. package/esm/src/schemas/json-schema.d.ts +25 -0
  427. package/esm/src/schemas/json-schema.d.ts.map +1 -0
  428. package/esm/src/schemas/json-schema.js +27 -0
  429. package/esm/src/schemas/primitives.d.ts +34 -23
  430. package/esm/src/schemas/primitives.d.ts.map +1 -1
  431. package/esm/src/schemas/primitives.js +25 -18
  432. package/esm/src/security/input-validation/handler.d.ts +3 -3
  433. package/esm/src/security/input-validation/handler.d.ts.map +1 -1
  434. package/esm/src/security/input-validation/parsers.d.ts +4 -4
  435. package/esm/src/security/input-validation/parsers.d.ts.map +1 -1
  436. package/esm/src/security/input-validation/parsers.js +35 -45
  437. package/esm/src/server/bootstrap.js +2 -2
  438. package/esm/src/server/dev-ui/manifest.js +1 -1
  439. package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
  440. package/esm/src/server/handlers/dev/framework-candidates.generated.js +1 -0
  441. package/esm/src/server/handlers/request/agent-run-cancel.handler.d.ts.map +1 -1
  442. package/esm/src/server/handlers/request/agent-run-cancel.handler.js +2 -3
  443. package/esm/src/server/handlers/request/agent-run-resume.handler.d.ts.map +1 -1
  444. package/esm/src/server/handlers/request/agent-run-resume.handler.js +4 -5
  445. package/esm/src/server/handlers/request/agent-stream.handler.d.ts.map +1 -1
  446. package/esm/src/server/handlers/request/agent-stream.handler.js +3 -4
  447. package/esm/src/server/handlers/request/internal-agents-list.handler.d.ts.map +1 -1
  448. package/esm/src/server/handlers/request/internal-agents-list.handler.js +2 -4
  449. package/esm/src/server/runtime-handler/environment-resolution.d.ts.map +1 -1
  450. package/esm/src/server/runtime-handler/environment-resolution.js +4 -5
  451. package/esm/src/server/runtime-handler/request-utils.d.ts.map +1 -1
  452. package/esm/src/server/runtime-handler/request-utils.js +1 -2
  453. package/esm/src/server/schemas/action.schema.d.ts +10 -6
  454. package/esm/src/server/schemas/action.schema.d.ts.map +1 -1
  455. package/esm/src/server/schemas/action.schema.js +7 -5
  456. package/esm/src/skill/tools.d.ts.map +1 -1
  457. package/esm/src/skill/tools.js +24 -21
  458. package/esm/src/tool/factory.d.ts +1 -1
  459. package/esm/src/tool/factory.d.ts.map +1 -1
  460. package/esm/src/tool/factory.js +12 -1
  461. package/esm/src/tool/host-tools.d.ts +1 -1
  462. package/esm/src/tool/host-tools.d.ts.map +1 -1
  463. package/esm/src/tool/host-tools.js +17 -3
  464. package/esm/src/tool/index.d.ts +9 -5
  465. package/esm/src/tool/index.d.ts.map +1 -1
  466. package/esm/src/tool/index.js +9 -5
  467. package/esm/src/tool/remote-source-tools.d.ts.map +1 -1
  468. package/esm/src/tool/remote-source-tools.js +9 -2
  469. package/esm/src/tool/schema/json-schema.d.ts +8 -15
  470. package/esm/src/tool/schema/json-schema.d.ts.map +1 -1
  471. package/esm/src/tool/schema/json-schema.js +7 -0
  472. package/esm/src/tool/schema/zod-json-schema.d.ts +33 -4
  473. package/esm/src/tool/schema/zod-json-schema.d.ts.map +1 -1
  474. package/esm/src/tool/schema/zod-json-schema.js +70 -159
  475. package/esm/src/tool/sleep.d.ts +21 -11
  476. package/esm/src/tool/sleep.d.ts.map +1 -1
  477. package/esm/src/tool/sleep.js +42 -4
  478. package/esm/src/tool/types.d.ts +12 -8
  479. package/esm/src/tool/types.d.ts.map +1 -1
  480. package/esm/src/transforms/npm-import-rewrites.d.ts +1 -1
  481. package/esm/src/transforms/npm-import-rewrites.d.ts.map +1 -1
  482. package/esm/src/transforms/npm-import-rewrites.js +1 -3
  483. package/esm/src/utils/version-constant.d.ts +1 -1
  484. package/esm/src/utils/version-constant.js +1 -1
  485. package/esm/src/workflow/api.d.ts +22 -22
  486. package/esm/src/workflow/blob/veryfront-cloud-storage.d.ts.map +1 -1
  487. package/esm/src/workflow/blob/veryfront-cloud-storage.js +37 -33
  488. package/esm/src/workflow/claude-code/tool.d.ts +37 -44
  489. package/esm/src/workflow/claude-code/tool.d.ts.map +1 -1
  490. package/esm/src/workflow/claude-code/tool.js +11 -19
  491. package/esm/src/workflow/dsl/workflow.d.ts +3 -3
  492. package/esm/src/workflow/dsl/workflow.d.ts.map +1 -1
  493. package/esm/src/workflow/schemas/index.d.ts +1 -1
  494. package/esm/src/workflow/schemas/index.d.ts.map +1 -1
  495. package/esm/src/workflow/schemas/index.js +1 -1
  496. package/esm/src/workflow/schemas/workflow.schema.d.ts +194 -177
  497. package/esm/src/workflow/schemas/workflow.schema.d.ts.map +1 -1
  498. package/esm/src/workflow/schemas/workflow.schema.js +101 -83
  499. package/esm/src/workflow/types.d.ts +3 -3
  500. package/esm/src/workflow/types.d.ts.map +1 -1
  501. package/package.json +4 -1
  502. package/src/cli/commands/analyze-chunks/handler.ts +9 -5
  503. package/src/cli/commands/build/handler.ts +20 -15
  504. package/src/cli/commands/clean/command.ts +1 -1
  505. package/src/cli/commands/clean/handler.ts +12 -8
  506. package/src/cli/commands/demo/handler.ts +12 -7
  507. package/src/cli/commands/deploy/command.ts +17 -12
  508. package/src/cli/commands/dev/handler.ts +11 -7
  509. package/src/cli/commands/doctor/handler.ts +8 -4
  510. package/src/cli/commands/files/command.ts +64 -44
  511. package/src/cli/commands/generate/handler.ts +9 -5
  512. package/src/cli/commands/generate/integration-generator-helpers.ts +4 -4
  513. package/src/cli/commands/generate/integration-generator.ts +8 -4
  514. package/src/cli/commands/install/detect.ts +1 -1
  515. package/src/cli/commands/install/handler.ts +10 -6
  516. package/src/cli/commands/install/install.ts +20 -12
  517. package/src/cli/commands/install/types.ts +58 -41
  518. package/src/cli/commands/install/uninstall.ts +6 -2
  519. package/src/cli/commands/knowledge/command.ts +60 -52
  520. package/src/cli/commands/lock/handler.ts +13 -9
  521. package/src/cli/commands/mcp/handler.ts +8 -4
  522. package/src/cli/commands/merge/command.ts +14 -9
  523. package/src/cli/commands/open/command.ts +12 -7
  524. package/src/cli/commands/pull/command.ts +20 -15
  525. package/src/cli/commands/push/command.ts +17 -12
  526. package/src/cli/commands/routes/handler.ts +9 -5
  527. package/src/cli/commands/schema/handler.ts +8 -4
  528. package/src/cli/commands/serve/handler.ts +15 -11
  529. package/src/cli/commands/start/handler.ts +11 -7
  530. package/src/cli/commands/studio/handler.ts +10 -6
  531. package/src/cli/commands/styles/command.ts +22 -17
  532. package/src/cli/commands/styles/handler.ts +12 -7
  533. package/src/cli/commands/task/handler.ts +12 -7
  534. package/src/cli/commands/test/handler.ts +9 -5
  535. package/src/cli/commands/up/command.ts +11 -6
  536. package/src/cli/commands/uploads/command.ts +72 -52
  537. package/src/cli/commands/worker/handler.ts +16 -11
  538. package/src/cli/commands/workflow/handler.ts +13 -8
  539. package/src/cli/mcp/jsonrpc.ts +32 -19
  540. package/src/cli/mcp/remote-file-tools.ts +134 -97
  541. package/src/cli/mcp/server.ts +2 -80
  542. package/src/cli/mcp/tools/bootstrap-tool.ts +11 -7
  543. package/src/cli/mcp/tools/build-tool.ts +32 -28
  544. package/src/cli/mcp/tools/catalog-tools.ts +53 -42
  545. package/src/cli/mcp/tools/context7-tools.ts +29 -25
  546. package/src/cli/mcp/tools/deploy-tool.ts +17 -13
  547. package/src/cli/mcp/tools/dev-tools.ts +90 -66
  548. package/src/cli/mcp/tools/introspection-tools.ts +8 -6
  549. package/src/cli/mcp/tools/project-tools.ts +45 -32
  550. package/src/cli/mcp/tools/run-lint-tool.ts +11 -7
  551. package/src/cli/mcp/tools/run-tests-tool.ts +17 -13
  552. package/src/cli/mcp/tools/scaffold-tools.ts +43 -36
  553. package/src/cli/mcp/tools/skill-tools.ts +17 -12
  554. package/src/cli/mcp/tools.ts +65 -51
  555. package/src/cli/shared/args.ts +12 -9
  556. package/src/cli/shared/config.ts +32 -22
  557. package/src/cli/shared/project-source-context.ts +1 -1
  558. package/src/cli/shared/types.ts +5 -3
  559. package/src/cli/skills/types.ts +29 -24
  560. package/src/cli/templates/manifest.js +211 -211
  561. package/src/deno.js +10 -4
  562. package/src/extensions/ext-zod/src/adapter.ts +238 -0
  563. package/src/extensions/ext-zod/src/index.ts +36 -0
  564. package/src/extensions/ext-zod/src/json-schema.ts +311 -0
  565. package/src/src/agent/ag-ui-detached-start.ts +44 -21
  566. package/src/src/agent/ag-ui-forwarded-context.ts +6 -4
  567. package/src/src/agent/ag-ui-handler.ts +7 -3
  568. package/src/src/agent/ag-ui-host-support.ts +84 -66
  569. package/src/src/agent/ag-ui-request-shared.ts +16 -2
  570. package/src/src/agent/ag-ui-run-control.ts +26 -15
  571. package/src/src/agent/ag-ui-runtime-handler.ts +7 -3
  572. package/src/src/agent/ag-ui-sse-parser.ts +306 -0
  573. package/src/src/agent/ag-ui-tool-shared.ts +5 -2
  574. package/src/src/agent/chat-handler.ts +89 -67
  575. package/src/src/agent/composition/composition.ts +2 -2
  576. package/src/src/agent/conversation-bootstrap.ts +38 -17
  577. package/src/src/agent/conversation-hosted-lifecycle.ts +12 -10
  578. package/src/src/agent/conversation-run-events.ts +13 -5
  579. package/src/src/agent/default-hosted-invoke-agent-tool.ts +19 -8
  580. package/src/src/agent/durable.ts +186 -144
  581. package/src/src/agent/hosted-ag-ui-chat-request.ts +26 -16
  582. package/src/src/agent/hosted-agent-service-routes.ts +4 -3
  583. package/src/src/agent/hosted-chat-request-parser.ts +8 -4
  584. package/src/src/agent/hosted-chat-request.ts +46 -32
  585. package/src/src/agent/hosted-child-fork-step-message-preparation.ts +3 -1
  586. package/src/src/agent/hosted-child-status.ts +8 -1
  587. package/src/src/agent/hosted-child-tool-input.ts +27 -19
  588. package/src/src/agent/hosted-durable-child-fork-execution.ts +3 -3
  589. package/src/src/agent/hosted-form-input-tool.ts +15 -5
  590. package/src/src/agent/human-input.ts +129 -92
  591. package/src/src/agent/index.ts +38 -20
  592. package/src/src/agent/input-request-protocol.ts +193 -124
  593. package/src/src/agent/invoke-agent-child-runs.ts +64 -44
  594. package/src/src/agent/runtime-ag-ui-contract.ts +159 -123
  595. package/src/src/agent/runtime-agent-definition.ts +45 -24
  596. package/src/src/agent/runtime-agent-invocation-contract.ts +241 -174
  597. package/src/src/agent/runtime-builtin-skill-files.ts +3 -2
  598. package/src/src/agent/runtime-client-profile.ts +51 -34
  599. package/src/src/agent/runtime-load-skill-tool.ts +19 -12
  600. package/src/src/agent/runtime-project-files-client.ts +51 -39
  601. package/src/src/agent/runtime-skill-metadata.ts +41 -24
  602. package/src/src/agent/runtime-upload-url-client.ts +24 -24
  603. package/src/src/agent/schemas/agent.schema.ts +179 -142
  604. package/src/src/agent/schemas/index.ts +15 -15
  605. package/src/src/agent/schemas/tool.schema.ts +8 -5
  606. package/src/src/cache/schemas/cache-backend.schema.ts +18 -9
  607. package/src/src/cache/schemas/cache-key.schema.ts +13 -7
  608. package/src/src/channels/control-plane.ts +132 -96
  609. package/src/src/channels/invoke.ts +165 -120
  610. package/src/src/chat/ag-ui.ts +229 -225
  611. package/src/src/chat/conversation.ts +121 -124
  612. package/src/src/chat/types.ts +230 -205
  613. package/src/src/config/schemas/config.schema.ts +653 -610
  614. package/src/src/data/schemas/data.schema.ts +62 -39
  615. package/src/src/extensions/builtin-extensions.ts +9 -0
  616. package/src/src/extensions/schema/index.ts +3 -0
  617. package/src/src/extensions/schema/json-schema.ts +23 -0
  618. package/src/src/extensions/schema/schema-validator.ts +105 -6
  619. package/src/src/html/html-shell-generator.ts +1 -1
  620. package/src/src/html/hydration-script-builder/hydration-data-generator.ts +2 -2
  621. package/src/src/html/schemas/html.schema.ts +81 -65
  622. package/src/src/html/utils.ts +4 -1
  623. package/src/src/integrations/schema.ts +140 -111
  624. package/src/src/internal-agents/ag-ui-sse.ts +85 -83
  625. package/src/src/internal-agents/run-stream.ts +4 -2
  626. package/src/src/internal-agents/schema.ts +120 -89
  627. package/src/src/issues/core.ts +3 -1
  628. package/src/src/issues/mcp.ts +81 -58
  629. package/src/src/issues/schemas/index.ts +11 -0
  630. package/src/src/issues/schemas/issue.schema.ts +99 -73
  631. package/src/src/jobs/jobs-client.ts +4 -4
  632. package/src/src/jobs/schemas.ts +414 -297
  633. package/src/src/mcp/index.ts +6 -2
  634. package/src/src/mcp/schemas/index.ts +3 -0
  635. package/src/src/mcp/schemas/mcp.schema.ts +45 -29
  636. package/src/src/mcp/types.ts +2 -3
  637. package/src/src/oauth/schemas/oauth.schema.ts +96 -70
  638. package/src/src/platform/adapters/fs/github/github-api-client.ts +6 -6
  639. package/src/src/platform/adapters/fs/github/index.ts +5 -5
  640. package/src/src/platform/adapters/fs/github/schemas/github-api.schema.ts +58 -42
  641. package/src/src/platform/adapters/fs/github/schemas/index.ts +5 -5
  642. package/src/src/platform/adapters/fs/veryfront/proxy-manager.ts +9 -5
  643. package/src/src/platform/adapters/fs/veryfront/schemas/index.ts +1 -1
  644. package/src/src/platform/adapters/fs/veryfront/schemas/proxy-manager.schema.ts +14 -11
  645. package/src/src/platform/adapters/fs/veryfront/stat-operations.ts +1 -0
  646. package/src/src/platform/adapters/veryfront-api-client/index.ts +17 -16
  647. package/src/src/platform/adapters/veryfront-api-client/operations.ts +20 -31
  648. package/src/src/platform/adapters/veryfront-api-client/schemas/api.schema.ts +231 -150
  649. package/src/src/platform/adapters/veryfront-api-client/schemas/index.ts +17 -16
  650. package/src/src/prompt/schemas/prompt.schema.ts +13 -10
  651. package/src/src/proxy/handler.ts +0 -1
  652. package/src/src/rendering/orchestrator/html-project-css.ts +1 -1
  653. package/src/src/rendering/renderer.ts +2 -2
  654. package/src/src/repositories/schemas/repository.schema.ts +36 -22
  655. package/src/src/resource/index.ts +6 -2
  656. package/src/src/resource/schemas/index.ts +2 -0
  657. package/src/src/resource/schemas/resource.schema.ts +17 -8
  658. package/src/src/resource/types.ts +3 -3
  659. package/src/src/routing/api/openapi/types.ts +5 -5
  660. package/src/src/sandbox/hosted-tools.ts +17 -13
  661. package/src/src/schemas/common.ts +83 -31
  662. package/src/src/schemas/define.ts +13 -6
  663. package/src/src/schemas/index.ts +29 -17
  664. package/src/src/schemas/json-schema.ts +33 -0
  665. package/src/src/schemas/primitives.ts +71 -35
  666. package/src/src/security/http/config.ts +1 -1
  667. package/src/src/security/input-validation/handler.ts +3 -3
  668. package/src/src/security/input-validation/parsers.ts +40 -45
  669. package/src/src/server/bootstrap.ts +3 -3
  670. package/src/src/server/dev-ui/manifest.js +1 -1
  671. package/src/src/server/handlers/dev/framework-candidates.generated.ts +1 -0
  672. package/src/src/server/handlers/request/agent-run-cancel.handler.ts +2 -6
  673. package/src/src/server/handlers/request/agent-run-resume.handler.ts +4 -9
  674. package/src/src/server/handlers/request/agent-stream.handler.ts +2 -4
  675. package/src/src/server/handlers/request/internal-agents-list.handler.ts +2 -5
  676. package/src/src/server/runtime-handler/environment-resolution.ts +4 -5
  677. package/src/src/server/runtime-handler/request-utils.ts +1 -2
  678. package/src/src/server/schemas/action.schema.ts +12 -6
  679. package/src/src/skill/tools.ts +37 -25
  680. package/src/src/tool/factory.ts +23 -5
  681. package/src/src/tool/host-tools.ts +16 -6
  682. package/src/src/tool/index.ts +9 -5
  683. package/src/src/tool/remote-source-tools.ts +10 -2
  684. package/src/src/tool/schema/json-schema.ts +9 -15
  685. package/src/src/tool/schema/zod-json-schema.ts +75 -209
  686. package/src/src/tool/sleep.ts +55 -7
  687. package/src/src/tool/types.ts +12 -8
  688. package/src/src/transforms/npm-import-rewrites.ts +1 -3
  689. package/src/src/utils/version-constant.ts +1 -1
  690. package/src/src/workflow/blob/veryfront-cloud-storage.ts +53 -39
  691. package/src/src/workflow/claude-code/tool.ts +29 -38
  692. package/src/src/workflow/dsl/workflow.ts +3 -3
  693. package/src/src/workflow/schemas/index.ts +17 -0
  694. package/src/src/workflow/schemas/workflow.schema.ts +183 -123
  695. package/src/src/workflow/types.ts +3 -3
  696. package/esm/src/schemas/zod-adapter.d.ts +0 -25
  697. package/esm/src/schemas/zod-adapter.d.ts.map +0 -1
  698. package/esm/src/schemas/zod-adapter.js +0 -120
  699. package/src/src/schemas/zod-adapter.ts +0 -180
@@ -1,24 +1,35 @@
1
- import { z } from "zod";
2
- export declare const nonEmptyString: z.ZodString;
3
- export type NonEmptyString = z.infer<typeof nonEmptyString>;
4
- export declare const positiveInt: z.ZodNumber;
5
- export type PositiveInt = z.infer<typeof positiveInt>;
6
- export declare const nonNegativeInt: z.ZodNumber;
7
- export type NonNegativeInt = z.infer<typeof nonNegativeInt>;
8
- export declare const portNumber: z.ZodNumber;
9
- export type PortNumber = z.infer<typeof portNumber>;
10
- export declare const timestamp: z.ZodString;
11
- export type Timestamp = z.infer<typeof timestamp>;
12
- export declare const jsonValue: z.ZodType<string | number | boolean | null | {
13
- [key: string]: unknown;
14
- } | unknown[]>;
15
- export type JsonValue = z.infer<typeof jsonValue>;
16
- export declare const hexColor: z.ZodString;
17
- export type HexColor = z.infer<typeof hexColor>;
18
- export declare const semver: z.ZodString;
19
- export type Semver = z.infer<typeof semver>;
20
- export declare const filePath: z.ZodString;
21
- export type FilePath = z.infer<typeof filePath>;
22
- export declare const absolutePath: z.ZodString;
23
- export type AbsolutePath = z.infer<typeof absolutePath>;
1
+ /**
2
+ * Reusable validation primitives, expressed against the `SchemaValidator`
3
+ * contract via `defineSchema`. Each export is a lazy getter — calling it
4
+ * materializes (and caches) the schema on first use.
5
+ *
6
+ * @module schemas/primitives
7
+ */
8
+ import type { InferSchema, Schema } from "../extensions/schema/index.js";
9
+ export declare const getNonEmptyStringSchema: () => Schema<string>;
10
+ export type NonEmptyString = InferSchema<ReturnType<typeof getNonEmptyStringSchema>>;
11
+ export declare const getPositiveIntSchema: () => Schema<number>;
12
+ export type PositiveInt = InferSchema<ReturnType<typeof getPositiveIntSchema>>;
13
+ export declare const getNonNegativeIntSchema: () => Schema<number>;
14
+ export type NonNegativeInt = InferSchema<ReturnType<typeof getNonNegativeIntSchema>>;
15
+ export declare const getPortNumberSchema: () => Schema<number>;
16
+ export type PortNumber = InferSchema<ReturnType<typeof getPortNumberSchema>>;
17
+ export declare const getTimestampSchema: () => Schema<string>;
18
+ export type Timestamp = InferSchema<ReturnType<typeof getTimestampSchema>>;
19
+ /**
20
+ * Recursive JSON value type — a string, number, boolean, null, array of
21
+ * JsonValue, or object with string keys and JsonValue values.
22
+ */
23
+ export type JsonValue = string | number | boolean | null | JsonValue[] | {
24
+ [key: string]: JsonValue;
25
+ };
26
+ export declare const getJsonValueSchema: () => Schema<JsonValue>;
27
+ export declare const getHexColorSchema: () => Schema<string>;
28
+ export type HexColor = InferSchema<ReturnType<typeof getHexColorSchema>>;
29
+ export declare const getSemverSchema: () => Schema<string>;
30
+ export type Semver = InferSchema<ReturnType<typeof getSemverSchema>>;
31
+ export declare const getFilePathSchema: () => Schema<string>;
32
+ export type FilePath = InferSchema<ReturnType<typeof getFilePathSchema>>;
33
+ export declare const getAbsolutePathSchema: () => Schema<string>;
34
+ export type AbsolutePath = InferSchema<ReturnType<typeof getAbsolutePathSchema>>;
24
35
  //# sourceMappingURL=primitives.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc,aAA8C,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,WAAW,aAA0D,CAAC;AACnF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc,aAAiE,CAAC;AAC7F,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,UAAU,aAAyE,CAAC;AACjG,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,SAAS,aAAwB,CAAC;AAC/C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,OAAO,CAC/B,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,OAAO,EAAE,CAU1E,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,QAAQ,aAA8E,CAAC;AACpG,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,MAAM,aAGlB,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE5C,eAAO,MAAM,QAAQ,aAAiD,CAAC;AACvE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,YAAY,aAGxB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAGzE,eAAO,MAAM,uBAAuB,sBAEnC,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC;AAErF,eAAO,MAAM,oBAAoB,sBAEhC,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;AAE/E,eAAO,MAAM,uBAAuB,sBAEnC,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC;AAErF,eAAO,MAAM,mBAAmB,sBAE/B,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;AAE7E,eAAO,MAAM,kBAAkB,sBAA6C,CAAC;AAC7E,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,eAAO,MAAM,kBAAkB,yBAW9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,sBAE7B,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,eAAO,MAAM,eAAe,sBAK3B,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC;AAErE,eAAO,MAAM,iBAAiB,sBAE7B,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE,eAAO,MAAM,qBAAqB,sBAKjC,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC"}
@@ -1,18 +1,25 @@
1
- import { z } from "zod";
2
- export const nonEmptyString = z.string().min(1, "String cannot be empty");
3
- export const positiveInt = z.number().int().positive("Must be a positive integer");
4
- export const nonNegativeInt = z.number().int().nonnegative("Must be a non-negative integer");
5
- export const portNumber = z.number().int().min(1).max(65535, "Port must be between 1 and 65535");
6
- export const timestamp = z.string().datetime();
7
- export const jsonValue = z.lazy(() => z.union([
8
- z.string(),
9
- z.number(),
10
- z.boolean(),
11
- z.null(),
12
- z.array(jsonValue),
13
- z.record(z.string(), jsonValue),
14
- ]));
15
- export const hexColor = z.string().regex(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, "Invalid hex color");
16
- export const semver = z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/, "Invalid semantic version");
17
- export const filePath = z.string().min(1, "File path cannot be empty");
18
- export const absolutePath = z.string().regex(/^(?:\/|[A-Za-z]:\\)/, "Path must be absolute (start with / or drive letter)");
1
+ /**
2
+ * Reusable validation primitives, expressed against the `SchemaValidator`
3
+ * contract via `defineSchema`. Each export is a lazy getter — calling it
4
+ * materializes (and caches) the schema on first use.
5
+ *
6
+ * @module schemas/primitives
7
+ */
8
+ import { defineSchema } from "./define.js";
9
+ export const getNonEmptyStringSchema = defineSchema((v) => v.string().min(1, "String cannot be empty"));
10
+ export const getPositiveIntSchema = defineSchema((v) => v.number().int().positive("Must be a positive integer"));
11
+ export const getNonNegativeIntSchema = defineSchema((v) => v.number().int().nonnegative("Must be a non-negative integer"));
12
+ export const getPortNumberSchema = defineSchema((v) => v.number().int().min(1).max(65535, "Port must be between 1 and 65535"));
13
+ export const getTimestampSchema = defineSchema((v) => v.string().datetime());
14
+ export const getJsonValueSchema = defineSchema((v) => v.lazy(() => v.union([
15
+ v.string(),
16
+ v.number(),
17
+ v.boolean(),
18
+ v.null(),
19
+ v.array(getJsonValueSchema()),
20
+ v.record(v.string(), getJsonValueSchema()),
21
+ ])));
22
+ export const getHexColorSchema = defineSchema((v) => v.string().regex(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, "Invalid hex color"));
23
+ export const getSemverSchema = defineSchema((v) => v.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/, "Invalid semantic version"));
24
+ export const getFilePathSchema = defineSchema((v) => v.string().min(1, "File path cannot be empty"));
25
+ export const getAbsolutePathSchema = defineSchema((v) => v.string().regex(/^(?:\/|[A-Za-z]:\\)/, "Path must be absolute (start with / or drive letter)"));
@@ -1,8 +1,8 @@
1
- import { z } from "zod";
1
+ import type { Schema } from "../../extensions/schema/index.js";
2
2
  import { type RequestLimits, type ValidatedData } from "./types.js";
3
3
  export interface ValidatedHandlerConfig<TBody = unknown, TQuery = unknown> {
4
- body?: z.ZodSchema<TBody>;
5
- query?: z.ZodSchema<TQuery>;
4
+ body?: Schema<TBody>;
5
+ query?: Schema<TQuery>;
6
6
  limits?: RequestLimits;
7
7
  }
8
8
  export type ValidatedHandlerFunction<TBody = unknown, TQuery = unknown> = (request: Request, validated: ValidatedData<TBody, TQuery>) => Promise<Response> | Response;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/src/security/input-validation/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,sBAAsB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IACvE,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,CACxE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,KACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAElC,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,EACtE,MAAM,EAAE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAC7C,OAAO,EAAE,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,GAC/C,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA0BzC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/src/security/input-validation/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,sBAAsB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,CACxE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,KACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAElC,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,EACtE,MAAM,EAAE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAC7C,OAAO,EAAE,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,GAC/C,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA0BzC"}
@@ -1,6 +1,6 @@
1
- import { z } from "zod";
1
+ import type { Schema } from "../../extensions/schema/index.js";
2
2
  import { type ParseFormOptions, type ParseJsonOptions } from "./types.js";
3
- export declare function parseJsonBody<T>(request: Request, schema: z.ZodSchema<T>, options?: ParseJsonOptions): Promise<T>;
4
- export declare function parseFormData<T>(request: Request, schema: z.ZodSchema<T>, options?: ParseFormOptions): Promise<T>;
5
- export declare function parseQueryParams<T>(request: Request, schema: z.ZodSchema<T>): T;
3
+ export declare function parseJsonBody<T>(request: Request, schema: Schema<T>, options?: ParseJsonOptions): Promise<T>;
4
+ export declare function parseFormData<T>(request: Request, schema: Schema<T>, options?: ParseFormOptions): Promise<T>;
5
+ export declare function parseQueryParams<T>(request: Request, schema: Schema<T>): T;
6
6
  //# sourceMappingURL=parsers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/src/security/input-validation/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1F,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,CAAC,CAAC,CA8BZ;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CA6B/E"}
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/src/security/input-validation/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAI/D,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1F,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,CAAC,CAAC,CA6BZ;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CA2B1E"}
@@ -1,4 +1,3 @@
1
- import { z } from "zod";
2
1
  import { createValidationError, VeryfrontError } from "./errors.js";
3
2
  import { readBodyWithLimit, validateContentType, validateRequestLimits } from "./limits.js";
4
3
  import { sanitizeData } from "./sanitizers.js";
@@ -21,47 +20,41 @@ export async function parseJsonBody(request, schema, options) {
21
20
  error: error instanceof Error ? error.message : "Parse error",
22
21
  });
23
22
  }
24
- try {
25
- const validated = await schema.parseAsync(data);
26
- return options?.sanitize ? sanitizeData(validated) : validated;
27
- }
28
- catch (error) {
29
- if (!(error instanceof z.ZodError))
30
- throw error;
31
- throw createValidationError("Validation failed", {
32
- errors: error.issues.map((e) => ({
33
- path: e.path.join("."),
34
- message: e.message,
35
- code: e.code,
36
- })),
37
- });
23
+ const result = schema.safeParse(data);
24
+ if (result.success) {
25
+ return options?.sanitize ? sanitizeData(result.data) : result.data;
38
26
  }
27
+ const issues = result.issues ?? [];
28
+ throw createValidationError("Validation failed", {
29
+ errors: issues.map((e) => ({
30
+ path: e.path.join("."),
31
+ message: e.message,
32
+ code: e.code ?? "custom",
33
+ })),
34
+ });
39
35
  }
40
36
  export async function parseFormData(request, schema, options) {
41
37
  validateRequestLimits(request, options?.limits);
42
38
  validateContentType(request, ["multipart/form-data", "application/x-www-form-urlencoded"]);
43
- try {
44
- const formData = await request.formData();
45
- const data = {};
46
- const maxFileSize = options?.limits?.maxFileSize ?? DEFAULT_LIMITS.maxFileSize;
47
- for (const [key, value] of formData.entries()) {
48
- if (value instanceof File && value.size > maxFileSize) {
49
- throw createValidationError(`File ${key} too large`, {
50
- maxSize: maxFileSize,
51
- actualSize: value.size,
52
- });
53
- }
54
- data[key] = value;
39
+ const formData = await request.formData();
40
+ const data = {};
41
+ const maxFileSize = options?.limits?.maxFileSize ?? DEFAULT_LIMITS.maxFileSize;
42
+ for (const [key, value] of formData.entries()) {
43
+ if (value instanceof File && value.size > maxFileSize) {
44
+ throw createValidationError(`File ${key} too large`, {
45
+ maxSize: maxFileSize,
46
+ actualSize: value.size,
47
+ });
55
48
  }
56
- return await schema.parseAsync(data);
57
- }
58
- catch (error) {
59
- if (!(error instanceof z.ZodError))
60
- throw error;
61
- throw createValidationError("Form validation failed", {
62
- errors: error.issues,
63
- });
49
+ data[key] = value;
64
50
  }
51
+ const result = schema.safeParse(data);
52
+ if (result.success)
53
+ return result.data;
54
+ const issues = result.issues ?? [];
55
+ throw createValidationError("Form validation failed", {
56
+ errors: issues,
57
+ });
65
58
  }
66
59
  export function parseQueryParams(request, schema) {
67
60
  const url = new URL(request.url);
@@ -78,14 +71,11 @@ export function parseQueryParams(request, schema) {
78
71
  }
79
72
  params[key] = [existing, value];
80
73
  }
81
- try {
82
- return schema.parse(params);
83
- }
84
- catch (error) {
85
- if (!(error instanceof z.ZodError))
86
- throw error;
87
- throw createValidationError("Query parameter validation failed", {
88
- errors: error.issues,
89
- });
90
- }
74
+ const result = schema.safeParse(params);
75
+ if (result.success)
76
+ return result.data;
77
+ const issues = result.issues ?? [];
78
+ throw createValidationError("Query parameter validation failed", {
79
+ errors: issues,
80
+ });
91
81
  }
@@ -75,8 +75,8 @@ function maybeAttachFileLogSubscriber(config) {
75
75
  path: fileConfig.path ?? DEFAULT_FILE_LOG_PATH,
76
76
  maxSize: fileConfig.maxSize ?? DEFAULT_FILE_LOG_MAX_SIZE,
77
77
  maxFiles: fileConfig.maxFiles ?? DEFAULT_FILE_LOG_MAX_FILES,
78
- level: fileConfig.level ?? DEFAULT_FILE_LOG_LEVEL,
79
- format: fileConfig.format ?? DEFAULT_FILE_LOG_FORMAT,
78
+ level: (fileConfig.level ?? DEFAULT_FILE_LOG_LEVEL),
79
+ format: (fileConfig.format ?? DEFAULT_FILE_LOG_FORMAT),
80
80
  };
81
81
  const subscriber = createFileLogSubscriber(resolved);
82
82
  const unsubscribe = getLogBuffer().subscribe(subscriber.getSubscriber());
@@ -24,7 +24,7 @@ export default {
24
24
  "dashboard/components/FilesTab.tsx": "import { useEffect, useMemo, useState } from \"react\";\nimport type { FileItem } from \"../App.tsx\";\nimport { Card } from \"./Card.tsx\";\nimport { Sidebar } from \"./Sidebar.tsx\";\nimport { DetailHeader, ErrorState, formatSize, LoadingState, TwoColumnLayout } from \"./shared.tsx\";\n\nexport function FilesTab(): React.ReactElement {\n const [currentPath, setCurrentPath] = useState(\"\");\n const [files, setFiles] = useState<FileItem[]>([]);\n const [selectedFile, setSelectedFile] = useState<string | null>(null);\n const [search, setSearch] = useState(\"\");\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function loadFiles(path: string): Promise<void> {\n setLoading(true);\n try {\n const res = await fetch(`/_dev/api/files?path=${encodeURIComponent(path)}`);\n const data = await res.json();\n setFiles(data.files ?? []);\n } catch (e) {\n console.error(\"Failed to load files:\", e);\n setFiles([]);\n } finally {\n setLoading(false);\n }\n }\n\n void loadFiles(currentPath);\n }, [currentPath]);\n\n const filteredFiles = useMemo((): FileItem[] => {\n if (!search) return files;\n const q = search.toLowerCase();\n return files.filter((f) => f.name.toLowerCase().includes(q));\n }, [files, search]);\n\n function handleSelect(id: string): void {\n const file = files.find((f) => f.path === id);\n if (!file) return;\n\n if (file.type !== \"directory\") {\n setSelectedFile(file.path);\n return;\n }\n\n setCurrentPath(file.path);\n setSelectedFile(null);\n setSearch(\"\");\n }\n\n function handleBack(): void {\n setCurrentPath(currentPath.split(\"/\").slice(0, -1).join(\"/\"));\n setSelectedFile(null);\n }\n\n const sidebar = (\n <Sidebar\n search={search}\n onSearchChange={setSearch}\n items={filteredFiles.map((f) => ({\n id: f.path,\n label: f.type === \"directory\" ? `${f.name}/` : f.name,\n bold: f.type === \"directory\",\n }))}\n selectedId={selectedFile}\n onSelect={handleSelect}\n emptyMessage={loading ? \"Loading...\" : \"No files found\"}\n onBack={currentPath && !search ? handleBack : undefined}\n />\n );\n\n return (\n <TwoColumnLayout sidebar={sidebar}>\n {selectedFile\n ? <FileDetail path={selectedFile} />\n : <DirectoryInfo path={currentPath} fileCount={files.length} />}\n </TwoColumnLayout>\n );\n}\n\nfunction DirectoryInfo(\n { path, fileCount }: { path: string; fileCount: number },\n): React.ReactElement {\n return (\n <div>\n <DetailHeader title={path || \"Project Root\"} description={`${fileCount} items`} />\n <Card>\n <div className=\"p-4 text-sm text-gray-400\">Select a file to view its contents</div>\n </Card>\n </div>\n );\n}\n\ninterface FileContent {\n content?: string;\n lines?: number;\n size?: number;\n isBinary?: boolean;\n message?: string;\n error?: string;\n}\n\nfunction FileDetail({ path }: { path: string }): React.ReactElement {\n const [content, setContent] = useState<FileContent | null>(null);\n const [loading, setLoading] = useState(true);\n\n const filename = useMemo((): string => path.split(\"/\").pop() ?? \"\", [path]);\n const ext = useMemo((): string => path.split(\".\").pop()?.toLowerCase() ?? \"\", [path]);\n\n useEffect(() => {\n async function loadContent(): Promise<void> {\n setLoading(true);\n try {\n const res = await fetch(`/_dev/api/file-content?path=${encodeURIComponent(path)}`);\n const data = await res.json();\n setContent(data);\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n setContent({ error: message });\n } finally {\n setLoading(false);\n }\n }\n loadContent();\n }, [path]);\n\n const title = !loading && content?.content !== undefined ? \"Contents\" : undefined;\n const titleRight = content?.lines\n ? <span className=\"text-[11px] text-gray-400 font-normal\">{content.lines} lines</span>\n : undefined;\n\n let body: React.ReactNode = null;\n if (loading) {\n body = <LoadingState message=\"Loading file contents...\" />;\n } else if (content?.error) {\n body = <ErrorState error={content.error} />;\n } else if (content?.isBinary) {\n body = <div className=\"p-4 text-sm text-gray-400\">{content.message}</div>;\n } else if (content?.content !== undefined) {\n body = (\n <pre className=\"p-3 text-xs font-mono text-gray-600 overflow-auto max-h-[500px] whitespace-pre-wrap bg-gray-50\">\n {content.content}\n </pre>\n );\n }\n\n return (\n <div>\n <DetailHeader title={filename} description={path} />\n\n <Card title=\"File Info\" className=\"mb-4\">\n <table className=\"w-full text-sm\">\n <tbody>\n <tr className=\"border-b\">\n <td className=\"px-3 py-2.5 w-24 font-medium text-gray-600\">Path</td>\n <td className=\"px-3 py-2.5 text-gray-900\">{path}</td>\n </tr>\n <tr className=\"border-b\">\n <td className=\"px-3 py-2.5 font-medium text-gray-600\">Extension</td>\n <td className=\"px-3 py-2.5 text-gray-900\">{ext}</td>\n </tr>\n {content?.lines\n ? (\n <tr className=\"border-b\">\n <td className=\"px-3 py-2.5 font-medium text-gray-600\">Lines</td>\n <td className=\"px-3 py-2.5 text-gray-900\">{content.lines}</td>\n </tr>\n )\n : null}\n {content?.size\n ? (\n <tr>\n <td className=\"px-3 py-2.5 font-medium text-gray-600\">Size</td>\n <td className=\"px-3 py-2.5 text-gray-900\">{formatSize(content.size)}</td>\n </tr>\n )\n : null}\n </tbody>\n </table>\n </Card>\n\n <Card title={title} titleRight={titleRight}>\n {body}\n </Card>\n </div>\n );\n}\n",
25
25
  "dashboard/components/APITab.tsx": "export function APITab(): JSX.Element {\n return (\n <div className=\"h-[calc(100vh-89px)] overflow-y-auto\">\n <main className=\"bg-gray-50 p-5\">\n <div className=\"mb-6\">\n <h1 className=\"text-lg font-semibold tracking-tight\">API Documentation</h1>\n <p className=\"text-sm text-gray-500\">\n Interactive API docs powered by Scalar.{\" \"}\n <a\n href=\"/_docs\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-sky-500 hover:text-sky-600\"\n >\n Open in new tab\n </a>\n </p>\n </div>\n\n <div className=\"overflow-hidden rounded-md border border-gray-200 bg-white shadow-sm\">\n <iframe\n src=\"/_docs\"\n className=\"w-full border-0\"\n style={{ height: \"calc(100vh - 180px)\" }}\n />\n </div>\n </main>\n </div>\n );\n}\n",
26
26
  "dashboard/components/AgentTab.tsx": "import { useEffect, useState } from \"react\";\nimport type { Agent, Prompt, Resource, Tool } from \"../App.tsx\";\nimport { MCPTab } from \"./MCPTab.tsx\";\nimport { AgentsTab } from \"./AgentsTab.tsx\";\nimport { WorkflowsTab } from \"./WorkflowsTab.tsx\";\nimport { Card } from \"./Card.tsx\";\nimport { ErrorState, LoadingState, PageLayout } from \"./shared.tsx\";\n\ntype SubTab = \"mcp\" | \"agents\" | \"workflows\" | \"providers\";\n\ninterface Provider {\n name: string;\n configured: boolean;\n}\n\ninterface NodeInfo {\n id: string;\n type: string;\n agent?: string;\n tool?: string;\n dependsOn?: string[];\n children?: string[];\n message?: string;\n}\n\ninterface WorkflowMetadata {\n id: string;\n description?: string;\n version?: string;\n timeout?: string | number;\n nodeCount: number;\n nodeTypes: string[];\n nodes: NodeInfo[];\n agentRefs: string[];\n toolRefs: string[];\n hasInputSchema: boolean;\n hasOutputSchema: boolean;\n inputSchemaJson?: Record<string, unknown>;\n registeredAt: string;\n}\n\ninterface AgentTabProps {\n tools: Tool[];\n resources: Resource[];\n prompts: Prompt[];\n agents: Agent[];\n}\n\nexport function AgentTab({\n tools,\n resources,\n prompts,\n agents,\n}: AgentTabProps): React.ReactElement {\n const [subTab, setSubTab] = useState<SubTab>(\"mcp\");\n\n const [providers, setProviders] = useState<Provider[]>([]);\n const [providersLoading, setProvidersLoading] = useState(true);\n const [providersError, setProvidersError] = useState<string | null>(null);\n\n const [workflows, setWorkflows] = useState<WorkflowMetadata[]>([]);\n const [workflowsLoading, setWorkflowsLoading] = useState(true);\n const [workflowsError, setWorkflowsError] = useState<string | null>(null);\n\n useEffect(() => {\n async function loadProviders(): Promise<void> {\n try {\n const res = await fetch(\"/_dev/api/infrastructure\");\n const d = await res.json();\n setProviders(d.providers ?? []);\n setProvidersError(null);\n } catch (e: unknown) {\n setProvidersError(e instanceof Error ? e.message : String(e));\n } finally {\n setProvidersLoading(false);\n }\n }\n\n async function loadWorkflows(): Promise<void> {\n try {\n const res = await fetch(\"/_dev/api/workflows\");\n const d = await res.json();\n setWorkflows(d.workflows ?? []);\n setWorkflowsError(null);\n } catch (e: unknown) {\n setWorkflowsError(e instanceof Error ? e.message : String(e));\n } finally {\n setWorkflowsLoading(false);\n }\n }\n\n loadProviders();\n loadWorkflows();\n }, []);\n\n function navigateToMCP(mcpSubTab: \"tools\" | \"resources\" | \"prompts\", itemId: string): void {\n setSubTab(\"mcp\");\n globalThis.dispatchEvent(\n new CustomEvent(\"mcp-navigate\", { detail: { subTab: mcpSubTab, itemId } }),\n );\n }\n\n const mcpCount = tools.length + resources.length + prompts.length;\n const configuredProvidersCount = providers.filter((p) => p.configured).length;\n\n return (\n <div className=\"min-h-screen\">\n <div className=\"bg-white border-b\">\n <div className=\"px-6 py-4\">\n <div className=\"mb-3\">\n <h1 className=\"text-xl font-semibold text-gray-900\">Agent</h1>\n <p className=\"text-sm text-gray-500\">MCP, agents, workflows, and providers</p>\n </div>\n <div className=\"flex gap-1 border border-gray-200 rounded-lg p-1 bg-gray-50 w-fit\">\n <TabButton\n active={subTab === \"mcp\"}\n onClick={() => setSubTab(\"mcp\")}\n label={`MCP (${mcpCount})`}\n />\n <TabButton\n active={subTab === \"agents\"}\n onClick={() => setSubTab(\"agents\")}\n label={`Agents (${agents.length})`}\n />\n <TabButton\n active={subTab === \"workflows\"}\n onClick={() => setSubTab(\"workflows\")}\n label={`Workflows (${workflows.length})`}\n />\n <TabButton\n active={subTab === \"providers\"}\n onClick={() => setSubTab(\"providers\")}\n label={`Providers (${configuredProvidersCount})`}\n />\n </div>\n </div>\n </div>\n\n {subTab === \"mcp\" && <MCPTab tools={tools} resources={resources} prompts={prompts} />}\n\n {subTab === \"agents\" && (\n <AgentsTab agents={agents} tools={tools} onNavigateToMCP={navigateToMCP} />\n )}\n\n {subTab === \"workflows\" && (\n <WorkflowsSection\n loading={workflowsLoading}\n error={workflowsError}\n workflows={workflows}\n agents={agents}\n tools={tools}\n onNavigateToTool={(toolId) => navigateToMCP(\"tools\", toolId)}\n onNavigateToAgent={() => {\n setSubTab(\"agents\");\n // AgentsTab will need to handle this\n }}\n />\n )}\n\n {subTab === \"providers\" && (\n <ProvidersSection providers={providers} loading={providersLoading} error={providersError} />\n )}\n </div>\n );\n}\n\nfunction TabButton({\n active,\n onClick,\n label,\n}: {\n active: boolean;\n onClick: () => void;\n label: string;\n}): React.ReactElement {\n const className = `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${\n active ? \"bg-white text-sky-600 shadow-sm\" : \"text-gray-500 hover:text-gray-700\"\n }`;\n\n return (\n <button type=\"button\" onClick={onClick} className={className}>\n {label}\n </button>\n );\n}\n\nfunction WorkflowsSection({\n loading,\n error,\n workflows,\n agents,\n tools,\n onNavigateToAgent,\n onNavigateToTool,\n}: {\n loading: boolean;\n error: string | null;\n workflows: WorkflowMetadata[];\n agents: Agent[];\n tools: Tool[];\n onNavigateToAgent: (agentId: string) => void;\n onNavigateToTool: (toolId: string) => void;\n}): React.ReactElement {\n if (loading) {\n return (\n <PageLayout title=\"\" description=\"\">\n <Card>\n <LoadingState message=\"Loading workflows...\" />\n </Card>\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout title=\"\" description=\"\">\n <Card>\n <ErrorState error={error} />\n </Card>\n </PageLayout>\n );\n }\n\n return (\n <WorkflowsTab\n workflows={workflows}\n agents={agents}\n tools={tools}\n onNavigateToAgent={onNavigateToAgent}\n onNavigateToTool={onNavigateToTool}\n />\n );\n}\n\nfunction ProvidersSection({\n providers,\n loading,\n error,\n}: {\n providers: Provider[];\n loading: boolean;\n error: string | null;\n}): React.ReactElement {\n if (loading) {\n return (\n <PageLayout title=\"\" description=\"\">\n <Card>\n <LoadingState message=\"Loading providers...\" />\n </Card>\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout title=\"\" description=\"\">\n <Card>\n <ErrorState error={error} />\n </Card>\n </PageLayout>\n );\n }\n\n const configured: Provider[] = [];\n const notConfigured: Provider[] = [];\n\n for (const provider of providers) {\n if (provider.configured) {\n configured.push(provider);\n } else {\n notConfigured.push(provider);\n }\n }\n\n return (\n <div className=\"max-w-7xl mx-auto px-6 py-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4 mb-6\">\n <Card className=\"p-4\">\n <div className=\"text-2xl font-bold text-gray-900\">{configured.length}</div>\n <div className=\"text-sm text-gray-500\">Configured</div>\n </Card>\n <Card className=\"p-4\">\n <div className=\"text-2xl font-bold text-gray-400\">{notConfigured.length}</div>\n <div className=\"text-sm text-gray-500\">Not Configured</div>\n </Card>\n <Card className=\"p-4\">\n <div className=\"text-2xl font-bold text-gray-900\">{providers.length}</div>\n <div className=\"text-sm text-gray-500\">Total Available</div>\n </Card>\n </div>\n\n <Card title=\"AGENT PROVIDERS\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-gray-50 border-b\">\n <th className=\"text-left px-3 py-2 text-[10px] font-semibold uppercase tracking-wide text-gray-500\">\n Provider\n </th>\n <th className=\"text-left px-3 py-2 text-[10px] font-semibold uppercase tracking-wide text-gray-500\">\n Status\n </th>\n <th className=\"text-left px-3 py-2 text-[10px] font-semibold uppercase tracking-wide text-gray-500\">\n API Key\n </th>\n </tr>\n </thead>\n <tbody>\n {providers.map((provider) => {\n const status = provider.configured\n ? {\n className: \"inline-flex items-center gap-1.5 text-green-600\",\n dotClassName: \"w-2 h-2 rounded-full bg-green-500\",\n label: \"Ready\",\n apiKey: <span className=\"text-green-600\">(set)</span>,\n }\n : {\n className: \"inline-flex items-center gap-1.5 text-gray-400\",\n dotClassName: \"w-2 h-2 rounded-full bg-gray-300\",\n label: \"Not configured\",\n apiKey: <span className=\"text-gray-400\">(not set)</span>,\n };\n\n return (\n <tr key={provider.name} className=\"border-b last:border-0\">\n <td className=\"px-3 py-3\">\n <code className=\"text-sm text-sky-600 font-medium\">{provider.name}</code>\n </td>\n <td className=\"px-3 py-3\">\n <span className={status.className}>\n <span className={status.dotClassName} />\n {status.label}\n </span>\n </td>\n <td className=\"px-3 py-3 text-gray-500 text-sm\">{status.apiKey}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </Card>\n </div>\n );\n}\n",
27
- "dashboard/components/WorkflowsTab.helpers.test.ts": "import { assertEquals } from \"#veryfront/testing/assert.ts\";\nimport { describe, it } from \"#veryfront/testing/bdd.ts\";\nimport {\n filterItemsByIdSearch,\n generateExampleFromSchema,\n getNodeTypeStyle,\n} from \"./WorkflowsTab.helpers.ts\";\n\ndescribe(\"WorkflowsTab helpers\", () => {\n it(\"returns configured node styles and falls back for unknown types\", () => {\n assertEquals(getNodeTypeStyle(\"step\"), {\n badge: \"bg-blue-50 text-blue-600\",\n node: \"bg-blue-50 border-blue-200 text-blue-700\",\n });\n assertEquals(getNodeTypeStyle(\"unknown\"), {\n badge: \"bg-gray-100 text-gray-600\",\n node: \"bg-gray-50 border-gray-200 text-gray-700\",\n });\n });\n\n it(\"filters items by id using case-insensitive search\", () => {\n const items = [{ id: \"Alpha\" }, { id: \"beta\" }, { id: \"gamma\" }];\n assertEquals(filterItemsByIdSearch(items, \"A\"), [{ id: \"Alpha\" }, { id: \"beta\" }, {\n id: \"gamma\",\n }]);\n assertEquals(filterItemsByIdSearch(items, \"BET\"), [{ id: \"beta\" }]);\n });\n\n it(\"generates examples from nested schemas\", () => {\n assertEquals(\n generateExampleFromSchema({\n type: \"object\",\n properties: {\n email: { type: \"string\" },\n url: { type: \"string\" },\n count: { type: \"integer\" },\n enabled: { type: \"boolean\" },\n mode: { enum: [\"fast\", \"slow\"] },\n nested: {\n type: \"object\",\n properties: {\n name: { type: \"string\", default: \"preset\" },\n },\n },\n tags: { type: \"array\" },\n },\n }),\n {\n email: \"user@example.com\",\n url: \"https://example.com/data\",\n count: 1,\n enabled: true,\n mode: \"fast\",\n nested: { name: \"preset\" },\n tags: [],\n },\n );\n });\n});\n",
27
+ "dashboard/components/WorkflowsTab.helpers.test.ts": "import \"#veryfront/schemas/_test-setup.ts\";\nimport { assertEquals } from \"#veryfront/testing/assert.ts\";\nimport { describe, it } from \"#veryfront/testing/bdd.ts\";\nimport {\n filterItemsByIdSearch,\n generateExampleFromSchema,\n getNodeTypeStyle,\n} from \"./WorkflowsTab.helpers.ts\";\n\ndescribe(\"WorkflowsTab helpers\", () => {\n it(\"returns configured node styles and falls back for unknown types\", () => {\n assertEquals(getNodeTypeStyle(\"step\"), {\n badge: \"bg-blue-50 text-blue-600\",\n node: \"bg-blue-50 border-blue-200 text-blue-700\",\n });\n assertEquals(getNodeTypeStyle(\"unknown\"), {\n badge: \"bg-gray-100 text-gray-600\",\n node: \"bg-gray-50 border-gray-200 text-gray-700\",\n });\n });\n\n it(\"filters items by id using case-insensitive search\", () => {\n const items = [{ id: \"Alpha\" }, { id: \"beta\" }, { id: \"gamma\" }];\n assertEquals(filterItemsByIdSearch(items, \"A\"), [{ id: \"Alpha\" }, { id: \"beta\" }, {\n id: \"gamma\",\n }]);\n assertEquals(filterItemsByIdSearch(items, \"BET\"), [{ id: \"beta\" }]);\n });\n\n it(\"generates examples from nested schemas\", () => {\n assertEquals(\n generateExampleFromSchema({\n type: \"object\",\n properties: {\n email: { type: \"string\" },\n url: { type: \"string\" },\n count: { type: \"integer\" },\n enabled: { type: \"boolean\" },\n mode: { enum: [\"fast\", \"slow\"] },\n nested: {\n type: \"object\",\n properties: {\n name: { type: \"string\", default: \"preset\" },\n },\n },\n tags: { type: \"array\" },\n },\n }),\n {\n email: \"user@example.com\",\n url: \"https://example.com/data\",\n count: 1,\n enabled: true,\n mode: \"fast\",\n nested: { name: \"preset\" },\n tags: [],\n },\n );\n });\n});\n",
28
28
  "dashboard/components/Header.tsx": "export function Header(): JSX.Element {\n return (\n <header className=\"bg-white border-b border-gray-200 px-5 h-12 flex items-center sticky top-0 z-50\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-6 h-6 bg-sky-500 rounded flex items-center justify-center text-white font-bold text-xs\">\n V\n </div>\n <span className=\"font-semibold text-sm tracking-tight\">Dev</span>\n </div>\n </header>\n );\n}\n",
29
29
  "dashboard/index.tsx": "import { App } from \"./App.tsx\";\nimport { mountReactApp } from \"../shared/mount-react-app.tsx\";\n\nmountReactApp(<App />);\n"
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"framework-candidates.generated.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/framework-candidates.generated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAoxKjD,CAAC"}
1
+ {"version":3,"file":"framework-candidates.generated.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/framework-candidates.generated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAqxKjD,CAAC"}
@@ -5304,6 +5304,7 @@ export const FRAMEWORK_CANDIDATES = [
5304
5304
  "veryfront/chat",
5305
5305
  "veryfront/errors/error-registry.ts",
5306
5306
  "veryfront/platform/compat/runtime.ts",
5307
+ "veryfront/schemas/_test-setup.ts",
5307
5308
  "veryfront/security/client/html-sanitizer.ts",
5308
5309
  "veryfront/testing/assert",
5309
5310
  "veryfront/testing/assert.ts",
@@ -1 +1 @@
1
- {"version":3,"file":"agent-run-cancel.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-run-cancel.handler.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AASnG,qBAAa,qBAAsB,SAAQ,WAAW;IAUxC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAT3C,QAAQ,EAAE,eAAe,CAOvB;gBAE2B,cAAc,GAAE,sBAA+C;IAItF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAkDxE"}
1
+ {"version":3,"file":"agent-run-cancel.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-run-cancel.handler.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AASnG,qBAAa,qBAAsB,SAAQ,WAAW;IASxC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAR3C,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,cAAc,GAAE,sBAA+C;IAItF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAkDxE"}
@@ -1,10 +1,10 @@
1
- import { CONTROL_PLANE_AGENT_RUNS_PATH_PREFIX, LEGACY_INTERNAL_AGENT_RUNS_PATH_PREFIX, } from "../../../channels/control-plane.js";
1
+ import { CONTROL_PLANE_AGENT_RUNS_PATH_PREFIX } from "../../../channels/control-plane.js";
2
2
  import { ControlPlaneRequestError, verifyControlPlaneRequest, } from "../../../internal-agents/control-plane-auth.js";
3
3
  import { agentRunSessionManager, } from "../../../internal-agents/session-manager.js";
4
4
  import { INTERNAL_AGENT_CONTROL_PLANE_MAX_BODY_BYTES, InternalAgentRequestBodyTooLargeError, readInternalAgentRequestBody, } from "../../../internal-agents/request-body.js";
5
5
  import { BaseHandler } from "../response/base.js";
6
6
  import { PRIORITY_MEDIUM_API } from "../../../utils/constants/index.js";
7
- const CANCEL_PATH_REGEX = /^\/(?:api\/control-plane\/agents|internal\/agents)\/runs\/([^/]+)$/;
7
+ const CANCEL_PATH_REGEX = /^\/api\/control-plane\/agents\/runs\/([^/]+)$/;
8
8
  function getRunId(pathname) {
9
9
  return CANCEL_PATH_REGEX.exec(pathname)?.[1] ?? null;
10
10
  }
@@ -15,7 +15,6 @@ export class AgentRunCancelHandler extends BaseHandler {
15
15
  priority: PRIORITY_MEDIUM_API,
16
16
  patterns: [
17
17
  { pattern: CONTROL_PLANE_AGENT_RUNS_PATH_PREFIX, prefix: true, method: "DELETE" },
18
- { pattern: LEGACY_INTERNAL_AGENT_RUNS_PATH_PREFIX, prefix: true, method: "DELETE" },
19
18
  ],
20
19
  };
21
20
  constructor(sessionManager = agentRunSessionManager) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-run-resume.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-run-resume.handler.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,sBAAsB,EAK5B,MAAM,6CAA6C,CAAC;AAOrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAUnG,qBAAa,qBAAsB,SAAQ,WAAW;IAUxC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAT3C,QAAQ,EAAE,eAAe,CAOvB;gBAE2B,cAAc,GAAE,sBAA+C;IAItF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAoExE"}
1
+ {"version":3,"file":"agent-run-resume.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-run-resume.handler.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,sBAAsB,EAK5B,MAAM,6CAA6C,CAAC;AAOrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AASnG,qBAAa,qBAAsB,SAAQ,WAAW;IASxC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAR3C,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,cAAc,GAAE,sBAA+C;IAItF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAoExE"}
@@ -1,11 +1,11 @@
1
- import { CONTROL_PLANE_AGENT_RUNS_PATH_PREFIX, LEGACY_INTERNAL_AGENT_RUNS_PATH_PREFIX, } from "../../../channels/control-plane.js";
1
+ import { CONTROL_PLANE_AGENT_RUNS_PATH_PREFIX } from "../../../channels/control-plane.js";
2
2
  import { ControlPlaneRequestError, verifyControlPlaneRequest, } from "../../../internal-agents/control-plane-auth.js";
3
3
  import { agentRunSessionManager, RunNotActiveError, ToolResultConflictError, ToolResultNotWaitingError, } from "../../../internal-agents/session-manager.js";
4
4
  import { INTERNAL_AGENT_CONTROL_PLANE_MAX_BODY_BYTES, InternalAgentRequestBodyTooLargeError, readInternalAgentRequestBody, } from "../../../internal-agents/request-body.js";
5
- import { ResumeSignalSchema } from "../../../internal-agents/schema.js";
5
+ import { getResumeSignalSchema } from "../../../internal-agents/schema.js";
6
6
  import { BaseHandler } from "../response/base.js";
7
7
  import { PRIORITY_MEDIUM_API } from "../../../utils/constants/index.js";
8
- const RESUME_PATH_REGEX = /^\/(?:api\/control-plane\/agents|internal\/agents)\/runs\/([^/]+)\/resume$/;
8
+ const RESUME_PATH_REGEX = /^\/api\/control-plane\/agents\/runs\/([^/]+)\/resume$/;
9
9
  function getRunId(pathname) {
10
10
  return RESUME_PATH_REGEX.exec(pathname)?.[1] ?? null;
11
11
  }
@@ -16,7 +16,6 @@ export class AgentRunResumeHandler extends BaseHandler {
16
16
  priority: PRIORITY_MEDIUM_API,
17
17
  patterns: [
18
18
  { pattern: CONTROL_PLANE_AGENT_RUNS_PATH_PREFIX, prefix: true, method: "POST" },
19
- { pattern: LEGACY_INTERNAL_AGENT_RUNS_PATH_PREFIX, prefix: true, method: "POST" },
20
19
  ],
21
20
  };
22
21
  constructor(sessionManager = agentRunSessionManager) {
@@ -41,7 +40,7 @@ export class AgentRunResumeHandler extends BaseHandler {
41
40
  expectedSubject: runId,
42
41
  expectedSurface: "studio",
43
42
  });
44
- const signal = ResumeSignalSchema.parse(JSON.parse(rawBody));
43
+ const signal = getResumeSignalSchema().parse(JSON.parse(rawBody));
45
44
  const outcome = this.sessionManager.submitToolResult(runId, {
46
45
  toolCallId: signal.toolCallId,
47
46
  result: signal.result,
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAmBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAKnG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AA4ED,qBAAa,kBAAmB,SAAQ,WAAW;IAUrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IATjC,QAAQ,EAAE,eAAe,CAOvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAgHxE"}
1
+ {"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAmBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAKnG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AA4ED,qBAAa,kBAAmB,SAAQ,WAAW;IASrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAgHxE"}
@@ -1,11 +1,11 @@
1
1
  import { defaultChannelInvokeDeps } from "../../../channels/invoke.js";
2
- import { CONTROL_PLANE_AGENT_STREAM_PATH, LEGACY_INTERNAL_AGENT_STREAM_PATH, } from "../../../channels/control-plane.js";
2
+ import { CONTROL_PLANE_AGENT_STREAM_PATH, } from "../../../channels/control-plane.js";
3
3
  import { createRuntimeAgentStreamResponse, } from "../../../internal-agents/run-stream.js";
4
4
  import { resolveRuntimeOwnerInvokeUrl, RUNTIME_OWNER_INVOKE_URL_HEADER, } from "../../../internal-agents/runtime-owner.js";
5
5
  import { ControlPlaneRequestError, verifyControlPlaneRequest, } from "../../../internal-agents/control-plane-auth.js";
6
6
  import { INTERNAL_AGENT_STREAM_MAX_BODY_BYTES, InternalAgentRequestBodyTooLargeError, readInternalAgentRequestBody, } from "../../../internal-agents/request-body.js";
7
7
  import { AgentRunAlreadyExistsError, agentRunSessionManager, } from "../../../internal-agents/session-manager.js";
8
- import { InternalAgentStreamRequestSchema, toRuntimeRunAgentInput, } from "../../../internal-agents/schema.js";
8
+ import { getInternalAgentStreamRequestSchema, toRuntimeRunAgentInput, } from "../../../internal-agents/schema.js";
9
9
  import { BaseHandler } from "../response/base.js";
10
10
  import { PRIORITY_MEDIUM_API } from "../../../utils/constants/index.js";
11
11
  import { getHostEnv } from "../../../platform/compat/process.js";
@@ -65,7 +65,6 @@ export class AgentStreamHandler extends BaseHandler {
65
65
  priority: PRIORITY_MEDIUM_API,
66
66
  patterns: [
67
67
  { pattern: CONTROL_PLANE_AGENT_STREAM_PATH, exact: true, method: "POST" },
68
- { pattern: LEGACY_INTERNAL_AGENT_STREAM_PATH, exact: true, method: "POST" },
69
68
  ],
70
69
  };
71
70
  constructor(deps = defaultDeps) {
@@ -93,7 +92,7 @@ export class AgentStreamHandler extends BaseHandler {
93
92
  .withSecurity(ctx.securityConfig ?? undefined, req);
94
93
  try {
95
94
  const rawBody = await readInternalAgentRequestBody(req, INTERNAL_AGENT_STREAM_MAX_BODY_BYTES);
96
- const payload = InternalAgentStreamRequestSchema.parse(JSON.parse(rawBody));
95
+ const payload = getInternalAgentStreamRequestSchema().parse(JSON.parse(rawBody));
97
96
  await verifyControlPlaneRequest(req, ctx, rawBody, {
98
97
  expectedSubject: payload.runId,
99
98
  expectedSurface: "studio",
@@ -1 +1 @@
1
- {"version":3,"file":"internal-agents-list.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/internal-agents-list.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAML,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC;AAc5C,qBAAa,yBAA0B,SAAQ,WAAW;IAU5C,OAAO,CAAC,QAAQ,CAAC,IAAI;IATjC,QAAQ,EAAE,eAAe,CAOvB;gBAE2B,IAAI,GAAE,yBAAoD;IAIjF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAkExE"}
1
+ {"version":3,"file":"internal-agents-list.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/internal-agents-list.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAKL,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC;AAa5C,qBAAa,yBAA0B,SAAQ,WAAW;IAS5C,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,yBAAoD;IAIjF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAkExE"}
@@ -1,10 +1,9 @@
1
1
  import { BaseHandler } from "../response/base.js";
2
- import { CONTROL_PLANE_AGENTS_LIST_PATH, ControlPlaneAgentsListRequestSchema, LEGACY_INTERNAL_AGENTS_LIST_PATH, listRuntimeAgents, } from "../../../channels/control-plane.js";
2
+ import { CONTROL_PLANE_AGENTS_LIST_PATH, ControlPlaneAgentsListRequestSchema, listRuntimeAgents, } from "../../../channels/control-plane.js";
3
3
  import { defaultChannelInvokeDeps } from "../../../channels/invoke.js";
4
4
  import { ControlPlaneRequestError, verifyControlPlaneRequest, } from "../../../internal-agents/control-plane-auth.js";
5
5
  import { INTERNAL_AGENT_CONTROL_PLANE_MAX_BODY_BYTES, InternalAgentRequestBodyTooLargeError, readInternalAgentRequestBody, } from "../../../internal-agents/request-body.js";
6
6
  import { PRIORITY_MEDIUM_API } from "../../../utils/constants/index.js";
7
- import { ZodError } from "zod";
8
7
  export class InternalAgentsListHandler extends BaseHandler {
9
8
  deps;
10
9
  metadata = {
@@ -12,7 +11,6 @@ export class InternalAgentsListHandler extends BaseHandler {
12
11
  priority: PRIORITY_MEDIUM_API,
13
12
  patterns: [
14
13
  { pattern: CONTROL_PLANE_AGENTS_LIST_PATH, exact: true, method: "POST" },
15
- { pattern: LEGACY_INTERNAL_AGENTS_LIST_PATH, exact: true, method: "POST" },
16
14
  ],
17
15
  };
18
16
  constructor(deps = defaultChannelInvokeDeps) {
@@ -61,7 +59,7 @@ export class InternalAgentsListHandler extends BaseHandler {
61
59
  });
62
60
  return this.respond(builder.json({ error: error.message }, error.status));
63
61
  }
64
- if (error instanceof SyntaxError || error instanceof ZodError) {
62
+ if (error instanceof SyntaxError || (error instanceof Error && "issues" in error)) {
65
63
  this.logWarn("Internal agents list request validation failed", {
66
64
  error: error instanceof Error ? error.message : String(error),
67
65
  projectSlug: ctx.projectSlug,
@@ -1 +1 @@
1
- {"version":3,"file":"environment-resolution.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/environment-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,UAAU,2BAA2B;IACnC,gDAAgD;IAChD,mBAAmB,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1D,iEAAiE;IACjE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,yCAAyC;IACzC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAC;CACrC;AAED,UAAU,4BAA4B;IACpC,qCAAqC;IACrC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,gCAAgC;IAChC,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;IACjD,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,uBAAuB;IACvB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,kBAAkB,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;CAC1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,4BAA4B,GACjC,2BAA2B,CAiF7B"}
1
+ {"version":3,"file":"environment-resolution.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/environment-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,UAAU,2BAA2B;IACnC,gDAAgD;IAChD,mBAAmB,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1D,iEAAiE;IACjE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,yCAAyC;IACzC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAC;CACrC;AAED,UAAU,4BAA4B;IACpC,qCAAqC;IACrC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,gCAAgC;IAChC,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;IACjD,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,uBAAuB;IACvB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,kBAAkB,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;CAC1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,4BAA4B,GACjC,2BAA2B,CAgF7B"}
@@ -18,15 +18,14 @@ const logger = baseLogger.component("environment-resolution");
18
18
  export function resolveEnvironment(opts) {
19
19
  let resolvedEnvironment = opts.proxyEnv === "preview" || opts.proxyEnv === "production" ? opts.proxyEnv : opts.reqCtxMode;
20
20
  let releaseId = opts.releaseId;
21
- // Some internal framework surfaces are routed directly to a runtime owner pod and
21
+ // Some framework control-plane surfaces are routed directly to a runtime owner pod and
22
22
  // rely on signed control-plane auth instead of a user-facing release address.
23
- const isInternalAgentControlPlanePath = opts.pathname.startsWith("/internal/agents/") ||
24
- opts.pathname.startsWith("/api/control-plane/agents/");
25
- // Skip releaseId validation for development assets and signed internal control-plane
23
+ const isAgentControlPlanePath = opts.pathname.startsWith("/api/control-plane/agents/");
24
+ // Skip releaseId validation for development assets and signed control-plane
26
25
  // requests because they do not require a user-facing release context.
27
26
  const canSkipReleaseIdValidation = opts.pathname === "/_ws" ||
28
27
  opts.pathname.startsWith("/_veryfront/") ||
29
- isInternalAgentControlPlanePath;
28
+ isAgentControlPlanePath;
30
29
  // Validate releaseId in proxy mode production
31
30
  if (opts.isProxyMode &&
32
31
  resolvedEnvironment === "production" &&
@@ -1 +1 @@
1
- {"version":3,"file":"request-utils.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/request-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkBpD;AAED,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,aAA+C,CAAC;AAK7E,yFAAyF;AACzF,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,eAA4B,CAAC;AAE1D,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,uFAAuF;AACvF,eAAO,MAAM,yBAAyB,UASrC,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGnE"}
1
+ {"version":3,"file":"request-utils.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/request-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkBpD;AAED,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,aAA+C,CAAC;AAK7E,yFAAyF;AACzF,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,eAA4B,CAAC;AAE1D,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,uFAAuF;AACvF,eAAO,MAAM,yBAAyB,UASrC,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnE"}
@@ -71,6 +71,5 @@ export function isWebSocketPath(pathname) {
71
71
  * render cache prefix/content-source derivation and the enriched render payload.
72
72
  */
73
73
  export function shouldSkipEnrichedContext(pathname) {
74
- return pathname.startsWith("/api/") || pathname.startsWith("/internal/agents/") ||
75
- pathname.startsWith("/api/control-plane/agents/");
74
+ return pathname.startsWith("/api/") || pathname.startsWith("/api/control-plane/agents/");
76
75
  }
@@ -1,8 +1,12 @@
1
- import { z } from "zod";
1
+ import type { InferSchema } from "../../extensions/schema/index.js";
2
2
  /** Action payload from client for RSC server actions */
3
- export declare const ActionPayloadSchema: z.ZodObject<{
4
- id: z.ZodString;
5
- args: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodUnknown>>>;
6
- }, z.core.$strip>;
7
- export type ActionPayload = z.infer<typeof ActionPayloadSchema>;
3
+ export declare const getActionPayloadSchema: () => import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
4
+ id: import("../../internal-agents/schema.js").Schema<string>;
5
+ args: import("../../internal-agents/schema.js").Schema<unknown[]>;
6
+ }>>;
7
+ export type ActionPayload = InferSchema<ReturnType<typeof getActionPayloadSchema>>;
8
+ export declare const ActionPayloadSchema: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
9
+ id: import("../../internal-agents/schema.js").Schema<string>;
10
+ args: import("../../internal-agents/schema.js").Schema<unknown[]>;
11
+ }>>;
8
12
  //# sourceMappingURL=action.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/server/schemas/action.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wDAAwD;AACxD,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"action.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/server/schemas/action.schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,wDAAwD;AACxD,eAAO,MAAM,sBAAsB;;;GAKlC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;AAGnF,eAAO,MAAM,mBAAmB;;;GAA2B,CAAC"}
@@ -1,6 +1,8 @@
1
- import { z } from "zod";
1
+ import { defineSchema } from "../../schemas/index.js";
2
2
  /** Action payload from client for RSC server actions */
3
- export const ActionPayloadSchema = z.object({
4
- id: z.string().min(1),
5
- args: z.array(z.unknown()).max(50).optional().default([]),
6
- });
3
+ export const getActionPayloadSchema = defineSchema((v) => v.object({
4
+ id: v.string().min(1),
5
+ args: v.array(v.unknown()).max(50).optional().default([]),
6
+ }));
7
+ // Backward compat alias
8
+ export const ActionPayloadSchema = getActionPayloadSchema();