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.
- package/esm/cli/router.d.ts +0 -5
- package/esm/cli/router.d.ts.map +1 -1
- package/esm/cli/router.js +30 -2
- package/esm/cli/shared/update-check.d.ts +4 -0
- package/esm/cli/shared/update-check.d.ts.map +1 -0
- package/esm/cli/shared/update-check.js +97 -0
- package/esm/deno.d.ts +5 -0
- package/esm/deno.js +13 -8
- package/esm/src/channels/control-plane.d.ts.map +1 -1
- package/esm/src/channels/control-plane.js +5 -5
- package/esm/src/channels/invoke.d.ts +1 -1
- package/esm/src/channels/invoke.d.ts.map +1 -1
- package/esm/src/channels/invoke.js +6 -6
- package/esm/src/chat/index.d.ts +12 -24
- package/esm/src/chat/index.d.ts.map +1 -1
- package/esm/src/chat/index.js +5 -25
- package/esm/src/config/env.d.ts.map +1 -1
- package/esm/src/config/env.js +18 -10
- package/esm/src/data/static-data-fetcher.d.ts +3 -0
- package/esm/src/data/static-data-fetcher.d.ts.map +1 -1
- package/esm/src/data/static-data-fetcher.js +29 -25
- package/esm/src/data/static-paths-fetcher.d.ts.map +1 -1
- package/esm/src/data/static-paths-fetcher.js +3 -2
- package/esm/src/errors/logging.d.ts.map +1 -1
- package/esm/src/errors/logging.js +16 -7
- package/esm/src/errors/user-friendly/error-formatter.d.ts.map +1 -1
- package/esm/src/errors/user-friendly/error-formatter.js +9 -25
- package/esm/src/fs/index.d.ts +11 -12
- package/esm/src/fs/index.d.ts.map +1 -1
- package/esm/src/fs/index.js +11 -24
- package/esm/src/html/dev-scripts.d.ts.map +1 -1
- package/esm/src/html/dev-scripts.js +5 -8
- package/esm/src/html/html-escape.d.ts +1 -0
- package/esm/src/html/html-escape.d.ts.map +1 -1
- package/esm/src/html/html-escape.js +3 -0
- package/esm/src/html/html-injection.js +2 -2
- package/esm/src/html/html-shell-generator.d.ts +5 -2
- package/esm/src/html/html-shell-generator.d.ts.map +1 -1
- package/esm/src/html/html-shell-generator.js +41 -30
- package/esm/src/html/hydration-script-builder/dev-client-renderer.js +2 -2
- package/esm/src/html/hydration-script-builder/dev-component-manifest.js +2 -2
- package/esm/src/html/hydration-script-builder/dev-error-logger.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/dev-error-logger.js +2 -6
- package/esm/src/html/hydration-script-builder/dev-scripts.js +2 -2
- package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts +3 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.js +2 -2
- package/esm/src/html/hydration-script-builder/index.d.ts +1 -1
- package/esm/src/html/hydration-script-builder/index.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/index.js +1 -1
- package/esm/src/html/hydration-script-builder/prod-hydration.js +2 -2
- package/esm/src/html/hydration-script-builder/prod-scripts.d.ts +2 -0
- package/esm/src/html/hydration-script-builder/prod-scripts.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/prod-scripts.js +14 -14
- package/esm/src/html/schemas/html.schema.d.ts +2 -0
- package/esm/src/html/schemas/html.schema.d.ts.map +1 -1
- package/esm/src/html/schemas/html.schema.js +2 -0
- package/esm/src/html/styles-builder/css-pregeneration.d.ts +17 -1
- package/esm/src/html/styles-builder/css-pregeneration.d.ts.map +1 -1
- package/esm/src/html/styles-builder/css-pregeneration.js +103 -1
- package/esm/src/html/styles-builder/dev-styles.js +2 -2
- package/esm/src/html/utils.d.ts +2 -0
- package/esm/src/html/utils.d.ts.map +1 -1
- package/esm/src/html/utils.js +49 -28
- package/esm/src/integrations/remote-tools.d.ts.map +1 -1
- package/esm/src/integrations/remote-tools.js +32 -39
- package/esm/src/internal-agents/ag-ui-sse.d.ts +0 -1
- package/esm/src/internal-agents/ag-ui-sse.d.ts.map +1 -1
- package/esm/src/internal-agents/ag-ui-sse.js +2 -16
- package/esm/src/internal-agents/control-plane-auth.d.ts.map +1 -1
- package/esm/src/internal-agents/control-plane-auth.js +5 -3
- package/esm/src/internal-agents/request-body.d.ts.map +1 -1
- package/esm/src/internal-agents/request-body.js +6 -3
- package/esm/src/internal-agents/session-manager.d.ts +1 -0
- package/esm/src/internal-agents/session-manager.d.ts.map +1 -1
- package/esm/src/internal-agents/session-manager.js +12 -18
- package/esm/src/issues/core.d.ts.map +1 -1
- package/esm/src/issues/core.js +24 -23
- package/esm/src/issues/schemas/issue.schema.d.ts.map +1 -1
- package/esm/src/issues/schemas/issue.schema.js +2 -1
- package/esm/src/jobs/runtime-env.d.ts.map +1 -1
- package/esm/src/jobs/runtime-env.js +21 -44
- package/esm/src/markdown/index.d.ts +1 -2
- package/esm/src/markdown/index.d.ts.map +1 -1
- package/esm/src/markdown/index.js +1 -6
- package/esm/src/mcp/server.d.ts +0 -1
- package/esm/src/mcp/server.d.ts.map +1 -1
- package/esm/src/mcp/server.js +40 -41
- package/esm/src/mdx/index.d.ts +3 -2
- package/esm/src/mdx/index.d.ts.map +1 -1
- package/esm/src/mdx/index.js +3 -5
- package/esm/src/middleware/builtin/logger.d.ts.map +1 -1
- package/esm/src/middleware/builtin/logger.js +31 -28
- package/esm/src/middleware/builtin/security/rate-limit.d.ts.map +1 -1
- package/esm/src/middleware/builtin/security/rate-limit.js +17 -12
- package/esm/src/middleware/builtin/timeout.d.ts.map +1 -1
- package/esm/src/middleware/builtin/timeout.js +17 -10
- package/esm/src/modules/import-map/default-import-map.d.ts.map +1 -1
- package/esm/src/modules/import-map/default-import-map.js +4 -3
- package/esm/src/oauth/handlers/callback-handler.d.ts +0 -5
- package/esm/src/oauth/handlers/callback-handler.d.ts.map +1 -1
- package/esm/src/oauth/handlers/callback-handler.js +9 -14
- package/esm/src/oauth/handlers/index.d.ts +1 -1
- package/esm/src/oauth/handlers/index.js +1 -1
- package/esm/src/oauth/handlers/init-handler.d.ts.map +1 -1
- package/esm/src/oauth/handlers/init-handler.js +32 -20
- package/esm/src/oauth/providers/index.d.ts +1 -1
- package/esm/src/oauth/providers/index.js +1 -1
- package/esm/src/oauth/schemas/index.d.ts +1 -1
- package/esm/src/oauth/schemas/index.js +1 -1
- package/esm/src/oauth/token-store/index.d.ts +1 -1
- package/esm/src/oauth/token-store/index.js +1 -1
- package/esm/src/oauth/token-store/memory.d.ts +1 -1
- package/esm/src/oauth/token-store/memory.d.ts.map +1 -1
- package/esm/src/oauth/token-store/memory.js +8 -8
- package/esm/src/observability/request-profiler.d.ts +31 -0
- package/esm/src/observability/request-profiler.d.ts.map +1 -0
- package/esm/src/observability/request-profiler.js +94 -0
- package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
- package/esm/src/observability/tracing/otlp-setup.js +16 -21
- package/esm/src/prompt/factory.d.ts.map +1 -1
- package/esm/src/prompt/factory.js +10 -12
- package/esm/src/prompt/registry.d.ts.map +1 -1
- package/esm/src/prompt/registry.js +12 -10
- package/esm/src/prompt/schemas/prompt.schema.d.ts.map +1 -1
- package/esm/src/prompt/schemas/prompt.schema.js +0 -2
- package/esm/src/prompt/types.d.ts +1 -1
- package/esm/src/prompt/types.d.ts.map +1 -1
- package/esm/src/provider/local/ai-sdk-adapter.d.ts.map +1 -1
- package/esm/src/provider/local/ai-sdk-adapter.js +3 -8
- package/esm/src/provider/local/env.d.ts +4 -6
- package/esm/src/provider/local/env.d.ts.map +1 -1
- package/esm/src/provider/local/env.js +14 -1
- package/esm/src/provider/local/local-engine.d.ts.map +1 -1
- package/esm/src/provider/local/local-engine.js +2 -7
- package/esm/src/provider/model-registry.d.ts.map +1 -1
- package/esm/src/provider/model-registry.js +2 -7
- package/esm/src/provider/veryfront-cloud/provider.d.ts.map +1 -1
- package/esm/src/provider/veryfront-cloud/provider.js +1 -7
- package/esm/src/provider/veryfront-cloud/shared.d.ts.map +1 -1
- package/esm/src/provider/veryfront-cloud/shared.js +9 -11
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +56 -57
- package/esm/src/react/compat/hooks-adapter.d.ts +1 -7
- package/esm/src/react/compat/hooks-adapter.d.ts.map +1 -1
- package/esm/src/react/compat/hooks-adapter.js +35 -40
- package/esm/src/react/components/Head.d.ts +1 -26
- package/esm/src/react/components/Head.d.ts.map +1 -1
- package/esm/src/react/components/Head.js +1 -172
- package/esm/src/react/context/index.d.ts +2 -46
- package/esm/src/react/context/index.d.ts.map +1 -1
- package/esm/src/react/context/index.js +1 -44
- package/esm/src/react/head-collector.d.ts +1 -10
- package/esm/src/react/head-collector.d.ts.map +1 -1
- package/esm/src/react/head-collector.js +4 -0
- package/esm/src/react/router/index.d.ts +2 -45
- package/esm/src/react/router/index.d.ts.map +1 -1
- package/esm/src/react/router/index.js +1 -49
- package/esm/src/react/runtime/core.d.ts +49 -0
- package/esm/src/react/runtime/core.d.ts.map +1 -0
- package/esm/src/react/runtime/core.js +200 -0
- package/esm/src/rendering/orchestrator/html.d.ts +2 -0
- package/esm/src/rendering/orchestrator/html.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/html.js +69 -12
- package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/ssr-orchestrator.js +4 -0
- package/esm/src/rendering/orchestrator/types.d.ts +4 -0
- package/esm/src/rendering/orchestrator/types.d.ts.map +1 -1
- package/esm/src/repositories/types.d.ts.map +1 -1
- package/esm/src/resource/factory.d.ts.map +1 -1
- package/esm/src/resource/factory.js +12 -9
- package/esm/src/resource/registry.d.ts +3 -3
- package/esm/src/resource/registry.d.ts.map +1 -1
- package/esm/src/resource/registry.js +7 -7
- package/esm/src/schemas/common.d.ts.map +1 -1
- package/esm/src/schemas/common.js +7 -4
- package/esm/src/security/http/config.d.ts +0 -1
- package/esm/src/security/http/config.d.ts.map +1 -1
- package/esm/src/security/http/config.js +3 -16
- package/esm/src/security/http/response/security-handler.d.ts +1 -0
- package/esm/src/security/http/response/security-handler.d.ts.map +1 -1
- package/esm/src/security/http/response/security-handler.js +17 -12
- package/esm/src/security/index.d.ts +4 -2
- package/esm/src/security/index.d.ts.map +1 -1
- package/esm/src/security/index.js +3 -1
- package/esm/src/server/handlers/dev/styles-css.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/styles-css.handler.js +8 -7
- package/esm/src/server/handlers/monitoring/metrics.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/monitoring/metrics.handler.js +3 -1
- package/esm/src/server/handlers/request/module/module-server-handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/module/module-server-handler.js +18 -15
- package/esm/src/server/handlers/request/prod-hydration-module.handler.d.ts +8 -0
- package/esm/src/server/handlers/request/prod-hydration-module.handler.d.ts.map +1 -0
- package/esm/src/server/handlers/request/prod-hydration-module.handler.js +41 -0
- package/esm/src/server/handlers/request/ssr/ssr.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/ssr/ssr.handler.js +3 -0
- package/esm/src/server/production-server.d.ts.map +1 -1
- package/esm/src/server/production-server.js +65 -0
- package/esm/src/server/runtime-handler/handler-context-builder.d.ts +1 -1
- package/esm/src/server/runtime-handler/handler-context-builder.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.d.ts +1 -1
- package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.js +36 -11
- package/esm/src/server/runtime-handler/request-utils.d.ts +7 -0
- package/esm/src/server/runtime-handler/request-utils.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/request-utils.js +10 -0
- package/esm/src/server/services/rendering/ssr.service.d.ts +1 -0
- package/esm/src/server/services/rendering/ssr.service.d.ts.map +1 -1
- package/esm/src/server/services/rendering/ssr.service.js +12 -5
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
- package/esm/src/skill/allowed-tools.d.ts +3 -8
- package/esm/src/skill/allowed-tools.d.ts.map +1 -1
- package/esm/src/skill/executor.js +2 -2
- package/esm/src/skill/parser.d.ts.map +1 -1
- package/esm/src/skill/parser.js +12 -12
- package/esm/src/skill/path-safety.js +1 -1
- package/esm/src/skill/tools.d.ts.map +1 -1
- package/esm/src/skill/tools.js +18 -11
- package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
- package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
- package/esm/src/task/discovery.d.ts.map +1 -1
- package/esm/src/task/discovery.js +73 -95
- package/esm/src/tool/executor.d.ts.map +1 -1
- package/esm/src/tool/executor.js +8 -7
- package/esm/src/tool/factory.d.ts.map +1 -1
- package/esm/src/tool/factory.js +13 -16
- package/esm/src/transforms/esm/package-registry.d.ts +4 -0
- package/esm/src/transforms/esm/package-registry.d.ts.map +1 -1
- package/esm/src/transforms/esm/package-registry.js +34 -17
- package/esm/src/transforms/import-rewriter/strategies/veryfront-strategy.d.ts.map +1 -1
- package/esm/src/transforms/import-rewriter/strategies/veryfront-strategy.js +2 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache-format.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache-format.js +26 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.d.ts +1 -0
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.js +3 -0
- package/esm/src/transforms/pipeline/stages/ssr-vf-modules/index.d.ts +1 -1
- package/esm/src/transforms/pipeline/stages/ssr-vf-modules/index.js +1 -1
- package/esm/src/transforms/veryfront-module-urls.d.ts.map +1 -1
- package/esm/src/transforms/veryfront-module-urls.js +7 -3
- package/esm/src/types/entities/getEntityInfo.d.ts.map +1 -1
- package/esm/src/types/entities/getEntityInfo.js +79 -127
- package/esm/src/utils/path-utils.d.ts +1 -1
- package/esm/src/utils/path-utils.d.ts.map +1 -1
- package/esm/src/utils/path-utils.js +16 -7
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/utils/version.d.ts.map +1 -1
- package/esm/src/utils/version.js +0 -1
- package/esm/src/workflow/worker/dynamic-job-entrypoint.d.ts.map +1 -1
- package/esm/src/workflow/worker/dynamic-job-entrypoint.js +5 -72
- package/esm/src/workflow/worker/job-entrypoint.d.ts.map +1 -1
- package/esm/src/workflow/worker/job-entrypoint.js +5 -72
- package/esm/src/workflow/worker/shared.d.ts +18 -0
- package/esm/src/workflow/worker/shared.d.ts.map +1 -0
- package/esm/src/workflow/worker/shared.js +77 -0
- package/package.json +1 -1
- package/src/cli/router.ts +41 -2
- package/src/cli/shared/update-check.ts +110 -0
- package/src/deno.js +13 -8
- package/src/src/channels/control-plane.ts +6 -10
- package/src/src/channels/invoke.ts +7 -7
- package/src/src/chat/index.ts +96 -132
- package/src/src/config/env.ts +24 -11
- package/src/src/data/static-data-fetcher.ts +59 -34
- package/src/src/data/static-paths-fetcher.ts +4 -2
- package/src/src/errors/logging.ts +21 -7
- package/src/src/errors/user-friendly/error-formatter.ts +14 -29
- package/src/src/fs/index.ts +21 -30
- package/src/src/html/dev-scripts.ts +5 -9
- package/src/src/html/html-escape.ts +4 -0
- package/src/src/html/html-injection.ts +2 -2
- package/src/src/html/html-shell-generator.ts +60 -26
- package/src/src/html/hydration-script-builder/dev-client-renderer.ts +2 -2
- package/src/src/html/hydration-script-builder/dev-component-manifest.ts +2 -2
- package/src/src/html/hydration-script-builder/dev-error-logger.ts +2 -8
- package/src/src/html/hydration-script-builder/dev-scripts.ts +2 -2
- package/src/src/html/hydration-script-builder/hydration-data-generator.ts +2 -1
- package/src/src/html/hydration-script-builder/index.ts +5 -1
- package/src/src/html/hydration-script-builder/prod-hydration.ts +2 -2
- package/src/src/html/hydration-script-builder/prod-scripts.ts +16 -15
- package/src/src/html/schemas/html.schema.ts +2 -0
- package/src/src/html/styles-builder/css-pregeneration.ts +133 -1
- package/src/src/html/styles-builder/dev-styles.ts +2 -2
- package/src/src/html/utils.ts +62 -29
- package/src/src/integrations/remote-tools.ts +39 -37
- package/src/src/internal-agents/ag-ui-sse.ts +2 -17
- package/src/src/internal-agents/control-plane-auth.ts +8 -6
- package/src/src/internal-agents/request-body.ts +7 -5
- package/src/src/internal-agents/session-manager.ts +16 -20
- package/src/src/issues/core.ts +24 -27
- package/src/src/issues/schemas/issue.schema.ts +3 -1
- package/src/src/jobs/runtime-env.ts +24 -50
- package/src/src/markdown/index.ts +5 -8
- package/src/src/mcp/server.ts +50 -53
- package/src/src/mdx/index.ts +7 -8
- package/src/src/middleware/builtin/logger.ts +44 -29
- package/src/src/middleware/builtin/security/rate-limit.ts +20 -11
- package/src/src/middleware/builtin/timeout.ts +22 -13
- package/src/src/modules/import-map/default-import-map.ts +4 -3
- package/src/src/oauth/handlers/callback-handler.ts +9 -16
- package/src/src/oauth/handlers/index.ts +1 -1
- package/src/src/oauth/handlers/init-handler.ts +56 -27
- package/src/src/oauth/providers/index.ts +1 -1
- package/src/src/oauth/schemas/index.ts +1 -1
- package/src/src/oauth/token-store/index.ts +1 -1
- package/src/src/oauth/token-store/memory.ts +8 -8
- package/src/src/observability/request-profiler.ts +140 -0
- package/src/src/observability/tracing/otlp-setup.ts +16 -22
- package/src/src/prompt/factory.ts +16 -14
- package/src/src/prompt/registry.ts +14 -13
- package/src/src/prompt/schemas/prompt.schema.ts +0 -4
- package/src/src/prompt/types.ts +1 -2
- package/src/src/provider/local/ai-sdk-adapter.ts +3 -10
- package/src/src/provider/local/env.ts +22 -2
- package/src/src/provider/local/local-engine.ts +2 -9
- package/src/src/provider/model-registry.ts +2 -9
- package/src/src/provider/veryfront-cloud/provider.ts +1 -8
- package/src/src/provider/veryfront-cloud/shared.ts +12 -15
- package/src/src/proxy/handler.ts +90 -74
- package/src/src/react/compat/hooks-adapter.ts +43 -44
- package/src/src/react/components/Head.tsx +1 -181
- package/src/src/react/context/index.tsx +2 -83
- package/src/src/react/head-collector.ts +9 -0
- package/src/src/react/router/index.tsx +2 -100
- package/src/src/react/runtime/core.ts +303 -0
- package/src/src/rendering/orchestrator/html.ts +122 -18
- package/src/src/rendering/orchestrator/ssr-orchestrator.ts +8 -0
- package/src/src/rendering/orchestrator/types.ts +4 -0
- package/src/src/repositories/types.ts +0 -4
- package/src/src/resource/factory.ts +15 -11
- package/src/src/resource/registry.ts +7 -7
- package/src/src/schemas/common.ts +8 -5
- package/src/src/security/http/config.ts +3 -19
- package/src/src/security/http/response/security-handler.ts +22 -13
- package/src/src/security/index.ts +4 -7
- package/src/src/server/handlers/dev/styles-css.handler.ts +32 -14
- package/src/src/server/handlers/monitoring/metrics.handler.ts +3 -1
- package/src/src/server/handlers/request/module/module-server-handler.ts +24 -17
- package/src/src/server/handlers/request/prod-hydration-module.handler.ts +61 -0
- package/src/src/server/handlers/request/ssr/ssr.handler.ts +3 -0
- package/src/src/server/production-server.ts +84 -0
- package/src/src/server/runtime-handler/handler-context-builder.ts +1 -1
- package/src/src/server/runtime-handler/index.ts +44 -13
- package/src/src/server/runtime-handler/request-utils.ts +11 -0
- package/src/src/server/services/rendering/ssr.service.ts +31 -18
- package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +1 -1
- package/src/src/skill/allowed-tools.ts +1 -8
- package/src/src/skill/executor.ts +2 -2
- package/src/src/skill/parser.ts +13 -20
- package/src/src/skill/path-safety.ts +1 -1
- package/src/src/skill/tools.ts +27 -20
- package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
- package/src/src/task/discovery.ts +97 -97
- package/src/src/tool/executor.ts +10 -8
- package/src/src/tool/factory.ts +21 -22
- package/src/src/tool/types.ts +0 -17
- package/src/src/transforms/esm/package-registry.ts +52 -20
- package/src/src/transforms/import-rewriter/strategies/veryfront-strategy.ts +2 -1
- package/src/src/transforms/mdx/esm-module-loader/cache-format.ts +34 -1
- package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +1 -1
- package/src/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.ts +4 -0
- package/src/src/transforms/pipeline/stages/ssr-vf-modules/index.ts +1 -1
- package/src/src/transforms/veryfront-module-urls.ts +6 -2
- package/src/src/types/entities/getEntityInfo.ts +131 -152
- package/src/src/utils/path-utils.ts +16 -7
- package/src/src/utils/version-constant.ts +1 -1
- package/src/src/utils/version.ts +0 -1
- package/src/src/workflow/worker/dynamic-job-entrypoint.ts +18 -84
- package/src/src/workflow/worker/job-entrypoint.ts +18 -85
- package/src/src/workflow/worker/shared.ts +127 -0
- package/esm/src/prompt/schemas/index.d.ts +0 -7
- package/esm/src/prompt/schemas/index.d.ts.map +0 -1
- package/esm/src/prompt/schemas/index.js +0 -6
- package/esm/src/security/http/handlers-index.d.ts +0 -5
- package/esm/src/security/http/handlers-index.d.ts.map +0 -1
- package/esm/src/security/http/handlers-index.js +0 -3
- package/src/src/prompt/schemas/index.ts +0 -7
- package/src/src/security/http/handlers-index.ts +0 -4
package/esm/src/utils/version.js
CHANGED
|
@@ -25,7 +25,6 @@ export const RUNTIME_VERSION = resolveRuntimeVersion({
|
|
|
25
25
|
veryfrontVersion: getVersionEnv("VERYFRONT_VERSION"),
|
|
26
26
|
releaseVersion: getVersionEnv("RELEASE_VERSION"),
|
|
27
27
|
denoVersion: typeof denoConfig.version === "string" ? denoConfig.version : undefined,
|
|
28
|
-
fallbackVersion: VERSION,
|
|
29
28
|
});
|
|
30
29
|
export const SERVER_START_TIME = Date.now();
|
|
31
30
|
export function createBuildVersion(projectUpdated) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-job-entrypoint.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/worker/dynamic-job-entrypoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"dynamic-job-entrypoint.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/worker/dynamic-job-entrypoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,OAAO,EAAE,eAAe,CAAC;IAEzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CAgIjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,iCAAiC;IAChD,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAchC"}
|
|
@@ -26,13 +26,11 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import { logger as baseLogger } from "../../utils/index.js";
|
|
28
28
|
import { getEnv } from "../../platform/compat/process.js";
|
|
29
|
-
import { env as getProcessEnv } from "../../platform/compat/process.js";
|
|
30
|
-
import { runWithRequestContext } from "../../platform/adapters/fs/veryfront/multi-project-adapter.js";
|
|
31
29
|
import { enhanceAdapterWithFS } from "../../platform/adapters/fs/integration.js";
|
|
32
30
|
import { denoAdapter } from "../../platform/adapters/runtime/deno/index.js";
|
|
33
|
-
import { mergeInjectedWorkflowEnv } from "../../jobs/runtime-env.js";
|
|
34
31
|
import { discoverWorkflows } from "../discovery/index.js";
|
|
35
32
|
import { WorkflowExecutor } from "../executor/workflow-executor.js";
|
|
33
|
+
import { failRunExecution, getFinalRunExitCode, getTenantFromEnv, hydrateRunContextEnv, runWithTenantContext, } from "./shared.js";
|
|
36
34
|
const logger = baseLogger.component("dynamic-job");
|
|
37
35
|
/**
|
|
38
36
|
* Exit codes for the job
|
|
@@ -44,23 +42,6 @@ export const DYNAMIC_EXIT_CODES = {
|
|
|
44
42
|
NOT_FOUND: 3,
|
|
45
43
|
DISCOVERY_FAILED: 4,
|
|
46
44
|
};
|
|
47
|
-
/**
|
|
48
|
-
* Get tenant context from environment variables
|
|
49
|
-
*/
|
|
50
|
-
function getTenantFromEnv() {
|
|
51
|
-
const projectSlug = getEnv("TENANT_PROJECT_SLUG");
|
|
52
|
-
const token = getEnv("TENANT_TOKEN");
|
|
53
|
-
if (!projectSlug || !token) {
|
|
54
|
-
return undefined;
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
projectSlug,
|
|
58
|
-
token,
|
|
59
|
-
projectId: getEnv("TENANT_PROJECT_ID"),
|
|
60
|
-
productionMode: getEnv("TENANT_PRODUCTION_MODE") === "1",
|
|
61
|
-
releaseId: getEnv("TENANT_RELEASE_ID") || undefined,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
45
|
/**
|
|
65
46
|
* Run a workflow job with dynamic discovery
|
|
66
47
|
*
|
|
@@ -90,21 +71,7 @@ export async function runDynamicWorkflowJob(config) {
|
|
|
90
71
|
logger.error(`Workflow run not found: ${runId}`);
|
|
91
72
|
return DYNAMIC_EXIT_CODES.NOT_FOUND;
|
|
92
73
|
}
|
|
93
|
-
|
|
94
|
-
if (injectedEnv) {
|
|
95
|
-
const currentEnv = run.context.env;
|
|
96
|
-
const currentSerialized = currentEnv ? JSON.stringify(currentEnv) : "";
|
|
97
|
-
const nextSerialized = JSON.stringify(injectedEnv);
|
|
98
|
-
if (currentSerialized !== nextSerialized) {
|
|
99
|
-
await backend.updateRun(runId, {
|
|
100
|
-
context: {
|
|
101
|
-
...run.context,
|
|
102
|
-
env: injectedEnv,
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
run = (await backend.getRun(runId)) ?? run;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
74
|
+
run = await hydrateRunContextEnv(backend, runId, run);
|
|
108
75
|
// Get tenant context (from env or from stored run)
|
|
109
76
|
const tenant = getTenantFromEnv() ?? run._tenant;
|
|
110
77
|
if (!tenant) {
|
|
@@ -116,13 +83,7 @@ export async function runDynamicWorkflowJob(config) {
|
|
|
116
83
|
logger.info(`Tenant: ${tenant.projectSlug}`);
|
|
117
84
|
}
|
|
118
85
|
// Execute with tenant context
|
|
119
|
-
return await
|
|
120
|
-
projectSlug: tenant.projectSlug,
|
|
121
|
-
token: tenant.token,
|
|
122
|
-
projectId: tenant.projectId,
|
|
123
|
-
productionMode: tenant.productionMode,
|
|
124
|
-
releaseId: tenant.releaseId,
|
|
125
|
-
}, async () => {
|
|
86
|
+
return await runWithTenantContext(tenant, async () => {
|
|
126
87
|
// Set up FS adapter with Veryfront API backend
|
|
127
88
|
const apiUrl = getEnv("VERYFRONT_API_URL") || "https://api.veryfront.com";
|
|
128
89
|
const fsConfig = {
|
|
@@ -175,38 +136,10 @@ export async function runDynamicWorkflowJob(config) {
|
|
|
175
136
|
// Execute the workflow
|
|
176
137
|
try {
|
|
177
138
|
await executor.resume(runId);
|
|
178
|
-
|
|
179
|
-
const status = finalRun?.status;
|
|
180
|
-
switch (status) {
|
|
181
|
-
case "completed":
|
|
182
|
-
if (debug) {
|
|
183
|
-
logger.info(`Workflow completed successfully: ${runId}`);
|
|
184
|
-
}
|
|
185
|
-
return DYNAMIC_EXIT_CODES.SUCCESS;
|
|
186
|
-
case "failed":
|
|
187
|
-
logger.error(`Workflow failed: ${runId}`, finalRun?.error);
|
|
188
|
-
return DYNAMIC_EXIT_CODES.WORKFLOW_FAILED;
|
|
189
|
-
case "waiting":
|
|
190
|
-
if (debug) {
|
|
191
|
-
logger.info(`Workflow paused (waiting): ${runId}`);
|
|
192
|
-
}
|
|
193
|
-
return DYNAMIC_EXIT_CODES.SUCCESS;
|
|
194
|
-
default:
|
|
195
|
-
logger.warn(`Unexpected final status: ${status}`);
|
|
196
|
-
return DYNAMIC_EXIT_CODES.SUCCESS;
|
|
197
|
-
}
|
|
139
|
+
return getFinalRunExitCode(logger, DYNAMIC_EXIT_CODES, runId, await backend.getRun(runId), debug);
|
|
198
140
|
}
|
|
199
141
|
catch (error) {
|
|
200
|
-
|
|
201
|
-
await backend.updateRun(runId, {
|
|
202
|
-
status: "failed",
|
|
203
|
-
error: {
|
|
204
|
-
message: `EXECUTION_ERROR: ${error instanceof Error ? error.message : String(error)}`,
|
|
205
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
206
|
-
},
|
|
207
|
-
completedAt: new Date(),
|
|
208
|
-
});
|
|
209
|
-
return DYNAMIC_EXIT_CODES.WORKFLOW_FAILED;
|
|
142
|
+
return await failRunExecution(backend, logger, DYNAMIC_EXIT_CODES, runId, error);
|
|
210
143
|
}
|
|
211
144
|
});
|
|
212
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-entrypoint.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/worker/job-entrypoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"job-entrypoint.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/worker/job-entrypoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,OAAO,EAAE,eAAe,CAAC;IAEzB,wBAAwB;IACxB,QAAQ,EAAE,gBAAgB,CAAC;IAE3B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgEjF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,4BAA4B;IAC5B,SAAS,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAErD,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CA0BhC"}
|
|
@@ -21,9 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { logger as baseLogger } from "../../utils/index.js";
|
|
23
23
|
import { getEnv } from "../../platform/compat/process.js";
|
|
24
|
-
import {
|
|
25
|
-
import { runWithRequestContext } from "../../platform/adapters/fs/veryfront/multi-project-adapter.js";
|
|
26
|
-
import { mergeInjectedWorkflowEnv } from "../../jobs/runtime-env.js";
|
|
24
|
+
import { failRunExecution, getFinalRunExitCode, getTenantFromEnv, hydrateRunContextEnv, runWithTenantContext, } from "./shared.js";
|
|
27
25
|
const logger = baseLogger.component("workflow-job");
|
|
28
26
|
/**
|
|
29
27
|
* Exit codes for the job
|
|
@@ -34,23 +32,6 @@ export const EXIT_CODES = {
|
|
|
34
32
|
CONFIG_ERROR: 2,
|
|
35
33
|
NOT_FOUND: 3,
|
|
36
34
|
};
|
|
37
|
-
/**
|
|
38
|
-
* Get tenant context from environment variables
|
|
39
|
-
*/
|
|
40
|
-
function getTenantFromEnv() {
|
|
41
|
-
const projectSlug = getEnv("TENANT_PROJECT_SLUG");
|
|
42
|
-
const token = getEnv("TENANT_TOKEN");
|
|
43
|
-
if (!projectSlug || !token) {
|
|
44
|
-
return undefined;
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
projectSlug,
|
|
48
|
-
token,
|
|
49
|
-
projectId: getEnv("TENANT_PROJECT_ID") || undefined,
|
|
50
|
-
productionMode: getEnv("TENANT_PRODUCTION_MODE") === "1",
|
|
51
|
-
releaseId: getEnv("TENANT_RELEASE_ID") || undefined,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
35
|
/**
|
|
55
36
|
* Run the workflow job
|
|
56
37
|
*
|
|
@@ -96,21 +77,7 @@ export async function runWorkflowJob(config) {
|
|
|
96
77
|
logger.error(`Workflow run not found: ${runId}`);
|
|
97
78
|
return EXIT_CODES.NOT_FOUND;
|
|
98
79
|
}
|
|
99
|
-
|
|
100
|
-
if (injectedEnv) {
|
|
101
|
-
const currentEnv = run.context.env;
|
|
102
|
-
const currentSerialized = currentEnv ? JSON.stringify(currentEnv) : "";
|
|
103
|
-
const nextSerialized = JSON.stringify(injectedEnv);
|
|
104
|
-
if (currentSerialized !== nextSerialized) {
|
|
105
|
-
await backend.updateRun(runId, {
|
|
106
|
-
context: {
|
|
107
|
-
...run.context,
|
|
108
|
-
env: injectedEnv,
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
run = (await backend.getRun(runId)) ?? run;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
80
|
+
run = await hydrateRunContextEnv(backend, runId, run);
|
|
114
81
|
// Get tenant context (from env or from stored run)
|
|
115
82
|
const tenant = getTenantFromEnv() ?? run._tenant;
|
|
116
83
|
if (debug) {
|
|
@@ -120,26 +87,7 @@ export async function runWorkflowJob(config) {
|
|
|
120
87
|
// Execute workflow and determine exit code based on final status
|
|
121
88
|
const executeWorkflow = async () => {
|
|
122
89
|
await executor.resume(runId);
|
|
123
|
-
|
|
124
|
-
const status = finalRun?.status;
|
|
125
|
-
switch (status) {
|
|
126
|
-
case "completed":
|
|
127
|
-
if (debug) {
|
|
128
|
-
logger.info(`Workflow completed successfully: ${runId}`);
|
|
129
|
-
}
|
|
130
|
-
return EXIT_CODES.SUCCESS;
|
|
131
|
-
case "failed":
|
|
132
|
-
logger.error(`Workflow failed: ${runId}`, finalRun?.error);
|
|
133
|
-
return EXIT_CODES.WORKFLOW_FAILED;
|
|
134
|
-
case "waiting":
|
|
135
|
-
if (debug) {
|
|
136
|
-
logger.info(`Workflow paused (waiting): ${runId}`);
|
|
137
|
-
}
|
|
138
|
-
return EXIT_CODES.SUCCESS;
|
|
139
|
-
default:
|
|
140
|
-
logger.warn(`Unexpected final status: ${status}`);
|
|
141
|
-
return EXIT_CODES.SUCCESS;
|
|
142
|
-
}
|
|
90
|
+
return getFinalRunExitCode(logger, EXIT_CODES, runId, await backend.getRun(runId), debug);
|
|
143
91
|
};
|
|
144
92
|
// Wrapper that handles execution errors
|
|
145
93
|
const safeExecute = async () => {
|
|
@@ -147,27 +95,12 @@ export async function runWorkflowJob(config) {
|
|
|
147
95
|
return await executeWorkflow();
|
|
148
96
|
}
|
|
149
97
|
catch (error) {
|
|
150
|
-
|
|
151
|
-
await backend.updateRun(runId, {
|
|
152
|
-
status: "failed",
|
|
153
|
-
error: {
|
|
154
|
-
message: `EXECUTION_ERROR: ${error instanceof Error ? error.message : String(error)}`,
|
|
155
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
156
|
-
},
|
|
157
|
-
completedAt: new Date(),
|
|
158
|
-
});
|
|
159
|
-
return EXIT_CODES.WORKFLOW_FAILED;
|
|
98
|
+
return await failRunExecution(backend, logger, EXIT_CODES, runId, error);
|
|
160
99
|
}
|
|
161
100
|
};
|
|
162
101
|
// Run with tenant context if available
|
|
163
102
|
if (tenant) {
|
|
164
|
-
return await
|
|
165
|
-
projectSlug: tenant.projectSlug,
|
|
166
|
-
token: tenant.token,
|
|
167
|
-
projectId: tenant.projectId,
|
|
168
|
-
productionMode: tenant.productionMode,
|
|
169
|
-
releaseId: tenant.releaseId,
|
|
170
|
-
}, safeExecute);
|
|
103
|
+
return await runWithTenantContext(tenant, safeExecute);
|
|
171
104
|
}
|
|
172
105
|
return await safeExecute();
|
|
173
106
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WorkflowBackend } from "../backends/types.js";
|
|
2
|
+
import type { CapturedTenantContext, WorkflowRun } from "../types.js";
|
|
3
|
+
interface EntrypointLogger {
|
|
4
|
+
error: (message: string, ...args: unknown[]) => void;
|
|
5
|
+
info: (message: string, ...args: unknown[]) => void;
|
|
6
|
+
warn: (message: string, ...args: unknown[]) => void;
|
|
7
|
+
}
|
|
8
|
+
interface EntrypointExitCodes {
|
|
9
|
+
SUCCESS: number;
|
|
10
|
+
WORKFLOW_FAILED: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function getTenantFromEnv(): CapturedTenantContext | undefined;
|
|
13
|
+
export declare function hydrateRunContextEnv(backend: WorkflowBackend, runId: string, run: WorkflowRun): Promise<WorkflowRun>;
|
|
14
|
+
export declare function getFinalRunExitCode(logger: EntrypointLogger, exitCodes: EntrypointExitCodes, runId: string, finalRun: WorkflowRun | null, debug?: boolean): number;
|
|
15
|
+
export declare function failRunExecution(backend: WorkflowBackend, logger: EntrypointLogger, exitCodes: EntrypointExitCodes, runId: string, error: unknown): Promise<number>;
|
|
16
|
+
export declare function runWithTenantContext<T>(tenant: CapturedTenantContext, fn: () => Promise<T>): Promise<T>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/worker/shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtE,UAAU,gBAAgB;IACxB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrD;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,gBAAgB,IAAI,qBAAqB,GAAG,SAAS,CAepE;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,WAAW,CAAC,CAoBtB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,KAAK,UAAQ,GACZ,MAAM,CAsBR;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,qBAAqB,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAWZ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { env as getProcessEnv } from "../../platform/compat/process.js";
|
|
2
|
+
import { runWithRequestContext } from "../../platform/adapters/fs/veryfront/multi-project-adapter.js";
|
|
3
|
+
import { getEnv } from "../../platform/compat/process.js";
|
|
4
|
+
import { mergeInjectedWorkflowEnv } from "../../jobs/runtime-env.js";
|
|
5
|
+
export function getTenantFromEnv() {
|
|
6
|
+
const projectSlug = getEnv("TENANT_PROJECT_SLUG");
|
|
7
|
+
const token = getEnv("TENANT_TOKEN");
|
|
8
|
+
if (!projectSlug || !token) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
projectSlug,
|
|
13
|
+
token,
|
|
14
|
+
projectId: getEnv("TENANT_PROJECT_ID"),
|
|
15
|
+
productionMode: getEnv("TENANT_PRODUCTION_MODE") === "1",
|
|
16
|
+
releaseId: getEnv("TENANT_RELEASE_ID"),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export async function hydrateRunContextEnv(backend, runId, run) {
|
|
20
|
+
const injectedEnv = mergeInjectedWorkflowEnv(run.context.env, getProcessEnv());
|
|
21
|
+
if (!injectedEnv) {
|
|
22
|
+
return run;
|
|
23
|
+
}
|
|
24
|
+
const currentSerialized = run.context.env ? JSON.stringify(run.context.env) : "";
|
|
25
|
+
const nextSerialized = JSON.stringify(injectedEnv);
|
|
26
|
+
if (currentSerialized === nextSerialized) {
|
|
27
|
+
return run;
|
|
28
|
+
}
|
|
29
|
+
await backend.updateRun(runId, {
|
|
30
|
+
context: {
|
|
31
|
+
...run.context,
|
|
32
|
+
env: injectedEnv,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
return (await backend.getRun(runId)) ?? run;
|
|
36
|
+
}
|
|
37
|
+
export function getFinalRunExitCode(logger, exitCodes, runId, finalRun, debug = false) {
|
|
38
|
+
switch (finalRun?.status) {
|
|
39
|
+
case "completed":
|
|
40
|
+
if (debug) {
|
|
41
|
+
logger.info(`Workflow completed successfully: ${runId}`);
|
|
42
|
+
}
|
|
43
|
+
return exitCodes.SUCCESS;
|
|
44
|
+
case "failed":
|
|
45
|
+
logger.error(`Workflow failed: ${runId}`, finalRun.error);
|
|
46
|
+
return exitCodes.WORKFLOW_FAILED;
|
|
47
|
+
case "waiting":
|
|
48
|
+
if (debug) {
|
|
49
|
+
logger.info(`Workflow paused (waiting): ${runId}`);
|
|
50
|
+
}
|
|
51
|
+
return exitCodes.SUCCESS;
|
|
52
|
+
default:
|
|
53
|
+
logger.warn(`Unexpected final status: ${finalRun?.status}`);
|
|
54
|
+
return exitCodes.SUCCESS;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export async function failRunExecution(backend, logger, exitCodes, runId, error) {
|
|
58
|
+
logger.error("Execution error:", error);
|
|
59
|
+
await backend.updateRun(runId, {
|
|
60
|
+
status: "failed",
|
|
61
|
+
error: {
|
|
62
|
+
message: `EXECUTION_ERROR: ${error instanceof Error ? error.message : String(error)}`,
|
|
63
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
64
|
+
},
|
|
65
|
+
completedAt: new Date(),
|
|
66
|
+
});
|
|
67
|
+
return exitCodes.WORKFLOW_FAILED;
|
|
68
|
+
}
|
|
69
|
+
export function runWithTenantContext(tenant, fn) {
|
|
70
|
+
return runWithRequestContext({
|
|
71
|
+
projectSlug: tenant.projectSlug,
|
|
72
|
+
token: tenant.token,
|
|
73
|
+
projectId: tenant.projectId,
|
|
74
|
+
productionMode: tenant.productionMode,
|
|
75
|
+
releaseId: tenant.releaseId,
|
|
76
|
+
}, fn);
|
|
77
|
+
}
|
package/package.json
CHANGED
package/src/cli/router.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module cli/router
|
|
5
5
|
*/
|
|
6
|
+
import * as dntShim from "../_dnt.shims.js";
|
|
7
|
+
|
|
6
8
|
|
|
7
9
|
import { cliErrorBoundary } from "../src/errors/index.js";
|
|
8
10
|
import { cliLogger, VERSION } from "./utils/index.js";
|
|
@@ -44,7 +46,13 @@ import { parseLoginMethod } from "./auth/utils.js";
|
|
|
44
46
|
import { showCommandHelp, showMainHelp } from "./help/index.js";
|
|
45
47
|
import { setColorOverride } from "./ui/colors.js";
|
|
46
48
|
import { exitProcess, setQuietMode, setVerboseMode } from "./utils/index.js";
|
|
47
|
-
import {
|
|
49
|
+
import {
|
|
50
|
+
createSuccessEnvelope,
|
|
51
|
+
isJsonMode,
|
|
52
|
+
outputJson,
|
|
53
|
+
setJsonMode,
|
|
54
|
+
setOutputPath,
|
|
55
|
+
} from "./shared/json-output.js";
|
|
48
56
|
import { detectCI, setNonInteractive } from "./shared/interactive.js";
|
|
49
57
|
import type { ParsedArgs } from "./shared/types.js";
|
|
50
58
|
|
|
@@ -130,8 +138,33 @@ export async function routeCommand(args: ParsedArgs): Promise<void> {
|
|
|
130
138
|
|
|
131
139
|
if (args.yes || args.y || detectCI()) setNonInteractive(true);
|
|
132
140
|
|
|
141
|
+
// Start update check early so the network request runs during command execution
|
|
142
|
+
const updateCheck = import("./shared/update-check.js")
|
|
143
|
+
.then(({ checkForUpdates }) => checkForUpdates(VERSION))
|
|
144
|
+
.catch(() => {});
|
|
145
|
+
|
|
133
146
|
if (args.version || args.v) {
|
|
147
|
+
if (isJsonMode()) {
|
|
148
|
+
await outputJson(createSuccessEnvelope("version", {
|
|
149
|
+
version: VERSION,
|
|
150
|
+
deno: dntShim.Deno.version.deno,
|
|
151
|
+
v8: dntShim.Deno.version.v8,
|
|
152
|
+
typescript: dntShim.Deno.version.typescript,
|
|
153
|
+
os: dntShim.Deno.build.os,
|
|
154
|
+
arch: dntShim.Deno.build.arch,
|
|
155
|
+
standalone: dntShim.Deno.build.standalone ?? false,
|
|
156
|
+
}));
|
|
157
|
+
exitProcess(0);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
134
160
|
cliLogger.info(`Veryfront CLI v${VERSION}`);
|
|
161
|
+
if (args.verbose) {
|
|
162
|
+
cliLogger.info(
|
|
163
|
+
`Deno ${dntShim.Deno.version.deno} (V8 ${dntShim.Deno.version.v8}, TypeScript ${dntShim.Deno.version.typescript})`,
|
|
164
|
+
);
|
|
165
|
+
cliLogger.info(`OS: ${dntShim.Deno.build.os} ${dntShim.Deno.build.arch}`);
|
|
166
|
+
}
|
|
167
|
+
await updateCheck;
|
|
135
168
|
exitProcess(0);
|
|
136
169
|
return;
|
|
137
170
|
}
|
|
@@ -140,6 +173,7 @@ export async function routeCommand(args: ParsedArgs): Promise<void> {
|
|
|
140
173
|
|
|
141
174
|
if (args.help || args.h) {
|
|
142
175
|
showHelp(command);
|
|
176
|
+
await updateCheck;
|
|
143
177
|
exitProcess(0);
|
|
144
178
|
return;
|
|
145
179
|
}
|
|
@@ -147,7 +181,6 @@ export async function routeCommand(args: ParsedArgs): Promise<void> {
|
|
|
147
181
|
await cliErrorBoundary(async () => {
|
|
148
182
|
if (command === "help") {
|
|
149
183
|
showHelp();
|
|
150
|
-
exitProcess(0);
|
|
151
184
|
return;
|
|
152
185
|
}
|
|
153
186
|
|
|
@@ -175,4 +208,10 @@ export async function routeCommand(args: ParsedArgs): Promise<void> {
|
|
|
175
208
|
|
|
176
209
|
await (handler ?? handleStartCommand)(args);
|
|
177
210
|
});
|
|
211
|
+
|
|
212
|
+
// Wait for update check to finish (with timeout to avoid hanging)
|
|
213
|
+
await Promise.race([
|
|
214
|
+
updateCheck,
|
|
215
|
+
new Promise((r) => dntShim.setTimeout(r, 5000)),
|
|
216
|
+
]);
|
|
178
217
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-blocking update check
|
|
3
|
+
*
|
|
4
|
+
* Checks for newer CLI versions after command execution.
|
|
5
|
+
* Cached for 24 hours. Never blocks command output.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/shared/update-check
|
|
8
|
+
*/
|
|
9
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
import { getEnv } from "../../src/platform/index.js";
|
|
13
|
+
import { createFileSystem } from "../../src/platform/index.js";
|
|
14
|
+
import { join } from "../../src/platform/compat/path/index.js";
|
|
15
|
+
import { getEnvironmentConfig } from "../../src/config/index.js";
|
|
16
|
+
import { isJsonMode } from "./json-output.js";
|
|
17
|
+
import { isQuiet } from "../utils/index.js";
|
|
18
|
+
import { detectCI } from "./interactive.js";
|
|
19
|
+
|
|
20
|
+
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
21
|
+
const REGISTRY_URL = "https://jsr.io/@veryfront/veryfront/meta.json";
|
|
22
|
+
const INSTALL_CMD = "deno install -gArf jsr:@veryfront/veryfront";
|
|
23
|
+
|
|
24
|
+
interface UpdateCache {
|
|
25
|
+
lastCheck: number;
|
|
26
|
+
latestVersion: string | null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function getCacheFile(): string | null {
|
|
30
|
+
const env = getEnvironmentConfig();
|
|
31
|
+
if (!env.homeDir) return null;
|
|
32
|
+
const cacheDir = join(env.homeDir, ".cache", "veryfront");
|
|
33
|
+
return join(cacheDir, "update-check.json");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function compareVersions(current: string, latest: string): boolean {
|
|
37
|
+
const c = current.split(".").map(Number);
|
|
38
|
+
const l = latest.split(".").map(Number);
|
|
39
|
+
for (let i = 0; i < 3; i++) {
|
|
40
|
+
if ((l[i] ?? 0) > (c[i] ?? 0)) return true;
|
|
41
|
+
if ((l[i] ?? 0) < (c[i] ?? 0)) return false;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function shouldSkip(): boolean {
|
|
47
|
+
if (getEnv("VERYFRONT_NO_UPDATE_CHECK") === "1") return true;
|
|
48
|
+
if (detectCI()) return true;
|
|
49
|
+
if (isJsonMode()) return true;
|
|
50
|
+
if (isQuiet()) return true;
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function printUpdateNotice(current: string, latest: string): void {
|
|
55
|
+
console.error(`\n Update available: ${current} → ${latest}`);
|
|
56
|
+
console.error(` Run: ${INSTALL_CMD}\n`);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export async function checkForUpdates(
|
|
60
|
+
currentVersion: string,
|
|
61
|
+
): Promise<void> {
|
|
62
|
+
if (shouldSkip()) return;
|
|
63
|
+
|
|
64
|
+
const cacheFile = getCacheFile();
|
|
65
|
+
if (!cacheFile) return;
|
|
66
|
+
|
|
67
|
+
const fs = createFileSystem();
|
|
68
|
+
|
|
69
|
+
try {
|
|
70
|
+
const raw = await fs.readTextFile(cacheFile);
|
|
71
|
+
const cache: UpdateCache = JSON.parse(raw);
|
|
72
|
+
if (Date.now() - cache.lastCheck < CHECK_INTERVAL_MS) {
|
|
73
|
+
if (
|
|
74
|
+
cache.latestVersion &&
|
|
75
|
+
compareVersions(currentVersion, cache.latestVersion)
|
|
76
|
+
) {
|
|
77
|
+
printUpdateNotice(currentVersion, cache.latestVersion);
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
} catch {
|
|
82
|
+
// No cache — proceed
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
const resp = await dntShim.fetch(REGISTRY_URL);
|
|
87
|
+
if (!resp.ok) {
|
|
88
|
+
await resp.body?.cancel();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const data = await resp.json();
|
|
92
|
+
const latestVersion = data.latest as string | undefined;
|
|
93
|
+
if (!latestVersion) return;
|
|
94
|
+
|
|
95
|
+
const env = getEnvironmentConfig();
|
|
96
|
+
if (!env.homeDir) return;
|
|
97
|
+
const cacheDir = join(env.homeDir, ".cache", "veryfront");
|
|
98
|
+
await fs.mkdir(cacheDir, { recursive: true });
|
|
99
|
+
await fs.writeTextFile(
|
|
100
|
+
cacheFile,
|
|
101
|
+
JSON.stringify({ lastCheck: Date.now(), latestVersion }),
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
if (compareVersions(currentVersion, latestVersion)) {
|
|
105
|
+
printUpdateNotice(currentVersion, latestVersion);
|
|
106
|
+
}
|
|
107
|
+
} catch {
|
|
108
|
+
// Network error — silently ignore
|
|
109
|
+
}
|
|
110
|
+
}
|
package/src/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.129",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"nodeModulesDir": "auto",
|
|
6
6
|
"exclude": [
|
|
@@ -45,18 +45,18 @@ export default {
|
|
|
45
45
|
"./cli": "./cli/main.ts"
|
|
46
46
|
},
|
|
47
47
|
"imports": {
|
|
48
|
-
"veryfront/head": "./src/react/
|
|
49
|
-
"veryfront/router": "./src/react/
|
|
50
|
-
"veryfront/context": "./src/react/
|
|
48
|
+
"veryfront/head": "./src/react/runtime/core.ts",
|
|
49
|
+
"veryfront/router": "./src/react/runtime/core.ts",
|
|
50
|
+
"veryfront/context": "./src/react/runtime/core.ts",
|
|
51
51
|
"veryfront/fonts": "./src/react/fonts/index.ts",
|
|
52
52
|
"veryfront/chat": "./src/chat/index.ts",
|
|
53
53
|
"veryfront/markdown": "./src/markdown/index.ts",
|
|
54
54
|
"veryfront/mdx": "./src/mdx/index.ts",
|
|
55
55
|
"veryfront/fs": "./src/fs/index.ts",
|
|
56
56
|
"veryfront/platform": "./src/platform/index.ts",
|
|
57
|
-
"veryfront/react/head": "./src/react/
|
|
58
|
-
"veryfront/react/router": "./src/react/
|
|
59
|
-
"veryfront/react/context": "./src/react/
|
|
57
|
+
"veryfront/react/head": "./src/react/runtime/core.ts",
|
|
58
|
+
"veryfront/react/router": "./src/react/runtime/core.ts",
|
|
59
|
+
"veryfront/react/context": "./src/react/runtime/core.ts",
|
|
60
60
|
"veryfront/react/fonts": "./src/react/fonts/index.ts",
|
|
61
61
|
"veryfront/react/components/ai": "./src/react/components/ai/index.ts",
|
|
62
62
|
"veryfront/components/ai": "./src/react/components/ai/index.ts",
|
|
@@ -351,10 +351,15 @@ export default {
|
|
|
351
351
|
"test:bun": "node ./tests/bun/run-tests.mjs src/",
|
|
352
352
|
"test:all-runtimes": "deno task test:unit && deno task test:node && deno task test:bun",
|
|
353
353
|
"test:e2e": "deno task test:e2e:playwright",
|
|
354
|
-
"test:e2e:playwright": "npx playwright test --config=tests/e2e/playwright.config.
|
|
354
|
+
"test:e2e:playwright": "PW_DISABLE_TS_ESM=1 npx playwright test --config=tests/e2e/playwright.config.cjs",
|
|
355
355
|
"test:e2e:rsc-browser": "deno task generate && VF_DISABLE_LRU_INTERVAL=1 SSR_TRANSFORM_PER_PROJECT_LIMIT=0 REVALIDATION_PER_PROJECT_LIMIT=0 NODE_ENV=production LOG_FORMAT=text deno test --no-check --allow-all tests/e2e/regressions/rsc-proxy-hydration.test.ts --unstable-worker-options --unstable-net",
|
|
356
356
|
"test:e2e:binary": "deno task generate && deno test --allow-all tests/integration/compiled-binary-e2e.test.ts",
|
|
357
357
|
"test:e2e:binary:fresh": "deno task generate && VERYFRONT_BINARY_FRESH=1 deno test --allow-all tests/integration/compiled-binary-e2e.test.ts",
|
|
358
|
+
"bench:browser": "deno run -A benchmarks/browser/run.ts",
|
|
359
|
+
"bench:server": "deno run -A benchmarks/server/run.ts",
|
|
360
|
+
"bench:compare:local": "deno run -A benchmarks/compare/local.ts",
|
|
361
|
+
"perf:bench": "deno run -A benchmarks/perf-bench.ts",
|
|
362
|
+
"perf:loop": "deno run -A benchmarks/perf-loop.ts",
|
|
358
363
|
"check:circular": "deno run -A jsr:@cunarist/deno-circular-deps src/index.ts",
|
|
359
364
|
"cli": "deno run --allow-all cli/main.ts",
|
|
360
365
|
"mcp": "deno run --allow-all cli/main.ts mcp",
|
|
@@ -101,6 +101,10 @@ function toArrayBuffer(bytes: Uint8Array): ArrayBuffer {
|
|
|
101
101
|
return buffer;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
function parseCompactJwsPart<T>(encodedPart: string): T {
|
|
105
|
+
return JSON.parse(new TextDecoder().decode(base64urlDecodeToBytes(encodedPart))) as T;
|
|
106
|
+
}
|
|
107
|
+
|
|
104
108
|
function pemToDer(pem: string, label: string): ArrayBuffer {
|
|
105
109
|
const body = pem
|
|
106
110
|
.replace(`-----BEGIN ${label}-----`, "")
|
|
@@ -155,16 +159,8 @@ async function verifySignedRequestJws<TClaims extends SignedRequestClaims>(
|
|
|
155
159
|
throw new Error("Control-plane signature must include header, payload, and signature");
|
|
156
160
|
}
|
|
157
161
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
);
|
|
161
|
-
const claims = options.claimsSchema.parse(
|
|
162
|
-
JSON.parse(new TextDecoder().decode(base64urlDecodeToBytes(encodedPayload))),
|
|
163
|
-
);
|
|
164
|
-
|
|
165
|
-
if (header.alg !== "EdDSA") {
|
|
166
|
-
throw new Error("Unsupported control-plane JWS algorithm");
|
|
167
|
-
}
|
|
162
|
+
compactJwsHeaderSchema.parse(parseCompactJwsPart(encodedHeader));
|
|
163
|
+
const claims = options.claimsSchema.parse(parseCompactJwsPart(encodedPayload));
|
|
168
164
|
|
|
169
165
|
const signingInput = new TextEncoder().encode(`${encodedHeader}.${encodedPayload}`);
|
|
170
166
|
const signature = base64urlDecodeToBytes(encodedSignature);
|