veryfront 0.0.86 → 0.0.88

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 (416) hide show
  1. package/esm/deno.d.ts +0 -1
  2. package/esm/deno.js +8 -9
  3. package/esm/deps/esm.sh/react-dom@19.1.1/client.d.ts +2 -0
  4. package/esm/deps/esm.sh/react-dom@19.1.1/client.d.ts.map +1 -0
  5. package/esm/deps/esm.sh/react-dom@19.1.1/client.js +5 -0
  6. package/esm/deps/esm.sh/react-dom@19.1.1/server.d.ts +2 -0
  7. package/esm/deps/esm.sh/react-dom@19.1.1/server.d.ts.map +1 -0
  8. package/esm/deps/esm.sh/react-dom@19.1.1/server.js +5 -0
  9. package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts +2 -0
  10. package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts.map +1 -0
  11. package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.js +3 -0
  12. package/esm/deps/esm.sh/react@19.1.1.d.ts +2 -0
  13. package/esm/deps/esm.sh/react@19.1.1.d.ts.map +1 -0
  14. package/esm/deps/esm.sh/react@19.1.1.js +3 -0
  15. package/esm/deps/esm.sh/scheduler@^0.26.0.d.ts +2 -0
  16. package/esm/deps/esm.sh/scheduler@^0.26.0.d.ts.map +1 -0
  17. package/esm/deps/esm.sh/scheduler@^0.26.0.js +3 -0
  18. package/esm/proxy/main.d.ts +2 -0
  19. package/esm/proxy/main.d.ts.map +1 -0
  20. package/esm/proxy/main.js +400 -0
  21. package/esm/src/agent/react/use-agent.js +1 -1
  22. package/esm/src/agent/react/use-chat/use-chat.js +1 -1
  23. package/esm/src/agent/react/use-completion.js +1 -1
  24. package/esm/src/agent/react/use-streaming.js +1 -1
  25. package/esm/src/agent/react/use-voice-input.js +1 -1
  26. package/esm/src/cli/commands/init/config-generator.js +1 -1
  27. package/esm/src/cli/index/arg-parser.d.ts.map +1 -1
  28. package/esm/src/cli/index/arg-parser.js +1 -0
  29. package/esm/src/cli/index/command-router.d.ts.map +1 -1
  30. package/esm/src/cli/index/command-router.js +54 -39
  31. package/esm/src/cli/index/types.d.ts +4 -0
  32. package/esm/src/cli/index/types.d.ts.map +1 -1
  33. package/esm/src/cli/mcp/advanced-tools.d.ts +2 -2
  34. package/esm/src/config/loader.d.ts.map +1 -1
  35. package/esm/src/config/loader.js +5 -4
  36. package/esm/src/html/utils.js +2 -2
  37. package/esm/src/modules/component-registry/registry.d.ts +1 -1
  38. package/esm/src/modules/component-registry/registry.d.ts.map +1 -1
  39. package/esm/src/modules/import-map/default-import-map.d.ts +1 -11
  40. package/esm/src/modules/import-map/default-import-map.d.ts.map +1 -1
  41. package/esm/src/modules/import-map/default-import-map.js +3 -20
  42. package/esm/src/modules/import-map/loader.d.ts.map +1 -1
  43. package/esm/src/modules/import-map/loader.js +7 -22
  44. package/esm/src/modules/import-map/resolver.d.ts.map +1 -1
  45. package/esm/src/modules/import-map/resolver.js +12 -8
  46. package/esm/src/modules/react-loader/component-loader.d.ts +1 -1
  47. package/esm/src/modules/react-loader/component-loader.d.ts.map +1 -1
  48. package/esm/src/modules/react-loader/component-loader.js +2 -0
  49. package/esm/src/modules/react-loader/extract-component.d.ts +1 -1
  50. package/esm/src/modules/react-loader/extract-component.d.ts.map +1 -1
  51. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts +2 -7
  52. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
  53. package/esm/src/modules/react-loader/ssr-module-loader/loader.js +40 -32
  54. package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts +2 -0
  55. package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts.map +1 -1
  56. package/esm/src/modules/react-loader/types.d.ts +3 -1
  57. package/esm/src/modules/react-loader/types.d.ts.map +1 -1
  58. package/esm/src/modules/react-loader/unified-loader.d.ts.map +1 -1
  59. package/esm/src/modules/react-loader/unified-loader.js +7 -4
  60. package/esm/src/modules/server/module-batch-handler.d.ts +2 -0
  61. package/esm/src/modules/server/module-batch-handler.d.ts.map +1 -1
  62. package/esm/src/modules/server/module-batch-handler.js +3 -1
  63. package/esm/src/modules/server/module-server.d.ts +2 -0
  64. package/esm/src/modules/server/module-server.d.ts.map +1 -1
  65. package/esm/src/modules/server/module-server.js +4 -2
  66. package/esm/src/modules/server/ssr-import-rewriter.d.ts.map +1 -1
  67. package/esm/src/modules/server/ssr-import-rewriter.js +9 -17
  68. package/esm/src/react/compat/hooks-adapter.d.ts +1 -1
  69. package/esm/src/react/compat/hooks-adapter.d.ts.map +1 -1
  70. package/esm/src/react/compat/hooks-adapter.js +1 -1
  71. package/esm/src/react/compat/ssr-adapter/response-builder.d.ts +1 -1
  72. package/esm/src/react/compat/ssr-adapter/response-builder.d.ts.map +1 -1
  73. package/esm/src/react/compat/ssr-adapter/server-loader.d.ts +5 -5
  74. package/esm/src/react/compat/ssr-adapter/server-loader.d.ts.map +1 -1
  75. package/esm/src/react/compat/ssr-adapter/server-loader.js +2 -2
  76. package/esm/src/react/compat/ssr-adapter/stream-renderer.d.ts +1 -1
  77. package/esm/src/react/compat/ssr-adapter/stream-renderer.d.ts.map +1 -1
  78. package/esm/src/react/compat/ssr-adapter/string-renderer.d.ts +1 -1
  79. package/esm/src/react/compat/ssr-adapter/string-renderer.d.ts.map +1 -1
  80. package/esm/src/react/compat/ssr-adapter/string-renderer.js +1 -1
  81. package/esm/src/react/compat/version-detector/feature-detector.js +1 -1
  82. package/esm/src/react/components/AppWrapper.d.ts +1 -1
  83. package/esm/src/react/components/AppWrapper.d.ts.map +1 -1
  84. package/esm/src/react/components/AppWrapper.js +1 -1
  85. package/esm/src/react/components/Head.d.ts +1 -1
  86. package/esm/src/react/components/Head.d.ts.map +1 -1
  87. package/esm/src/react/components/Head.js +7 -3
  88. package/esm/src/react/components/LayoutComponent.d.ts +1 -1
  89. package/esm/src/react/components/LayoutComponent.d.ts.map +1 -1
  90. package/esm/src/react/components/LayoutComponent.js +1 -1
  91. package/esm/src/react/components/Link.d.ts +1 -1
  92. package/esm/src/react/components/Link.d.ts.map +1 -1
  93. package/esm/src/react/components/Link.js +1 -1
  94. package/esm/src/react/components/MDXProvider.d.ts +1 -1
  95. package/esm/src/react/components/MDXProvider.d.ts.map +1 -1
  96. package/esm/src/react/components/MDXProvider.js +2 -2
  97. package/esm/src/react/components/ProviderComponent.d.ts +1 -1
  98. package/esm/src/react/components/ProviderComponent.d.ts.map +1 -1
  99. package/esm/src/react/components/ProviderComponent.js +1 -1
  100. package/esm/src/react/components/ai/agent-card.d.ts +2 -2
  101. package/esm/src/react/components/ai/agent-card.d.ts.map +1 -1
  102. package/esm/src/react/components/ai/agent-card.js +1 -1
  103. package/esm/src/react/components/ai/chat/components/animations.d.ts +1 -1
  104. package/esm/src/react/components/ai/chat/components/animations.d.ts.map +1 -1
  105. package/esm/src/react/components/ai/chat/components/animations.js +1 -1
  106. package/esm/src/react/components/ai/chat/components/empty-state.d.ts +1 -1
  107. package/esm/src/react/components/ai/chat/components/empty-state.d.ts.map +1 -1
  108. package/esm/src/react/components/ai/chat/components/empty-state.js +1 -1
  109. package/esm/src/react/components/ai/chat/components/message-actions.d.ts +1 -1
  110. package/esm/src/react/components/ai/chat/components/message-actions.d.ts.map +1 -1
  111. package/esm/src/react/components/ai/chat/components/message-actions.js +1 -1
  112. package/esm/src/react/components/ai/chat/components/reasoning.d.ts +1 -1
  113. package/esm/src/react/components/ai/chat/components/reasoning.d.ts.map +1 -1
  114. package/esm/src/react/components/ai/chat/components/reasoning.js +1 -1
  115. package/esm/src/react/components/ai/chat/components/tool-ui.d.ts +1 -1
  116. package/esm/src/react/components/ai/chat/components/tool-ui.d.ts.map +1 -1
  117. package/esm/src/react/components/ai/chat/components/tool-ui.js +1 -1
  118. package/esm/src/react/components/ai/chat/composition/api.d.ts +5 -4
  119. package/esm/src/react/components/ai/chat/composition/api.d.ts.map +1 -1
  120. package/esm/src/react/components/ai/chat/composition/api.js +1 -1
  121. package/esm/src/react/components/ai/chat/index.d.ts +8 -3
  122. package/esm/src/react/components/ai/chat/index.d.ts.map +1 -1
  123. package/esm/src/react/components/ai/chat/index.js +1 -1
  124. package/esm/src/react/components/ai/error-boundary.d.ts +1 -1
  125. package/esm/src/react/components/ai/error-boundary.d.ts.map +1 -1
  126. package/esm/src/react/components/ai/error-boundary.js +1 -1
  127. package/esm/src/react/components/ai/icons/index.d.ts +1 -1
  128. package/esm/src/react/components/ai/icons/index.d.ts.map +1 -1
  129. package/esm/src/react/components/ai/icons/index.js +1 -1
  130. package/esm/src/react/components/ai/markdown.d.ts +1 -1
  131. package/esm/src/react/components/ai/markdown.d.ts.map +1 -1
  132. package/esm/src/react/components/ai/markdown.js +1 -1
  133. package/esm/src/react/components/ai/message.d.ts +3 -3
  134. package/esm/src/react/components/ai/message.d.ts.map +1 -1
  135. package/esm/src/react/components/ai/message.js +1 -1
  136. package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.d.ts +1 -1
  137. package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.d.ts.map +1 -1
  138. package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.js +1 -1
  139. package/esm/src/react/components/optimized-image/OptimizedImage.d.ts +1 -1
  140. package/esm/src/react/components/optimized-image/OptimizedImage.d.ts.map +1 -1
  141. package/esm/src/react/components/optimized-image/OptimizedImage.js +1 -1
  142. package/esm/src/react/components/optimized-image/SimpleOptimizedImage.d.ts +1 -1
  143. package/esm/src/react/components/optimized-image/SimpleOptimizedImage.d.ts.map +1 -1
  144. package/esm/src/react/components/optimized-image/utils.d.ts +1 -1
  145. package/esm/src/react/components/optimized-image/utils.d.ts.map +1 -1
  146. package/esm/src/react/components/optimized-image/utils.js +1 -1
  147. package/esm/src/react/context/index.d.ts +1 -1
  148. package/esm/src/react/context/index.d.ts.map +1 -1
  149. package/esm/src/react/context/index.js +1 -1
  150. package/esm/src/react/fonts/index.d.ts +1 -1
  151. package/esm/src/react/fonts/index.d.ts.map +1 -1
  152. package/esm/src/react/fonts/index.js +1 -1
  153. package/esm/src/react/primitives/agent-primitives.d.ts +4 -4
  154. package/esm/src/react/primitives/agent-primitives.d.ts.map +1 -1
  155. package/esm/src/react/primitives/agent-primitives.js +1 -1
  156. package/esm/src/react/primitives/chat-container.d.ts +2 -2
  157. package/esm/src/react/primitives/chat-container.d.ts.map +1 -1
  158. package/esm/src/react/primitives/chat-container.js +1 -1
  159. package/esm/src/react/primitives/input-box.d.ts +4 -4
  160. package/esm/src/react/primitives/input-box.d.ts.map +1 -1
  161. package/esm/src/react/primitives/input-box.js +7 -3
  162. package/esm/src/react/primitives/message-list.d.ts +5 -5
  163. package/esm/src/react/primitives/message-list.d.ts.map +1 -1
  164. package/esm/src/react/primitives/message-list.js +1 -1
  165. package/esm/src/react/primitives/tool-primitives.d.ts +4 -4
  166. package/esm/src/react/primitives/tool-primitives.d.ts.map +1 -1
  167. package/esm/src/react/primitives/tool-primitives.js +1 -1
  168. package/esm/src/react/router/index.d.ts +1 -1
  169. package/esm/src/react/router/index.d.ts.map +1 -1
  170. package/esm/src/react/router/index.js +1 -1
  171. package/esm/src/rendering/app-reserved.d.ts +1 -1
  172. package/esm/src/rendering/app-reserved.d.ts.map +1 -1
  173. package/esm/src/rendering/app-reserved.js +1 -1
  174. package/esm/src/rendering/client/router.js +1 -1
  175. package/esm/src/rendering/client/state-bridge.d.ts +1 -1
  176. package/esm/src/rendering/client/state-bridge.d.ts.map +1 -1
  177. package/esm/src/rendering/client/state-bridge.js +1 -1
  178. package/esm/src/rendering/component-handling.d.ts +3 -1
  179. package/esm/src/rendering/component-handling.d.ts.map +1 -1
  180. package/esm/src/rendering/component-handling.js +4 -2
  181. package/esm/src/rendering/element-validator/element-normalizer.d.ts +1 -1
  182. package/esm/src/rendering/element-validator/element-normalizer.d.ts.map +1 -1
  183. package/esm/src/rendering/element-validator/element-normalizer.js +1 -1
  184. package/esm/src/rendering/element-validator/primitive-checks.d.ts +1 -1
  185. package/esm/src/rendering/element-validator/primitive-checks.d.ts.map +1 -1
  186. package/esm/src/rendering/element-validator/primitive-checks.js +1 -1
  187. package/esm/src/rendering/element-validator/validator-core.d.ts +1 -1
  188. package/esm/src/rendering/element-validator/validator-core.d.ts.map +1 -1
  189. package/esm/src/rendering/layouts/layout-applicator.d.ts +1 -1
  190. package/esm/src/rendering/layouts/layout-applicator.d.ts.map +1 -1
  191. package/esm/src/rendering/layouts/layout-applicator.js +2 -0
  192. package/esm/src/rendering/layouts/utils/applicator.d.ts +1 -1
  193. package/esm/src/rendering/layouts/utils/applicator.d.ts.map +1 -1
  194. package/esm/src/rendering/layouts/utils/component-loader.d.ts +1 -1
  195. package/esm/src/rendering/layouts/utils/component-loader.d.ts.map +1 -1
  196. package/esm/src/rendering/layouts/utils/ensure-valid-child.d.ts +1 -1
  197. package/esm/src/rendering/layouts/utils/ensure-valid-child.d.ts.map +1 -1
  198. package/esm/src/rendering/orchestrator/layout.d.ts +1 -1
  199. package/esm/src/rendering/orchestrator/layout.d.ts.map +1 -1
  200. package/esm/src/rendering/orchestrator/module-loader/index.d.ts +3 -0
  201. package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
  202. package/esm/src/rendering/orchestrator/module-loader/index.js +74 -19
  203. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  204. package/esm/src/rendering/orchestrator/pipeline.js +2 -0
  205. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts +1 -1
  206. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts.map +1 -1
  207. package/esm/src/rendering/page-renderer.d.ts +1 -1
  208. package/esm/src/rendering/page-renderer.d.ts.map +1 -1
  209. package/esm/src/rendering/page-rendering.d.ts +1 -1
  210. package/esm/src/rendering/page-rendering.d.ts.map +1 -1
  211. package/esm/src/rendering/rsc/server-renderer/component-detector.d.ts +1 -1
  212. package/esm/src/rendering/rsc/server-renderer/component-detector.d.ts.map +1 -1
  213. package/esm/src/rendering/rsc/server-renderer/rsc-renderer.d.ts +1 -1
  214. package/esm/src/rendering/rsc/server-renderer/rsc-renderer.d.ts.map +1 -1
  215. package/esm/src/rendering/rsc/server-renderer/tree-processor.d.ts +1 -1
  216. package/esm/src/rendering/rsc/server-renderer/tree-processor.d.ts.map +1 -1
  217. package/esm/src/rendering/rsc/server-renderer/tree-processor.js +4 -2
  218. package/esm/src/rendering/snippet-renderer.js +2 -2
  219. package/esm/src/rendering/ssr/component-registry.d.ts +1 -1
  220. package/esm/src/rendering/ssr/component-registry.d.ts.map +1 -1
  221. package/esm/src/rendering/ssr/component-registry.js +1 -1
  222. package/esm/src/rendering/ssr-renderer.d.ts +1 -1
  223. package/esm/src/rendering/ssr-renderer.d.ts.map +1 -1
  224. package/esm/src/rendering/utils/react-helpers.d.ts +1 -1
  225. package/esm/src/rendering/utils/react-helpers.d.ts.map +1 -1
  226. package/esm/src/rendering/utils/react-helpers.js +1 -1
  227. package/esm/src/server/handlers/request/ssr/error-page-fallback.js +1 -1
  228. package/esm/src/server/handlers/request/ssr/not-found-fallback.js +1 -1
  229. package/esm/src/transforms/esm/http-bundler.d.ts +15 -4
  230. package/esm/src/transforms/esm/http-bundler.d.ts.map +1 -1
  231. package/esm/src/transforms/esm/http-bundler.js +105 -12
  232. package/esm/src/transforms/esm/http-cache.d.ts.map +1 -1
  233. package/esm/src/transforms/esm/http-cache.js +26 -27
  234. package/esm/src/transforms/esm/import-rewriter.d.ts.map +1 -1
  235. package/esm/src/transforms/esm/import-rewriter.js +3 -3
  236. package/esm/src/transforms/esm/package-registry.d.ts +15 -13
  237. package/esm/src/transforms/esm/package-registry.d.ts.map +1 -1
  238. package/esm/src/transforms/esm/package-registry.js +45 -32
  239. package/esm/src/transforms/esm/react-imports.d.ts.map +1 -1
  240. package/esm/src/transforms/esm/react-imports.js +3 -7
  241. package/esm/src/transforms/esm/types.d.ts +2 -0
  242. package/esm/src/transforms/esm/types.d.ts.map +1 -1
  243. package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts +14 -0
  244. package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts.map +1 -1
  245. package/esm/src/transforms/mdx/esm-module-loader/cache/index.js +67 -0
  246. package/esm/src/transforms/mdx/esm-module-loader/loader.d.ts.map +1 -1
  247. package/esm/src/transforms/mdx/esm-module-loader/loader.js +1 -1
  248. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts +1 -0
  249. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
  250. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +1 -0
  251. package/esm/src/transforms/mdx/esm-module-loader/types.d.ts +4 -0
  252. package/esm/src/transforms/mdx/esm-module-loader/types.d.ts.map +1 -1
  253. package/esm/src/transforms/mdx/index.d.ts +1 -1
  254. package/esm/src/transforms/mdx/index.d.ts.map +1 -1
  255. package/esm/src/transforms/mdx/index.js +1 -1
  256. package/esm/src/transforms/mdx/mdx-cache-adapter.js +1 -1
  257. package/esm/src/transforms/mdx/module-loader/types.d.ts +1 -1
  258. package/esm/src/transforms/mdx/module-loader/types.d.ts.map +1 -1
  259. package/esm/src/transforms/mdx/types.d.ts +2 -2
  260. package/esm/src/transforms/mdx/types.d.ts.map +1 -1
  261. package/esm/src/transforms/pipeline/context.d.ts.map +1 -1
  262. package/esm/src/transforms/pipeline/context.js +7 -15
  263. package/esm/src/transforms/pipeline/stages/finalize.d.ts.map +1 -1
  264. package/esm/src/transforms/pipeline/stages/finalize.js +1 -1
  265. package/esm/src/types/app.d.ts +1 -1
  266. package/esm/src/types/app.d.ts.map +1 -1
  267. package/esm/src/types/global-guards.d.ts +1 -1
  268. package/esm/src/types/global-guards.d.ts.map +1 -1
  269. package/esm/src/types/index.d.ts +1 -1
  270. package/esm/src/types/index.d.ts.map +1 -1
  271. package/esm/src/utils/constants/cdn.d.ts.map +1 -1
  272. package/esm/src/utils/constants/cdn.js +22 -11
  273. package/esm/src/utils/hash-utils.d.ts +2 -0
  274. package/esm/src/utils/hash-utils.d.ts.map +1 -1
  275. package/esm/src/utils/hash-utils.js +4 -0
  276. package/esm/src/workflow/react/use-approval.js +1 -1
  277. package/esm/src/workflow/react/use-workflow-list.js +1 -1
  278. package/esm/src/workflow/react/use-workflow-start.js +1 -1
  279. package/esm/src/workflow/react/use-workflow.js +1 -1
  280. package/package.json +2 -1
  281. package/src/deno.js +8 -9
  282. package/src/deps/esm.sh/@types/react-dom@19.1.11/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/client.d.ts +105 -0
  283. package/src/deps/esm.sh/@types/react-dom@19.1.11/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/server.d.ts +162 -0
  284. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjM/global.d.ts +165 -0
  285. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjM/index.d.ts +4267 -0
  286. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/global.d.ts +165 -0
  287. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/index.d.ts +4267 -0
  288. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/jsx-runtime.d.ts +36 -0
  289. package/src/deps/esm.sh/@types/scheduler@0.26.0/index.d.ts +30 -0
  290. package/src/deps/esm.sh/csstype@3.2.3/index.d.ts +22569 -0
  291. package/src/deps/esm.sh/react-dom@19.1.1/client.d.ts +105 -0
  292. package/src/deps/esm.sh/react-dom@19.1.1/client.js +5 -0
  293. package/src/deps/esm.sh/react-dom@19.1.1/server.d.ts +162 -0
  294. package/src/deps/esm.sh/react-dom@19.1.1/server.js +5 -0
  295. package/src/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts +36 -0
  296. package/src/deps/esm.sh/react@19.1.1/jsx-runtime.js +3 -0
  297. package/src/deps/esm.sh/react@19.1.1.d.ts +4267 -0
  298. package/src/deps/esm.sh/react@19.1.1.js +3 -0
  299. package/src/deps/esm.sh/scheduler@^0.26.0.d.ts +30 -0
  300. package/src/deps/esm.sh/scheduler@^0.26.0.js +3 -0
  301. package/src/proxy/main.ts +471 -0
  302. package/src/src/agent/react/use-agent.ts +1 -1
  303. package/src/src/agent/react/use-chat/use-chat.ts +1 -1
  304. package/src/src/agent/react/use-completion.ts +1 -1
  305. package/src/src/agent/react/use-streaming.ts +1 -1
  306. package/src/src/agent/react/use-voice-input.ts +1 -1
  307. package/src/src/cli/commands/init/config-generator.ts +1 -1
  308. package/src/src/cli/index/arg-parser.ts +1 -0
  309. package/src/src/cli/index/command-router.ts +57 -40
  310. package/src/src/cli/index/types.ts +5 -0
  311. package/src/src/config/loader.ts +5 -4
  312. package/src/src/html/utils.ts +2 -2
  313. package/src/src/modules/component-registry/registry.ts +1 -1
  314. package/src/src/modules/import-map/default-import-map.ts +3 -25
  315. package/src/src/modules/import-map/loader.ts +7 -23
  316. package/src/src/modules/import-map/resolver.ts +13 -8
  317. package/src/src/modules/react-loader/component-loader.ts +3 -1
  318. package/src/src/modules/react-loader/extract-component.ts +1 -1
  319. package/src/src/modules/react-loader/ssr-module-loader/loader.ts +52 -38
  320. package/src/src/modules/react-loader/ssr-module-loader/types.ts +2 -0
  321. package/src/src/modules/react-loader/types.ts +3 -1
  322. package/src/src/modules/react-loader/unified-loader.ts +7 -4
  323. package/src/src/modules/server/module-batch-handler.ts +7 -0
  324. package/src/src/modules/server/module-server.ts +6 -1
  325. package/src/src/modules/server/ssr-import-rewriter.ts +9 -17
  326. package/src/src/react/compat/hooks-adapter.ts +1 -1
  327. package/src/src/react/compat/ssr-adapter/response-builder.ts +1 -1
  328. package/src/src/react/compat/ssr-adapter/server-loader.ts +10 -10
  329. package/src/src/react/compat/ssr-adapter/stream-renderer.ts +2 -2
  330. package/src/src/react/compat/ssr-adapter/string-renderer.ts +3 -3
  331. package/src/src/react/compat/version-detector/feature-detector.ts +1 -1
  332. package/src/src/react/components/AppWrapper.tsx +1 -1
  333. package/src/src/react/components/Head.tsx +7 -3
  334. package/src/src/react/components/LayoutComponent.tsx +2 -2
  335. package/src/src/react/components/Link.tsx +1 -1
  336. package/src/src/react/components/MDXProvider.tsx +2 -2
  337. package/src/src/react/components/ProviderComponent.tsx +2 -2
  338. package/src/src/react/components/ai/agent-card.tsx +1 -1
  339. package/src/src/react/components/ai/chat/components/animations.tsx +1 -1
  340. package/src/src/react/components/ai/chat/components/empty-state.tsx +1 -1
  341. package/src/src/react/components/ai/chat/components/message-actions.tsx +1 -1
  342. package/src/src/react/components/ai/chat/components/reasoning.tsx +1 -1
  343. package/src/src/react/components/ai/chat/components/tool-ui.tsx +1 -1
  344. package/src/src/react/components/ai/chat/composition/api.tsx +1 -1
  345. package/src/src/react/components/ai/chat/index.tsx +1 -1
  346. package/src/src/react/components/ai/error-boundary.tsx +1 -1
  347. package/src/src/react/components/ai/icons/index.ts +1 -1
  348. package/src/src/react/components/ai/markdown.tsx +1 -1
  349. package/src/src/react/components/ai/message.tsx +1 -1
  350. package/src/src/react/components/optimized-image/OptimizedBackgroundImage.tsx +1 -1
  351. package/src/src/react/components/optimized-image/OptimizedImage.tsx +1 -1
  352. package/src/src/react/components/optimized-image/SimpleOptimizedImage.tsx +1 -1
  353. package/src/src/react/components/optimized-image/utils.tsx +1 -1
  354. package/src/src/react/context/index.ts +1 -1
  355. package/src/src/react/fonts/index.ts +1 -1
  356. package/src/src/react/primitives/agent-primitives.tsx +1 -1
  357. package/src/src/react/primitives/chat-container.tsx +1 -1
  358. package/src/src/react/primitives/input-box.tsx +5 -3
  359. package/src/src/react/primitives/message-list.tsx +1 -1
  360. package/src/src/react/primitives/tool-primitives.tsx +1 -1
  361. package/src/src/react/router/index.ts +1 -1
  362. package/src/src/rendering/app-reserved.ts +1 -1
  363. package/src/src/rendering/client/router.ts +2 -2
  364. package/src/src/rendering/client/state-bridge.ts +2 -2
  365. package/src/src/rendering/component-handling.ts +7 -1
  366. package/src/src/rendering/element-validator/element-inspector.ts +1 -1
  367. package/src/src/rendering/element-validator/element-normalizer.ts +1 -1
  368. package/src/src/rendering/element-validator/primitive-checks.ts +1 -1
  369. package/src/src/rendering/element-validator/validator-core.ts +1 -1
  370. package/src/src/rendering/layouts/layout-applicator.ts +5 -6
  371. package/src/src/rendering/layouts/utils/applicator.ts +1 -1
  372. package/src/src/rendering/layouts/utils/component-loader.ts +1 -1
  373. package/src/src/rendering/layouts/utils/ensure-valid-child.ts +1 -1
  374. package/src/src/rendering/orchestrator/layout.ts +1 -1
  375. package/src/src/rendering/orchestrator/module-loader/index.ts +91 -20
  376. package/src/src/rendering/orchestrator/pipeline.ts +2 -0
  377. package/src/src/rendering/orchestrator/ssr-orchestrator.ts +2 -2
  378. package/src/src/rendering/page-renderer.ts +1 -1
  379. package/src/src/rendering/page-rendering.ts +1 -1
  380. package/src/src/rendering/rsc/server-renderer/component-detector.ts +1 -1
  381. package/src/src/rendering/rsc/server-renderer/rsc-renderer.ts +1 -1
  382. package/src/src/rendering/rsc/server-renderer/tree-processor.ts +14 -4
  383. package/src/src/rendering/snippet-renderer.ts +2 -2
  384. package/src/src/rendering/ssr/component-registry.ts +1 -1
  385. package/src/src/rendering/ssr-renderer.ts +1 -1
  386. package/src/src/rendering/utils/react-helpers.ts +1 -1
  387. package/src/src/server/build-app-route-renderer.ts +2 -2
  388. package/src/src/server/handlers/request/rsc/handlers/render-handler.ts +1 -1
  389. package/src/src/server/handlers/request/ssr/error-page-fallback.ts +2 -2
  390. package/src/src/server/handlers/request/ssr/not-found-fallback.ts +1 -1
  391. package/src/src/transforms/esm/http-bundler.ts +101 -11
  392. package/src/src/transforms/esm/http-cache.ts +27 -28
  393. package/src/src/transforms/esm/import-rewriter.ts +5 -3
  394. package/src/src/transforms/esm/package-registry.ts +46 -32
  395. package/src/src/transforms/esm/react-imports.ts +3 -7
  396. package/src/src/transforms/esm/types.ts +2 -0
  397. package/src/src/transforms/mdx/esm-module-loader/cache/index.ts +84 -0
  398. package/src/src/transforms/mdx/esm-module-loader/loader.ts +2 -1
  399. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +2 -1
  400. package/src/src/transforms/mdx/esm-module-loader/types.ts +4 -0
  401. package/src/src/transforms/mdx/index.ts +1 -1
  402. package/src/src/transforms/mdx/mdx-cache-adapter.ts +1 -1
  403. package/src/src/transforms/mdx/module-loader/types.ts +1 -1
  404. package/src/src/transforms/mdx/types.ts +2 -2
  405. package/src/src/transforms/pipeline/context.ts +7 -18
  406. package/src/src/transforms/pipeline/stages/finalize.ts +6 -1
  407. package/src/src/transforms/plugins/babel-node-positions.ts +2 -2
  408. package/src/src/types/app.ts +1 -1
  409. package/src/src/types/global-guards.ts +1 -1
  410. package/src/src/types/index.ts +1 -1
  411. package/src/src/utils/constants/cdn.ts +21 -12
  412. package/src/src/utils/hash-utils.ts +5 -0
  413. package/src/src/workflow/react/use-approval.ts +1 -1
  414. package/src/src/workflow/react/use-workflow-list.ts +1 -1
  415. package/src/src/workflow/react/use-workflow-start.ts +1 -1
  416. package/src/src/workflow/react/use-workflow.ts +1 -1
package/esm/deno.d.ts CHANGED
@@ -247,7 +247,6 @@ declare namespace _default {
247
247
  let tasks: {
248
248
  setup: string;
249
249
  start: string;
250
- "start:clean": string;
251
250
  "start:headless": string;
252
251
  proxy: string;
253
252
  renderer: string;
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.0.86",
3
+ "version": "0.0.88",
4
4
  "nodeModulesDir": "auto",
5
5
  "exclude": [
6
6
  "npm/",
@@ -195,12 +195,12 @@ export default {
195
195
  "csstype": "https://esm.sh/csstype@3.2.3",
196
196
  "@types/react": "https://esm.sh/@types/react@18.3.27?deps=csstype@3.2.3",
197
197
  "@types/react-dom": "https://esm.sh/@types/react-dom@18.3.7?deps=csstype@3.2.3",
198
- "react": "npm:react@19.1.1",
199
- "react-dom": "npm:react-dom@19.1.1",
200
- "react-dom/server": "npm:react-dom@19.1.1/server",
201
- "react-dom/client": "npm:react-dom@19.1.1/client",
202
- "react/jsx-runtime": "npm:react@19.1.1/jsx-runtime",
203
- "react/jsx-dev-runtime": "npm:react@19.1.1/jsx-dev-runtime",
198
+ "react": "https://esm.sh/react@19.1.1?target=es2022&deps=csstype@3.2.3",
199
+ "react-dom": "https://esm.sh/react-dom@19.1.1?external=react&target=es2022&deps=csstype@3.2.3",
200
+ "react-dom/server": "https://esm.sh/react-dom@19.1.1/server?external=react&target=es2022&deps=csstype@3.2.3",
201
+ "react-dom/client": "https://esm.sh/react-dom@19.1.1/client?external=react&target=es2022&deps=csstype@3.2.3",
202
+ "react/jsx-runtime": "https://esm.sh/react@19.1.1/jsx-runtime?external=react&target=es2022&deps=csstype@3.2.3",
203
+ "react/jsx-dev-runtime": "https://esm.sh/react@19.1.1/jsx-dev-runtime?external=react&target=es2022&deps=csstype@3.2.3",
204
204
  "@mdx-js/mdx": "npm:@mdx-js/mdx@3.0.0",
205
205
  "@mdx-js/react": "npm:@mdx-js/react@3.0.0",
206
206
  "unist-util-visit": "npm:unist-util-visit@5.0.0",
@@ -264,8 +264,7 @@ export default {
264
264
  },
265
265
  "tasks": {
266
266
  "setup": "deno run --allow-all scripts/setup.ts",
267
- "start": "deno run --allow-all scripts/server.ts",
268
- "start:clean": "rm -rf .cache/ && deno run --allow-all scripts/server.ts",
267
+ "start": "rm -rf .cache/ && deno run --allow-all scripts/server.ts",
269
268
  "start:headless": "deno run --allow-all scripts/server.ts --headless",
270
269
  "proxy": "deno run --allow-net --allow-env --allow-read proxy/main.ts",
271
270
  "renderer": "deno run --allow-all --unstable-net --unstable-worker-options src/cli/main.ts dev",
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/deps/esm.sh/react-dom@19.1.1/client.js"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /* esm.sh - react-dom@19.1.1/client */
2
+ import "react-dom/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/react-dom.mjs";
3
+ import "../scheduler@^0.26.0.js";
4
+ export * from "react-dom/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/client.mjs";
5
+ export { default } from "react-dom/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/client.mjs";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/deps/esm.sh/react-dom@19.1.1/server.js"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /* esm.sh - react-dom@19.1.1/server */
2
+ import "react-dom/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/cjs/react-dom-server-legacy.browser.production.mjs";
3
+ import "react-dom/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/cjs/react-dom-server.browser.production.mjs";
4
+ export * from "react-dom/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/server.mjs";
5
+ export { default } from "react-dom/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/server.mjs";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jsx-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../../../../src/deps/esm.sh/react@19.1.1/jsx-runtime.js"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /* esm.sh - react@19.1.1/jsx-runtime */
2
+ export * from "react/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/jsx-runtime.mjs";
3
+ export { default } from "react/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/jsx-runtime.mjs";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=react@19.1.1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react@19.1.1.d.ts","sourceRoot":"","sources":["../../../src/deps/esm.sh/react@19.1.1.js"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /* esm.sh - react@19.1.1 */
2
+ export * from "react/X-ZGNzc3R5cGVAMy4yLjM/es2022/react.mjs";
3
+ export { default } from "react/X-ZGNzc3R5cGVAMy4yLjM/es2022/react.mjs";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scheduler@%5E0.26.0.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler@^0.26.0.d.ts","sourceRoot":"","sources":["../../../src/deps/esm.sh/scheduler@^0.26.0.js"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /* esm.sh - scheduler@0.26.0 */
2
+ export * from "scheduler/es2022/scheduler.mjs";
3
+ export { default } from "scheduler/es2022/scheduler.mjs";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/proxy/main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,400 @@
1
+ /**
2
+ * Veryfront Proxy Server (Split Mode)
3
+ *
4
+ * Standalone proxy server that forwards requests to a separate renderer process.
5
+ * Used in production for security isolation of OAuth credentials.
6
+ *
7
+ * For combined mode (single process), use the renderer with --proxy flag instead.
8
+ *
9
+ * Environment Variables:
10
+ * - API_CLIENT_ID_VERYFRONT_RENDERER_PROXY: OAuth client ID (from 1Password)
11
+ * - API_CLIENT_SECRET_VERYFRONT_RENDERER_PROXY: OAuth client secret (from 1Password)
12
+ * - RENDERER_URL: URL of the renderer service
13
+ * - LOCAL_PROJECTS: JSON map of slug → filesystem path (for dev)
14
+ * - CACHE_TYPE: "memory" (default) or "redis"
15
+ * - REDIS_URL: Redis connection URL (required if CACHE_TYPE=redis)
16
+ */
17
+ import * as dntShim from "../_dnt.shims.js";
18
+ import { createProxyHandler } from "./handler.js";
19
+ import { createCacheFromEnv } from "./cache/index.js";
20
+ import { endSpan, extractContext, initializeOTLPWithApis, injectContext, ProxySpanNames, shutdownOTLP, startServerSpan, withContext, withSpan, } from "./tracing.js";
21
+ import { proxyLogger } from "./logger.js";
22
+ import { parseProjectDomain } from "../src/server/utils/domain-parser.js";
23
+ import { exit, getEnv, onSignal } from "../src/platform/compat/process.js";
24
+ import { createHttpServer, upgradeWebSocket } from "../src/platform/compat/http/index.js";
25
+ // Configuration from environment variables
26
+ const config = {
27
+ apiBaseUrl: getEnv("VERYFRONT_API_BASE_URL") ||
28
+ "http://api.lvh.me:4000",
29
+ clientId: getEnv("API_CLIENT_ID_VERYFRONT_RENDERER_PROXY") || "",
30
+ clientSecret: getEnv("API_CLIENT_SECRET_VERYFRONT_RENDERER_PROXY") || "",
31
+ // Preview uses same service account (scopes determine access)
32
+ previewClientId: getEnv("API_CLIENT_ID_VERYFRONT_RENDERER_PROXY") || "",
33
+ previewClientSecret: getEnv("API_CLIENT_SECRET_VERYFRONT_RENDERER_PROXY") || "",
34
+ localProjects: getEnv("LOCAL_PROJECTS") ? JSON.parse(getEnv("LOCAL_PROJECTS")) : {},
35
+ };
36
+ const RENDERER_URL = getEnv("RENDERER_URL") || "http://localhost:3001";
37
+ const PORT = parseInt(getEnv("PORT") || "8080");
38
+ const HOST = getEnv("HOST") || "0.0.0.0"; // Default to 0.0.0.0 for Kubernetes
39
+ const WS_CONNECT_TIMEOUT_MS = 30000;
40
+ // Timeout for forwarding requests to renderer (SSR can take time on cold start)
41
+ const RENDERER_REQUEST_TIMEOUT_MS = parseInt(getEnv("RENDERER_REQUEST_TIMEOUT_MS") || "90000");
42
+ // Initialize cache and proxy handler
43
+ const cache = await createCacheFromEnv();
44
+ const proxyHandler = createProxyHandler({
45
+ config,
46
+ cache,
47
+ logger: {
48
+ debug: (msg, extra) => proxyLogger.debug(msg, extra),
49
+ info: (msg, extra) => proxyLogger.info(msg, extra),
50
+ warn: (msg, extra) => proxyLogger.warn(msg, extra),
51
+ error: (msg, error, extra) => proxyLogger.error(msg, extra ?? {}, error),
52
+ },
53
+ });
54
+ // Validate configuration on startup
55
+ const missingCredentials = proxyHandler.validateConfig();
56
+ if (missingCredentials.length > 0) {
57
+ proxyLogger.warn("Missing OAuth credentials", { missingCredentials });
58
+ proxyLogger.warn("Proxy will forward requests without authentication");
59
+ }
60
+ // Log local projects if configured
61
+ if (Object.keys(proxyHandler.localProjects).length > 0) {
62
+ proxyLogger.info("Local projects configured", {
63
+ projects: Object.keys(proxyHandler.localProjects),
64
+ });
65
+ }
66
+ /**
67
+ * Handle WebSocket upgrade requests.
68
+ * Bridges browser WebSocket to renderer's HMR WebSocket endpoint.
69
+ */
70
+ function handleWebSocketUpgrade(req) {
71
+ const url = new URL(req.url);
72
+ const host = req.headers.get("host") || "";
73
+ // Parse domain to extract project slug and environment
74
+ const parsed = parseProjectDomain(host);
75
+ const scope = parsed.environment === "preview" ? "preview" : "production";
76
+ const projectSlug = parsed.slug || undefined;
77
+ // Build renderer WebSocket URL
78
+ const rendererWsUrl = RENDERER_URL.replace(/^http/, "ws");
79
+ const targetUrl = new URL(`${rendererWsUrl}${url.pathname}${url.search}`);
80
+ targetUrl.searchParams.set("x-project-slug", projectSlug || "");
81
+ targetUrl.searchParams.set("x-environment", scope);
82
+ proxyLogger.info("[WebSocket] Upgrade request received", {
83
+ host,
84
+ path: url.pathname,
85
+ projectSlug,
86
+ environment: scope,
87
+ parsedEnvironment: parsed.environment,
88
+ targetUrl: targetUrl.toString(),
89
+ });
90
+ const { socket: clientSocket, response } = upgradeWebSocket(req);
91
+ let rendererSocket = null;
92
+ let connectTimeoutId = null;
93
+ let timedOut = false;
94
+ const clearConnectTimeout = () => {
95
+ if (connectTimeoutId) {
96
+ clearTimeout(connectTimeoutId);
97
+ connectTimeoutId = null;
98
+ }
99
+ };
100
+ clientSocket.onopen = () => {
101
+ proxyLogger.info("[WebSocket] Client connected, bridging to renderer", {
102
+ targetUrl: targetUrl.toString(),
103
+ });
104
+ try {
105
+ rendererSocket = new WebSocket(targetUrl.toString());
106
+ }
107
+ catch (error) {
108
+ proxyLogger.error("[WebSocket] Failed to create renderer WebSocket", {
109
+ error: error instanceof Error ? error.message : String(error),
110
+ targetUrl: targetUrl.toString(),
111
+ });
112
+ clientSocket.close(1011, "Failed to connect to renderer");
113
+ return;
114
+ }
115
+ connectTimeoutId = dntShim.setTimeout(() => {
116
+ timedOut = true;
117
+ proxyLogger.error("[WebSocket] Renderer connection timeout", {
118
+ targetUrl: targetUrl.toString(),
119
+ timeoutMs: WS_CONNECT_TIMEOUT_MS,
120
+ });
121
+ rendererSocket?.close();
122
+ if (clientSocket.readyState === WebSocket.OPEN) {
123
+ clientSocket.close(1001, "Renderer connection timeout");
124
+ }
125
+ }, WS_CONNECT_TIMEOUT_MS);
126
+ rendererSocket.onopen = () => {
127
+ clearConnectTimeout();
128
+ if (timedOut) {
129
+ rendererSocket?.close();
130
+ return;
131
+ }
132
+ proxyLogger.info("[WebSocket] Renderer connected, bridge established", {
133
+ projectSlug,
134
+ environment: scope,
135
+ });
136
+ };
137
+ rendererSocket.onmessage = (event) => {
138
+ if (clientSocket.readyState === WebSocket.OPEN) {
139
+ clientSocket.send(event.data);
140
+ }
141
+ };
142
+ rendererSocket.onerror = (event) => {
143
+ clearConnectTimeout();
144
+ proxyLogger.error("[WebSocket] Renderer connection error", {
145
+ projectSlug,
146
+ environment: scope,
147
+ targetUrl: targetUrl.toString(),
148
+ error: event instanceof ErrorEvent ? event.message : "Unknown error",
149
+ });
150
+ };
151
+ rendererSocket.onclose = (event) => {
152
+ clearConnectTimeout();
153
+ proxyLogger.info("[WebSocket] Renderer connection closed", {
154
+ code: event.code,
155
+ reason: event.reason,
156
+ wasClean: event.wasClean,
157
+ });
158
+ if (clientSocket.readyState === WebSocket.OPEN) {
159
+ clientSocket.close(event.code, event.reason);
160
+ }
161
+ };
162
+ };
163
+ clientSocket.onmessage = (event) => {
164
+ if (rendererSocket?.readyState === WebSocket.OPEN) {
165
+ rendererSocket.send(event.data);
166
+ }
167
+ };
168
+ clientSocket.onerror = (event) => {
169
+ clearConnectTimeout();
170
+ proxyLogger.error("[WebSocket] Client connection error", {
171
+ error: event instanceof ErrorEvent ? event.message : "Unknown error",
172
+ });
173
+ };
174
+ clientSocket.onclose = (event) => {
175
+ clearConnectTimeout();
176
+ proxyLogger.info("[WebSocket] Client connection closed", {
177
+ code: event.code,
178
+ reason: event.reason,
179
+ wasClean: event.wasClean,
180
+ });
181
+ if (rendererSocket?.readyState === WebSocket.OPEN) {
182
+ rendererSocket.close();
183
+ }
184
+ };
185
+ return response;
186
+ }
187
+ function jsonErrorResponse(status, body) {
188
+ return new dntShim.Response(JSON.stringify(body), {
189
+ status,
190
+ headers: { "Content-Type": "application/json" },
191
+ });
192
+ }
193
+ function forwardToRenderer(req) {
194
+ const startTime = performance.now();
195
+ const url = new URL(req.url);
196
+ const parentContext = extractContext(req.headers);
197
+ const spanInfo = startServerSpan(req.method, url.pathname, parentContext);
198
+ const execute = async () => {
199
+ try {
200
+ const ctx = await proxyHandler.processRequest(req);
201
+ if (ctx.error) {
202
+ const ms = Math.round(performance.now() - startTime);
203
+ proxyLogger.error(`${ctx.error.status} ${req.method} ${url.pathname}`, {
204
+ ms,
205
+ domain: ctx.host,
206
+ });
207
+ endSpan(spanInfo?.span, ctx.error.status);
208
+ // Handle redirect for protected environments
209
+ if (ctx.error.redirectUrl) {
210
+ return new dntShim.Response(null, {
211
+ status: 302,
212
+ headers: { Location: ctx.error.redirectUrl },
213
+ });
214
+ }
215
+ return jsonErrorResponse(ctx.error.status, {
216
+ error: ctx.error.message,
217
+ status: ctx.error.status,
218
+ });
219
+ }
220
+ const reqLogger = proxyLogger.child({
221
+ ...(ctx.projectSlug && { project: ctx.projectSlug }),
222
+ env: ctx.environment,
223
+ });
224
+ const newHeaders = new dntShim.Headers(req.headers);
225
+ if (ctx.token)
226
+ newHeaders.set("x-token", ctx.token);
227
+ newHeaders.set("x-project-slug", ctx.projectSlug || "");
228
+ newHeaders.set("x-environment", ctx.environment);
229
+ newHeaders.set("x-forwarded-host", ctx.host);
230
+ if (ctx.localPath)
231
+ newHeaders.set("x-project-path", ctx.localPath);
232
+ // Forward project/release context for cache keying
233
+ if (ctx.projectId)
234
+ newHeaders.set("x-project-id", ctx.projectId);
235
+ if (ctx.releaseId)
236
+ newHeaders.set("x-release-id", ctx.releaseId);
237
+ if (ctx.branchId)
238
+ newHeaders.set("x-branch-id", ctx.branchId);
239
+ if (ctx.branchName)
240
+ newHeaders.set("x-branch-name", ctx.branchName);
241
+ newHeaders.delete("host");
242
+ injectContext(newHeaders);
243
+ const rendererUrl = new URL(url.pathname + url.search, RENDERER_URL);
244
+ // Create abort controller for timeout
245
+ const abortController = new AbortController();
246
+ const timeoutId = dntShim.setTimeout(() => {
247
+ abortController.abort();
248
+ }, RENDERER_REQUEST_TIMEOUT_MS);
249
+ let response;
250
+ try {
251
+ response = await withSpan(ProxySpanNames.HTTP_CLIENT_FETCH, () => dntShim.fetch(rendererUrl.toString(), {
252
+ method: req.method,
253
+ headers: newHeaders,
254
+ body: req.body,
255
+ redirect: "manual",
256
+ signal: abortController.signal,
257
+ }), {
258
+ "http.method": req.method,
259
+ "http.url": rendererUrl.toString(),
260
+ "http.host": rendererUrl.host,
261
+ "proxy.target": "renderer",
262
+ "proxy.project_slug": ctx.projectSlug || "",
263
+ "proxy.timeout_ms": RENDERER_REQUEST_TIMEOUT_MS,
264
+ });
265
+ }
266
+ finally {
267
+ clearTimeout(timeoutId);
268
+ }
269
+ const ms = Math.round(performance.now() - startTime);
270
+ reqLogger.info(`${response.status} ${req.method} ${url.pathname}`, { ms });
271
+ endSpan(spanInfo?.span, response.status);
272
+ return new dntShim.Response(response.body, {
273
+ status: response.status,
274
+ statusText: response.statusText,
275
+ headers: response.headers,
276
+ });
277
+ }
278
+ catch (error) {
279
+ const ms = Math.round(performance.now() - startTime);
280
+ // Handle timeout specifically
281
+ if (error instanceof Error && error.name === "AbortError") {
282
+ proxyLogger.error(`504 ${req.method} ${url.pathname}`, {
283
+ ms,
284
+ timeoutMs: RENDERER_REQUEST_TIMEOUT_MS,
285
+ });
286
+ endSpan(spanInfo?.span, 504, error);
287
+ return jsonErrorResponse(504, {
288
+ error: "Gateway Timeout",
289
+ message: `Renderer request timed out after ${RENDERER_REQUEST_TIMEOUT_MS}ms`,
290
+ });
291
+ }
292
+ proxyLogger.error(`502 ${req.method} ${url.pathname}`, { ms }, error);
293
+ endSpan(spanInfo?.span, 502, error);
294
+ return jsonErrorResponse(502, {
295
+ error: "Proxy Error",
296
+ message: error instanceof Error ? error.message : "Unknown error",
297
+ });
298
+ }
299
+ };
300
+ return spanInfo?.context ? withContext(spanInfo.context, execute) : execute();
301
+ }
302
+ /**
303
+ * Handle stats endpoint for monitoring.
304
+ */
305
+ async function handleStats() {
306
+ const stats = await proxyHandler.getStats();
307
+ return new dntShim.Response(JSON.stringify(stats, null, 2), {
308
+ headers: { "Content-Type": "application/json" },
309
+ });
310
+ }
311
+ /**
312
+ * Proxy API requests directly to Veryfront API (BFF pattern).
313
+ * Routes: /_vf/api/* -> api.veryfront.com/*
314
+ */
315
+ async function handleApiProxy(req) {
316
+ const url = new URL(req.url);
317
+ const token = await proxyHandler.getTokenForApi(req);
318
+ if (!token) {
319
+ return jsonErrorResponse(401, { error: "No authentication token" });
320
+ }
321
+ // Strip /_vf/api prefix and forward to API
322
+ const apiPath = url.pathname.replace(/^\/_vf\/api/, "");
323
+ const apiUrl = `${config.apiBaseUrl}${apiPath}${url.search}`;
324
+ const apiUrlObj = new URL(apiUrl);
325
+ try {
326
+ const response = await withSpan(ProxySpanNames.HTTP_CLIENT_FETCH, () => dntShim.fetch(apiUrl, {
327
+ method: req.method,
328
+ headers: {
329
+ Authorization: `Bearer ${token}`,
330
+ Accept: "application/json",
331
+ "Content-Type": req.headers.get("Content-Type") || "application/json",
332
+ },
333
+ body: req.method !== "GET" && req.method !== "HEAD" ? req.body : undefined,
334
+ }), {
335
+ "http.method": req.method,
336
+ "http.url": apiUrl,
337
+ "http.host": apiUrlObj.host,
338
+ "proxy.target": "api",
339
+ "proxy.api_path": apiPath,
340
+ });
341
+ return new dntShim.Response(response.body, {
342
+ status: response.status,
343
+ statusText: response.statusText,
344
+ headers: {
345
+ "Content-Type": response.headers.get("Content-Type") ||
346
+ "application/json",
347
+ "Cache-Control": "no-cache",
348
+ },
349
+ });
350
+ }
351
+ catch (error) {
352
+ proxyLogger.error("API proxy error", error);
353
+ return jsonErrorResponse(502, {
354
+ error: error instanceof Error ? error.message : "API request failed",
355
+ });
356
+ }
357
+ }
358
+ /**
359
+ * Main router.
360
+ */
361
+ function router(req) {
362
+ const url = new URL(req.url);
363
+ // WebSocket upgrade
364
+ if (req.headers.get("upgrade")?.toLowerCase() === "websocket") {
365
+ return Promise.resolve(handleWebSocketUpgrade(req));
366
+ }
367
+ // Proxy endpoints
368
+ if (url.pathname === "/_proxy/stats") {
369
+ return handleStats();
370
+ }
371
+ if (url.pathname === "/_proxy/health") {
372
+ return Promise.resolve(new dntShim.Response("OK", { status: 200 }));
373
+ }
374
+ // BFF: Proxy API requests directly to Veryfront API
375
+ if (url.pathname.startsWith("/_vf/api/")) {
376
+ return handleApiProxy(req);
377
+ }
378
+ // Forward all other requests to renderer
379
+ return forwardToRenderer(req);
380
+ }
381
+ // Graceful shutdown
382
+ async function shutdown() {
383
+ proxyLogger.info("Shutting down");
384
+ await proxyHandler.close();
385
+ await shutdownOTLP();
386
+ proxyLogger.info("Closed connections");
387
+ exit(0);
388
+ }
389
+ onSignal("SIGINT", shutdown);
390
+ onSignal("SIGTERM", shutdown);
391
+ // Initialize tracing and start server
392
+ await initializeOTLPWithApis();
393
+ proxyLogger.debug("Starting proxy server (split mode)", {
394
+ port: PORT,
395
+ rendererUrl: RENDERER_URL,
396
+ apiBaseUrl: config.apiBaseUrl,
397
+ });
398
+ // Create and start the HTTP server
399
+ const server = createHttpServer();
400
+ await server.serve(router, { port: PORT, hostname: HOST });
@@ -1,5 +1,5 @@
1
1
  import * as dntShim from "../../../_dnt.shims.js";
2
- import { useCallback, useRef, useState } from "react";
2
+ import { useCallback, useRef, useState } from "../../../deps/esm.sh/react@19.1.1.js";
3
3
  import { createError, ensureError, toError } from "../../errors/veryfront-error.js";
4
4
  export function useAgent(options) {
5
5
  const [messages, setMessages] = useState([]);
@@ -8,7 +8,7 @@
8
8
  * for battle-tested implementation. This is a simplified reference implementation.
9
9
  */
10
10
  import * as dntShim from "../../../../_dnt.shims.js";
11
- import { useCallback, useRef, useState } from "react";
11
+ import { useCallback, useRef, useState } from "../../../../deps/esm.sh/react@19.1.1.js";
12
12
  import { createError, ensureError, toError } from "../../../errors/veryfront-error.js";
13
13
  import { handleStreamingResponse } from "./streaming/index.js";
14
14
  import { generateClientId } from "./utils.js";
@@ -4,7 +4,7 @@
4
4
  * Single text completion with streaming support.
5
5
  */
6
6
  import * as dntShim from "../../../_dnt.shims.js";
7
- import { useCallback, useRef, useState } from "react";
7
+ import { useCallback, useRef, useState } from "../../../deps/esm.sh/react@19.1.1.js";
8
8
  import { createError, toError } from "../../errors/veryfront-error.js";
9
9
  /**
10
10
  * useCompletion hook for single text generation
@@ -1,5 +1,5 @@
1
1
  import * as dntShim from "../../../_dnt.shims.js";
2
- import { useCallback, useRef, useState } from "react";
2
+ import { useCallback, useRef, useState } from "../../../deps/esm.sh/react@19.1.1.js";
3
3
  import { createError, toError } from "../../errors/veryfront-error.js";
4
4
  export function useStreaming(options) {
5
5
  const [data, setData] = useState("");
@@ -1,5 +1,5 @@
1
1
  import * as dntShim from "../../../_dnt.shims.js";
2
- import * as React from "react";
2
+ import * as React from "../../../deps/esm.sh/react@19.1.1.js";
3
3
  export function useVoiceInput(options = {}) {
4
4
  const { language, continuous = false, interimResults = true, onTranscript, onError, onStart, onEnd, } = options;
5
5
  const [isListening, setIsListening] = React.useState(false);
@@ -14,7 +14,7 @@ export async function createPackageJson(projectDir, projectName) {
14
14
  dependencies: {
15
15
  react: "^19.0.0",
16
16
  "react-dom": "^19.0.0",
17
- veryfront: "^0.0.63",
17
+ veryfront: "^0.0.88",
18
18
  zod: "^3.24.0",
19
19
  },
20
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"arg-parser.d.ts","sourceRoot":"","sources":["../../../../src/src/cli/index/arg-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA+E7C,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAIhE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAevD"}
1
+ {"version":3,"file":"arg-parser.d.ts","sourceRoot":"","sources":["../../../../src/src/cli/index/arg-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA+E7C,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAIhE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAgBvD"}
@@ -75,6 +75,7 @@ export function parseCliArgs(args) {
75
75
  t: "template",
76
76
  j: "json",
77
77
  w: "with",
78
+ m: "mode",
78
79
  },
79
80
  default: { port: DEFAULT_PORT },
80
81
  });
@@ -1 +1 @@
1
- {"version":3,"file":"command-router.d.ts","sourceRoot":"","sources":["../../../../src/src/cli/index/command-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwCH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAsD7C;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwXlE"}
1
+ {"version":3,"file":"command-router.d.ts","sourceRoot":"","sources":["../../../../src/src/cli/index/command-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwCH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAsD7C;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyYlE"}