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/html/utils.js
CHANGED
|
@@ -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:
|
|
26
|
-
router:
|
|
27
|
-
context:
|
|
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 (
|
|
146
|
-
veryfrontVersion =
|
|
156
|
+
if (configuredVeryfrontVersion) {
|
|
157
|
+
veryfrontVersion = stripSemverRange(configuredVeryfrontVersion);
|
|
147
158
|
}
|
|
148
|
-
else {
|
|
149
|
-
|
|
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) &&
|
|
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
|
|
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
|
|
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
|
-
|
|
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;
|
|
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
|
|
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 (!
|
|
56
|
+
if (!response.ok) {
|
|
49
57
|
logger.warn("Failed to fetch integration tools from API", {
|
|
50
|
-
status:
|
|
58
|
+
status: response.status,
|
|
51
59
|
});
|
|
52
60
|
return [];
|
|
53
61
|
}
|
|
54
|
-
const data = (await
|
|
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
|
|
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 (!
|
|
71
|
-
const text = await
|
|
72
|
-
return { error: "api_error", status:
|
|
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
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
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 (!
|
|
166
|
+
if (!response.ok) {
|
|
174
167
|
logger.warn("Failed to sync integration config to API", {
|
|
175
|
-
status:
|
|
168
|
+
status: response.status,
|
|
176
169
|
});
|
|
177
170
|
}
|
|
178
171
|
else {
|
|
179
|
-
const data = (await
|
|
172
|
+
const data = (await response.json());
|
|
180
173
|
logger.info("Synced integration config to API", { synced: data.synced });
|
|
181
174
|
}
|
|
182
175
|
}
|
|
@@ -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,
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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
|
|
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;
|
|
@@ -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;
|
|
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
|
-
|
|
218
|
-
this.clearWaitingTimeout(session);
|
|
219
|
-
this.clearSessionTimeout(session);
|
|
222
|
+
const waitingTool = session.waitingTool;
|
|
220
223
|
session.abortController.abort(new AgentRunCancelledError());
|
|
221
|
-
|
|
222
|
-
session
|
|
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
|
|
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
|
|
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,
|
|
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"}
|
package/esm/src/issues/core.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
192
|
-
const issue = { metadata, body: validated.body ?? "", path };
|
|
193
|
-
await this.fs.writeTextFile(join(this.projectDir,
|
|
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
|
|
201
|
+
const issuePath = `${ISSUES_DIR}/${id}.md`;
|
|
201
202
|
try {
|
|
202
|
-
const content = await this.fs.readTextFile(join(this.projectDir,
|
|
203
|
-
return parseIssue(content,
|
|
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
|
|
241
|
+
const issuePath = `${ISSUES_DIR}/${id}.md`;
|
|
241
242
|
try {
|
|
242
|
-
await this.fs.remove(join(this.projectDir,
|
|
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
|
|
278
|
+
const sortDirection = validated.sortDirection ?? "desc";
|
|
278
279
|
issues.sort((a, b) => {
|
|
279
|
-
let
|
|
280
|
+
let comparison;
|
|
280
281
|
if (sortKey === "id") {
|
|
281
|
-
|
|
282
|
+
comparison = a.metadata.id.localeCompare(b.metadata.id);
|
|
282
283
|
}
|
|
283
284
|
else {
|
|
284
|
-
|
|
285
|
+
comparison = String(a.metadata[sortKey]).localeCompare(String(b.metadata[sortKey]));
|
|
285
286
|
}
|
|
286
|
-
return
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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"}
|