veryfront 0.1.128 → 0.1.129

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 (382) hide show
  1. package/esm/cli/router.d.ts +0 -5
  2. package/esm/cli/router.d.ts.map +1 -1
  3. package/esm/cli/router.js +30 -2
  4. package/esm/cli/shared/update-check.d.ts +4 -0
  5. package/esm/cli/shared/update-check.d.ts.map +1 -0
  6. package/esm/cli/shared/update-check.js +97 -0
  7. package/esm/deno.d.ts +5 -0
  8. package/esm/deno.js +13 -8
  9. package/esm/src/channels/control-plane.d.ts.map +1 -1
  10. package/esm/src/channels/control-plane.js +5 -5
  11. package/esm/src/channels/invoke.d.ts +1 -1
  12. package/esm/src/channels/invoke.d.ts.map +1 -1
  13. package/esm/src/channels/invoke.js +6 -6
  14. package/esm/src/chat/index.d.ts +12 -24
  15. package/esm/src/chat/index.d.ts.map +1 -1
  16. package/esm/src/chat/index.js +5 -25
  17. package/esm/src/config/env.d.ts.map +1 -1
  18. package/esm/src/config/env.js +18 -10
  19. package/esm/src/data/static-data-fetcher.d.ts +3 -0
  20. package/esm/src/data/static-data-fetcher.d.ts.map +1 -1
  21. package/esm/src/data/static-data-fetcher.js +29 -25
  22. package/esm/src/data/static-paths-fetcher.d.ts.map +1 -1
  23. package/esm/src/data/static-paths-fetcher.js +3 -2
  24. package/esm/src/errors/logging.d.ts.map +1 -1
  25. package/esm/src/errors/logging.js +16 -7
  26. package/esm/src/errors/user-friendly/error-formatter.d.ts.map +1 -1
  27. package/esm/src/errors/user-friendly/error-formatter.js +9 -25
  28. package/esm/src/fs/index.d.ts +11 -12
  29. package/esm/src/fs/index.d.ts.map +1 -1
  30. package/esm/src/fs/index.js +11 -24
  31. package/esm/src/html/dev-scripts.d.ts.map +1 -1
  32. package/esm/src/html/dev-scripts.js +5 -8
  33. package/esm/src/html/html-escape.d.ts +1 -0
  34. package/esm/src/html/html-escape.d.ts.map +1 -1
  35. package/esm/src/html/html-escape.js +3 -0
  36. package/esm/src/html/html-injection.js +2 -2
  37. package/esm/src/html/html-shell-generator.d.ts +5 -2
  38. package/esm/src/html/html-shell-generator.d.ts.map +1 -1
  39. package/esm/src/html/html-shell-generator.js +41 -30
  40. package/esm/src/html/hydration-script-builder/dev-client-renderer.js +2 -2
  41. package/esm/src/html/hydration-script-builder/dev-component-manifest.js +2 -2
  42. package/esm/src/html/hydration-script-builder/dev-error-logger.d.ts.map +1 -1
  43. package/esm/src/html/hydration-script-builder/dev-error-logger.js +2 -6
  44. package/esm/src/html/hydration-script-builder/dev-scripts.js +2 -2
  45. package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts +3 -1
  46. package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
  47. package/esm/src/html/hydration-script-builder/hydration-data-generator.js +2 -2
  48. package/esm/src/html/hydration-script-builder/index.d.ts +1 -1
  49. package/esm/src/html/hydration-script-builder/index.d.ts.map +1 -1
  50. package/esm/src/html/hydration-script-builder/index.js +1 -1
  51. package/esm/src/html/hydration-script-builder/prod-hydration.js +2 -2
  52. package/esm/src/html/hydration-script-builder/prod-scripts.d.ts +2 -0
  53. package/esm/src/html/hydration-script-builder/prod-scripts.d.ts.map +1 -1
  54. package/esm/src/html/hydration-script-builder/prod-scripts.js +14 -14
  55. package/esm/src/html/schemas/html.schema.d.ts +2 -0
  56. package/esm/src/html/schemas/html.schema.d.ts.map +1 -1
  57. package/esm/src/html/schemas/html.schema.js +2 -0
  58. package/esm/src/html/styles-builder/css-pregeneration.d.ts +17 -1
  59. package/esm/src/html/styles-builder/css-pregeneration.d.ts.map +1 -1
  60. package/esm/src/html/styles-builder/css-pregeneration.js +103 -1
  61. package/esm/src/html/styles-builder/dev-styles.js +2 -2
  62. package/esm/src/html/utils.d.ts +2 -0
  63. package/esm/src/html/utils.d.ts.map +1 -1
  64. package/esm/src/html/utils.js +49 -28
  65. package/esm/src/integrations/remote-tools.d.ts.map +1 -1
  66. package/esm/src/integrations/remote-tools.js +32 -39
  67. package/esm/src/internal-agents/ag-ui-sse.d.ts +0 -1
  68. package/esm/src/internal-agents/ag-ui-sse.d.ts.map +1 -1
  69. package/esm/src/internal-agents/ag-ui-sse.js +2 -16
  70. package/esm/src/internal-agents/control-plane-auth.d.ts.map +1 -1
  71. package/esm/src/internal-agents/control-plane-auth.js +5 -3
  72. package/esm/src/internal-agents/request-body.d.ts.map +1 -1
  73. package/esm/src/internal-agents/request-body.js +6 -3
  74. package/esm/src/internal-agents/session-manager.d.ts +1 -0
  75. package/esm/src/internal-agents/session-manager.d.ts.map +1 -1
  76. package/esm/src/internal-agents/session-manager.js +12 -18
  77. package/esm/src/issues/core.d.ts.map +1 -1
  78. package/esm/src/issues/core.js +24 -23
  79. package/esm/src/issues/schemas/issue.schema.d.ts.map +1 -1
  80. package/esm/src/issues/schemas/issue.schema.js +2 -1
  81. package/esm/src/jobs/runtime-env.d.ts.map +1 -1
  82. package/esm/src/jobs/runtime-env.js +21 -44
  83. package/esm/src/markdown/index.d.ts +1 -2
  84. package/esm/src/markdown/index.d.ts.map +1 -1
  85. package/esm/src/markdown/index.js +1 -6
  86. package/esm/src/mcp/server.d.ts +0 -1
  87. package/esm/src/mcp/server.d.ts.map +1 -1
  88. package/esm/src/mcp/server.js +40 -41
  89. package/esm/src/mdx/index.d.ts +3 -2
  90. package/esm/src/mdx/index.d.ts.map +1 -1
  91. package/esm/src/mdx/index.js +3 -5
  92. package/esm/src/middleware/builtin/logger.d.ts.map +1 -1
  93. package/esm/src/middleware/builtin/logger.js +31 -28
  94. package/esm/src/middleware/builtin/security/rate-limit.d.ts.map +1 -1
  95. package/esm/src/middleware/builtin/security/rate-limit.js +17 -12
  96. package/esm/src/middleware/builtin/timeout.d.ts.map +1 -1
  97. package/esm/src/middleware/builtin/timeout.js +17 -10
  98. package/esm/src/modules/import-map/default-import-map.d.ts.map +1 -1
  99. package/esm/src/modules/import-map/default-import-map.js +4 -3
  100. package/esm/src/oauth/handlers/callback-handler.d.ts +0 -5
  101. package/esm/src/oauth/handlers/callback-handler.d.ts.map +1 -1
  102. package/esm/src/oauth/handlers/callback-handler.js +9 -14
  103. package/esm/src/oauth/handlers/index.d.ts +1 -1
  104. package/esm/src/oauth/handlers/index.js +1 -1
  105. package/esm/src/oauth/handlers/init-handler.d.ts.map +1 -1
  106. package/esm/src/oauth/handlers/init-handler.js +32 -20
  107. package/esm/src/oauth/providers/index.d.ts +1 -1
  108. package/esm/src/oauth/providers/index.js +1 -1
  109. package/esm/src/oauth/schemas/index.d.ts +1 -1
  110. package/esm/src/oauth/schemas/index.js +1 -1
  111. package/esm/src/oauth/token-store/index.d.ts +1 -1
  112. package/esm/src/oauth/token-store/index.js +1 -1
  113. package/esm/src/oauth/token-store/memory.d.ts +1 -1
  114. package/esm/src/oauth/token-store/memory.d.ts.map +1 -1
  115. package/esm/src/oauth/token-store/memory.js +8 -8
  116. package/esm/src/observability/request-profiler.d.ts +31 -0
  117. package/esm/src/observability/request-profiler.d.ts.map +1 -0
  118. package/esm/src/observability/request-profiler.js +94 -0
  119. package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
  120. package/esm/src/observability/tracing/otlp-setup.js +16 -21
  121. package/esm/src/prompt/factory.d.ts.map +1 -1
  122. package/esm/src/prompt/factory.js +10 -12
  123. package/esm/src/prompt/registry.d.ts.map +1 -1
  124. package/esm/src/prompt/registry.js +12 -10
  125. package/esm/src/prompt/schemas/prompt.schema.d.ts.map +1 -1
  126. package/esm/src/prompt/schemas/prompt.schema.js +0 -2
  127. package/esm/src/prompt/types.d.ts +1 -1
  128. package/esm/src/prompt/types.d.ts.map +1 -1
  129. package/esm/src/provider/local/ai-sdk-adapter.d.ts.map +1 -1
  130. package/esm/src/provider/local/ai-sdk-adapter.js +3 -8
  131. package/esm/src/provider/local/env.d.ts +4 -6
  132. package/esm/src/provider/local/env.d.ts.map +1 -1
  133. package/esm/src/provider/local/env.js +14 -1
  134. package/esm/src/provider/local/local-engine.d.ts.map +1 -1
  135. package/esm/src/provider/local/local-engine.js +2 -7
  136. package/esm/src/provider/model-registry.d.ts.map +1 -1
  137. package/esm/src/provider/model-registry.js +2 -7
  138. package/esm/src/provider/veryfront-cloud/provider.d.ts.map +1 -1
  139. package/esm/src/provider/veryfront-cloud/provider.js +1 -7
  140. package/esm/src/provider/veryfront-cloud/shared.d.ts.map +1 -1
  141. package/esm/src/provider/veryfront-cloud/shared.js +9 -11
  142. package/esm/src/proxy/handler.d.ts.map +1 -1
  143. package/esm/src/proxy/handler.js +56 -57
  144. package/esm/src/react/compat/hooks-adapter.d.ts +1 -7
  145. package/esm/src/react/compat/hooks-adapter.d.ts.map +1 -1
  146. package/esm/src/react/compat/hooks-adapter.js +35 -40
  147. package/esm/src/react/components/Head.d.ts +1 -26
  148. package/esm/src/react/components/Head.d.ts.map +1 -1
  149. package/esm/src/react/components/Head.js +1 -172
  150. package/esm/src/react/context/index.d.ts +2 -46
  151. package/esm/src/react/context/index.d.ts.map +1 -1
  152. package/esm/src/react/context/index.js +1 -44
  153. package/esm/src/react/head-collector.d.ts +1 -10
  154. package/esm/src/react/head-collector.d.ts.map +1 -1
  155. package/esm/src/react/head-collector.js +4 -0
  156. package/esm/src/react/router/index.d.ts +2 -45
  157. package/esm/src/react/router/index.d.ts.map +1 -1
  158. package/esm/src/react/router/index.js +1 -49
  159. package/esm/src/react/runtime/core.d.ts +49 -0
  160. package/esm/src/react/runtime/core.d.ts.map +1 -0
  161. package/esm/src/react/runtime/core.js +200 -0
  162. package/esm/src/rendering/orchestrator/html.d.ts +2 -0
  163. package/esm/src/rendering/orchestrator/html.d.ts.map +1 -1
  164. package/esm/src/rendering/orchestrator/html.js +69 -12
  165. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts.map +1 -1
  166. package/esm/src/rendering/orchestrator/ssr-orchestrator.js +4 -0
  167. package/esm/src/rendering/orchestrator/types.d.ts +4 -0
  168. package/esm/src/rendering/orchestrator/types.d.ts.map +1 -1
  169. package/esm/src/repositories/types.d.ts.map +1 -1
  170. package/esm/src/resource/factory.d.ts.map +1 -1
  171. package/esm/src/resource/factory.js +12 -9
  172. package/esm/src/resource/registry.d.ts +3 -3
  173. package/esm/src/resource/registry.d.ts.map +1 -1
  174. package/esm/src/resource/registry.js +7 -7
  175. package/esm/src/schemas/common.d.ts.map +1 -1
  176. package/esm/src/schemas/common.js +7 -4
  177. package/esm/src/security/http/config.d.ts +0 -1
  178. package/esm/src/security/http/config.d.ts.map +1 -1
  179. package/esm/src/security/http/config.js +3 -16
  180. package/esm/src/security/http/response/security-handler.d.ts +1 -0
  181. package/esm/src/security/http/response/security-handler.d.ts.map +1 -1
  182. package/esm/src/security/http/response/security-handler.js +17 -12
  183. package/esm/src/security/index.d.ts +4 -2
  184. package/esm/src/security/index.d.ts.map +1 -1
  185. package/esm/src/security/index.js +3 -1
  186. package/esm/src/server/handlers/dev/styles-css.handler.d.ts.map +1 -1
  187. package/esm/src/server/handlers/dev/styles-css.handler.js +8 -7
  188. package/esm/src/server/handlers/monitoring/metrics.handler.d.ts.map +1 -1
  189. package/esm/src/server/handlers/monitoring/metrics.handler.js +3 -1
  190. package/esm/src/server/handlers/request/module/module-server-handler.d.ts.map +1 -1
  191. package/esm/src/server/handlers/request/module/module-server-handler.js +18 -15
  192. package/esm/src/server/handlers/request/prod-hydration-module.handler.d.ts +8 -0
  193. package/esm/src/server/handlers/request/prod-hydration-module.handler.d.ts.map +1 -0
  194. package/esm/src/server/handlers/request/prod-hydration-module.handler.js +41 -0
  195. package/esm/src/server/handlers/request/ssr/ssr.handler.d.ts.map +1 -1
  196. package/esm/src/server/handlers/request/ssr/ssr.handler.js +3 -0
  197. package/esm/src/server/production-server.d.ts.map +1 -1
  198. package/esm/src/server/production-server.js +65 -0
  199. package/esm/src/server/runtime-handler/handler-context-builder.d.ts +1 -1
  200. package/esm/src/server/runtime-handler/handler-context-builder.d.ts.map +1 -1
  201. package/esm/src/server/runtime-handler/index.d.ts +1 -1
  202. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  203. package/esm/src/server/runtime-handler/index.js +36 -11
  204. package/esm/src/server/runtime-handler/request-utils.d.ts +7 -0
  205. package/esm/src/server/runtime-handler/request-utils.d.ts.map +1 -1
  206. package/esm/src/server/runtime-handler/request-utils.js +10 -0
  207. package/esm/src/server/services/rendering/ssr.service.d.ts +1 -0
  208. package/esm/src/server/services/rendering/ssr.service.d.ts.map +1 -1
  209. package/esm/src/server/services/rendering/ssr.service.js +12 -5
  210. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
  211. package/esm/src/skill/allowed-tools.d.ts +3 -8
  212. package/esm/src/skill/allowed-tools.d.ts.map +1 -1
  213. package/esm/src/skill/executor.js +2 -2
  214. package/esm/src/skill/parser.d.ts.map +1 -1
  215. package/esm/src/skill/parser.js +12 -12
  216. package/esm/src/skill/path-safety.js +1 -1
  217. package/esm/src/skill/tools.d.ts.map +1 -1
  218. package/esm/src/skill/tools.js +18 -11
  219. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
  220. package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
  221. package/esm/src/task/discovery.d.ts.map +1 -1
  222. package/esm/src/task/discovery.js +73 -95
  223. package/esm/src/tool/executor.d.ts.map +1 -1
  224. package/esm/src/tool/executor.js +8 -7
  225. package/esm/src/tool/factory.d.ts.map +1 -1
  226. package/esm/src/tool/factory.js +13 -16
  227. package/esm/src/transforms/esm/package-registry.d.ts +4 -0
  228. package/esm/src/transforms/esm/package-registry.d.ts.map +1 -1
  229. package/esm/src/transforms/esm/package-registry.js +34 -17
  230. package/esm/src/transforms/import-rewriter/strategies/veryfront-strategy.d.ts.map +1 -1
  231. package/esm/src/transforms/import-rewriter/strategies/veryfront-strategy.js +2 -1
  232. package/esm/src/transforms/mdx/esm-module-loader/cache-format.d.ts.map +1 -1
  233. package/esm/src/transforms/mdx/esm-module-loader/cache-format.js +26 -1
  234. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts +1 -1
  235. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
  236. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +1 -1
  237. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.d.ts +1 -0
  238. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.d.ts.map +1 -1
  239. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.js +3 -0
  240. package/esm/src/transforms/pipeline/stages/ssr-vf-modules/index.d.ts +1 -1
  241. package/esm/src/transforms/pipeline/stages/ssr-vf-modules/index.js +1 -1
  242. package/esm/src/transforms/veryfront-module-urls.d.ts.map +1 -1
  243. package/esm/src/transforms/veryfront-module-urls.js +7 -3
  244. package/esm/src/types/entities/getEntityInfo.d.ts.map +1 -1
  245. package/esm/src/types/entities/getEntityInfo.js +79 -127
  246. package/esm/src/utils/path-utils.d.ts +1 -1
  247. package/esm/src/utils/path-utils.d.ts.map +1 -1
  248. package/esm/src/utils/path-utils.js +16 -7
  249. package/esm/src/utils/version-constant.d.ts +1 -1
  250. package/esm/src/utils/version-constant.js +1 -1
  251. package/esm/src/utils/version.d.ts.map +1 -1
  252. package/esm/src/utils/version.js +0 -1
  253. package/esm/src/workflow/worker/dynamic-job-entrypoint.d.ts.map +1 -1
  254. package/esm/src/workflow/worker/dynamic-job-entrypoint.js +5 -72
  255. package/esm/src/workflow/worker/job-entrypoint.d.ts.map +1 -1
  256. package/esm/src/workflow/worker/job-entrypoint.js +5 -72
  257. package/esm/src/workflow/worker/shared.d.ts +18 -0
  258. package/esm/src/workflow/worker/shared.d.ts.map +1 -0
  259. package/esm/src/workflow/worker/shared.js +77 -0
  260. package/package.json +1 -1
  261. package/src/cli/router.ts +41 -2
  262. package/src/cli/shared/update-check.ts +110 -0
  263. package/src/deno.js +13 -8
  264. package/src/src/channels/control-plane.ts +6 -10
  265. package/src/src/channels/invoke.ts +7 -7
  266. package/src/src/chat/index.ts +96 -132
  267. package/src/src/config/env.ts +24 -11
  268. package/src/src/data/static-data-fetcher.ts +59 -34
  269. package/src/src/data/static-paths-fetcher.ts +4 -2
  270. package/src/src/errors/logging.ts +21 -7
  271. package/src/src/errors/user-friendly/error-formatter.ts +14 -29
  272. package/src/src/fs/index.ts +21 -30
  273. package/src/src/html/dev-scripts.ts +5 -9
  274. package/src/src/html/html-escape.ts +4 -0
  275. package/src/src/html/html-injection.ts +2 -2
  276. package/src/src/html/html-shell-generator.ts +60 -26
  277. package/src/src/html/hydration-script-builder/dev-client-renderer.ts +2 -2
  278. package/src/src/html/hydration-script-builder/dev-component-manifest.ts +2 -2
  279. package/src/src/html/hydration-script-builder/dev-error-logger.ts +2 -8
  280. package/src/src/html/hydration-script-builder/dev-scripts.ts +2 -2
  281. package/src/src/html/hydration-script-builder/hydration-data-generator.ts +2 -1
  282. package/src/src/html/hydration-script-builder/index.ts +5 -1
  283. package/src/src/html/hydration-script-builder/prod-hydration.ts +2 -2
  284. package/src/src/html/hydration-script-builder/prod-scripts.ts +16 -15
  285. package/src/src/html/schemas/html.schema.ts +2 -0
  286. package/src/src/html/styles-builder/css-pregeneration.ts +133 -1
  287. package/src/src/html/styles-builder/dev-styles.ts +2 -2
  288. package/src/src/html/utils.ts +62 -29
  289. package/src/src/integrations/remote-tools.ts +39 -37
  290. package/src/src/internal-agents/ag-ui-sse.ts +2 -17
  291. package/src/src/internal-agents/control-plane-auth.ts +8 -6
  292. package/src/src/internal-agents/request-body.ts +7 -5
  293. package/src/src/internal-agents/session-manager.ts +16 -20
  294. package/src/src/issues/core.ts +24 -27
  295. package/src/src/issues/schemas/issue.schema.ts +3 -1
  296. package/src/src/jobs/runtime-env.ts +24 -50
  297. package/src/src/markdown/index.ts +5 -8
  298. package/src/src/mcp/server.ts +50 -53
  299. package/src/src/mdx/index.ts +7 -8
  300. package/src/src/middleware/builtin/logger.ts +44 -29
  301. package/src/src/middleware/builtin/security/rate-limit.ts +20 -11
  302. package/src/src/middleware/builtin/timeout.ts +22 -13
  303. package/src/src/modules/import-map/default-import-map.ts +4 -3
  304. package/src/src/oauth/handlers/callback-handler.ts +9 -16
  305. package/src/src/oauth/handlers/index.ts +1 -1
  306. package/src/src/oauth/handlers/init-handler.ts +56 -27
  307. package/src/src/oauth/providers/index.ts +1 -1
  308. package/src/src/oauth/schemas/index.ts +1 -1
  309. package/src/src/oauth/token-store/index.ts +1 -1
  310. package/src/src/oauth/token-store/memory.ts +8 -8
  311. package/src/src/observability/request-profiler.ts +140 -0
  312. package/src/src/observability/tracing/otlp-setup.ts +16 -22
  313. package/src/src/prompt/factory.ts +16 -14
  314. package/src/src/prompt/registry.ts +14 -13
  315. package/src/src/prompt/schemas/prompt.schema.ts +0 -4
  316. package/src/src/prompt/types.ts +1 -2
  317. package/src/src/provider/local/ai-sdk-adapter.ts +3 -10
  318. package/src/src/provider/local/env.ts +22 -2
  319. package/src/src/provider/local/local-engine.ts +2 -9
  320. package/src/src/provider/model-registry.ts +2 -9
  321. package/src/src/provider/veryfront-cloud/provider.ts +1 -8
  322. package/src/src/provider/veryfront-cloud/shared.ts +12 -15
  323. package/src/src/proxy/handler.ts +90 -74
  324. package/src/src/react/compat/hooks-adapter.ts +43 -44
  325. package/src/src/react/components/Head.tsx +1 -181
  326. package/src/src/react/context/index.tsx +2 -83
  327. package/src/src/react/head-collector.ts +9 -0
  328. package/src/src/react/router/index.tsx +2 -100
  329. package/src/src/react/runtime/core.ts +303 -0
  330. package/src/src/rendering/orchestrator/html.ts +122 -18
  331. package/src/src/rendering/orchestrator/ssr-orchestrator.ts +8 -0
  332. package/src/src/rendering/orchestrator/types.ts +4 -0
  333. package/src/src/repositories/types.ts +0 -4
  334. package/src/src/resource/factory.ts +15 -11
  335. package/src/src/resource/registry.ts +7 -7
  336. package/src/src/schemas/common.ts +8 -5
  337. package/src/src/security/http/config.ts +3 -19
  338. package/src/src/security/http/response/security-handler.ts +22 -13
  339. package/src/src/security/index.ts +4 -7
  340. package/src/src/server/handlers/dev/styles-css.handler.ts +32 -14
  341. package/src/src/server/handlers/monitoring/metrics.handler.ts +3 -1
  342. package/src/src/server/handlers/request/module/module-server-handler.ts +24 -17
  343. package/src/src/server/handlers/request/prod-hydration-module.handler.ts +61 -0
  344. package/src/src/server/handlers/request/ssr/ssr.handler.ts +3 -0
  345. package/src/src/server/production-server.ts +84 -0
  346. package/src/src/server/runtime-handler/handler-context-builder.ts +1 -1
  347. package/src/src/server/runtime-handler/index.ts +44 -13
  348. package/src/src/server/runtime-handler/request-utils.ts +11 -0
  349. package/src/src/server/services/rendering/ssr.service.ts +31 -18
  350. package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +1 -1
  351. package/src/src/skill/allowed-tools.ts +1 -8
  352. package/src/src/skill/executor.ts +2 -2
  353. package/src/src/skill/parser.ts +13 -20
  354. package/src/src/skill/path-safety.ts +1 -1
  355. package/src/src/skill/tools.ts +27 -20
  356. package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
  357. package/src/src/task/discovery.ts +97 -97
  358. package/src/src/tool/executor.ts +10 -8
  359. package/src/src/tool/factory.ts +21 -22
  360. package/src/src/tool/types.ts +0 -17
  361. package/src/src/transforms/esm/package-registry.ts +52 -20
  362. package/src/src/transforms/import-rewriter/strategies/veryfront-strategy.ts +2 -1
  363. package/src/src/transforms/mdx/esm-module-loader/cache-format.ts +34 -1
  364. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +1 -1
  365. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.ts +4 -0
  366. package/src/src/transforms/pipeline/stages/ssr-vf-modules/index.ts +1 -1
  367. package/src/src/transforms/veryfront-module-urls.ts +6 -2
  368. package/src/src/types/entities/getEntityInfo.ts +131 -152
  369. package/src/src/utils/path-utils.ts +16 -7
  370. package/src/src/utils/version-constant.ts +1 -1
  371. package/src/src/utils/version.ts +0 -1
  372. package/src/src/workflow/worker/dynamic-job-entrypoint.ts +18 -84
  373. package/src/src/workflow/worker/job-entrypoint.ts +18 -85
  374. package/src/src/workflow/worker/shared.ts +127 -0
  375. package/esm/src/prompt/schemas/index.d.ts +0 -7
  376. package/esm/src/prompt/schemas/index.d.ts.map +0 -1
  377. package/esm/src/prompt/schemas/index.js +0 -6
  378. package/esm/src/security/http/handlers-index.d.ts +0 -5
  379. package/esm/src/security/http/handlers-index.d.ts.map +0 -1
  380. package/esm/src/security/http/handlers-index.js +0 -3
  381. package/src/src/prompt/schemas/index.ts +0 -7
  382. package/src/src/security/http/handlers-index.ts +0 -4
@@ -1,6 +1,6 @@
1
1
  import { escapeHTML } from "./html-escape.js";
2
2
  import { VERYFRONT_VERSION } from "../utils/constants/cdn.js";
3
- import { DEFAULT_REACT_VERSION, esmShReact, resolveProjectReactVersion, stripSemverRange, } from "../transforms/esm/package-registry.js";
3
+ import { DEFAULT_REACT_VERSION, esmShReact, readProjectDependencyVersions, resolveProjectReactVersion, stripSemverRange, } from "../transforms/esm/package-registry.js";
4
4
  function joinAttributes(attrs) {
5
5
  return attrs.filter(Boolean).join(" ");
6
6
  }
@@ -17,14 +17,16 @@ const DEFAULT_VERSIONS = {
17
17
  react: DEFAULT_REACT_VERSION,
18
18
  veryfront: VERYFRONT_VERSION,
19
19
  };
20
+ const importMapJsonCache = new Map();
20
21
  // Platform utilities served from local module server to match SSR behavior.
21
22
  // This ensures hydration matches (same code on server and client).
22
23
  // CRITICAL: veryfront/context must use local module to share React context with SSR.
23
24
  // Using esm.sh creates a separate context instance causing usePageContext to return undefined.
25
+ const CORE_REACT_RUNTIME_PATH = "/_vf_modules/_veryfront/react/runtime/core.js";
24
26
  const PLATFORM_UTILITY_PATHS = {
25
- head: "/_vf_modules/_veryfront/react/components/Head.js",
26
- router: "/_vf_modules/_veryfront/react/router/index.js",
27
- context: "/_vf_modules/_veryfront/react/context/index.js",
27
+ head: CORE_REACT_RUNTIME_PATH,
28
+ router: CORE_REACT_RUNTIME_PATH,
29
+ context: CORE_REACT_RUNTIME_PATH,
28
30
  fonts: "/_vf_modules/_veryfront/react/fonts/index.js",
29
31
  // Client-side AI/chat modules - use local module server in dev for faster iteration
30
32
  // NOTE: These are NOT available in compiled binaries, so we use CDN URLs there instead
@@ -138,41 +140,43 @@ function getCdnImportMap(versions, provider = "esm.sh") {
138
140
  }
139
141
  async function resolveVersions(projectDir, config) {
140
142
  // Use shared resolver for React (handles config override + package.json + fallback)
141
- const reactVersion = await resolveProjectReactVersion({ projectDir, config });
142
- // Resolve veryfront version separately (config override or detection)
143
143
  const versionsConfig = config?.client?.cdn?.versions;
144
+ const configuredReactVersion = versionsConfig && versionsConfig !== "auto"
145
+ ? versionsConfig.react
146
+ : undefined;
147
+ const configuredVeryfrontVersion = versionsConfig && versionsConfig !== "auto"
148
+ ? versionsConfig.veryfront
149
+ : undefined;
150
+ const detected = await readProjectDependencyVersions(projectDir);
151
+ const reactVersion = configuredReactVersion
152
+ ? resolveProjectReactVersion({ config })
153
+ : Promise.resolve(detected.react ?? DEFAULT_VERSIONS.react);
154
+ // Resolve veryfront version separately (config override or detection)
144
155
  let veryfrontVersion = DEFAULT_VERSIONS.veryfront;
145
- if (versionsConfig && versionsConfig !== "auto" && versionsConfig.veryfront) {
146
- veryfrontVersion = versionsConfig.veryfront;
156
+ if (configuredVeryfrontVersion) {
157
+ veryfrontVersion = stripSemverRange(configuredVeryfrontVersion);
147
158
  }
148
- else {
149
- try {
150
- const { createFileSystem } = await import("../platform/compat/fs.js");
151
- const fs = createFileSystem();
152
- const content = await fs.readTextFile(`${projectDir}/package.json`);
153
- const pkg = JSON.parse(content);
154
- const deps = { ...pkg.dependencies, ...pkg.devDependencies };
155
- if (deps.veryfront) {
156
- veryfrontVersion = stripSemverRange(deps.veryfront);
157
- }
158
- }
159
- catch (_) {
160
- /* expected: package.json may not exist or be unreadable */
161
- }
159
+ else if (detected.veryfront) {
160
+ veryfrontVersion = detected.veryfront;
162
161
  }
163
- return { react: reactVersion, veryfront: veryfrontVersion };
162
+ return { react: await reactVersion, veryfront: veryfrontVersion };
164
163
  }
165
164
  function isImportMapOnlyOptions(options) {
166
- return !("projectDir" in options) && !("config" in options) && !("customImports" in options);
165
+ return !("projectDir" in options) &&
166
+ !("config" in options) &&
167
+ !("customImports" in options) &&
168
+ !("pretty" in options);
167
169
  }
168
170
  export async function buildImportMapJson(options) {
171
+ const stringifyImportMap = (imports, pretty = true) => JSON.stringify({ imports }, null, pretty ? 2 : undefined);
172
+ const stableMapKey = (imports) => imports ? JSON.stringify(Object.entries(imports).sort(([a], [b]) => a.localeCompare(b))) : "";
169
173
  if (options && isImportMapOnlyOptions(options)) {
170
174
  const imports = options;
171
175
  if (Object.keys(imports).length > 0) {
172
- return JSON.stringify({ imports }, null, 2);
176
+ return stringifyImportMap(imports);
173
177
  }
174
178
  }
175
- const { projectDir, config, customImports } = (options ?? {});
179
+ const { projectDir, config, customImports, pretty = true } = (options ?? {});
176
180
  const mode = config?.client?.moduleResolution ?? "cdn";
177
181
  const versions = projectDir ? await resolveVersions(projectDir, config) : DEFAULT_VERSIONS;
178
182
  if (mode === "bundled") {
@@ -185,7 +189,7 @@ export async function buildImportMapJson(options) {
185
189
  "react/jsx-dev-runtime": reactTemplates.jsxDevRuntime(versions.react),
186
190
  ...customImports,
187
191
  };
188
- return JSON.stringify({ imports }, null, 2);
192
+ return stringifyImportMap(imports, pretty);
189
193
  }
190
194
  let imports;
191
195
  if (mode === "self-hosted") {
@@ -198,7 +202,24 @@ export async function buildImportMapJson(options) {
198
202
  if (customImports) {
199
203
  imports = { ...imports, ...customImports };
200
204
  }
201
- return JSON.stringify({ imports }, null, 2);
205
+ const cacheKey = JSON.stringify({
206
+ projectDir: projectDir ?? "",
207
+ mode,
208
+ provider: config?.client?.cdn?.provider ?? "esm.sh",
209
+ react: versions.react,
210
+ veryfront: versions.veryfront,
211
+ pretty,
212
+ customImports: stableMapKey(customImports),
213
+ });
214
+ const cached = importMapJsonCache.get(cacheKey);
215
+ if (cached)
216
+ return cached.json;
217
+ const json = stringifyImportMap(imports, pretty);
218
+ importMapJsonCache.set(cacheKey, { cacheKey, json });
219
+ return json;
220
+ }
221
+ export function clearImportMapCache() {
222
+ importMapJsonCache.clear();
202
223
  }
203
224
  export function shouldDisableLayout(frontmatter) {
204
225
  return frontmatter?.layout === false || frontmatter?.layout === "false";
@@ -1 +1 @@
1
- {"version":3,"file":"remote-tools.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/remote-tools.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA+HvD;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,IAAI,OAAO,CAClE,cAAc,EAAE,CACjB,CAoBA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC,CAwBf"}
1
+ {"version":3,"file":"remote-tools.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/remote-tools.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiIvD;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,IAAI,OAAO,CAClE,cAAc,EAAE,CACjB,CAoBA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -31,31 +31,39 @@ function resolveRequestToken() {
31
31
  }
32
32
  return getApiTokenEnv();
33
33
  }
34
- function resolveApiBaseUrl() {
35
- return getApiBaseUrlEnv();
36
- }
37
34
  // ---------------------------------------------------------------------------
38
35
  // API communication
39
36
  // ---------------------------------------------------------------------------
37
+ function joinCallToolText(content) {
38
+ return content.map((item) => item.text).join("\n");
39
+ }
40
+ function parseJsonText(text) {
41
+ try {
42
+ return JSON.parse(text);
43
+ }
44
+ catch {
45
+ return undefined;
46
+ }
47
+ }
40
48
  async function fetchToolList(baseUrl, token) {
41
- const res = await dntShim.fetch(`${baseUrl}/integrations/tools/list`, {
49
+ const response = await dntShim.fetch(`${baseUrl}/integrations/tools/list`, {
42
50
  method: "POST",
43
51
  headers: {
44
52
  Authorization: `Bearer ${token}`,
45
53
  "Content-Type": "application/json",
46
54
  },
47
55
  });
48
- if (!res.ok) {
56
+ if (!response.ok) {
49
57
  logger.warn("Failed to fetch integration tools from API", {
50
- status: res.status,
58
+ status: response.status,
51
59
  });
52
60
  return [];
53
61
  }
54
- const data = (await res.json());
62
+ const data = (await response.json());
55
63
  return data.tools ?? [];
56
64
  }
57
65
  async function callRemoteTool(baseUrl, token, toolName, args, endUserId) {
58
- const res = await dntShim.fetch(`${baseUrl}/integrations/tools/call`, {
66
+ const response = await dntShim.fetch(`${baseUrl}/integrations/tools/call`, {
59
67
  method: "POST",
60
68
  headers: {
61
69
  Authorization: `Bearer ${token}`,
@@ -67,39 +75,24 @@ async function callRemoteTool(baseUrl, token, toolName, args, endUserId) {
67
75
  end_user_id: endUserId,
68
76
  }),
69
77
  });
70
- if (!res.ok) {
71
- const text = await res.text();
72
- return { error: "api_error", status: res.status, message: text };
78
+ if (!response.ok) {
79
+ const text = await response.text();
80
+ return { error: "api_error", status: response.status, message: text };
73
81
  }
74
- const result = await res.json();
82
+ const result = await response.json();
75
83
  // If MCP CallToolResult format, extract content
76
84
  if (result?.content && Array.isArray(result.content)) {
85
+ const text = joinCallToolText(result.content);
77
86
  if (result.isError) {
78
- const errorText = result.content
79
- .map((c) => c.text)
80
- .join("\n");
81
87
  // Try to preserve structured error data (e.g., authentication_required with connectUrl)
82
- try {
83
- const parsed = JSON.parse(errorText);
84
- if (parsed && typeof parsed === "object")
85
- return parsed;
86
- }
87
- catch {
88
- // Not JSON
89
- }
90
- return { error: "tool_error", message: errorText };
88
+ const parsed = parseJsonText(text);
89
+ if (parsed && typeof parsed === "object")
90
+ return parsed;
91
+ return { error: "tool_error", message: text };
91
92
  }
92
93
  if (result.structuredContent)
93
94
  return result.structuredContent;
94
- const text = result.content
95
- .map((c) => c.text)
96
- .join("\n");
97
- try {
98
- return JSON.parse(text);
99
- }
100
- catch {
101
- return text;
102
- }
95
+ return parseJsonText(text) ?? text;
103
96
  }
104
97
  return result;
105
98
  }
@@ -115,7 +108,7 @@ async function callRemoteTool(baseUrl, token, toolName, args, endUserId) {
115
108
  * project's enabled integrations via the per-request API token.
116
109
  */
117
110
  export async function getRemoteIntegrationToolDefinitions() {
118
- const baseUrl = resolveApiBaseUrl();
111
+ const baseUrl = getApiBaseUrlEnv();
119
112
  const token = resolveRequestToken();
120
113
  if (!baseUrl || !token)
121
114
  return [];
@@ -148,7 +141,7 @@ export function isRemoteIntegrationTool(toolName) {
148
141
  * Called by the agent runtime when a tool isn't found in the local registry.
149
142
  */
150
143
  export async function executeRemoteIntegrationTool(toolName, args, endUserId) {
151
- const baseUrl = resolveApiBaseUrl();
144
+ const baseUrl = getApiBaseUrlEnv();
152
145
  const token = resolveRequestToken();
153
146
  if (!baseUrl || !token) {
154
147
  return { error: "no_api_token", message: "No API token available" };
@@ -162,7 +155,7 @@ export async function executeRemoteIntegrationTool(toolName, args, endUserId) {
162
155
  */
163
156
  export async function syncIntegrationConfig(apiBaseUrl, apiToken, integrations) {
164
157
  try {
165
- const res = await dntShim.fetch(`${apiBaseUrl}/integrations/config`, {
158
+ const response = await dntShim.fetch(`${apiBaseUrl}/integrations/config`, {
166
159
  method: "POST",
167
160
  headers: {
168
161
  Authorization: `Bearer ${apiToken}`,
@@ -170,13 +163,13 @@ export async function syncIntegrationConfig(apiBaseUrl, apiToken, integrations)
170
163
  },
171
164
  body: JSON.stringify({ integrations }),
172
165
  });
173
- if (!res.ok) {
166
+ if (!response.ok) {
174
167
  logger.warn("Failed to sync integration config to API", {
175
- status: res.status,
168
+ status: response.status,
176
169
  });
177
170
  }
178
171
  else {
179
- const data = (await res.json());
172
+ const data = (await response.json());
180
173
  logger.info("Synced integration config to API", { synced: data.synced });
181
174
  }
182
175
  }
@@ -13,7 +13,6 @@ export interface RunFinishedMetadata {
13
13
  export interface StreamTransformState {
14
14
  messageId: string | null;
15
15
  textOpen: boolean;
16
- stepIndex: number;
17
16
  sawTerminalError: boolean;
18
17
  metadata: RunFinishedMetadata;
19
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-sse.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/ag-ui-sse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CAQjE;AA2DD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAI3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IACjD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAyBA;AAkDD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,gBAAgB,GACtB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAoH5D;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAwB5D"}
1
+ {"version":3,"file":"ag-ui-sse.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/ag-ui-sse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CAOjE;AAqDD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAI3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IACjD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAyBA;AAkDD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,gBAAgB,GACtB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CA6G5D;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAwB5D"}
@@ -7,7 +7,6 @@ export function createStreamTransformState() {
7
7
  return {
8
8
  messageId: null,
9
9
  textOpen: false,
10
- stepIndex: 0,
11
10
  sawTerminalError: false,
12
11
  metadata: {},
13
12
  };
@@ -45,12 +44,6 @@ const agUiEventPayloadSchemas = {
45
44
  result: z.unknown(),
46
45
  isError: z.boolean().optional(),
47
46
  }),
48
- StepStarted: z.object({
49
- stepIndex: z.number().int().positive(),
50
- }),
51
- StepFinished: z.object({
52
- stepIndex: z.number().int().positive(),
53
- }),
54
47
  RunError: z.object({
55
48
  code: z.string().min(1).optional(),
56
49
  message: z.string().min(1),
@@ -215,16 +208,9 @@ export function mapRuntimeEventToAgUi(state, event) {
215
208
  },
216
209
  }];
217
210
  case "step-start":
218
- state.stepIndex += 1;
219
- return [{
220
- event: "StepStarted",
221
- payload: { stepIndex: state.stepIndex },
222
- }];
211
+ return [];
223
212
  case "step-end":
224
- return [{
225
- event: "StepFinished",
226
- payload: { stepIndex: state.stepIndex },
227
- }];
213
+ return [];
228
214
  case "data":
229
215
  applyDataMetadata(state, event);
230
216
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane-auth.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/control-plane-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAED,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAM5F;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;CACpD;;;;;;;;;GAsDP"}
1
+ {"version":3,"file":"control-plane-auth.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/control-plane-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAED,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAM5F;AASD,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;CACpD;;;;;;;;;GAiDP"}
@@ -20,6 +20,10 @@ export function getControlPlaneVerificationPublicKey(ctx) {
20
20
  return ctx.adapter.env.get("CHANNEL_DISPATCH_SIGNING_PUBLIC_KEY") ??
21
21
  getHostEnv("CHANNEL_DISPATCH_SIGNING_PUBLIC_KEY");
22
22
  }
23
+ function isControlPlaneVerificationError(error) {
24
+ return error instanceof Error && (error.message.includes("Control-plane") ||
25
+ error.message.includes("Unsupported"));
26
+ }
23
27
  export async function verifyControlPlaneRequest(req, ctx, rawBody, options = {}) {
24
28
  const publicKeyPem = getControlPlaneVerificationPublicKey(ctx);
25
29
  if (!publicKeyPem) {
@@ -44,9 +48,7 @@ export async function verifyControlPlaneRequest(req, ctx, rawBody, options = {})
44
48
  });
45
49
  }
46
50
  catch (error) {
47
- const isAuthError = error instanceof Error && (error.message.includes("Control-plane") ||
48
- error.message.includes("Unsupported"));
49
- if (isAuthError) {
51
+ if (isControlPlaneVerificationError(error)) {
50
52
  logger.warn("Invalid control-plane signature", {
51
53
  error,
52
54
  projectSlug,
@@ -1 +1 @@
1
- {"version":3,"file":"request-body.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/request-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAQ/C,eAAO,MAAM,oCAAoC,QAA8B,CAAC;AAChF,eAAO,MAAM,2CAA2C,QAAa,CAAC;AAEtE,qBAAa,qCAAsC,SAAQ,KAAK;IAC9D,QAAQ,CAAC,MAAM,OAA0B;gBAE7B,OAAO,SAAsB;CAI1C;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,YAAY,SAAuC,GAClD,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
1
+ {"version":3,"file":"request-body.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/request-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAQ/C,eAAO,MAAM,oCAAoC,QAA8B,CAAC;AAChF,eAAO,MAAM,2CAA2C,QAAa,CAAC;AAEtE,qBAAa,qCAAsC,SAAQ,KAAK;IAC9D,QAAQ,CAAC,MAAM,OAA0B;gBAE7B,OAAO,SAAsB;CAI1C;AAQD,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,YAAY,SAAuC,GAClD,OAAO,CAAC,MAAM,CAAC,CAcjB"}
@@ -10,6 +10,11 @@ export class InternalAgentRequestBodyTooLargeError extends Error {
10
10
  this.name = "InternalAgentRequestBodyTooLargeError";
11
11
  }
12
12
  }
13
+ function isRequestBodyTooLargeError(error) {
14
+ return error instanceof VeryfrontError &&
15
+ error.slug === "input-validation-failed" &&
16
+ error.detail === "Request body exceeds size limit";
17
+ }
13
18
  export async function readInternalAgentRequestBody(request, maxBodyBytes = INTERNAL_AGENT_STREAM_MAX_BODY_BYTES) {
14
19
  if (!request.body) {
15
20
  return "";
@@ -18,9 +23,7 @@ export async function readInternalAgentRequestBody(request, maxBodyBytes = INTER
18
23
  return await readBodyWithLimit(request, maxBodyBytes);
19
24
  }
20
25
  catch (error) {
21
- if (error instanceof VeryfrontError &&
22
- error.slug === "input-validation-failed" &&
23
- error.detail === "Request body exceeds size limit") {
26
+ if (isRequestBodyTooLargeError(error)) {
24
27
  throw new InternalAgentRequestBodyTooLargeError();
25
28
  }
26
29
  throw error;
@@ -38,6 +38,7 @@ export declare class AgentRunSessionManager {
38
38
  private scheduleSessionTimeout;
39
39
  private scheduleWaitingTimeout;
40
40
  private touchSession;
41
+ private finalizeSession;
41
42
  private get maxConcurrentSessions();
42
43
  startRun(input: {
43
44
  runId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAyB/C,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAAkB;CAItC;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAI9C;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAI9C;AAOD,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AA0BlF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;gBAG5C,OAAO,GAAE;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,YAAY,CAAC,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;QACzC,cAAc,CAAC,EAAE,OAAO,YAAY,CAAC;KACjC;IAGR,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,YAAY;IAQpB,OAAO,KAAK,qBAAqB,GAEhC;IAED,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IA4B3D,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAClE,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAsDF,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAChE,uBAAuB;IAuC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAuBjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUhC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU5B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIjD,KAAK,IAAI,IAAI;CAOd;AAoBD,wBAAgB,4CAA4C,IAAI,IAAI,CAGnE;AAED,eAAO,MAAM,sBAAsB,wBAAoC,CAAC"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAyB/C,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAAkB;CAItC;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAI9C;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAI9C;AAOD,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAwBlF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;gBAG5C,OAAO,GAAE;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,YAAY,CAAC,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;QACzC,cAAc,CAAC,EAAE,OAAO,YAAY,CAAC;KACjC;IAGR,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;IAWvB,OAAO,KAAK,qBAAqB,GAEhC;IAED,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IA2B3D,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAClE,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAsDF,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAChE,uBAAuB;IAsC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAoBjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIjD,KAAK,IAAI,IAAI;CAOd;AAoBD,wBAAgB,4CAA4C,IAAI,IAAI,CAGnE;AAED,eAAO,MAAM,sBAAsB,wBAAoC,CAAC"}
@@ -103,6 +103,13 @@ export class AgentRunSessionManager {
103
103
  this.scheduleSessionTimeout(session);
104
104
  }
105
105
  }
106
+ finalizeSession(session, status) {
107
+ session.status = status;
108
+ this.clearWaitingTimeout(session);
109
+ this.clearSessionTimeout(session);
110
+ session.waitingTool = null;
111
+ this.sessions.delete(session.runId);
112
+ }
106
113
  get maxConcurrentSessions() {
107
114
  return this.options.maxConcurrentSessions ?? DEFAULT_MAX_CONCURRENT_SESSIONS;
108
115
  }
@@ -116,7 +123,6 @@ export class AgentRunSessionManager {
116
123
  }
117
124
  const session = {
118
125
  runId: input.runId,
119
- threadId: input.threadId,
120
126
  status: "running",
121
127
  abortController: new AbortController(),
122
128
  waitingTool: null,
@@ -181,7 +187,6 @@ export class AgentRunSessionManager {
181
187
  throw new RunNotActiveError(runId);
182
188
  }
183
189
  const normalized = {
184
- toolCallId: input.toolCallId,
185
190
  result: input.result,
186
191
  isError: Boolean(input.isError),
187
192
  key: createToolResultKey(input.result, Boolean(input.isError)),
@@ -214,34 +219,23 @@ export class AgentRunSessionManager {
214
219
  session.status === "cancelled") {
215
220
  return false;
216
221
  }
217
- session.status = "cancelled";
218
- this.clearWaitingTimeout(session);
219
- this.clearSessionTimeout(session);
222
+ const waitingTool = session.waitingTool;
220
223
  session.abortController.abort(new AgentRunCancelledError());
221
- session.waitingTool?.reject(new AgentRunCancelledError());
222
- session.waitingTool = null;
223
- this.sessions.delete(runId);
224
+ waitingTool?.reject(new AgentRunCancelledError());
225
+ this.finalizeSession(session, "cancelled");
224
226
  return true;
225
227
  }
226
228
  completeRun(runId) {
227
229
  const session = this.sessions.get(runId);
228
230
  if (!session)
229
231
  return;
230
- session.status = "completed";
231
- this.clearWaitingTimeout(session);
232
- this.clearSessionTimeout(session);
233
- session.waitingTool = null;
234
- this.sessions.delete(runId);
232
+ this.finalizeSession(session, "completed");
235
233
  }
236
234
  failRun(runId) {
237
235
  const session = this.sessions.get(runId);
238
236
  if (!session)
239
237
  return;
240
- session.status = "failed";
241
- this.clearWaitingTimeout(session);
242
- this.clearSessionTimeout(session);
243
- session.waitingTool = null;
244
- this.sessions.delete(runId);
238
+ this.finalizeSession(session, "failed");
245
239
  }
246
240
  getRunStatus(runId) {
247
241
  return this.sessions.get(runId)?.status ?? null;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/src/issues/core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAU5B;;GAEG;AACH,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS9F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6D/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAWtE;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEd,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU;IAM/C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBlC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAyBzD;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAY5C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA0B5E;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1C;;OAEG;IACG,IAAI,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6CtE;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIzC;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAOpE;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAMxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,CAEtF"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/src/issues/core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAU5B;;GAEG;AACH,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS9F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6D/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgB7D;AAOD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAWtE;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEd,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU;IAM/C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBlC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAyBzD;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAY5C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA0B5E;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1C;;OAEG;IACG,IAAI,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6CtE;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIzC;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAOpE;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAMxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,CAEtF"}
@@ -92,18 +92,19 @@ export function serializeYaml(metadata) {
92
92
  lines.push(`id: ${metadata.id}`);
93
93
  lines.push(`title: "${metadata.title.replace(/"/g, '\\"')}"`);
94
94
  lines.push(`state: ${metadata.state}`);
95
- lines.push(metadata.labels.length
96
- ? `labels: [${metadata.labels.map((l) => `"${l}"`).join(", ")}]`
97
- : "labels: []");
95
+ lines.push(serializeYamlStringArray("labels", metadata.labels));
98
96
  if (metadata.milestone)
99
97
  lines.push(`milestone: ${metadata.milestone}`);
100
- lines.push(metadata.assignees.length
101
- ? `assignees: [${metadata.assignees.map((a) => `"${a}"`).join(", ")}]`
102
- : "assignees: []");
98
+ lines.push(serializeYamlStringArray("assignees", metadata.assignees));
103
99
  lines.push(`created_at: ${metadata.created_at}`);
104
100
  lines.push(`updated_at: ${metadata.updated_at}`);
105
101
  return lines.join("\n");
106
102
  }
103
+ function serializeYamlStringArray(field, values) {
104
+ if (!values.length)
105
+ return `${field}: []`;
106
+ return `${field}: [${values.map((value) => `"${value}"`).join(", ")}]`;
107
+ }
107
108
  /**
108
109
  * Serialize issue to markdown file content
109
110
  */
@@ -121,7 +122,7 @@ export function parseIssue(content, path) {
121
122
  const metadata = validateMetadata(parseYaml(parsed.frontmatter));
122
123
  return { metadata, body: parsed.body, path };
123
124
  }
124
- catch (_) {
125
+ catch {
125
126
  // expected: invalid or unparseable frontmatter metadata
126
127
  return null;
127
128
  }
@@ -165,7 +166,7 @@ export class IssuesManager {
165
166
  ids.push(id);
166
167
  }
167
168
  }
168
- catch (_) {
169
+ catch {
169
170
  // expected: directory doesn't exist yet
170
171
  }
171
172
  return ids;
@@ -188,21 +189,21 @@ export class IssuesManager {
188
189
  created_at: now,
189
190
  updated_at: now,
190
191
  };
191
- const path = `${ISSUES_DIR}/${id}.md`;
192
- const issue = { metadata, body: validated.body ?? "", path };
193
- await this.fs.writeTextFile(join(this.projectDir, path), serializeIssue(issue));
192
+ const issuePath = `${ISSUES_DIR}/${id}.md`;
193
+ const issue = { metadata, body: validated.body ?? "", path: issuePath };
194
+ await this.fs.writeTextFile(join(this.projectDir, issuePath), serializeIssue(issue));
194
195
  return issue;
195
196
  }
196
197
  /**
197
198
  * Get an issue by ID
198
199
  */
199
200
  async get(id) {
200
- const path = `${ISSUES_DIR}/${id}.md`;
201
+ const issuePath = `${ISSUES_DIR}/${id}.md`;
201
202
  try {
202
- const content = await this.fs.readTextFile(join(this.projectDir, path));
203
- return parseIssue(content, path);
203
+ const content = await this.fs.readTextFile(join(this.projectDir, issuePath));
204
+ return parseIssue(content, issuePath);
204
205
  }
205
- catch (_) {
206
+ catch {
206
207
  // expected: issue file may not exist
207
208
  return null;
208
209
  }
@@ -237,12 +238,12 @@ export class IssuesManager {
237
238
  * Delete an issue
238
239
  */
239
240
  async delete(id) {
240
- const path = `${ISSUES_DIR}/${id}.md`;
241
+ const issuePath = `${ISSUES_DIR}/${id}.md`;
241
242
  try {
242
- await this.fs.remove(join(this.projectDir, path));
243
+ await this.fs.remove(join(this.projectDir, issuePath));
243
244
  return true;
244
245
  }
245
- catch (_) {
246
+ catch {
246
247
  // expected: issue file may not exist
247
248
  return false;
248
249
  }
@@ -274,16 +275,16 @@ export class IssuesManager {
274
275
  issues.push(issue);
275
276
  }
276
277
  const sortKey = validated.sortBy ?? "created_at";
277
- const sortDir = validated.sortDirection ?? "desc";
278
+ const sortDirection = validated.sortDirection ?? "desc";
278
279
  issues.sort((a, b) => {
279
- let cmp;
280
+ let comparison;
280
281
  if (sortKey === "id") {
281
- cmp = a.metadata.id.localeCompare(b.metadata.id);
282
+ comparison = a.metadata.id.localeCompare(b.metadata.id);
282
283
  }
283
284
  else {
284
- cmp = String(a.metadata[sortKey]).localeCompare(String(b.metadata[sortKey]));
285
+ comparison = String(a.metadata[sortKey]).localeCompare(String(b.metadata[sortKey]));
285
286
  }
286
- return sortDir === "desc" ? -cmp : cmp;
287
+ return sortDirection === "desc" ? -comparison : comparison;
287
288
  });
288
289
  const total = issues.length;
289
290
  const limited = validated.limit ? issues.slice(0, validated.limit) : issues;
@@ -1 +1 @@
1
- {"version":3,"file":"issue.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/issues/schemas/issue.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc,oCAAqC,CAAC;AACjE,eAAO,MAAM,gBAAgB,QAAiC,CAAC;AAE/D,eAAO,MAAM,gBAAgB;;;EAA6B,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;;EAAyB,CAAC;AAExD,eAAO,MAAM,aAAa,aAEqE,CAAC;AAEhG,eAAO,MAAM,WAAW,aAA4B,CAAC;AAErD,eAAO,MAAM,aAAa,aAEgE,CAAC;AAE3F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;iBAS9B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;iBAItB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAO5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAO5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;iBAGjC,CAAC;AAGH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAE7D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQvF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAQlF;AAaD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG3D"}
1
+ {"version":3,"file":"issue.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/issues/schemas/issue.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc,oCAAqC,CAAC;AAGjE,eAAO,MAAM,gBAAgB,QAAmC,CAAC;AAEjE,eAAO,MAAM,gBAAgB;;;EAA6B,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;;EAAyB,CAAC;AAExD,eAAO,MAAM,aAAa,aAEqE,CAAC;AAEhG,eAAO,MAAM,WAAW,aAA4B,CAAC;AAErD,eAAO,MAAM,aAAa,aAEgE,CAAC;AAE3F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;iBAS9B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;iBAItB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAO5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAO5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;iBAGjC,CAAC;AAGH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAE7D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQvF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAQlF;AAaD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG3D"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  export const ISSUE_PREFIXES = ["ISSUE", "TASK", "PLAN"];
3
- export const ISSUE_ID_PATTERN = /^(ISSUE|TASK|PLAN)-(\d{3,})$/;
3
+ const ISSUE_ID_BODY = `(${ISSUE_PREFIXES.join("|")})-(\\d{3,})`;
4
+ export const ISSUE_ID_PATTERN = new RegExp(`^${ISSUE_ID_BODY}$`);
4
5
  export const issueStateSchema = z.enum(["open", "closed"]);
5
6
  export const issuePrefixSchema = z.enum(ISSUE_PREFIXES);
6
7
  export const issueIdSchema = z
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../../../src/src/jobs/runtime-env.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAyDhE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BxB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOpC"}
1
+ {"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../../../src/src/jobs/runtime-env.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAuChE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBxB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOpC"}