@lumenflow/packs-software-delivery 4.24.0 → 5.0.1
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/dist/manifest-schema.d.ts +12 -0
- package/dist/manifest-schema.d.ts.map +1 -1
- package/dist/manifest-schema.js +10 -0
- package/dist/manifest-schema.js.map +1 -1
- package/dist/manifest.d.ts +21 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +92 -1
- package/dist/manifest.js.map +1 -1
- package/dist/src/commands/index.d.ts +2 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +5 -0
- package/dist/src/commands/index.js.map +1 -0
- package/dist/src/config/delivery-review-contract.d.ts +17 -0
- package/dist/src/config/delivery-review-contract.d.ts.map +1 -0
- package/dist/src/config/delivery-review-contract.js +19 -0
- package/dist/src/config/delivery-review-contract.js.map +1 -0
- package/dist/src/config/env-accessors.d.ts +16 -0
- package/dist/src/config/env-accessors.d.ts.map +1 -0
- package/dist/src/config/env-accessors.js +18 -0
- package/dist/src/config/env-accessors.js.map +1 -0
- package/dist/src/config/index.d.ts +3 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +8 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/normalize-config-keys.d.ts +16 -0
- package/dist/src/config/normalize-config-keys.d.ts.map +1 -0
- package/dist/src/config/normalize-config-keys.js +18 -0
- package/dist/src/config/normalize-config-keys.js.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.d.ts +190 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.d.ts.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.js +182 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.js.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema.d.ts +190 -0
- package/dist/src/config/schemas/lumenflow-config-schema.d.ts.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema.js +182 -0
- package/dist/src/config/schemas/lumenflow-config-schema.js.map +1 -0
- package/dist/src/config/workspace-reader.d.ts +56 -0
- package/dist/src/config/workspace-reader.d.ts.map +1 -0
- package/dist/src/config/workspace-reader.js +209 -0
- package/dist/src/config/workspace-reader.js.map +1 -0
- package/dist/src/constants/backlog-patterns.d.ts +21 -0
- package/dist/src/constants/backlog-patterns.d.ts.map +1 -0
- package/dist/src/constants/backlog-patterns.js +26 -0
- package/dist/src/constants/backlog-patterns.js.map +1 -0
- package/dist/src/constants/client-ids.d.ts +16 -0
- package/dist/src/constants/client-ids.d.ts.map +1 -0
- package/dist/src/constants/client-ids.js +16 -0
- package/dist/src/constants/client-ids.js.map +1 -0
- package/dist/src/constants/config-contract.d.ts +2 -0
- package/dist/src/constants/config-contract.d.ts.map +1 -0
- package/dist/src/constants/config-contract.js +7 -0
- package/dist/src/constants/config-contract.js.map +1 -0
- package/dist/src/constants/docs-layout-presets.d.ts +31 -0
- package/dist/src/constants/docs-layout-presets.d.ts.map +1 -0
- package/dist/src/constants/docs-layout-presets.js +41 -0
- package/dist/src/constants/docs-layout-presets.js.map +1 -0
- package/dist/src/constants/duration-constants.d.ts +11 -0
- package/dist/src/constants/duration-constants.d.ts.map +1 -0
- package/dist/src/constants/duration-constants.js +13 -0
- package/dist/src/constants/duration-constants.js.map +1 -0
- package/dist/src/constants/gate-constants.d.ts +24 -0
- package/dist/src/constants/gate-constants.d.ts.map +1 -0
- package/dist/src/constants/gate-constants.js +26 -0
- package/dist/src/constants/gate-constants.js.map +1 -0
- package/dist/src/constants/index.d.ts +18 -0
- package/dist/src/constants/index.d.ts.map +1 -0
- package/dist/src/constants/index.js +29 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/constants/lock-constants.d.ts +29 -0
- package/dist/src/constants/lock-constants.d.ts.map +1 -0
- package/dist/src/constants/lock-constants.js +31 -0
- package/dist/src/constants/lock-constants.js.map +1 -0
- package/dist/src/constants/object-guards.d.ts +9 -0
- package/dist/src/constants/object-guards.d.ts.map +1 -0
- package/dist/src/constants/object-guards.js +11 -0
- package/dist/src/constants/object-guards.js.map +1 -0
- package/dist/src/constants/section-headings.d.ts +35 -0
- package/dist/src/constants/section-headings.d.ts.map +1 -0
- package/dist/src/constants/section-headings.js +82 -0
- package/dist/src/constants/section-headings.js.map +1 -0
- package/dist/src/constants/wu-cli-constants.d.ts +434 -0
- package/dist/src/constants/wu-cli-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-cli-constants.js +439 -0
- package/dist/src/constants/wu-cli-constants.js.map +1 -0
- package/dist/src/constants/wu-domain-constants.d.ts +296 -0
- package/dist/src/constants/wu-domain-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-domain-constants.js +400 -0
- package/dist/src/constants/wu-domain-constants.js.map +1 -0
- package/dist/src/constants/wu-git-constants.d.ts +2 -0
- package/dist/src/constants/wu-git-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-git-constants.js +7 -0
- package/dist/src/constants/wu-git-constants.js.map +1 -0
- package/dist/src/constants/wu-id-format.d.ts +138 -0
- package/dist/src/constants/wu-id-format.d.ts.map +1 -0
- package/dist/src/constants/wu-id-format.js +265 -0
- package/dist/src/constants/wu-id-format.js.map +1 -0
- package/dist/src/constants/wu-paths-constants.d.ts +254 -0
- package/dist/src/constants/wu-paths-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-paths-constants.js +276 -0
- package/dist/src/constants/wu-paths-constants.js.map +1 -0
- package/dist/src/constants/wu-statuses.d.ts +209 -0
- package/dist/src/constants/wu-statuses.d.ts.map +1 -0
- package/dist/src/constants/wu-statuses.js +245 -0
- package/dist/src/constants/wu-statuses.js.map +1 -0
- package/dist/src/constants/wu-type-helpers.d.ts +28 -0
- package/dist/src/constants/wu-type-helpers.d.ts.map +1 -0
- package/dist/src/constants/wu-type-helpers.js +49 -0
- package/dist/src/constants/wu-type-helpers.js.map +1 -0
- package/dist/src/constants/wu-ui-constants.d.ts +236 -0
- package/dist/src/constants/wu-ui-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-ui-constants.js +238 -0
- package/dist/src/constants/wu-ui-constants.js.map +1 -0
- package/dist/src/constants/wu-validation-constants.d.ts +61 -0
- package/dist/src/constants/wu-validation-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-validation-constants.js +69 -0
- package/dist/src/constants/wu-validation-constants.js.map +1 -0
- package/dist/src/domain/index.d.ts +4 -0
- package/dist/src/domain/index.d.ts.map +1 -0
- package/dist/src/domain/index.js +6 -0
- package/dist/src/domain/index.js.map +1 -0
- package/dist/src/domain/orchestration.constants.d.ts +111 -0
- package/dist/src/domain/orchestration.constants.d.ts.map +1 -0
- package/dist/src/domain/orchestration.constants.js +130 -0
- package/dist/src/domain/orchestration.constants.js.map +1 -0
- package/dist/src/domain/orchestration.schemas.d.ts +307 -0
- package/dist/src/domain/orchestration.schemas.d.ts.map +1 -0
- package/dist/src/domain/orchestration.schemas.js +214 -0
- package/dist/src/domain/orchestration.schemas.js.map +1 -0
- package/dist/src/domain/orchestration.types.d.ts +134 -0
- package/dist/src/domain/orchestration.types.d.ts.map +1 -0
- package/dist/src/domain/orchestration.types.js +5 -0
- package/dist/src/domain/orchestration.types.js.map +1 -0
- package/dist/src/methodology/incremental-test.d.ts +33 -0
- package/dist/src/methodology/incremental-test.d.ts.map +1 -0
- package/dist/src/methodology/incremental-test.js +73 -0
- package/dist/src/methodology/incremental-test.js.map +1 -0
- package/dist/src/methodology/index.d.ts +3 -0
- package/dist/src/methodology/index.d.ts.map +1 -0
- package/dist/src/methodology/index.js +6 -0
- package/dist/src/methodology/index.js.map +1 -0
- package/dist/src/methodology/manual-test-validator.d.ts +97 -0
- package/dist/src/methodology/manual-test-validator.d.ts.map +1 -0
- package/dist/src/methodology/manual-test-validator.js +248 -0
- package/dist/src/methodology/manual-test-validator.js.map +1 -0
- package/dist/src/policy/coverage-gate.d.ts +127 -0
- package/dist/src/policy/coverage-gate.d.ts.map +1 -0
- package/dist/src/policy/coverage-gate.js +211 -0
- package/dist/src/policy/coverage-gate.js.map +1 -0
- package/dist/src/policy/gates-agent-mode.d.ts +107 -0
- package/dist/src/policy/gates-agent-mode.d.ts.map +1 -0
- package/dist/src/policy/gates-agent-mode.js +138 -0
- package/dist/src/policy/gates-agent-mode.js.map +1 -0
- package/dist/src/policy/gates-config-internal.d.ts +54 -0
- package/dist/src/policy/gates-config-internal.d.ts.map +1 -0
- package/dist/src/policy/gates-config-internal.js +108 -0
- package/dist/src/policy/gates-config-internal.js.map +1 -0
- package/dist/src/policy/gates-config.d.ts +67 -0
- package/dist/src/policy/gates-config.d.ts.map +1 -0
- package/dist/src/policy/gates-config.js +193 -0
- package/dist/src/policy/gates-config.js.map +1 -0
- package/dist/src/policy/gates-coverage.d.ts +48 -0
- package/dist/src/policy/gates-coverage.d.ts.map +1 -0
- package/dist/src/policy/gates-coverage.js +182 -0
- package/dist/src/policy/gates-coverage.js.map +1 -0
- package/dist/src/policy/gates-presets.d.ts +51 -0
- package/dist/src/policy/gates-presets.d.ts.map +1 -0
- package/dist/src/policy/gates-presets.js +117 -0
- package/dist/src/policy/gates-presets.js.map +1 -0
- package/dist/src/policy/gates-schemas.d.ts +142 -0
- package/dist/src/policy/gates-schemas.d.ts.map +1 -0
- package/dist/src/policy/gates-schemas.js +67 -0
- package/dist/src/policy/gates-schemas.js.map +1 -0
- package/dist/src/policy/index.d.ts +19 -0
- package/dist/src/policy/index.d.ts.map +1 -0
- package/dist/src/policy/index.js +21 -0
- package/dist/src/policy/index.js.map +1 -0
- package/dist/src/policy/package-manager-resolver.d.ts +79 -0
- package/dist/src/policy/package-manager-resolver.d.ts.map +1 -0
- package/dist/src/policy/package-manager-resolver.js +245 -0
- package/dist/src/policy/package-manager-resolver.js.map +1 -0
- package/dist/src/policy/resolve-policy.d.ts +337 -0
- package/dist/src/policy/resolve-policy.d.ts.map +1 -0
- package/dist/src/policy/resolve-policy.js +353 -0
- package/dist/src/policy/resolve-policy.js.map +1 -0
- package/dist/src/ports/config.ports.d.ts +83 -0
- package/dist/src/ports/config.ports.d.ts.map +1 -0
- package/dist/src/ports/config.ports.js +4 -0
- package/dist/src/ports/config.ports.js.map +1 -0
- package/dist/src/ports/dashboard-renderer.port.d.ts +113 -0
- package/dist/src/ports/dashboard-renderer.port.d.ts.map +1 -0
- package/dist/src/ports/dashboard-renderer.port.js +4 -0
- package/dist/src/ports/dashboard-renderer.port.js.map +1 -0
- package/dist/src/ports/index.d.ts +5 -0
- package/dist/src/ports/index.d.ts.map +1 -0
- package/dist/src/ports/index.js +10 -0
- package/dist/src/ports/index.js.map +1 -0
- package/dist/src/ports/sync-validator.ports.d.ts +52 -0
- package/dist/src/ports/sync-validator.ports.d.ts.map +1 -0
- package/dist/src/ports/sync-validator.ports.js +4 -0
- package/dist/src/ports/sync-validator.ports.js.map +1 -0
- package/dist/src/ports/wu-helpers.ports.d.ts +157 -0
- package/dist/src/ports/wu-helpers.ports.d.ts.map +1 -0
- package/dist/src/ports/wu-helpers.ports.js +4 -0
- package/dist/src/ports/wu-helpers.ports.js.map +1 -0
- package/dist/src/ports/wu-state.ports.d.ts +209 -0
- package/dist/src/ports/wu-state.ports.d.ts.map +1 -0
- package/dist/src/ports/wu-state.ports.js +4 -0
- package/dist/src/ports/wu-state.ports.js.map +1 -0
- package/dist/src/primitives/index.d.ts +2 -0
- package/dist/src/primitives/index.d.ts.map +1 -0
- package/dist/src/primitives/index.js +5 -0
- package/dist/src/primitives/index.js.map +1 -0
- package/dist/src/runtime/index.d.ts +2 -0
- package/dist/src/runtime/index.d.ts.map +1 -0
- package/dist/src/runtime/index.js +6 -0
- package/dist/src/runtime/index.js.map +1 -0
- package/dist/src/runtime/work-classifier.d.ts +103 -0
- package/dist/src/runtime/work-classifier.d.ts.map +1 -0
- package/dist/src/runtime/work-classifier.js +427 -0
- package/dist/src/runtime/work-classifier.js.map +1 -0
- package/dist/src/sandbox/index.d.ts +6 -0
- package/dist/src/sandbox/index.d.ts.map +1 -0
- package/dist/src/sandbox/index.js +10 -0
- package/dist/src/sandbox/index.js.map +1 -0
- package/dist/src/sandbox/sandbox-allowlist.d.ts +16 -0
- package/dist/src/sandbox/sandbox-allowlist.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-allowlist.js +77 -0
- package/dist/src/sandbox/sandbox-allowlist.js.map +1 -0
- package/dist/src/sandbox/sandbox-backend-linux.d.ts +6 -0
- package/dist/src/sandbox/sandbox-backend-linux.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-backend-linux.js +67 -0
- package/dist/src/sandbox/sandbox-backend-linux.js.map +1 -0
- package/dist/src/sandbox/sandbox-backend-macos.d.ts +6 -0
- package/dist/src/sandbox/sandbox-backend-macos.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-backend-macos.js +112 -0
- package/dist/src/sandbox/sandbox-backend-macos.js.map +1 -0
- package/dist/src/sandbox/sandbox-backend-windows.d.ts +6 -0
- package/dist/src/sandbox/sandbox-backend-windows.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-backend-windows.js +30 -0
- package/dist/src/sandbox/sandbox-backend-windows.js.map +1 -0
- package/dist/src/sandbox/sandbox-profile.d.ts +58 -0
- package/dist/src/sandbox/sandbox-profile.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-profile.js +69 -0
- package/dist/src/sandbox/sandbox-profile.js.map +1 -0
- package/dist/src/schemas/index.d.ts +2 -0
- package/dist/src/schemas/index.d.ts.map +1 -0
- package/dist/src/schemas/index.js +5 -0
- package/dist/src/schemas/index.js.map +1 -0
- package/dist/src/state/date-utils.d.ts +66 -0
- package/dist/src/state/date-utils.d.ts.map +1 -0
- package/dist/src/state/date-utils.js +143 -0
- package/dist/src/state/date-utils.js.map +1 -0
- package/dist/src/state/index.d.ts +8 -0
- package/dist/src/state/index.d.ts.map +1 -0
- package/dist/src/state/index.js +15 -0
- package/dist/src/state/index.js.map +1 -0
- package/dist/src/state/state-machine.d.ts +14 -0
- package/dist/src/state/state-machine.d.ts.map +1 -0
- package/dist/src/state/state-machine.js +92 -0
- package/dist/src/state/state-machine.js.map +1 -0
- package/dist/src/state/wu-doc-types.d.ts +48 -0
- package/dist/src/state/wu-doc-types.d.ts.map +1 -0
- package/dist/src/state/wu-doc-types.js +4 -0
- package/dist/src/state/wu-doc-types.js.map +1 -0
- package/dist/src/state/wu-paths.d.ts +275 -0
- package/dist/src/state/wu-paths.d.ts.map +1 -0
- package/dist/src/state/wu-paths.js +335 -0
- package/dist/src/state/wu-paths.js.map +1 -0
- package/dist/src/state/wu-schema.d.ts +831 -0
- package/dist/src/state/wu-schema.d.ts.map +1 -0
- package/dist/src/state/wu-schema.js +934 -0
- package/dist/src/state/wu-schema.js.map +1 -0
- package/dist/src/state/wu-state-schema.d.ts +292 -0
- package/dist/src/state/wu-state-schema.d.ts.map +1 -0
- package/dist/src/state/wu-state-schema.js +215 -0
- package/dist/src/state/wu-state-schema.js.map +1 -0
- package/dist/src/state/wu-yaml.d.ts +113 -0
- package/dist/src/state/wu-yaml.d.ts.map +1 -0
- package/dist/src/state/wu-yaml.js +307 -0
- package/dist/src/state/wu-yaml.js.map +1 -0
- package/dist/tool-impl/wu-lifecycle-tools.d.ts +11 -0
- package/dist/tool-impl/wu-lifecycle-tools.d.ts.map +1 -1
- package/dist/tool-impl/wu-lifecycle-tools.js +17 -0
- package/dist/tool-impl/wu-lifecycle-tools.js.map +1 -1
- package/manifest.yaml +210 -230
- package/package.json +88 -3
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gates Schemas and Types
|
|
3
|
+
*
|
|
4
|
+
* WU-2037: Extracted from gates-config.ts
|
|
5
|
+
*
|
|
6
|
+
* Zod schema definitions, TypeScript types, and interfaces for gates configuration.
|
|
7
|
+
* This module contains only shape definitions -- no runtime logic.
|
|
8
|
+
*
|
|
9
|
+
* @module gates-schemas
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import type { CoverageMode } from './resolve-policy.js';
|
|
13
|
+
/**
|
|
14
|
+
* Schema for a gate command - either a string or an object with options
|
|
15
|
+
*/
|
|
16
|
+
export declare const GateCommandConfigSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
17
|
+
command: z.ZodString;
|
|
18
|
+
continueOnError: z.ZodOptional<z.ZodBoolean>;
|
|
19
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
}, z.core.$strip>]>;
|
|
21
|
+
/**
|
|
22
|
+
* Type for parsed gate command configuration
|
|
23
|
+
*/
|
|
24
|
+
export type GateCommandConfig = z.infer<typeof GateCommandConfigSchema>;
|
|
25
|
+
/**
|
|
26
|
+
* Schema for the gates execution configuration section
|
|
27
|
+
*/
|
|
28
|
+
export declare const GatesExecutionConfigSchema: z.ZodObject<{
|
|
29
|
+
preset: z.ZodOptional<z.ZodString>;
|
|
30
|
+
setup: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
31
|
+
command: z.ZodString;
|
|
32
|
+
continueOnError: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
}, z.core.$strip>]>>;
|
|
35
|
+
format: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
36
|
+
command: z.ZodString;
|
|
37
|
+
continueOnError: z.ZodOptional<z.ZodBoolean>;
|
|
38
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
}, z.core.$strip>]>>;
|
|
40
|
+
lint: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
41
|
+
command: z.ZodString;
|
|
42
|
+
continueOnError: z.ZodOptional<z.ZodBoolean>;
|
|
43
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
}, z.core.$strip>]>>;
|
|
45
|
+
typecheck: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
46
|
+
command: z.ZodString;
|
|
47
|
+
continueOnError: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
49
|
+
}, z.core.$strip>]>>;
|
|
50
|
+
test: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
51
|
+
command: z.ZodString;
|
|
52
|
+
continueOnError: z.ZodOptional<z.ZodBoolean>;
|
|
53
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
54
|
+
}, z.core.$strip>]>>;
|
|
55
|
+
coverage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
56
|
+
command: z.ZodString;
|
|
57
|
+
threshold: z.ZodOptional<z.ZodNumber>;
|
|
58
|
+
}, z.core.$strip>]>>;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
/**
|
|
61
|
+
* Type for gates execution configuration
|
|
62
|
+
*/
|
|
63
|
+
export type GatesExecutionConfig = z.infer<typeof GatesExecutionConfigSchema>;
|
|
64
|
+
/**
|
|
65
|
+
* Parsed gate command ready for execution
|
|
66
|
+
*/
|
|
67
|
+
export interface ParsedGateCommand {
|
|
68
|
+
/** The shell command to execute */
|
|
69
|
+
command: string;
|
|
70
|
+
/** Whether to continue if this gate fails */
|
|
71
|
+
continueOnError: boolean;
|
|
72
|
+
/** Timeout in milliseconds */
|
|
73
|
+
timeout: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* WU-1191: Lane health gate mode
|
|
77
|
+
* Controls how lane health check behaves during gates
|
|
78
|
+
*/
|
|
79
|
+
export type LaneHealthMode = 'warn' | 'error' | 'off';
|
|
80
|
+
/**
|
|
81
|
+
* Schema for lane health mode validation
|
|
82
|
+
*/
|
|
83
|
+
export declare const LaneHealthModeSchema: z.ZodEnum<{
|
|
84
|
+
error: "error";
|
|
85
|
+
warn: "warn";
|
|
86
|
+
off: "off";
|
|
87
|
+
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Default lane health mode (advisory by default)
|
|
90
|
+
*/
|
|
91
|
+
export declare const DEFAULT_LANE_HEALTH_MODE: LaneHealthMode;
|
|
92
|
+
/**
|
|
93
|
+
* WU-1262: Resolved coverage configuration
|
|
94
|
+
* Contains threshold and mode derived from methodology policy
|
|
95
|
+
*/
|
|
96
|
+
export interface CoverageConfig {
|
|
97
|
+
/** Coverage threshold (0-100) */
|
|
98
|
+
threshold: number;
|
|
99
|
+
/** Coverage mode (block, warn, or off) */
|
|
100
|
+
mode: CoverageMode;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* WU-2020: Focused coverage policy interface (ISP-compliant).
|
|
104
|
+
* Single-responsibility: coverage threshold and enforcement mode.
|
|
105
|
+
*/
|
|
106
|
+
export interface CoveragePolicy {
|
|
107
|
+
/** Coverage threshold (0-100) */
|
|
108
|
+
threshold: number;
|
|
109
|
+
/** Coverage mode (block, warn, or off) */
|
|
110
|
+
mode: CoverageMode;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* WU-2020: Focused test runner policy interface (ISP-compliant).
|
|
114
|
+
* Single-responsibility: whether tests are mandatory for completion.
|
|
115
|
+
*/
|
|
116
|
+
export interface TestRunnerPolicy {
|
|
117
|
+
/** Whether tests are required for completion (from methodology.testing) */
|
|
118
|
+
tests_required: boolean;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* WU-1280: Resolved test policy configuration
|
|
122
|
+
* Extends CoverageConfig with tests_required from methodology policy.
|
|
123
|
+
*
|
|
124
|
+
* WU-2020: Now defined as the intersection of CoveragePolicy and
|
|
125
|
+
* TestRunnerPolicy. Consumers that only need coverage or test-runner
|
|
126
|
+
* semantics should prefer the focused interfaces.
|
|
127
|
+
*/
|
|
128
|
+
export interface TestPolicy extends CoveragePolicy, TestRunnerPolicy {
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* WU-1356: Gates commands configuration type
|
|
132
|
+
*/
|
|
133
|
+
export interface GatesCommands {
|
|
134
|
+
test_full: string;
|
|
135
|
+
test_docs_only: string;
|
|
136
|
+
test_incremental: string;
|
|
137
|
+
lint?: string;
|
|
138
|
+
typecheck?: string;
|
|
139
|
+
format?: string;
|
|
140
|
+
migration_verify: string;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=gates-schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates-schemas.d.ts","sourceRoot":"","sources":["../../../src/policy/gates-schemas.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAkBxD;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;mBAAiD,CAAC;AAEtF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBrC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,eAAe,EAAE,OAAO,CAAC;IACzB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;EAAmC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAAuB,CAAC;AAM/D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAW,SAAQ,cAAc,EAAE,gBAAgB;CAAG;AAMvE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Gates Schemas and Types
|
|
5
|
+
*
|
|
6
|
+
* WU-2037: Extracted from gates-config.ts
|
|
7
|
+
*
|
|
8
|
+
* Zod schema definitions, TypeScript types, and interfaces for gates configuration.
|
|
9
|
+
* This module contains only shape definitions -- no runtime logic.
|
|
10
|
+
*
|
|
11
|
+
* @module gates-schemas
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Gate command schemas
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
/**
|
|
18
|
+
* Schema for a gate command object with options
|
|
19
|
+
*/
|
|
20
|
+
const GateCommandObjectSchema = z.object({
|
|
21
|
+
/** The shell command to execute */
|
|
22
|
+
command: z.string(),
|
|
23
|
+
/** Whether to continue if this gate fails (default: false) */
|
|
24
|
+
continueOnError: z.boolean().optional(),
|
|
25
|
+
/** Timeout in milliseconds */
|
|
26
|
+
timeout: z.number().int().positive().optional(),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Schema for a gate command - either a string or an object with options
|
|
30
|
+
*/
|
|
31
|
+
export const GateCommandConfigSchema = z.union([z.string(), GateCommandObjectSchema]);
|
|
32
|
+
/**
|
|
33
|
+
* Schema for the gates execution configuration section
|
|
34
|
+
*/
|
|
35
|
+
export const GatesExecutionConfigSchema = z.object({
|
|
36
|
+
/** Preset to use for default commands (node, python, go, rust, dotnet) */
|
|
37
|
+
preset: z.string().optional(),
|
|
38
|
+
/** Setup command (e.g., install dependencies) */
|
|
39
|
+
setup: GateCommandConfigSchema.optional(),
|
|
40
|
+
/** Format check command */
|
|
41
|
+
format: GateCommandConfigSchema.optional(),
|
|
42
|
+
/** Lint command */
|
|
43
|
+
lint: GateCommandConfigSchema.optional(),
|
|
44
|
+
/** Type check command */
|
|
45
|
+
typecheck: GateCommandConfigSchema.optional(),
|
|
46
|
+
/** Test command */
|
|
47
|
+
test: GateCommandConfigSchema.optional(),
|
|
48
|
+
/** Coverage configuration */
|
|
49
|
+
coverage: z
|
|
50
|
+
.union([
|
|
51
|
+
z.string(),
|
|
52
|
+
z.object({
|
|
53
|
+
command: z.string(),
|
|
54
|
+
threshold: z.number().min(0).max(100).optional(),
|
|
55
|
+
}),
|
|
56
|
+
])
|
|
57
|
+
.optional(),
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Schema for lane health mode validation
|
|
61
|
+
*/
|
|
62
|
+
export const LaneHealthModeSchema = z.enum(['warn', 'error', 'off']);
|
|
63
|
+
/**
|
|
64
|
+
* Default lane health mode (advisory by default)
|
|
65
|
+
*/
|
|
66
|
+
export const DEFAULT_LANE_HEALTH_MODE = 'warn';
|
|
67
|
+
//# sourceMappingURL=gates-schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates-schemas.js","sourceRoot":"","sources":["../../../src/policy/gates-schemas.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,mCAAmC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,8DAA8D;IAC9D,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,8BAA8B;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAOtF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,0EAA0E;IAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,iDAAiD;IACjD,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IACzC,2BAA2B;IAC3B,MAAM,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IAC1C,mBAAmB;IACnB,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IACxC,yBAAyB;IACzB,SAAS,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IAC7C,mBAAmB;IACnB,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IACxC,6BAA6B;IAC7B,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC;QACL,CAAC,CAAC,MAAM,EAAE;QACV,CAAC,CAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;SACjD,CAAC;KACH,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAiCH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAmB,MAAM,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Software Delivery Pack — Policy Barrel
|
|
3
|
+
*
|
|
4
|
+
* WU-2674 (INIT-058 L3): Cohesion-closed policy bundle moved from
|
|
5
|
+
* @lumenflow/core/src/. These modules share tight internal coupling
|
|
6
|
+
* (CoverageMode crosses them) and evolve together.
|
|
7
|
+
*
|
|
8
|
+
* @module packs/software-delivery/policy
|
|
9
|
+
*/
|
|
10
|
+
export * from './gates-schemas.js';
|
|
11
|
+
export * from './resolve-policy.js';
|
|
12
|
+
export * from './coverage-gate.js';
|
|
13
|
+
export * from './gates-config.js';
|
|
14
|
+
export * from './gates-presets.js';
|
|
15
|
+
export * from './gates-config-internal.js';
|
|
16
|
+
export * from './gates-agent-mode.js';
|
|
17
|
+
export * from './gates-coverage.js';
|
|
18
|
+
export * from './package-manager-resolver.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/policy/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Software Delivery Pack — Policy Barrel
|
|
5
|
+
*
|
|
6
|
+
* WU-2674 (INIT-058 L3): Cohesion-closed policy bundle moved from
|
|
7
|
+
* @lumenflow/core/src/. These modules share tight internal coupling
|
|
8
|
+
* (CoverageMode crosses them) and evolve together.
|
|
9
|
+
*
|
|
10
|
+
* @module packs/software-delivery/policy
|
|
11
|
+
*/
|
|
12
|
+
export * from './gates-schemas.js';
|
|
13
|
+
export * from './resolve-policy.js';
|
|
14
|
+
export * from './coverage-gate.js';
|
|
15
|
+
export * from './gates-config.js';
|
|
16
|
+
export * from './gates-presets.js';
|
|
17
|
+
export * from './gates-config-internal.js';
|
|
18
|
+
export * from './gates-agent-mode.js';
|
|
19
|
+
export * from './gates-coverage.js';
|
|
20
|
+
export * from './package-manager-resolver.js';
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/policy/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;;GAQG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { GatesCommands } from './gates-schemas.js';
|
|
2
|
+
declare const SUPPORTED_PACKAGE_MANAGERS: readonly ["pnpm", "npm", "yarn", "bun"];
|
|
3
|
+
declare const SUPPORTED_TEST_RUNNERS: readonly ["vitest", "jest", "mocha"];
|
|
4
|
+
/**
|
|
5
|
+
* WU-1356: Supported package managers type
|
|
6
|
+
*/
|
|
7
|
+
type PackageManager = (typeof SUPPORTED_PACKAGE_MANAGERS)[number];
|
|
8
|
+
/**
|
|
9
|
+
* WU-1356: Supported test runners type
|
|
10
|
+
*/
|
|
11
|
+
type TestRunner = (typeof SUPPORTED_TEST_RUNNERS)[number];
|
|
12
|
+
export type ScopedUnitTestExecutionPlan = {
|
|
13
|
+
mode: 'direct';
|
|
14
|
+
runner: TestRunner;
|
|
15
|
+
args: string[];
|
|
16
|
+
} | {
|
|
17
|
+
mode: 'default-flow';
|
|
18
|
+
preset: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function resolveGatePreset(projectRoot: string): string | undefined;
|
|
21
|
+
export declare function resolveScopedUnitTestExecutionPlan(options: {
|
|
22
|
+
projectRoot: string;
|
|
23
|
+
scopedUnitTests: string[];
|
|
24
|
+
}): ScopedUnitTestExecutionPlan | null;
|
|
25
|
+
export declare function formatScopedUnitTestFallbackMessage(plan: Extract<ScopedUnitTestExecutionPlan, {
|
|
26
|
+
mode: 'default-flow';
|
|
27
|
+
}>): string;
|
|
28
|
+
/**
|
|
29
|
+
* WU-1356: Resolve package manager from configuration
|
|
30
|
+
*
|
|
31
|
+
* Reads the package_manager field from workspace.yaml software_delivery.
|
|
32
|
+
* Returns 'pnpm' as default if not configured.
|
|
33
|
+
*
|
|
34
|
+
* @param projectRoot - Project root directory
|
|
35
|
+
* @returns Resolved package manager ('pnpm', 'npm', 'yarn', or 'bun')
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolvePackageManager(projectRoot: string): PackageManager;
|
|
38
|
+
/**
|
|
39
|
+
* WU-1356: Resolve test runner from configuration
|
|
40
|
+
*
|
|
41
|
+
* Reads the test_runner field from workspace.yaml software_delivery.
|
|
42
|
+
* Returns 'vitest' as default if not configured.
|
|
43
|
+
*
|
|
44
|
+
* @param projectRoot - Project root directory
|
|
45
|
+
* @returns Resolved test runner ('vitest', 'jest', or 'mocha')
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveTestRunner(projectRoot: string): TestRunner;
|
|
48
|
+
/**
|
|
49
|
+
* WU-1356: Resolve build command from configuration
|
|
50
|
+
*
|
|
51
|
+
* Reads the build_command field from workspace.yaml software_delivery.
|
|
52
|
+
* If not configured, uses default based on package_manager.
|
|
53
|
+
*
|
|
54
|
+
* @param projectRoot - Project root directory
|
|
55
|
+
* @returns Resolved build command
|
|
56
|
+
*/
|
|
57
|
+
export declare function resolveBuildCommand(projectRoot: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* WU-1356: Resolve gates commands from configuration
|
|
60
|
+
*
|
|
61
|
+
* Reads gates.commands from workspace.yaml software_delivery.
|
|
62
|
+
* Merges with defaults based on package_manager if not fully specified.
|
|
63
|
+
*
|
|
64
|
+
* @param projectRoot - Project root directory
|
|
65
|
+
* @returns Resolved gates commands configuration
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolveGatesCommands(projectRoot: string): GatesCommands;
|
|
68
|
+
/**
|
|
69
|
+
* WU-1356: Get ignore patterns for test runner
|
|
70
|
+
*
|
|
71
|
+
* Returns patterns to ignore when detecting changed tests,
|
|
72
|
+
* based on the test runner configuration.
|
|
73
|
+
*
|
|
74
|
+
* @param testRunner - Test runner type (vitest, jest, mocha)
|
|
75
|
+
* @returns Array of ignore patterns
|
|
76
|
+
*/
|
|
77
|
+
export declare function getIgnorePatterns(testRunner: TestRunner): string[];
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=package-manager-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager-resolver.d.ts","sourceRoot":"","sources":["../../../src/policy/package-manager-resolver.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAcxD,QAAA,MAAM,0BAA0B,yCAA0C,CAAC;AAC3E,QAAA,MAAM,sBAAsB,sCAAuC,CAAC;AAIpE;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;GAEG;AACH,KAAK,UAAU,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,MAAM,2BAA2B,GACnC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAoFN,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWzE;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,GAAG,2BAA2B,GAAG,IAAI,CAoBrC;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,OAAO,CAAC,2BAA2B,EAAE;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,GACnE,MAAM,CAKR;AAMD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAazE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAajE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAe/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA+BvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,CAKlE"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Package Manager and Test Runner Resolution
|
|
5
|
+
*
|
|
6
|
+
* WU-2037: Extracted from gates-config.ts
|
|
7
|
+
*
|
|
8
|
+
* Resolves package manager, test runner, build commands, gates commands,
|
|
9
|
+
* and ignore patterns from workspace.yaml software_delivery configuration.
|
|
10
|
+
*
|
|
11
|
+
* @module package-manager-resolver
|
|
12
|
+
*/
|
|
13
|
+
import { asRecord, isString } from '../constants/object-guards.js';
|
|
14
|
+
import { GATES_RUNTIME_DEFAULTS, SOFTWARE_DELIVERY_FIELDS, GATES_FIELDS, GATES_COMMAND_FIELDS, loadSoftwareDeliveryConfig, getGatesSection, } from './gates-config-internal.js';
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Supported values
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
const SUPPORTED_PACKAGE_MANAGERS = ['pnpm', 'npm', 'yarn', 'bun'];
|
|
19
|
+
const SUPPORTED_TEST_RUNNERS = ['vitest', 'jest', 'mocha'];
|
|
20
|
+
const GATE_PRESET_FIELD = 'preset';
|
|
21
|
+
const NODE_GATE_PRESET = 'node';
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Default command tables
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* WU-1356: Default gates commands by package manager
|
|
27
|
+
*
|
|
28
|
+
* Provides sensible defaults for different package manager and test runner combinations.
|
|
29
|
+
*/
|
|
30
|
+
const DEFAULT_GATES_COMMANDS = {
|
|
31
|
+
pnpm: {
|
|
32
|
+
test_full: 'pnpm turbo run test',
|
|
33
|
+
test_docs_only: '',
|
|
34
|
+
test_incremental: 'pnpm vitest run --changed origin/main',
|
|
35
|
+
lint: 'pnpm lint',
|
|
36
|
+
typecheck: 'pnpm typecheck',
|
|
37
|
+
format: 'pnpm format:check',
|
|
38
|
+
migration_verify: '',
|
|
39
|
+
},
|
|
40
|
+
npm: {
|
|
41
|
+
test_full: 'npm test',
|
|
42
|
+
test_docs_only: '',
|
|
43
|
+
test_incremental: 'npm test -- --onlyChanged',
|
|
44
|
+
lint: 'npm run lint',
|
|
45
|
+
typecheck: 'npm run typecheck',
|
|
46
|
+
format: 'npm run format:check',
|
|
47
|
+
migration_verify: '',
|
|
48
|
+
},
|
|
49
|
+
yarn: {
|
|
50
|
+
test_full: 'yarn test',
|
|
51
|
+
test_docs_only: '',
|
|
52
|
+
test_incremental: 'yarn test --onlyChanged',
|
|
53
|
+
lint: 'yarn lint',
|
|
54
|
+
typecheck: 'yarn typecheck',
|
|
55
|
+
format: 'yarn format:check',
|
|
56
|
+
migration_verify: '',
|
|
57
|
+
},
|
|
58
|
+
bun: {
|
|
59
|
+
test_full: 'bun test',
|
|
60
|
+
test_docs_only: '',
|
|
61
|
+
test_incremental: 'bun test --changed',
|
|
62
|
+
lint: 'bun run lint',
|
|
63
|
+
typecheck: 'bun run typecheck',
|
|
64
|
+
format: 'bun run format:check',
|
|
65
|
+
migration_verify: '',
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* WU-1356: Default build commands by package manager
|
|
70
|
+
*/
|
|
71
|
+
const DEFAULT_BUILD_COMMANDS = {
|
|
72
|
+
pnpm: 'pnpm --filter @lumenflow/cli build',
|
|
73
|
+
npm: 'npm run build --workspace @lumenflow/cli',
|
|
74
|
+
yarn: 'yarn workspace @lumenflow/cli build',
|
|
75
|
+
bun: 'bun run --filter @lumenflow/cli build',
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* WU-1356: Ignore patterns by test runner
|
|
79
|
+
*
|
|
80
|
+
* Different test runners use different cache directories that should be ignored.
|
|
81
|
+
*/
|
|
82
|
+
const IGNORE_PATTERNS_BY_RUNNER = {
|
|
83
|
+
vitest: ['.turbo'],
|
|
84
|
+
jest: ['coverage', '.jest-cache'],
|
|
85
|
+
mocha: ['coverage', '.nyc_output'],
|
|
86
|
+
};
|
|
87
|
+
const SCOPED_UNIT_TEST_ARGS_BY_RUNNER = {
|
|
88
|
+
vitest: (paths) => ['vitest', 'run', ...paths, '--passWithNoTests', '--maxWorkers=1'],
|
|
89
|
+
jest: (paths) => ['jest', ...paths, '--passWithNoTests'],
|
|
90
|
+
mocha: (paths) => ['mocha', ...paths],
|
|
91
|
+
};
|
|
92
|
+
function normalizeScopedUnitTestPaths(scopedUnitTests) {
|
|
93
|
+
return scopedUnitTests
|
|
94
|
+
.filter((entry) => typeof entry === 'string')
|
|
95
|
+
.map((entry) => entry.trim())
|
|
96
|
+
.filter(Boolean);
|
|
97
|
+
}
|
|
98
|
+
export function resolveGatePreset(projectRoot) {
|
|
99
|
+
const gates = getGatesSection(projectRoot);
|
|
100
|
+
const execution = asRecord(gates?.[GATES_FIELDS.EXECUTION]);
|
|
101
|
+
const preset = execution?.[GATE_PRESET_FIELD];
|
|
102
|
+
if (!isString(preset)) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
const normalized = preset.trim();
|
|
106
|
+
return normalized.length > 0 ? normalized : undefined;
|
|
107
|
+
}
|
|
108
|
+
export function resolveScopedUnitTestExecutionPlan(options) {
|
|
109
|
+
const normalizedPaths = normalizeScopedUnitTestPaths(options.scopedUnitTests);
|
|
110
|
+
if (normalizedPaths.length === 0) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const preset = resolveGatePreset(options.projectRoot);
|
|
114
|
+
if (preset && preset !== NODE_GATE_PRESET) {
|
|
115
|
+
return {
|
|
116
|
+
mode: 'default-flow',
|
|
117
|
+
preset,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const runner = resolveTestRunner(options.projectRoot);
|
|
121
|
+
return {
|
|
122
|
+
mode: 'direct',
|
|
123
|
+
runner,
|
|
124
|
+
args: SCOPED_UNIT_TEST_ARGS_BY_RUNNER[runner](normalizedPaths),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export function formatScopedUnitTestFallbackMessage(plan) {
|
|
128
|
+
return (`gates.execution.preset "${plan.preset}" does not support path-scoped tests.unit execution; ` +
|
|
129
|
+
'falling back to the configured default test flow.');
|
|
130
|
+
}
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// Public API
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
/**
|
|
135
|
+
* WU-1356: Resolve package manager from configuration
|
|
136
|
+
*
|
|
137
|
+
* Reads the package_manager field from workspace.yaml software_delivery.
|
|
138
|
+
* Returns 'pnpm' as default if not configured.
|
|
139
|
+
*
|
|
140
|
+
* @param projectRoot - Project root directory
|
|
141
|
+
* @returns Resolved package manager ('pnpm', 'npm', 'yarn', or 'bun')
|
|
142
|
+
*/
|
|
143
|
+
export function resolvePackageManager(projectRoot) {
|
|
144
|
+
const softwareDelivery = loadSoftwareDeliveryConfig(projectRoot);
|
|
145
|
+
if (!softwareDelivery) {
|
|
146
|
+
return GATES_RUNTIME_DEFAULTS.DEFAULT_PACKAGE_MANAGER;
|
|
147
|
+
}
|
|
148
|
+
const pm = softwareDelivery[SOFTWARE_DELIVERY_FIELDS.PACKAGE_MANAGER] ??
|
|
149
|
+
softwareDelivery[SOFTWARE_DELIVERY_FIELDS.PACKAGE_MANAGER_CAMEL];
|
|
150
|
+
if (isString(pm) && SUPPORTED_PACKAGE_MANAGERS.includes(pm)) {
|
|
151
|
+
return pm;
|
|
152
|
+
}
|
|
153
|
+
return GATES_RUNTIME_DEFAULTS.DEFAULT_PACKAGE_MANAGER;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* WU-1356: Resolve test runner from configuration
|
|
157
|
+
*
|
|
158
|
+
* Reads the test_runner field from workspace.yaml software_delivery.
|
|
159
|
+
* Returns 'vitest' as default if not configured.
|
|
160
|
+
*
|
|
161
|
+
* @param projectRoot - Project root directory
|
|
162
|
+
* @returns Resolved test runner ('vitest', 'jest', or 'mocha')
|
|
163
|
+
*/
|
|
164
|
+
export function resolveTestRunner(projectRoot) {
|
|
165
|
+
const softwareDelivery = loadSoftwareDeliveryConfig(projectRoot);
|
|
166
|
+
if (!softwareDelivery) {
|
|
167
|
+
return GATES_RUNTIME_DEFAULTS.DEFAULT_TEST_RUNNER;
|
|
168
|
+
}
|
|
169
|
+
const runner = softwareDelivery[SOFTWARE_DELIVERY_FIELDS.TEST_RUNNER] ??
|
|
170
|
+
softwareDelivery[SOFTWARE_DELIVERY_FIELDS.TEST_RUNNER_CAMEL];
|
|
171
|
+
if (isString(runner) && SUPPORTED_TEST_RUNNERS.includes(runner)) {
|
|
172
|
+
return runner;
|
|
173
|
+
}
|
|
174
|
+
return GATES_RUNTIME_DEFAULTS.DEFAULT_TEST_RUNNER;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* WU-1356: Resolve build command from configuration
|
|
178
|
+
*
|
|
179
|
+
* Reads the build_command field from workspace.yaml software_delivery.
|
|
180
|
+
* If not configured, uses default based on package_manager.
|
|
181
|
+
*
|
|
182
|
+
* @param projectRoot - Project root directory
|
|
183
|
+
* @returns Resolved build command
|
|
184
|
+
*/
|
|
185
|
+
export function resolveBuildCommand(projectRoot) {
|
|
186
|
+
const defaultPm = resolvePackageManager(projectRoot);
|
|
187
|
+
const softwareDelivery = loadSoftwareDeliveryConfig(projectRoot);
|
|
188
|
+
if (!softwareDelivery) {
|
|
189
|
+
return DEFAULT_BUILD_COMMANDS[defaultPm];
|
|
190
|
+
}
|
|
191
|
+
const configuredBuildCommand = softwareDelivery[SOFTWARE_DELIVERY_FIELDS.BUILD_COMMAND] ??
|
|
192
|
+
softwareDelivery[SOFTWARE_DELIVERY_FIELDS.BUILD_COMMAND_CAMEL];
|
|
193
|
+
if (isString(configuredBuildCommand) && configuredBuildCommand.length > 0) {
|
|
194
|
+
return configuredBuildCommand;
|
|
195
|
+
}
|
|
196
|
+
return DEFAULT_BUILD_COMMANDS[defaultPm];
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* WU-1356: Resolve gates commands from configuration
|
|
200
|
+
*
|
|
201
|
+
* Reads gates.commands from workspace.yaml software_delivery.
|
|
202
|
+
* Merges with defaults based on package_manager if not fully specified.
|
|
203
|
+
*
|
|
204
|
+
* @param projectRoot - Project root directory
|
|
205
|
+
* @returns Resolved gates commands configuration
|
|
206
|
+
*/
|
|
207
|
+
export function resolveGatesCommands(projectRoot) {
|
|
208
|
+
const pm = resolvePackageManager(projectRoot);
|
|
209
|
+
const defaults = DEFAULT_GATES_COMMANDS[pm];
|
|
210
|
+
const gates = getGatesSection(projectRoot);
|
|
211
|
+
if (!gates) {
|
|
212
|
+
return defaults;
|
|
213
|
+
}
|
|
214
|
+
const commands = asRecord(gates[GATES_FIELDS.COMMANDS]);
|
|
215
|
+
if (!commands) {
|
|
216
|
+
return defaults;
|
|
217
|
+
}
|
|
218
|
+
// Merge user config with defaults (user config wins)
|
|
219
|
+
return {
|
|
220
|
+
test_full: commands[GATES_COMMAND_FIELDS.TEST_FULL] ?? defaults.test_full,
|
|
221
|
+
test_docs_only: commands[GATES_COMMAND_FIELDS.TEST_DOCS_ONLY] ??
|
|
222
|
+
defaults.test_docs_only,
|
|
223
|
+
test_incremental: commands[GATES_COMMAND_FIELDS.TEST_INCREMENTAL] ??
|
|
224
|
+
defaults.test_incremental,
|
|
225
|
+
lint: commands[GATES_COMMAND_FIELDS.LINT] ?? defaults.lint,
|
|
226
|
+
typecheck: commands[GATES_COMMAND_FIELDS.TYPECHECK] ?? defaults.typecheck,
|
|
227
|
+
format: commands[GATES_COMMAND_FIELDS.FORMAT] ?? defaults.format,
|
|
228
|
+
migration_verify: commands[GATES_COMMAND_FIELDS.MIGRATION_VERIFY] ??
|
|
229
|
+
defaults.migration_verify,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* WU-1356: Get ignore patterns for test runner
|
|
234
|
+
*
|
|
235
|
+
* Returns patterns to ignore when detecting changed tests,
|
|
236
|
+
* based on the test runner configuration.
|
|
237
|
+
*
|
|
238
|
+
* @param testRunner - Test runner type (vitest, jest, mocha)
|
|
239
|
+
* @returns Array of ignore patterns
|
|
240
|
+
*/
|
|
241
|
+
export function getIgnorePatterns(testRunner) {
|
|
242
|
+
return (IGNORE_PATTERNS_BY_RUNNER[testRunner] ??
|
|
243
|
+
IGNORE_PATTERNS_BY_RUNNER[GATES_RUNTIME_DEFAULTS.DEFAULT_TEST_RUNNER]);
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=package-manager-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager-resolver.js","sourceRoot":"","sources":["../../../src/policy/package-manager-resolver.ts"],"names":[],"mappings":"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"}
|