veryfront 0.0.84 → 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 (442) hide show
  1. package/README.md +18 -44
  2. package/esm/deno.d.ts +0 -1
  3. package/esm/deno.js +8 -9
  4. package/esm/deps/esm.sh/react-dom@19.1.1/client.d.ts +2 -0
  5. package/esm/deps/esm.sh/react-dom@19.1.1/client.d.ts.map +1 -0
  6. package/esm/deps/esm.sh/react-dom@19.1.1/client.js +5 -0
  7. package/esm/deps/esm.sh/react-dom@19.1.1/server.d.ts +2 -0
  8. package/esm/deps/esm.sh/react-dom@19.1.1/server.d.ts.map +1 -0
  9. package/esm/deps/esm.sh/react-dom@19.1.1/server.js +5 -0
  10. package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts +2 -0
  11. package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts.map +1 -0
  12. package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.js +3 -0
  13. package/esm/deps/esm.sh/react@19.1.1.d.ts +2 -0
  14. package/esm/deps/esm.sh/react@19.1.1.d.ts.map +1 -0
  15. package/esm/deps/esm.sh/react@19.1.1.js +3 -0
  16. package/esm/deps/esm.sh/scheduler@^0.26.0.d.ts +2 -0
  17. package/esm/deps/esm.sh/scheduler@^0.26.0.d.ts.map +1 -0
  18. package/esm/deps/esm.sh/scheduler@^0.26.0.js +3 -0
  19. package/esm/proxy/main.d.ts +2 -0
  20. package/esm/proxy/main.d.ts.map +1 -0
  21. package/esm/proxy/main.js +400 -0
  22. package/esm/src/agent/react/use-agent.js +1 -1
  23. package/esm/src/agent/react/use-chat/use-chat.js +1 -1
  24. package/esm/src/agent/react/use-completion.js +1 -1
  25. package/esm/src/agent/react/use-streaming.js +1 -1
  26. package/esm/src/agent/react/use-voice-input.js +1 -1
  27. package/esm/src/cli/app/components/list-select.js +2 -2
  28. package/esm/src/cli/app/index.d.ts +1 -1
  29. package/esm/src/cli/app/index.d.ts.map +1 -1
  30. package/esm/src/cli/app/index.js +26 -33
  31. package/esm/src/cli/app/state.d.ts +3 -0
  32. package/esm/src/cli/app/state.d.ts.map +1 -1
  33. package/esm/src/cli/app/state.js +4 -0
  34. package/esm/src/cli/app/views/dashboard.d.ts.map +1 -1
  35. package/esm/src/cli/app/views/dashboard.js +45 -57
  36. package/esm/src/cli/app/views/startup.d.ts +39 -0
  37. package/esm/src/cli/app/views/startup.d.ts.map +1 -0
  38. package/esm/src/cli/app/views/startup.js +103 -0
  39. package/esm/src/cli/commands/init/config-generator.js +1 -1
  40. package/esm/src/cli/index/arg-parser.d.ts.map +1 -1
  41. package/esm/src/cli/index/arg-parser.js +1 -0
  42. package/esm/src/cli/index/command-router.d.ts.map +1 -1
  43. package/esm/src/cli/index/command-router.js +54 -39
  44. package/esm/src/cli/index/types.d.ts +4 -0
  45. package/esm/src/cli/index/types.d.ts.map +1 -1
  46. package/esm/src/cli/mcp/advanced-tools.d.ts +2 -2
  47. package/esm/src/cli/ui/colors.d.ts +8 -0
  48. package/esm/src/cli/ui/colors.d.ts.map +1 -1
  49. package/esm/src/cli/ui/colors.js +34 -0
  50. package/esm/src/cli/ui/dot-matrix.d.ts +8 -0
  51. package/esm/src/cli/ui/dot-matrix.d.ts.map +1 -1
  52. package/esm/src/cli/ui/dot-matrix.js +67 -2
  53. package/esm/src/config/loader.d.ts.map +1 -1
  54. package/esm/src/config/loader.js +5 -4
  55. package/esm/src/html/utils.js +2 -2
  56. package/esm/src/modules/component-registry/registry.d.ts +1 -1
  57. package/esm/src/modules/component-registry/registry.d.ts.map +1 -1
  58. package/esm/src/modules/import-map/default-import-map.d.ts +1 -11
  59. package/esm/src/modules/import-map/default-import-map.d.ts.map +1 -1
  60. package/esm/src/modules/import-map/default-import-map.js +3 -20
  61. package/esm/src/modules/import-map/loader.d.ts.map +1 -1
  62. package/esm/src/modules/import-map/loader.js +7 -22
  63. package/esm/src/modules/import-map/resolver.d.ts.map +1 -1
  64. package/esm/src/modules/import-map/resolver.js +12 -8
  65. package/esm/src/modules/react-loader/component-loader.d.ts +1 -1
  66. package/esm/src/modules/react-loader/component-loader.d.ts.map +1 -1
  67. package/esm/src/modules/react-loader/component-loader.js +2 -0
  68. package/esm/src/modules/react-loader/extract-component.d.ts +1 -1
  69. package/esm/src/modules/react-loader/extract-component.d.ts.map +1 -1
  70. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts +2 -7
  71. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
  72. package/esm/src/modules/react-loader/ssr-module-loader/loader.js +68 -38
  73. package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts +2 -0
  74. package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts.map +1 -1
  75. package/esm/src/modules/react-loader/types.d.ts +3 -1
  76. package/esm/src/modules/react-loader/types.d.ts.map +1 -1
  77. package/esm/src/modules/react-loader/unified-loader.d.ts.map +1 -1
  78. package/esm/src/modules/react-loader/unified-loader.js +7 -4
  79. package/esm/src/modules/server/module-batch-handler.d.ts +2 -0
  80. package/esm/src/modules/server/module-batch-handler.d.ts.map +1 -1
  81. package/esm/src/modules/server/module-batch-handler.js +3 -1
  82. package/esm/src/modules/server/module-server.d.ts +2 -0
  83. package/esm/src/modules/server/module-server.d.ts.map +1 -1
  84. package/esm/src/modules/server/module-server.js +4 -2
  85. package/esm/src/modules/server/ssr-import-rewriter.d.ts.map +1 -1
  86. package/esm/src/modules/server/ssr-import-rewriter.js +9 -17
  87. package/esm/src/react/compat/hooks-adapter.d.ts +1 -1
  88. package/esm/src/react/compat/hooks-adapter.d.ts.map +1 -1
  89. package/esm/src/react/compat/hooks-adapter.js +1 -1
  90. package/esm/src/react/compat/ssr-adapter/response-builder.d.ts +1 -1
  91. package/esm/src/react/compat/ssr-adapter/response-builder.d.ts.map +1 -1
  92. package/esm/src/react/compat/ssr-adapter/server-loader.d.ts +5 -5
  93. package/esm/src/react/compat/ssr-adapter/server-loader.d.ts.map +1 -1
  94. package/esm/src/react/compat/ssr-adapter/server-loader.js +2 -2
  95. package/esm/src/react/compat/ssr-adapter/stream-renderer.d.ts +1 -1
  96. package/esm/src/react/compat/ssr-adapter/stream-renderer.d.ts.map +1 -1
  97. package/esm/src/react/compat/ssr-adapter/string-renderer.d.ts +1 -1
  98. package/esm/src/react/compat/ssr-adapter/string-renderer.d.ts.map +1 -1
  99. package/esm/src/react/compat/ssr-adapter/string-renderer.js +1 -1
  100. package/esm/src/react/compat/version-detector/feature-detector.js +1 -1
  101. package/esm/src/react/components/AppWrapper.d.ts +1 -1
  102. package/esm/src/react/components/AppWrapper.d.ts.map +1 -1
  103. package/esm/src/react/components/AppWrapper.js +1 -1
  104. package/esm/src/react/components/Head.d.ts +1 -1
  105. package/esm/src/react/components/Head.d.ts.map +1 -1
  106. package/esm/src/react/components/Head.js +7 -3
  107. package/esm/src/react/components/LayoutComponent.d.ts +1 -1
  108. package/esm/src/react/components/LayoutComponent.d.ts.map +1 -1
  109. package/esm/src/react/components/LayoutComponent.js +1 -1
  110. package/esm/src/react/components/Link.d.ts +1 -1
  111. package/esm/src/react/components/Link.d.ts.map +1 -1
  112. package/esm/src/react/components/Link.js +1 -1
  113. package/esm/src/react/components/MDXProvider.d.ts +1 -1
  114. package/esm/src/react/components/MDXProvider.d.ts.map +1 -1
  115. package/esm/src/react/components/MDXProvider.js +2 -2
  116. package/esm/src/react/components/ProviderComponent.d.ts +1 -1
  117. package/esm/src/react/components/ProviderComponent.d.ts.map +1 -1
  118. package/esm/src/react/components/ProviderComponent.js +1 -1
  119. package/esm/src/react/components/ai/agent-card.d.ts +2 -2
  120. package/esm/src/react/components/ai/agent-card.d.ts.map +1 -1
  121. package/esm/src/react/components/ai/agent-card.js +1 -1
  122. package/esm/src/react/components/ai/chat/components/animations.d.ts +1 -1
  123. package/esm/src/react/components/ai/chat/components/animations.d.ts.map +1 -1
  124. package/esm/src/react/components/ai/chat/components/animations.js +1 -1
  125. package/esm/src/react/components/ai/chat/components/empty-state.d.ts +1 -1
  126. package/esm/src/react/components/ai/chat/components/empty-state.d.ts.map +1 -1
  127. package/esm/src/react/components/ai/chat/components/empty-state.js +1 -1
  128. package/esm/src/react/components/ai/chat/components/message-actions.d.ts +1 -1
  129. package/esm/src/react/components/ai/chat/components/message-actions.d.ts.map +1 -1
  130. package/esm/src/react/components/ai/chat/components/message-actions.js +1 -1
  131. package/esm/src/react/components/ai/chat/components/reasoning.d.ts +1 -1
  132. package/esm/src/react/components/ai/chat/components/reasoning.d.ts.map +1 -1
  133. package/esm/src/react/components/ai/chat/components/reasoning.js +1 -1
  134. package/esm/src/react/components/ai/chat/components/tool-ui.d.ts +1 -1
  135. package/esm/src/react/components/ai/chat/components/tool-ui.d.ts.map +1 -1
  136. package/esm/src/react/components/ai/chat/components/tool-ui.js +1 -1
  137. package/esm/src/react/components/ai/chat/composition/api.d.ts +5 -4
  138. package/esm/src/react/components/ai/chat/composition/api.d.ts.map +1 -1
  139. package/esm/src/react/components/ai/chat/composition/api.js +1 -1
  140. package/esm/src/react/components/ai/chat/index.d.ts +8 -3
  141. package/esm/src/react/components/ai/chat/index.d.ts.map +1 -1
  142. package/esm/src/react/components/ai/chat/index.js +1 -1
  143. package/esm/src/react/components/ai/error-boundary.d.ts +1 -1
  144. package/esm/src/react/components/ai/error-boundary.d.ts.map +1 -1
  145. package/esm/src/react/components/ai/error-boundary.js +1 -1
  146. package/esm/src/react/components/ai/icons/index.d.ts +1 -1
  147. package/esm/src/react/components/ai/icons/index.d.ts.map +1 -1
  148. package/esm/src/react/components/ai/icons/index.js +1 -1
  149. package/esm/src/react/components/ai/markdown.d.ts +1 -1
  150. package/esm/src/react/components/ai/markdown.d.ts.map +1 -1
  151. package/esm/src/react/components/ai/markdown.js +1 -1
  152. package/esm/src/react/components/ai/message.d.ts +3 -3
  153. package/esm/src/react/components/ai/message.d.ts.map +1 -1
  154. package/esm/src/react/components/ai/message.js +1 -1
  155. package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.d.ts +1 -1
  156. package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.d.ts.map +1 -1
  157. package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.js +1 -1
  158. package/esm/src/react/components/optimized-image/OptimizedImage.d.ts +1 -1
  159. package/esm/src/react/components/optimized-image/OptimizedImage.d.ts.map +1 -1
  160. package/esm/src/react/components/optimized-image/OptimizedImage.js +1 -1
  161. package/esm/src/react/components/optimized-image/SimpleOptimizedImage.d.ts +1 -1
  162. package/esm/src/react/components/optimized-image/SimpleOptimizedImage.d.ts.map +1 -1
  163. package/esm/src/react/components/optimized-image/utils.d.ts +1 -1
  164. package/esm/src/react/components/optimized-image/utils.d.ts.map +1 -1
  165. package/esm/src/react/components/optimized-image/utils.js +1 -1
  166. package/esm/src/react/context/index.d.ts +1 -1
  167. package/esm/src/react/context/index.d.ts.map +1 -1
  168. package/esm/src/react/context/index.js +1 -1
  169. package/esm/src/react/fonts/index.d.ts +1 -1
  170. package/esm/src/react/fonts/index.d.ts.map +1 -1
  171. package/esm/src/react/fonts/index.js +1 -1
  172. package/esm/src/react/primitives/agent-primitives.d.ts +4 -4
  173. package/esm/src/react/primitives/agent-primitives.d.ts.map +1 -1
  174. package/esm/src/react/primitives/agent-primitives.js +1 -1
  175. package/esm/src/react/primitives/chat-container.d.ts +2 -2
  176. package/esm/src/react/primitives/chat-container.d.ts.map +1 -1
  177. package/esm/src/react/primitives/chat-container.js +1 -1
  178. package/esm/src/react/primitives/input-box.d.ts +4 -4
  179. package/esm/src/react/primitives/input-box.d.ts.map +1 -1
  180. package/esm/src/react/primitives/input-box.js +7 -3
  181. package/esm/src/react/primitives/message-list.d.ts +5 -5
  182. package/esm/src/react/primitives/message-list.d.ts.map +1 -1
  183. package/esm/src/react/primitives/message-list.js +1 -1
  184. package/esm/src/react/primitives/tool-primitives.d.ts +4 -4
  185. package/esm/src/react/primitives/tool-primitives.d.ts.map +1 -1
  186. package/esm/src/react/primitives/tool-primitives.js +1 -1
  187. package/esm/src/react/router/index.d.ts +1 -1
  188. package/esm/src/react/router/index.d.ts.map +1 -1
  189. package/esm/src/react/router/index.js +1 -1
  190. package/esm/src/rendering/app-reserved.d.ts +1 -1
  191. package/esm/src/rendering/app-reserved.d.ts.map +1 -1
  192. package/esm/src/rendering/app-reserved.js +1 -1
  193. package/esm/src/rendering/client/router.js +1 -1
  194. package/esm/src/rendering/client/state-bridge.d.ts +1 -1
  195. package/esm/src/rendering/client/state-bridge.d.ts.map +1 -1
  196. package/esm/src/rendering/client/state-bridge.js +1 -1
  197. package/esm/src/rendering/component-handling.d.ts +3 -1
  198. package/esm/src/rendering/component-handling.d.ts.map +1 -1
  199. package/esm/src/rendering/component-handling.js +4 -2
  200. package/esm/src/rendering/element-validator/element-normalizer.d.ts +1 -1
  201. package/esm/src/rendering/element-validator/element-normalizer.d.ts.map +1 -1
  202. package/esm/src/rendering/element-validator/element-normalizer.js +1 -1
  203. package/esm/src/rendering/element-validator/primitive-checks.d.ts +1 -1
  204. package/esm/src/rendering/element-validator/primitive-checks.d.ts.map +1 -1
  205. package/esm/src/rendering/element-validator/primitive-checks.js +1 -1
  206. package/esm/src/rendering/element-validator/validator-core.d.ts +1 -1
  207. package/esm/src/rendering/element-validator/validator-core.d.ts.map +1 -1
  208. package/esm/src/rendering/layouts/layout-applicator.d.ts +1 -1
  209. package/esm/src/rendering/layouts/layout-applicator.d.ts.map +1 -1
  210. package/esm/src/rendering/layouts/layout-applicator.js +2 -0
  211. package/esm/src/rendering/layouts/utils/applicator.d.ts +1 -1
  212. package/esm/src/rendering/layouts/utils/applicator.d.ts.map +1 -1
  213. package/esm/src/rendering/layouts/utils/component-loader.d.ts +1 -1
  214. package/esm/src/rendering/layouts/utils/component-loader.d.ts.map +1 -1
  215. package/esm/src/rendering/layouts/utils/ensure-valid-child.d.ts +1 -1
  216. package/esm/src/rendering/layouts/utils/ensure-valid-child.d.ts.map +1 -1
  217. package/esm/src/rendering/orchestrator/layout.d.ts +1 -1
  218. package/esm/src/rendering/orchestrator/layout.d.ts.map +1 -1
  219. package/esm/src/rendering/orchestrator/module-loader/index.d.ts +3 -0
  220. package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
  221. package/esm/src/rendering/orchestrator/module-loader/index.js +74 -19
  222. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  223. package/esm/src/rendering/orchestrator/pipeline.js +2 -0
  224. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts +1 -1
  225. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts.map +1 -1
  226. package/esm/src/rendering/page-renderer.d.ts +1 -1
  227. package/esm/src/rendering/page-renderer.d.ts.map +1 -1
  228. package/esm/src/rendering/page-rendering.d.ts +1 -1
  229. package/esm/src/rendering/page-rendering.d.ts.map +1 -1
  230. package/esm/src/rendering/rsc/server-renderer/component-detector.d.ts +1 -1
  231. package/esm/src/rendering/rsc/server-renderer/component-detector.d.ts.map +1 -1
  232. package/esm/src/rendering/rsc/server-renderer/rsc-renderer.d.ts +1 -1
  233. package/esm/src/rendering/rsc/server-renderer/rsc-renderer.d.ts.map +1 -1
  234. package/esm/src/rendering/rsc/server-renderer/tree-processor.d.ts +1 -1
  235. package/esm/src/rendering/rsc/server-renderer/tree-processor.d.ts.map +1 -1
  236. package/esm/src/rendering/rsc/server-renderer/tree-processor.js +4 -2
  237. package/esm/src/rendering/snippet-renderer.js +2 -2
  238. package/esm/src/rendering/ssr/component-registry.d.ts +1 -1
  239. package/esm/src/rendering/ssr/component-registry.d.ts.map +1 -1
  240. package/esm/src/rendering/ssr/component-registry.js +1 -1
  241. package/esm/src/rendering/ssr-renderer.d.ts +1 -1
  242. package/esm/src/rendering/ssr-renderer.d.ts.map +1 -1
  243. package/esm/src/rendering/utils/react-helpers.d.ts +1 -1
  244. package/esm/src/rendering/utils/react-helpers.d.ts.map +1 -1
  245. package/esm/src/rendering/utils/react-helpers.js +1 -1
  246. package/esm/src/server/handlers/request/ssr/error-page-fallback.js +1 -1
  247. package/esm/src/server/handlers/request/ssr/not-found-fallback.js +1 -1
  248. package/esm/src/transforms/esm/http-bundler.d.ts +15 -4
  249. package/esm/src/transforms/esm/http-bundler.d.ts.map +1 -1
  250. package/esm/src/transforms/esm/http-bundler.js +105 -12
  251. package/esm/src/transforms/esm/http-cache.d.ts.map +1 -1
  252. package/esm/src/transforms/esm/http-cache.js +51 -44
  253. package/esm/src/transforms/esm/import-rewriter.d.ts.map +1 -1
  254. package/esm/src/transforms/esm/import-rewriter.js +3 -3
  255. package/esm/src/transforms/esm/package-registry.d.ts +15 -13
  256. package/esm/src/transforms/esm/package-registry.d.ts.map +1 -1
  257. package/esm/src/transforms/esm/package-registry.js +45 -32
  258. package/esm/src/transforms/esm/react-imports.d.ts.map +1 -1
  259. package/esm/src/transforms/esm/react-imports.js +3 -7
  260. package/esm/src/transforms/esm/types.d.ts +2 -0
  261. package/esm/src/transforms/esm/types.d.ts.map +1 -1
  262. package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts +14 -0
  263. package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts.map +1 -1
  264. package/esm/src/transforms/mdx/esm-module-loader/cache/index.js +67 -0
  265. package/esm/src/transforms/mdx/esm-module-loader/loader.d.ts.map +1 -1
  266. package/esm/src/transforms/mdx/esm-module-loader/loader.js +1 -1
  267. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts +1 -0
  268. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
  269. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +1 -0
  270. package/esm/src/transforms/mdx/esm-module-loader/types.d.ts +4 -0
  271. package/esm/src/transforms/mdx/esm-module-loader/types.d.ts.map +1 -1
  272. package/esm/src/transforms/mdx/index.d.ts +1 -1
  273. package/esm/src/transforms/mdx/index.d.ts.map +1 -1
  274. package/esm/src/transforms/mdx/index.js +1 -1
  275. package/esm/src/transforms/mdx/mdx-cache-adapter.js +1 -1
  276. package/esm/src/transforms/mdx/module-loader/types.d.ts +1 -1
  277. package/esm/src/transforms/mdx/module-loader/types.d.ts.map +1 -1
  278. package/esm/src/transforms/mdx/types.d.ts +2 -2
  279. package/esm/src/transforms/mdx/types.d.ts.map +1 -1
  280. package/esm/src/transforms/pipeline/context.d.ts.map +1 -1
  281. package/esm/src/transforms/pipeline/context.js +7 -15
  282. package/esm/src/transforms/pipeline/stages/finalize.d.ts.map +1 -1
  283. package/esm/src/transforms/pipeline/stages/finalize.js +1 -1
  284. package/esm/src/types/app.d.ts +1 -1
  285. package/esm/src/types/app.d.ts.map +1 -1
  286. package/esm/src/types/global-guards.d.ts +1 -1
  287. package/esm/src/types/global-guards.d.ts.map +1 -1
  288. package/esm/src/types/index.d.ts +1 -1
  289. package/esm/src/types/index.d.ts.map +1 -1
  290. package/esm/src/utils/constants/cdn.d.ts.map +1 -1
  291. package/esm/src/utils/constants/cdn.js +22 -11
  292. package/esm/src/utils/hash-utils.d.ts +2 -0
  293. package/esm/src/utils/hash-utils.d.ts.map +1 -1
  294. package/esm/src/utils/hash-utils.js +4 -0
  295. package/esm/src/workflow/react/use-approval.js +1 -1
  296. package/esm/src/workflow/react/use-workflow-list.js +1 -1
  297. package/esm/src/workflow/react/use-workflow-start.js +1 -1
  298. package/esm/src/workflow/react/use-workflow.js +1 -1
  299. package/package.json +2 -1
  300. package/src/deno.js +8 -9
  301. package/src/deps/esm.sh/@types/react-dom@19.1.11/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/client.d.ts +105 -0
  302. package/src/deps/esm.sh/@types/react-dom@19.1.11/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/server.d.ts +162 -0
  303. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjM/global.d.ts +165 -0
  304. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjM/index.d.ts +4267 -0
  305. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/global.d.ts +165 -0
  306. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/index.d.ts +4267 -0
  307. package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/jsx-runtime.d.ts +36 -0
  308. package/src/deps/esm.sh/@types/scheduler@0.26.0/index.d.ts +30 -0
  309. package/src/deps/esm.sh/csstype@3.2.3/index.d.ts +22569 -0
  310. package/src/deps/esm.sh/react-dom@19.1.1/client.d.ts +105 -0
  311. package/src/deps/esm.sh/react-dom@19.1.1/client.js +5 -0
  312. package/src/deps/esm.sh/react-dom@19.1.1/server.d.ts +162 -0
  313. package/src/deps/esm.sh/react-dom@19.1.1/server.js +5 -0
  314. package/src/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts +36 -0
  315. package/src/deps/esm.sh/react@19.1.1/jsx-runtime.js +3 -0
  316. package/src/deps/esm.sh/react@19.1.1.d.ts +4267 -0
  317. package/src/deps/esm.sh/react@19.1.1.js +3 -0
  318. package/src/deps/esm.sh/scheduler@^0.26.0.d.ts +30 -0
  319. package/src/deps/esm.sh/scheduler@^0.26.0.js +3 -0
  320. package/src/proxy/main.ts +471 -0
  321. package/src/src/agent/react/use-agent.ts +1 -1
  322. package/src/src/agent/react/use-chat/use-chat.ts +1 -1
  323. package/src/src/agent/react/use-completion.ts +1 -1
  324. package/src/src/agent/react/use-streaming.ts +1 -1
  325. package/src/src/agent/react/use-voice-input.ts +1 -1
  326. package/src/src/cli/app/components/list-select.ts +2 -2
  327. package/src/src/cli/app/index.ts +34 -35
  328. package/src/src/cli/app/state.ts +7 -0
  329. package/src/src/cli/app/views/dashboard.ts +46 -60
  330. package/src/src/cli/app/views/startup.ts +132 -0
  331. package/src/src/cli/commands/init/config-generator.ts +1 -1
  332. package/src/src/cli/index/arg-parser.ts +1 -0
  333. package/src/src/cli/index/command-router.ts +57 -40
  334. package/src/src/cli/index/types.ts +5 -0
  335. package/src/src/cli/ui/colors.ts +37 -0
  336. package/src/src/cli/ui/dot-matrix.ts +77 -1
  337. package/src/src/config/loader.ts +5 -4
  338. package/src/src/html/utils.ts +2 -2
  339. package/src/src/modules/component-registry/registry.ts +1 -1
  340. package/src/src/modules/import-map/default-import-map.ts +3 -25
  341. package/src/src/modules/import-map/loader.ts +7 -23
  342. package/src/src/modules/import-map/resolver.ts +13 -8
  343. package/src/src/modules/react-loader/component-loader.ts +3 -1
  344. package/src/src/modules/react-loader/extract-component.ts +1 -1
  345. package/src/src/modules/react-loader/ssr-module-loader/loader.ts +95 -68
  346. package/src/src/modules/react-loader/ssr-module-loader/types.ts +2 -0
  347. package/src/src/modules/react-loader/types.ts +3 -1
  348. package/src/src/modules/react-loader/unified-loader.ts +7 -4
  349. package/src/src/modules/server/module-batch-handler.ts +7 -0
  350. package/src/src/modules/server/module-server.ts +6 -1
  351. package/src/src/modules/server/ssr-import-rewriter.ts +9 -17
  352. package/src/src/react/compat/hooks-adapter.ts +1 -1
  353. package/src/src/react/compat/ssr-adapter/response-builder.ts +1 -1
  354. package/src/src/react/compat/ssr-adapter/server-loader.ts +10 -10
  355. package/src/src/react/compat/ssr-adapter/stream-renderer.ts +2 -2
  356. package/src/src/react/compat/ssr-adapter/string-renderer.ts +3 -3
  357. package/src/src/react/compat/version-detector/feature-detector.ts +1 -1
  358. package/src/src/react/components/AppWrapper.tsx +1 -1
  359. package/src/src/react/components/Head.tsx +7 -3
  360. package/src/src/react/components/LayoutComponent.tsx +2 -2
  361. package/src/src/react/components/Link.tsx +1 -1
  362. package/src/src/react/components/MDXProvider.tsx +2 -2
  363. package/src/src/react/components/ProviderComponent.tsx +2 -2
  364. package/src/src/react/components/ai/agent-card.tsx +1 -1
  365. package/src/src/react/components/ai/chat/components/animations.tsx +1 -1
  366. package/src/src/react/components/ai/chat/components/empty-state.tsx +1 -1
  367. package/src/src/react/components/ai/chat/components/message-actions.tsx +1 -1
  368. package/src/src/react/components/ai/chat/components/reasoning.tsx +1 -1
  369. package/src/src/react/components/ai/chat/components/tool-ui.tsx +1 -1
  370. package/src/src/react/components/ai/chat/composition/api.tsx +1 -1
  371. package/src/src/react/components/ai/chat/index.tsx +1 -1
  372. package/src/src/react/components/ai/error-boundary.tsx +1 -1
  373. package/src/src/react/components/ai/icons/index.ts +1 -1
  374. package/src/src/react/components/ai/markdown.tsx +1 -1
  375. package/src/src/react/components/ai/message.tsx +1 -1
  376. package/src/src/react/components/optimized-image/OptimizedBackgroundImage.tsx +1 -1
  377. package/src/src/react/components/optimized-image/OptimizedImage.tsx +1 -1
  378. package/src/src/react/components/optimized-image/SimpleOptimizedImage.tsx +1 -1
  379. package/src/src/react/components/optimized-image/utils.tsx +1 -1
  380. package/src/src/react/context/index.ts +1 -1
  381. package/src/src/react/fonts/index.ts +1 -1
  382. package/src/src/react/primitives/agent-primitives.tsx +1 -1
  383. package/src/src/react/primitives/chat-container.tsx +1 -1
  384. package/src/src/react/primitives/input-box.tsx +5 -3
  385. package/src/src/react/primitives/message-list.tsx +1 -1
  386. package/src/src/react/primitives/tool-primitives.tsx +1 -1
  387. package/src/src/react/router/index.ts +1 -1
  388. package/src/src/rendering/app-reserved.ts +1 -1
  389. package/src/src/rendering/client/router.ts +2 -2
  390. package/src/src/rendering/client/state-bridge.ts +2 -2
  391. package/src/src/rendering/component-handling.ts +7 -1
  392. package/src/src/rendering/element-validator/element-inspector.ts +1 -1
  393. package/src/src/rendering/element-validator/element-normalizer.ts +1 -1
  394. package/src/src/rendering/element-validator/primitive-checks.ts +1 -1
  395. package/src/src/rendering/element-validator/validator-core.ts +1 -1
  396. package/src/src/rendering/layouts/layout-applicator.ts +5 -6
  397. package/src/src/rendering/layouts/utils/applicator.ts +1 -1
  398. package/src/src/rendering/layouts/utils/component-loader.ts +1 -1
  399. package/src/src/rendering/layouts/utils/ensure-valid-child.ts +1 -1
  400. package/src/src/rendering/orchestrator/layout.ts +1 -1
  401. package/src/src/rendering/orchestrator/module-loader/index.ts +91 -20
  402. package/src/src/rendering/orchestrator/pipeline.ts +2 -0
  403. package/src/src/rendering/orchestrator/ssr-orchestrator.ts +2 -2
  404. package/src/src/rendering/page-renderer.ts +1 -1
  405. package/src/src/rendering/page-rendering.ts +1 -1
  406. package/src/src/rendering/rsc/server-renderer/component-detector.ts +1 -1
  407. package/src/src/rendering/rsc/server-renderer/rsc-renderer.ts +1 -1
  408. package/src/src/rendering/rsc/server-renderer/tree-processor.ts +14 -4
  409. package/src/src/rendering/snippet-renderer.ts +2 -2
  410. package/src/src/rendering/ssr/component-registry.ts +1 -1
  411. package/src/src/rendering/ssr-renderer.ts +1 -1
  412. package/src/src/rendering/utils/react-helpers.ts +1 -1
  413. package/src/src/server/build-app-route-renderer.ts +2 -2
  414. package/src/src/server/handlers/request/rsc/handlers/render-handler.ts +1 -1
  415. package/src/src/server/handlers/request/ssr/error-page-fallback.ts +2 -2
  416. package/src/src/server/handlers/request/ssr/not-found-fallback.ts +1 -1
  417. package/src/src/transforms/esm/http-bundler.ts +101 -11
  418. package/src/src/transforms/esm/http-cache.ts +53 -45
  419. package/src/src/transforms/esm/import-rewriter.ts +5 -3
  420. package/src/src/transforms/esm/package-registry.ts +46 -32
  421. package/src/src/transforms/esm/react-imports.ts +3 -7
  422. package/src/src/transforms/esm/types.ts +2 -0
  423. package/src/src/transforms/mdx/esm-module-loader/cache/index.ts +84 -0
  424. package/src/src/transforms/mdx/esm-module-loader/loader.ts +2 -1
  425. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +2 -1
  426. package/src/src/transforms/mdx/esm-module-loader/types.ts +4 -0
  427. package/src/src/transforms/mdx/index.ts +1 -1
  428. package/src/src/transforms/mdx/mdx-cache-adapter.ts +1 -1
  429. package/src/src/transforms/mdx/module-loader/types.ts +1 -1
  430. package/src/src/transforms/mdx/types.ts +2 -2
  431. package/src/src/transforms/pipeline/context.ts +7 -18
  432. package/src/src/transforms/pipeline/stages/finalize.ts +6 -1
  433. package/src/src/transforms/plugins/babel-node-positions.ts +2 -2
  434. package/src/src/types/app.ts +1 -1
  435. package/src/src/types/global-guards.ts +1 -1
  436. package/src/src/types/index.ts +1 -1
  437. package/src/src/utils/constants/cdn.ts +21 -12
  438. package/src/src/utils/hash-utils.ts +5 -0
  439. package/src/src/workflow/react/use-approval.ts +1 -1
  440. package/src/src/workflow/react/use-workflow-list.ts +1 -1
  441. package/src/src/workflow/react/use-workflow-start.ts +1 -1
  442. package/src/src/workflow/react/use-workflow.ts +1 -1
@@ -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,30 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
2
+ export type FrameCallbackType = (didTimeout: boolean) => FrameCallbackType | void;
3
+ export interface CallbackNode {
4
+ callback: FrameCallbackType;
5
+ priorityLevel: number;
6
+ expirationTime: number;
7
+ next: CallbackNode | null;
8
+ prev: CallbackNode | null;
9
+ }
10
+
11
+ export const unstable_ImmediatePriority = 1;
12
+ export const unstable_UserBlockingPriority = 2;
13
+ export const unstable_NormalPriority = 3;
14
+ export const unstable_IdlePriority = 5;
15
+ export const unstable_LowPriority = 4;
16
+ export function unstable_runWithPriority<T>(priorityLevel: number, eventHandler: () => T): T;
17
+ export function unstable_scheduleCallback(
18
+ priorityLevel: number,
19
+ callback: FrameCallbackType,
20
+ options?: { delay?: number | undefined; timeout?: number | undefined },
21
+ ): CallbackNode;
22
+ export function unstable_next<T>(eventHandler: () => T): T;
23
+ export function unstable_cancelCallback(callbackNode: CallbackNode): void;
24
+ export function unstable_wrapCallback(callback: FrameCallbackType): () => FrameCallbackType;
25
+ export function unstable_getCurrentPriorityLevel(): number;
26
+ export function unstable_shouldYield(): boolean;
27
+ export function unstable_continueExecution(): void;
28
+ export function unstable_pauseExecution(): void;
29
+ export function unstable_getFirstCallbackNode(): CallbackNode | null;
30
+ export function unstable_now(): number;
@@ -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,471 @@
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
+
19
+
20
+ import { createProxyHandler, type ProxyConfig } from "./handler.js";
21
+ import { createCacheFromEnv } from "./cache/index.js";
22
+ import {
23
+ endSpan,
24
+ extractContext,
25
+ initializeOTLPWithApis,
26
+ injectContext,
27
+ ProxySpanNames,
28
+ shutdownOTLP,
29
+ startServerSpan,
30
+ withContext,
31
+ withSpan,
32
+ } from "./tracing.js";
33
+ import { proxyLogger } from "./logger.js";
34
+ import { parseProjectDomain } from "../src/server/utils/domain-parser.js";
35
+ import { exit, getEnv, onSignal } from "../src/platform/compat/process.js";
36
+ import { createHttpServer, upgradeWebSocket } from "../src/platform/compat/http/index.js";
37
+
38
+ // Configuration from environment variables
39
+ const config: ProxyConfig = {
40
+ apiBaseUrl: getEnv("VERYFRONT_API_BASE_URL") ||
41
+ "http://api.lvh.me:4000",
42
+ clientId: getEnv("API_CLIENT_ID_VERYFRONT_RENDERER_PROXY") || "",
43
+ clientSecret: getEnv("API_CLIENT_SECRET_VERYFRONT_RENDERER_PROXY") || "",
44
+ // Preview uses same service account (scopes determine access)
45
+ previewClientId: getEnv("API_CLIENT_ID_VERYFRONT_RENDERER_PROXY") || "",
46
+ previewClientSecret: getEnv("API_CLIENT_SECRET_VERYFRONT_RENDERER_PROXY") || "",
47
+ localProjects: getEnv("LOCAL_PROJECTS") ? JSON.parse(getEnv("LOCAL_PROJECTS")!) : {},
48
+ };
49
+
50
+ const RENDERER_URL = getEnv("RENDERER_URL") || "http://localhost:3001";
51
+ const PORT = parseInt(getEnv("PORT") || "8080");
52
+ const HOST = getEnv("HOST") || "0.0.0.0"; // Default to 0.0.0.0 for Kubernetes
53
+ const WS_CONNECT_TIMEOUT_MS = 30000;
54
+ // Timeout for forwarding requests to renderer (SSR can take time on cold start)
55
+ const RENDERER_REQUEST_TIMEOUT_MS = parseInt(getEnv("RENDERER_REQUEST_TIMEOUT_MS") || "90000");
56
+
57
+ // Initialize cache and proxy handler
58
+ const cache = await createCacheFromEnv();
59
+ const proxyHandler = createProxyHandler({
60
+ config,
61
+ cache,
62
+ logger: {
63
+ debug: (msg, extra) => proxyLogger.debug(msg, extra),
64
+ info: (msg, extra) => proxyLogger.info(msg, extra),
65
+ warn: (msg, extra) => proxyLogger.warn(msg, extra),
66
+ error: (msg, error, extra) => proxyLogger.error(msg, extra ?? {}, error),
67
+ },
68
+ });
69
+
70
+ // Validate configuration on startup
71
+ const missingCredentials = proxyHandler.validateConfig();
72
+ if (missingCredentials.length > 0) {
73
+ proxyLogger.warn("Missing OAuth credentials", { missingCredentials });
74
+ proxyLogger.warn("Proxy will forward requests without authentication");
75
+ }
76
+
77
+ // Log local projects if configured
78
+ if (Object.keys(proxyHandler.localProjects).length > 0) {
79
+ proxyLogger.info("Local projects configured", {
80
+ projects: Object.keys(proxyHandler.localProjects),
81
+ });
82
+ }
83
+
84
+ /**
85
+ * Handle WebSocket upgrade requests.
86
+ * Bridges browser WebSocket to renderer's HMR WebSocket endpoint.
87
+ */
88
+ function handleWebSocketUpgrade(req: dntShim.Request): dntShim.Response {
89
+ const url = new URL(req.url);
90
+ const host = req.headers.get("host") || "";
91
+
92
+ // Parse domain to extract project slug and environment
93
+ const parsed = parseProjectDomain(host);
94
+ const scope = parsed.environment === "preview" ? "preview" : "production";
95
+ const projectSlug = parsed.slug || undefined;
96
+
97
+ // Build renderer WebSocket URL
98
+ const rendererWsUrl = RENDERER_URL.replace(/^http/, "ws");
99
+ const targetUrl = new URL(`${rendererWsUrl}${url.pathname}${url.search}`);
100
+ targetUrl.searchParams.set("x-project-slug", projectSlug || "");
101
+ targetUrl.searchParams.set("x-environment", scope);
102
+
103
+ proxyLogger.info("[WebSocket] Upgrade request received", {
104
+ host,
105
+ path: url.pathname,
106
+ projectSlug,
107
+ environment: scope,
108
+ parsedEnvironment: parsed.environment,
109
+ targetUrl: targetUrl.toString(),
110
+ });
111
+
112
+ const { socket: clientSocket, response } = upgradeWebSocket(req);
113
+
114
+ let rendererSocket: WebSocket | null = null;
115
+ let connectTimeoutId: ReturnType<typeof dntShim.setTimeout> | null = null;
116
+ let timedOut = false;
117
+
118
+ const clearConnectTimeout = () => {
119
+ if (connectTimeoutId) {
120
+ clearTimeout(connectTimeoutId);
121
+ connectTimeoutId = null;
122
+ }
123
+ };
124
+
125
+ clientSocket.onopen = () => {
126
+ proxyLogger.info("[WebSocket] Client connected, bridging to renderer", {
127
+ targetUrl: targetUrl.toString(),
128
+ });
129
+
130
+ try {
131
+ rendererSocket = new WebSocket(targetUrl.toString());
132
+ } catch (error) {
133
+ proxyLogger.error("[WebSocket] Failed to create renderer WebSocket", {
134
+ error: error instanceof Error ? error.message : String(error),
135
+ targetUrl: targetUrl.toString(),
136
+ });
137
+ clientSocket.close(1011, "Failed to connect to renderer");
138
+ return;
139
+ }
140
+
141
+ connectTimeoutId = dntShim.setTimeout(() => {
142
+ timedOut = true;
143
+ proxyLogger.error("[WebSocket] Renderer connection timeout", {
144
+ targetUrl: targetUrl.toString(),
145
+ timeoutMs: WS_CONNECT_TIMEOUT_MS,
146
+ });
147
+ rendererSocket?.close();
148
+ if (clientSocket.readyState === WebSocket.OPEN) {
149
+ clientSocket.close(1001, "Renderer connection timeout");
150
+ }
151
+ }, WS_CONNECT_TIMEOUT_MS);
152
+
153
+ rendererSocket.onopen = () => {
154
+ clearConnectTimeout();
155
+ if (timedOut) {
156
+ rendererSocket?.close();
157
+ return;
158
+ }
159
+ proxyLogger.info("[WebSocket] Renderer connected, bridge established", {
160
+ projectSlug,
161
+ environment: scope,
162
+ });
163
+ };
164
+
165
+ rendererSocket.onmessage = (event) => {
166
+ if (clientSocket.readyState === WebSocket.OPEN) {
167
+ clientSocket.send(event.data);
168
+ }
169
+ };
170
+
171
+ rendererSocket.onerror = (event) => {
172
+ clearConnectTimeout();
173
+ proxyLogger.error("[WebSocket] Renderer connection error", {
174
+ projectSlug,
175
+ environment: scope,
176
+ targetUrl: targetUrl.toString(),
177
+ error: event instanceof ErrorEvent ? event.message : "Unknown error",
178
+ });
179
+ };
180
+
181
+ rendererSocket.onclose = (event) => {
182
+ clearConnectTimeout();
183
+ proxyLogger.info("[WebSocket] Renderer connection closed", {
184
+ code: event.code,
185
+ reason: event.reason,
186
+ wasClean: event.wasClean,
187
+ });
188
+ if (clientSocket.readyState === WebSocket.OPEN) {
189
+ clientSocket.close(event.code, event.reason);
190
+ }
191
+ };
192
+ };
193
+
194
+ clientSocket.onmessage = (event) => {
195
+ if (rendererSocket?.readyState === WebSocket.OPEN) {
196
+ rendererSocket.send(event.data);
197
+ }
198
+ };
199
+
200
+ clientSocket.onerror = (event) => {
201
+ clearConnectTimeout();
202
+ proxyLogger.error("[WebSocket] Client connection error", {
203
+ error: event instanceof ErrorEvent ? event.message : "Unknown error",
204
+ });
205
+ };
206
+
207
+ clientSocket.onclose = (event) => {
208
+ clearConnectTimeout();
209
+ proxyLogger.info("[WebSocket] Client connection closed", {
210
+ code: event.code,
211
+ reason: event.reason,
212
+ wasClean: event.wasClean,
213
+ });
214
+ if (rendererSocket?.readyState === WebSocket.OPEN) {
215
+ rendererSocket.close();
216
+ }
217
+ };
218
+
219
+ return response;
220
+ }
221
+
222
+ function jsonErrorResponse(status: number, body: Record<string, unknown>): dntShim.Response {
223
+ return new dntShim.Response(JSON.stringify(body), {
224
+ status,
225
+ headers: { "Content-Type": "application/json" },
226
+ });
227
+ }
228
+
229
+ function forwardToRenderer(req: dntShim.Request): Promise<dntShim.Response> {
230
+ const startTime = performance.now();
231
+ const url = new URL(req.url);
232
+
233
+ const parentContext = extractContext(req.headers);
234
+ const spanInfo = startServerSpan(req.method, url.pathname, parentContext);
235
+
236
+ const execute = async (): Promise<dntShim.Response> => {
237
+ try {
238
+ const ctx = await proxyHandler.processRequest(req);
239
+
240
+ if (ctx.error) {
241
+ const ms = Math.round(performance.now() - startTime);
242
+ proxyLogger.error(`${ctx.error.status} ${req.method} ${url.pathname}`, {
243
+ ms,
244
+ domain: ctx.host,
245
+ });
246
+ endSpan(spanInfo?.span, ctx.error.status);
247
+
248
+ // Handle redirect for protected environments
249
+ if (ctx.error.redirectUrl) {
250
+ return new dntShim.Response(null, {
251
+ status: 302,
252
+ headers: { Location: ctx.error.redirectUrl },
253
+ });
254
+ }
255
+
256
+ return jsonErrorResponse(ctx.error.status, {
257
+ error: ctx.error.message,
258
+ status: ctx.error.status,
259
+ });
260
+ }
261
+
262
+ const reqLogger = proxyLogger.child({
263
+ ...(ctx.projectSlug && { project: ctx.projectSlug }),
264
+ env: ctx.environment,
265
+ });
266
+
267
+ const newHeaders = new dntShim.Headers(req.headers);
268
+ if (ctx.token) newHeaders.set("x-token", ctx.token);
269
+ newHeaders.set("x-project-slug", ctx.projectSlug || "");
270
+ newHeaders.set("x-environment", ctx.environment);
271
+ newHeaders.set("x-forwarded-host", ctx.host);
272
+ if (ctx.localPath) newHeaders.set("x-project-path", ctx.localPath);
273
+ // Forward project/release context for cache keying
274
+ if (ctx.projectId) newHeaders.set("x-project-id", ctx.projectId);
275
+ if (ctx.releaseId) newHeaders.set("x-release-id", ctx.releaseId);
276
+ if (ctx.branchId) newHeaders.set("x-branch-id", ctx.branchId);
277
+ if (ctx.branchName) newHeaders.set("x-branch-name", ctx.branchName);
278
+ newHeaders.delete("host");
279
+
280
+ injectContext(newHeaders);
281
+
282
+ const rendererUrl = new URL(url.pathname + url.search, RENDERER_URL);
283
+
284
+ // Create abort controller for timeout
285
+ const abortController = new AbortController();
286
+ const timeoutId = dntShim.setTimeout(() => {
287
+ abortController.abort();
288
+ }, RENDERER_REQUEST_TIMEOUT_MS);
289
+
290
+ let response: dntShim.Response;
291
+ try {
292
+ response = await withSpan(
293
+ ProxySpanNames.HTTP_CLIENT_FETCH,
294
+ () =>
295
+ dntShim.fetch(rendererUrl.toString(), {
296
+ method: req.method,
297
+ headers: newHeaders,
298
+ body: req.body,
299
+ redirect: "manual",
300
+ signal: abortController.signal,
301
+ }),
302
+ {
303
+ "http.method": req.method,
304
+ "http.url": rendererUrl.toString(),
305
+ "http.host": rendererUrl.host,
306
+ "proxy.target": "renderer",
307
+ "proxy.project_slug": ctx.projectSlug || "",
308
+ "proxy.timeout_ms": RENDERER_REQUEST_TIMEOUT_MS,
309
+ },
310
+ );
311
+ } finally {
312
+ clearTimeout(timeoutId);
313
+ }
314
+
315
+ const ms = Math.round(performance.now() - startTime);
316
+ reqLogger.info(`${response.status} ${req.method} ${url.pathname}`, { ms });
317
+
318
+ endSpan(spanInfo?.span, response.status);
319
+
320
+ return new dntShim.Response(response.body, {
321
+ status: response.status,
322
+ statusText: response.statusText,
323
+ headers: response.headers,
324
+ });
325
+ } catch (error) {
326
+ const ms = Math.round(performance.now() - startTime);
327
+
328
+ // Handle timeout specifically
329
+ if (error instanceof Error && error.name === "AbortError") {
330
+ proxyLogger.error(`504 ${req.method} ${url.pathname}`, {
331
+ ms,
332
+ timeoutMs: RENDERER_REQUEST_TIMEOUT_MS,
333
+ });
334
+ endSpan(spanInfo?.span, 504, error);
335
+ return jsonErrorResponse(504, {
336
+ error: "Gateway Timeout",
337
+ message: `Renderer request timed out after ${RENDERER_REQUEST_TIMEOUT_MS}ms`,
338
+ });
339
+ }
340
+
341
+ proxyLogger.error(`502 ${req.method} ${url.pathname}`, { ms }, error as Error);
342
+ endSpan(spanInfo?.span, 502, error as Error);
343
+ return jsonErrorResponse(502, {
344
+ error: "Proxy Error",
345
+ message: error instanceof Error ? error.message : "Unknown error",
346
+ });
347
+ }
348
+ };
349
+
350
+ return spanInfo?.context ? withContext(spanInfo.context, execute) : execute();
351
+ }
352
+
353
+ /**
354
+ * Handle stats endpoint for monitoring.
355
+ */
356
+ async function handleStats(): Promise<dntShim.Response> {
357
+ const stats = await proxyHandler.getStats();
358
+ return new dntShim.Response(JSON.stringify(stats, null, 2), {
359
+ headers: { "Content-Type": "application/json" },
360
+ });
361
+ }
362
+
363
+ /**
364
+ * Proxy API requests directly to Veryfront API (BFF pattern).
365
+ * Routes: /_vf/api/* -> api.veryfront.com/*
366
+ */
367
+ async function handleApiProxy(req: dntShim.Request): Promise<dntShim.Response> {
368
+ const url = new URL(req.url);
369
+
370
+ const token = await proxyHandler.getTokenForApi(req);
371
+ if (!token) {
372
+ return jsonErrorResponse(401, { error: "No authentication token" });
373
+ }
374
+
375
+ // Strip /_vf/api prefix and forward to API
376
+ const apiPath = url.pathname.replace(/^\/_vf\/api/, "");
377
+ const apiUrl = `${config.apiBaseUrl}${apiPath}${url.search}`;
378
+ const apiUrlObj = new URL(apiUrl);
379
+
380
+ try {
381
+ const response = await withSpan(
382
+ ProxySpanNames.HTTP_CLIENT_FETCH,
383
+ () =>
384
+ dntShim.fetch(apiUrl, {
385
+ method: req.method,
386
+ headers: {
387
+ Authorization: `Bearer ${token}`,
388
+ Accept: "application/json",
389
+ "Content-Type": req.headers.get("Content-Type") || "application/json",
390
+ },
391
+ body: req.method !== "GET" && req.method !== "HEAD" ? req.body : undefined,
392
+ }),
393
+ {
394
+ "http.method": req.method,
395
+ "http.url": apiUrl,
396
+ "http.host": apiUrlObj.host,
397
+ "proxy.target": "api",
398
+ "proxy.api_path": apiPath,
399
+ },
400
+ );
401
+
402
+ return new dntShim.Response(response.body, {
403
+ status: response.status,
404
+ statusText: response.statusText,
405
+ headers: {
406
+ "Content-Type": response.headers.get("Content-Type") ||
407
+ "application/json",
408
+ "Cache-Control": "no-cache",
409
+ },
410
+ });
411
+ } catch (error) {
412
+ proxyLogger.error("API proxy error", error as Error);
413
+ return jsonErrorResponse(502, {
414
+ error: error instanceof Error ? error.message : "API request failed",
415
+ });
416
+ }
417
+ }
418
+
419
+ /**
420
+ * Main router.
421
+ */
422
+ function router(req: dntShim.Request): Promise<dntShim.Response> {
423
+ const url = new URL(req.url);
424
+
425
+ // WebSocket upgrade
426
+ if (req.headers.get("upgrade")?.toLowerCase() === "websocket") {
427
+ return Promise.resolve(handleWebSocketUpgrade(req));
428
+ }
429
+
430
+ // Proxy endpoints
431
+ if (url.pathname === "/_proxy/stats") {
432
+ return handleStats();
433
+ }
434
+
435
+ if (url.pathname === "/_proxy/health") {
436
+ return Promise.resolve(new dntShim.Response("OK", { status: 200 }));
437
+ }
438
+
439
+ // BFF: Proxy API requests directly to Veryfront API
440
+ if (url.pathname.startsWith("/_vf/api/")) {
441
+ return handleApiProxy(req);
442
+ }
443
+
444
+ // Forward all other requests to renderer
445
+ return forwardToRenderer(req);
446
+ }
447
+
448
+ // Graceful shutdown
449
+ async function shutdown(): Promise<void> {
450
+ proxyLogger.info("Shutting down");
451
+ await proxyHandler.close();
452
+ await shutdownOTLP();
453
+ proxyLogger.info("Closed connections");
454
+ exit(0);
455
+ }
456
+
457
+ onSignal("SIGINT", shutdown);
458
+ onSignal("SIGTERM", shutdown);
459
+
460
+ // Initialize tracing and start server
461
+ await initializeOTLPWithApis();
462
+
463
+ proxyLogger.debug("Starting proxy server (split mode)", {
464
+ port: PORT,
465
+ rendererUrl: RENDERER_URL,
466
+ apiBaseUrl: config.apiBaseUrl,
467
+ });
468
+
469
+ // Create and start the HTTP server
470
+ const server = createHttpServer();
471
+ 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 type { AgentStatus, Message, ToolCall } from "../types.js";
4
4
  import { createError, ensureError, toError } from "../../errors/veryfront-error.js";
5
5
 
@@ -10,7 +10,7 @@
10
10
  import * as dntShim from "../../../../_dnt.shims.js";
11
11
 
12
12
 
13
- import { useCallback, useRef, useState } from "react";
13
+ import { useCallback, useRef, useState } from "../../../../deps/esm.sh/react@19.1.1.js";
14
14
  import { createError, ensureError, toError } from "../../../errors/veryfront-error.js";
15
15
 
16
16
  import { handleStreamingResponse } from "./streaming/index.js";
@@ -6,7 +6,7 @@
6
6
  import * as dntShim from "../../../_dnt.shims.js";
7
7
 
8
8
 
9
- import { useCallback, useRef, useState } from "react";
9
+ import { useCallback, useRef, useState } from "../../../deps/esm.sh/react@19.1.1.js";
10
10
  import { createError, toError } from "../../errors/veryfront-error.js";
11
11
 
12
12
  export interface UseCompletionOptions {
@@ -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
 
5
5
  export interface UseStreamingOptions {
@@ -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
 
4
4
  export interface UseVoiceInputOptions {
5
5
  /** Language for speech recognition (default: browser default) */
@@ -196,8 +196,8 @@ export function renderList<T>(
196
196
  }
197
197
  }
198
198
 
199
- if (start > 0) lines.unshift(` ${dim("more above")}`);
200
- if (end < state.items.length) lines.push(` ${dim("more below")}`);
199
+ if (start > 0) lines.unshift(` ${dim("↑")} ${dim("more above")}`);
200
+ if (end < state.items.length) lines.push(` ${dim("↓")} ${dim("more below")}`);
201
201
 
202
202
  return lines.join("\n");
203
203
  }