@haibun/core 4.0.0-alpha.1 → 4.0.0-alpha.3
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/build/currentVersion.d.ts +1 -1
- package/build/currentVersion.js +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/kireji/converter.d.ts +2 -2
- package/build/kireji/converter.d.ts.map +1 -1
- package/build/kireji/converter.js +12 -9
- package/build/kireji/converter.js.map +1 -1
- package/build/kireji/withAction.d.ts +16 -4
- package/build/kireji/withAction.d.ts.map +1 -1
- package/build/kireji/withAction.js +40 -11
- package/build/kireji/withAction.js.map +1 -1
- package/build/lib/EventLogger.d.ts +5 -5
- package/build/lib/EventLogger.d.ts.map +1 -1
- package/build/lib/EventLogger.js +39 -37
- package/build/lib/EventLogger.js.map +1 -1
- package/build/lib/PhaseRunner.d.ts +3 -3
- package/build/lib/PhaseRunner.d.ts.map +1 -1
- package/build/lib/PhaseRunner.js +7 -5
- package/build/lib/PhaseRunner.js.map +1 -1
- package/build/lib/astepper.d.ts +90 -13
- package/build/lib/astepper.d.ts.map +1 -1
- package/build/lib/astepper.js +35 -6
- package/build/lib/astepper.js.map +1 -1
- package/build/lib/base-prompt-manager.d.ts +1 -1
- package/build/lib/base-prompt-manager.d.ts.map +1 -1
- package/build/lib/base-prompt-manager.js.map +1 -1
- package/build/lib/capture-locator.d.ts +1 -1
- package/build/lib/capture-locator.d.ts.map +1 -1
- package/build/lib/capture-locator.js +5 -5
- package/build/lib/capture-locator.js.map +1 -1
- package/build/lib/core/flow-runner.d.ts +8 -7
- package/build/lib/core/flow-runner.d.ts.map +1 -1
- package/build/lib/core/flow-runner.js +42 -71
- package/build/lib/core/flow-runner.js.map +1 -1
- package/build/lib/core-domains.d.ts +2 -2
- package/build/lib/core-domains.d.ts.map +1 -1
- package/build/lib/core-domains.js +17 -18
- package/build/lib/core-domains.js.map +1 -1
- package/build/lib/defs.d.ts +2 -13
- package/build/lib/defs.d.ts.map +1 -1
- package/build/lib/defs.js.map +1 -1
- package/build/lib/document-content.d.ts +18 -0
- package/build/lib/document-content.d.ts.map +1 -0
- package/build/lib/document-content.js +158 -0
- package/build/lib/document-content.js.map +1 -0
- package/build/lib/domains.d.ts +31 -0
- package/build/lib/domains.d.ts.map +1 -0
- package/build/lib/domains.js +105 -0
- package/build/lib/domains.js.map +1 -0
- package/build/lib/execution.d.ts +304 -0
- package/build/lib/execution.d.ts.map +1 -0
- package/build/lib/execution.js +23 -0
- package/build/lib/execution.js.map +1 -0
- package/build/lib/feature-variables.d.ts +22 -49
- package/build/lib/feature-variables.d.ts.map +1 -1
- package/build/lib/feature-variables.js +143 -210
- package/build/lib/feature-variables.js.map +1 -1
- package/build/lib/features.d.ts +2 -2
- package/build/lib/features.d.ts.map +1 -1
- package/build/lib/features.js +13 -17
- package/build/lib/features.js.map +1 -1
- package/build/lib/fixme.d.ts.map +1 -1
- package/build/lib/host-id.d.ts +44 -0
- package/build/lib/host-id.d.ts.map +1 -0
- package/build/lib/host-id.js +51 -0
- package/build/lib/host-id.js.map +1 -0
- package/build/lib/http-observations.d.ts +15 -2
- package/build/lib/http-observations.d.ts.map +1 -1
- package/build/lib/http-observations.js +40 -23
- package/build/lib/http-observations.js.map +1 -1
- package/build/lib/hypermedia.d.ts +62 -0
- package/build/lib/hypermedia.d.ts.map +1 -0
- package/build/lib/hypermedia.js +228 -0
- package/build/lib/hypermedia.js.map +1 -0
- package/build/lib/namedVars.d.ts +2 -2
- package/build/lib/namedVars.d.ts.map +1 -1
- package/build/lib/namedVars.js +25 -30
- package/build/lib/namedVars.js.map +1 -1
- package/build/lib/node-http-events.d.ts +3 -3
- package/build/lib/node-http-events.d.ts.map +1 -1
- package/build/lib/node-http-events.js +26 -26
- package/build/lib/node-http-events.js.map +1 -1
- package/build/lib/populateActionArgs.d.ts +4 -4
- package/build/lib/populateActionArgs.d.ts.map +1 -1
- package/build/lib/populateActionArgs.js +4 -6
- package/build/lib/populateActionArgs.js.map +1 -1
- package/build/lib/prompter.d.ts.map +1 -1
- package/build/lib/prompter.js +10 -7
- package/build/lib/prompter.js.map +1 -1
- package/build/lib/quad-store.d.ts +34 -10
- package/build/lib/quad-store.d.ts.map +1 -1
- package/build/lib/quad-store.js +169 -21
- package/build/lib/quad-store.js.map +1 -1
- package/build/lib/quad-types.d.ts +80 -9
- package/build/lib/quad-types.d.ts.map +1 -1
- package/build/lib/quad-types.js +46 -2
- package/build/lib/quad-types.js.map +1 -1
- package/build/lib/readline-prompter.d.ts +1 -1
- package/build/lib/readline-prompter.js +4 -4
- package/build/lib/remote-stepper-proxy.d.ts +56 -0
- package/build/lib/remote-stepper-proxy.d.ts.map +1 -0
- package/build/lib/remote-stepper-proxy.js +123 -0
- package/build/lib/remote-stepper-proxy.js.map +1 -0
- package/build/lib/resolver-features.d.ts +1 -1
- package/build/lib/resolver-features.d.ts.map +1 -1
- package/build/lib/resolver-features.js +2 -2
- package/build/lib/resolver-features.js.map +1 -1
- package/build/lib/resources.d.ts +461 -0
- package/build/lib/resources.d.ts.map +1 -0
- package/build/lib/resources.js +249 -0
- package/build/lib/resources.js.map +1 -0
- package/build/lib/rpc-client.d.ts +68 -0
- package/build/lib/rpc-client.d.ts.map +1 -0
- package/build/lib/rpc-client.js +186 -0
- package/build/lib/rpc-client.js.map +1 -0
- package/build/lib/sse-subscriber.d.ts +57 -0
- package/build/lib/sse-subscriber.d.ts.map +1 -0
- package/build/lib/sse-subscriber.js +110 -0
- package/build/lib/sse-subscriber.js.map +1 -0
- package/build/lib/step-dispatch.d.ts +92 -28
- package/build/lib/step-dispatch.d.ts.map +1 -1
- package/build/lib/step-dispatch.js +331 -75
- package/build/lib/step-dispatch.js.map +1 -1
- package/build/lib/step-validation.d.ts +3 -3
- package/build/lib/step-validation.d.ts.map +1 -1
- package/build/lib/step-validation.js +2 -2
- package/build/lib/step-validation.js.map +1 -1
- package/build/lib/stepper-cycles.d.ts +5 -0
- package/build/lib/stepper-cycles.d.ts.map +1 -0
- package/build/lib/stepper-cycles.js +31 -0
- package/build/lib/stepper-cycles.js.map +1 -0
- package/build/lib/stepper-registry.d.ts +6 -3
- package/build/lib/stepper-registry.d.ts.map +1 -1
- package/build/lib/stepper-registry.js +9 -8
- package/build/lib/stepper-registry.js.map +1 -1
- package/build/lib/subprocess-runner.d.ts +35 -0
- package/build/lib/subprocess-runner.d.ts.map +1 -0
- package/build/lib/subprocess-runner.js +60 -0
- package/build/lib/subprocess-runner.js.map +1 -0
- package/build/lib/subprocess-transport.d.ts +37 -0
- package/build/lib/subprocess-transport.d.ts.map +1 -0
- package/build/lib/subprocess-transport.js +113 -0
- package/build/lib/subprocess-transport.js.map +1 -0
- package/build/lib/test/EventCollectorStepper.d.ts +3 -3
- package/build/lib/test/EventCollectorStepper.d.ts.map +1 -1
- package/build/lib/test/EventCollectorStepper.js +3 -3
- package/build/lib/test/EventCollectorStepper.js.map +1 -1
- package/build/lib/test/SetTimeStepper.d.ts +3 -3
- package/build/lib/test/SetTimeStepper.d.ts.map +1 -1
- package/build/lib/test/SetTimeStepper.js +7 -7
- package/build/lib/test/SetTimeStepper.js.map +1 -1
- package/build/lib/test/TestSteps.d.ts +7 -7
- package/build/lib/test/TestSteps.d.ts.map +1 -1
- package/build/lib/test/TestSteps.js +7 -7
- package/build/lib/test/TestSteps.js.map +1 -1
- package/build/lib/test/TestStepsWithOptions.d.ts +6 -6
- package/build/lib/test/TestStepsWithOptions.js +7 -7
- package/build/lib/test/lib.d.ts +3 -3
- package/build/lib/test/lib.d.ts.map +1 -1
- package/build/lib/test/lib.js +27 -21
- package/build/lib/test/lib.js.map +1 -1
- package/build/lib/test/resolvedTestFeatures.d.ts +6 -6
- package/build/lib/test/resolvedTestFeatures.d.ts.map +1 -1
- package/build/lib/test/resolvedTestFeatures.js +5 -5
- package/build/lib/test/subprocess-fixture.d.ts +8 -0
- package/build/lib/test/subprocess-fixture.d.ts.map +1 -0
- package/build/lib/test/subprocess-fixture.js +27 -0
- package/build/lib/test/subprocess-fixture.js.map +1 -0
- package/build/lib/ttag.d.ts +7 -1
- package/build/lib/ttag.d.ts.map +1 -1
- package/build/lib/ttag.js +5 -4
- package/build/lib/ttag.js.map +1 -1
- package/build/lib/util/dot-path.d.ts +14 -0
- package/build/lib/util/dot-path.d.ts.map +1 -0
- package/build/lib/util/dot-path.js +51 -0
- package/build/lib/util/dot-path.js.map +1 -0
- package/build/lib/util/index.d.ts +10 -24
- package/build/lib/util/index.d.ts.map +1 -1
- package/build/lib/util/index.js +43 -93
- package/build/lib/util/index.js.map +1 -1
- package/build/lib/util/node/actualURI.d.ts +4 -0
- package/build/lib/util/node/actualURI.d.ts.map +1 -0
- package/build/lib/util/node/actualURI.js +10 -0
- package/build/lib/util/node/actualURI.js.map +1 -0
- package/build/lib/util/node/module-loader.d.ts +14 -0
- package/build/lib/util/node/module-loader.d.ts.map +1 -0
- package/build/lib/util/node/module-loader.js +51 -0
- package/build/lib/util/node/module-loader.js.map +1 -0
- package/build/lib/util/node/workspace-lib.d.ts +15 -0
- package/build/lib/util/node/workspace-lib.d.ts.map +1 -0
- package/build/lib/util/node/workspace-lib.js +119 -0
- package/build/lib/util/node/workspace-lib.js.map +1 -0
- package/build/lib/util/secret-utils.d.ts.map +1 -1
- package/build/lib/util/secret-utils.js +2 -2
- package/build/lib/util/secret-utils.js.map +1 -1
- package/build/lib/vertex-crud.d.ts +22 -0
- package/build/lib/vertex-crud.d.ts.map +1 -0
- package/build/lib/vertex-crud.js +73 -0
- package/build/lib/vertex-crud.js.map +1 -0
- package/build/lib/workspace-discovery.d.ts +1 -1
- package/build/lib/workspace-discovery.d.ts.map +1 -1
- package/build/lib/workspace-discovery.js +10 -10
- package/build/lib/workspace-discovery.js.map +1 -1
- package/build/lib/zcap-like-authority.d.ts +38 -0
- package/build/lib/zcap-like-authority.d.ts.map +1 -0
- package/build/lib/zcap-like-authority.js +56 -0
- package/build/lib/zcap-like-authority.js.map +1 -0
- package/build/monitor/index.d.ts +1 -1
- package/build/monitor/index.d.ts.map +1 -1
- package/build/monitor/index.js +1 -1
- package/build/monitor/index.js.map +1 -1
- package/build/phases/Executor.d.ts +31 -7
- package/build/phases/Executor.d.ts.map +1 -1
- package/build/phases/Executor.js +202 -217
- package/build/phases/Executor.js.map +1 -1
- package/build/phases/Resolver.d.ts +2 -2
- package/build/phases/Resolver.d.ts.map +1 -1
- package/build/phases/Resolver.js +35 -30
- package/build/phases/Resolver.js.map +1 -1
- package/build/phases/collector.d.ts +3 -3
- package/build/phases/collector.d.ts.map +1 -1
- package/build/phases/collector.js +19 -17
- package/build/phases/collector.js.map +1 -1
- package/build/run-policy/run-policy-schema.d.ts +3 -5
- package/build/run-policy/run-policy-schema.d.ts.map +1 -1
- package/build/run-policy/run-policy-schema.js +41 -37
- package/build/run-policy/run-policy-schema.js.map +1 -1
- package/build/run-policy/run-policy-types.d.ts +1 -1
- package/build/run-policy/run-policy-types.d.ts.map +1 -1
- package/build/run-policy/run-policy-types.js +19 -16
- package/build/run-policy/run-policy-types.js.map +1 -1
- package/build/runner.d.ts +4 -4
- package/build/runner.d.ts.map +1 -1
- package/build/runner.js +15 -13
- package/build/runner.js.map +1 -1
- package/build/schema/protocol.d.ts +155 -63
- package/build/schema/protocol.d.ts.map +1 -1
- package/build/schema/protocol.js +177 -148
- package/build/schema/protocol.js.map +1 -1
- package/build/steps/activities-stepper.d.ts +14 -13
- package/build/steps/activities-stepper.d.ts.map +1 -1
- package/build/steps/activities-stepper.js +116 -78
- package/build/steps/activities-stepper.js.map +1 -1
- package/build/steps/conformance.d.ts +5 -5
- package/build/steps/conformance.js +4 -4
- package/build/steps/console-monitor-stepper.d.ts +2 -2
- package/build/steps/console-monitor-stepper.d.ts.map +1 -1
- package/build/steps/console-monitor-stepper.js +22 -22
- package/build/steps/console-monitor-stepper.js.map +1 -1
- package/build/steps/debugger-stepper.d.ts +11 -11
- package/build/steps/debugger-stepper.d.ts.map +1 -1
- package/build/steps/debugger-stepper.js +65 -64
- package/build/steps/debugger-stepper.js.map +1 -1
- package/build/steps/finalizer-stepper.d.ts +3 -4
- package/build/steps/finalizer-stepper.d.ts.map +1 -1
- package/build/steps/finalizer-stepper.js +16 -19
- package/build/steps/finalizer-stepper.js.map +1 -1
- package/build/steps/haibun.d.ts +27 -20
- package/build/steps/haibun.d.ts.map +1 -1
- package/build/steps/haibun.js +76 -67
- package/build/steps/haibun.js.map +1 -1
- package/build/steps/lib/tts.d.ts +1 -1
- package/build/steps/lib/tts.d.ts.map +1 -1
- package/build/steps/lib/tts.js +28 -28
- package/build/steps/lib/tts.js.map +1 -1
- package/build/steps/logic-stepper.d.ts +5 -5
- package/build/steps/logic-stepper.d.ts.map +1 -1
- package/build/steps/logic-stepper.js +76 -76
- package/build/steps/logic-stepper.js.map +1 -1
- package/build/steps/narrator.d.ts +9 -9
- package/build/steps/narrator.d.ts.map +1 -1
- package/build/steps/narrator.js +32 -28
- package/build/steps/narrator.js.map +1 -1
- package/build/steps/resources-stepper.d.ts +47 -0
- package/build/steps/resources-stepper.d.ts.map +1 -0
- package/build/steps/resources-stepper.js +100 -0
- package/build/steps/resources-stepper.js.map +1 -0
- package/build/steps/variables-stepper.d.ts +82 -54
- package/build/steps/variables-stepper.d.ts.map +1 -1
- package/build/steps/variables-stepper.js +264 -216
- package/build/steps/variables-stepper.js.map +1 -1
- package/build/steps/zcap-like-stepper.d.ts +50 -0
- package/build/steps/zcap-like-stepper.d.ts.map +1 -0
- package/build/steps/zcap-like-stepper.js +113 -0
- package/build/steps/zcap-like-stepper.js.map +1 -0
- package/package.json +1 -1
- package/build/lib/consts.d.ts +0 -5
- package/build/lib/consts.d.ts.map +0 -1
- package/build/lib/consts.js +0 -5
- package/build/lib/consts.js.map +0 -1
- package/build/lib/step-helpers.d.ts +0 -10
- package/build/lib/step-helpers.d.ts.map +0 -1
- package/build/lib/step-helpers.js +0 -16
- package/build/lib/step-helpers.js.map +0 -1
package/build/phases/Resolver.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { FEATURE_START, SCENARIO_START } from "../schema/protocol.js";
|
|
2
|
+
import { matchGwtaToAction, getMatch } from "../lib/namedVars.js";
|
|
3
|
+
import { getActionable, dePolite, constructorName, actionNotOK } from "../lib/util/index.js";
|
|
4
|
+
import { expandLine } from "../lib/features.js";
|
|
4
5
|
export class Resolver {
|
|
5
6
|
steppers;
|
|
6
7
|
backgrounds;
|
|
@@ -10,7 +11,7 @@ export class Resolver {
|
|
|
10
11
|
this.backgrounds = backgrounds;
|
|
11
12
|
// Process backgrounds to allow steppers to register metadata (e.g., waypoint statements)
|
|
12
13
|
for (const background of backgrounds) {
|
|
13
|
-
const lines = background.content.split(
|
|
14
|
+
const lines = background.content.split("\n");
|
|
14
15
|
const actualSourcePath = background.base && background.path ? background.base + background.path : undefined;
|
|
15
16
|
for (let i = 0; i < lines.length; i++) {
|
|
16
17
|
const actionable = getActionable(lines[i]);
|
|
@@ -26,7 +27,7 @@ export class Resolver {
|
|
|
26
27
|
this.backgroundWarnings.push({
|
|
27
28
|
path: background.path,
|
|
28
29
|
line: lines[i],
|
|
29
|
-
error: e.message
|
|
30
|
+
error: e.message,
|
|
30
31
|
});
|
|
31
32
|
}
|
|
32
33
|
}
|
|
@@ -64,7 +65,7 @@ export class Resolver {
|
|
|
64
65
|
*/
|
|
65
66
|
startFeatureResolution(path) {
|
|
66
67
|
for (const stepper of this.steppers) {
|
|
67
|
-
if (typeof stepper.startFeatureResolution ===
|
|
68
|
+
if (typeof stepper.startFeatureResolution === "function") {
|
|
68
69
|
stepper.startFeatureResolution(path);
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -75,7 +76,7 @@ export class Resolver {
|
|
|
75
76
|
const firstError = errors[0];
|
|
76
77
|
throw Error(`findFeatureStep for "${firstError.featureLine.line}": ${firstError.error.message} in ${feature.path}\nUse --show-steppers for more details`);
|
|
77
78
|
}
|
|
78
|
-
return steps.filter(s => s.action.stepperName !==
|
|
79
|
+
return steps.filter((s) => s.action.stepperName !== "Directive");
|
|
79
80
|
}
|
|
80
81
|
findFeatureStepsTolerant(feature) {
|
|
81
82
|
return Promise.resolve(this.findFeatureStepsTolerantSync(feature));
|
|
@@ -83,13 +84,13 @@ export class Resolver {
|
|
|
83
84
|
findFeatureStepsTolerantSync(feature) {
|
|
84
85
|
const steps = [];
|
|
85
86
|
const errors = [];
|
|
86
|
-
const allLines = feature.expanded.map(fl => fl.line);
|
|
87
|
+
const allLines = feature.expanded.map((fl) => fl.line);
|
|
87
88
|
let seq = 0;
|
|
88
89
|
let inCodeBlock = false;
|
|
89
90
|
for (let i = 0; i < feature.expanded.length; i++) {
|
|
90
91
|
const featureLine = feature.expanded[i];
|
|
91
92
|
const line = featureLine.line.trim();
|
|
92
|
-
if (line.startsWith(
|
|
93
|
+
if (line.startsWith("```")) {
|
|
93
94
|
inCodeBlock = !inCodeBlock;
|
|
94
95
|
continue;
|
|
95
96
|
}
|
|
@@ -97,9 +98,7 @@ export class Resolver {
|
|
|
97
98
|
continue;
|
|
98
99
|
}
|
|
99
100
|
const actionable = getActionable(featureLine.line);
|
|
100
|
-
const actualSourcePath = featureLine.feature?.base && featureLine.feature?.path
|
|
101
|
-
? featureLine.feature.base + featureLine.feature.path
|
|
102
|
-
: undefined;
|
|
101
|
+
const actualSourcePath = featureLine.feature?.base && featureLine.feature?.path ? featureLine.feature.base + featureLine.feature.path : undefined;
|
|
103
102
|
if (this.callResolveFeatureLine(actionable, feature.path, allLines, i, actualSourcePath)) {
|
|
104
103
|
steps.push({
|
|
105
104
|
source: {
|
|
@@ -109,10 +108,10 @@ export class Resolver {
|
|
|
109
108
|
in: featureLine.line,
|
|
110
109
|
seqPath: [seq],
|
|
111
110
|
action: {
|
|
112
|
-
stepperName:
|
|
113
|
-
actionName:
|
|
114
|
-
step: { exact: actionable, action: async () => ({ ok: true
|
|
115
|
-
}
|
|
111
|
+
stepperName: "Directive",
|
|
112
|
+
actionName: "directive",
|
|
113
|
+
step: { exact: actionable, action: async () => ({ ok: true }) },
|
|
114
|
+
},
|
|
116
115
|
});
|
|
117
116
|
continue;
|
|
118
117
|
}
|
|
@@ -122,8 +121,11 @@ export class Resolver {
|
|
|
122
121
|
seq++;
|
|
123
122
|
try {
|
|
124
123
|
const stepAction = this.findSingleStepAction(actionable);
|
|
124
|
+
if (stepAction.actionName === FEATURE_START || stepAction.actionName === SCENARIO_START) {
|
|
125
|
+
seq = 0;
|
|
126
|
+
}
|
|
125
127
|
if (stepAction.stepValuesMap) {
|
|
126
|
-
const statements = Object.values(stepAction.stepValuesMap).filter((v) => v.domain ===
|
|
128
|
+
const statements = Object.values(stepAction.stepValuesMap).filter((v) => v.domain === "statement" && v.term);
|
|
127
129
|
for (const ph of statements) {
|
|
128
130
|
const rawVal = ph.term;
|
|
129
131
|
try {
|
|
@@ -147,19 +149,22 @@ export class Resolver {
|
|
|
147
149
|
findSingleStepAction(line) {
|
|
148
150
|
let stepActions = this.findActionableSteps(line);
|
|
149
151
|
if (stepActions.length > 1) {
|
|
150
|
-
const unique = stepActions.filter(a => a.step.unique);
|
|
152
|
+
const unique = stepActions.filter((a) => a.step.unique);
|
|
151
153
|
if (unique.length === 1) {
|
|
152
154
|
return unique[0];
|
|
153
155
|
}
|
|
154
156
|
// Filter out fallback steps if there are non-fallback alternatives
|
|
155
|
-
const nonFallback = stepActions.filter(a => !a.step.fallback);
|
|
157
|
+
const nonFallback = stepActions.filter((a) => !a.step.fallback);
|
|
156
158
|
if (nonFallback.length > 0) {
|
|
157
159
|
stepActions = nonFallback;
|
|
158
160
|
}
|
|
159
161
|
// If still multiple matches, use precludes
|
|
160
162
|
if (stepActions.length > 1) {
|
|
161
|
-
const precludes = stepActions
|
|
162
|
-
|
|
163
|
+
const precludes = stepActions
|
|
164
|
+
.filter((a) => a.step.precludes)
|
|
165
|
+
.map((a) => a.step.precludes)
|
|
166
|
+
.reduce((acc, cur) => [...acc, ...cur], []);
|
|
167
|
+
stepActions = stepActions.filter((a) => !precludes.includes(`${a.stepperName}.${a.actionName}`));
|
|
163
168
|
}
|
|
164
169
|
if (stepActions.length !== 1) {
|
|
165
170
|
throw Error(`not one step found for "${line}": ${JSON.stringify(stepActions.map((a) => a.actionName))}`);
|
|
@@ -174,7 +179,7 @@ export class Resolver {
|
|
|
174
179
|
// For virtual steps (like waypoints), use the step's source location if available
|
|
175
180
|
const step = action.step;
|
|
176
181
|
const lineNumber = step?.source?.lineNumber ?? featureLine.lineNumber;
|
|
177
|
-
const path = step?.source?.path ??
|
|
182
|
+
const path = step?.source?.path ?? featureLine.feature.base + featureLine.feature.path;
|
|
178
183
|
return {
|
|
179
184
|
source: {
|
|
180
185
|
path,
|
|
@@ -208,7 +213,7 @@ export class Resolver {
|
|
|
208
213
|
// Exception: patterns starting with {variable} placeholders can match any input.
|
|
209
214
|
const startsWithUpper = /^[A-Z]/.test(curt);
|
|
210
215
|
const gwtaStartsUpper = /^[A-Z]/.test(step.gwta);
|
|
211
|
-
const gwtaStartsWithPlaceholder = step.gwta.startsWith(
|
|
216
|
+
const gwtaStartsWithPlaceholder = step.gwta.startsWith("{");
|
|
212
217
|
if (startsWithUpper && !gwtaStartsUpper && !gwtaStartsWithPlaceholder) {
|
|
213
218
|
return undefined;
|
|
214
219
|
}
|
|
@@ -240,13 +245,13 @@ export function getActionableStatement(steppers, statement, path, seqPath, lineN
|
|
|
240
245
|
export function findFeatureStepsFromStatement(statement, steppers, world, base, seqStart, inc = 1) {
|
|
241
246
|
const featureSteps = [];
|
|
242
247
|
if (!world.runtime.backgrounds) {
|
|
243
|
-
throw new Error(
|
|
248
|
+
throw new Error("runtime.backgrounds is undefined; cannot expand inline Backgrounds");
|
|
244
249
|
}
|
|
245
250
|
// For expandLine, we need to provide a feature context. If the statement is a Backgrounds: directive,
|
|
246
251
|
// expandLine will ignore this feature and use the actual background files. If it's a regular statement,
|
|
247
252
|
// expandLine will use this feature's path. So we pass the base (feature path) here.
|
|
248
253
|
// Note: 'base' parameter is actually the full path, so we set feature.base to it and feature.path to empty
|
|
249
|
-
const contextFeature = { path:
|
|
254
|
+
const contextFeature = { path: "", base, name: "statement-context", content: statement };
|
|
250
255
|
const expanded = expandLine(statement, undefined, world.runtime.backgrounds, contextFeature);
|
|
251
256
|
// Increment the last segment of seqStart by inc for each expanded step
|
|
252
257
|
const prefix = seqStart.slice(0, -1);
|
|
@@ -268,12 +273,12 @@ export function findFeatureStepsFromStatement(statement, steppers, world, base,
|
|
|
268
273
|
in: x.line,
|
|
269
274
|
seqPath,
|
|
270
275
|
action: {
|
|
271
|
-
actionName:
|
|
272
|
-
stepperName:
|
|
276
|
+
actionName: "error",
|
|
277
|
+
stepperName: "Resolver",
|
|
273
278
|
step: {
|
|
274
|
-
action: async () => (
|
|
275
|
-
}
|
|
276
|
-
}
|
|
279
|
+
action: async () => actionNotOK(e.message),
|
|
280
|
+
},
|
|
281
|
+
},
|
|
277
282
|
});
|
|
278
283
|
}
|
|
279
284
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/phases/Resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/phases/Resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TBase, TFeature } from
|
|
2
|
-
import { TFileSystem } from
|
|
3
|
-
import { type TRunPolicyConfig, type TDirFilter } from
|
|
1
|
+
import { TBase, TFeature } from "../lib/execution.js";
|
|
2
|
+
import { TFileSystem } from "../lib/util/node/workspace-lib.js";
|
|
3
|
+
import { type TRunPolicyConfig, type TDirFilter } from "../run-policy/run-policy-types.js";
|
|
4
4
|
export type TFeaturesBackgrounds = {
|
|
5
5
|
features: TFeature[];
|
|
6
6
|
backgrounds: TFeature[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/phases/collector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/phases/collector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAwB,MAAM,mCAAmC,CAAC;AAEjH,MAAM,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,EAAE,QAAQ,EAAE,CAAC;CACxB,CAAC;AAEF,wBAAsB,yBAAyB,CAC9C,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,gBAAgB,EAC/B,EAAE,GAAE,WAAoB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAyB/B;AAiDD,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,GAAG,MAAM,EACxB,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,EACnC,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,UAAU,EAAE,WAyBzB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;;;;;;IAEzD"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import nodeFS from
|
|
2
|
-
import path from
|
|
3
|
-
import { withNameType } from
|
|
4
|
-
import { toBdd } from
|
|
5
|
-
import { featureMatchesFilter } from
|
|
1
|
+
import nodeFS from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { withNameType } from "../lib/features.js";
|
|
4
|
+
import { toBdd } from "../kireji/converter.js";
|
|
5
|
+
import { featureMatchesFilter } from "../run-policy/run-policy-types.js";
|
|
6
6
|
export async function getFeaturesAndBackgrounds(bases, featureFilter, policyConfig, fs = nodeFS) {
|
|
7
7
|
const ret = { features: [], backgrounds: [] };
|
|
8
8
|
for (const abase of bases) {
|
|
9
9
|
// Only filter features, not backgrounds - backgrounds should always be loaded
|
|
10
10
|
const ff = { feature: featureFilter, background: [] };
|
|
11
11
|
const rawFeaturesAndBackgrounds = { features: [], backgrounds: [] };
|
|
12
|
-
for (const t of [
|
|
12
|
+
for (const t of ["feature", "background"]) {
|
|
13
13
|
const p = `${t}s`;
|
|
14
14
|
const checkPath = `${abase}/${p}`;
|
|
15
15
|
if (fs.existsSync(checkPath)) {
|
|
@@ -39,10 +39,10 @@ async function recurse(base, dir, type, featureFilter = undefined, policyConfig,
|
|
|
39
39
|
else if (shouldProcess(here, type, featureFilter, dir, policyConfig?.dirFilters)) {
|
|
40
40
|
let contents;
|
|
41
41
|
let kirejiLineMap;
|
|
42
|
-
if (here.endsWith(
|
|
42
|
+
if (here.endsWith(".feature.ts")) {
|
|
43
43
|
const module = await import(path.resolve(here));
|
|
44
44
|
let kirejiContent;
|
|
45
|
-
if (type ===
|
|
45
|
+
if (type === "background") {
|
|
46
46
|
// For backgrounds directory: prefer 'backgrounds' export, fallback to 'features'
|
|
47
47
|
kirejiContent = module.backgrounds || module.features;
|
|
48
48
|
if (!kirejiContent) {
|
|
@@ -61,7 +61,7 @@ async function recurse(base, dir, type, featureFilter = undefined, policyConfig,
|
|
|
61
61
|
kirejiLineMap = bddResult.lineMap;
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
64
|
-
contents = fs.readFileSync(here,
|
|
64
|
+
contents = fs.readFileSync(here, "utf-8");
|
|
65
65
|
}
|
|
66
66
|
all.push(withNameType(base, here, contents, kirejiLineMap));
|
|
67
67
|
}
|
|
@@ -69,26 +69,28 @@ async function recurse(base, dir, type, featureFilter = undefined, policyConfig,
|
|
|
69
69
|
return all;
|
|
70
70
|
}
|
|
71
71
|
export function shouldProcess(file, type, featureFilter, dir, dirFilters) {
|
|
72
|
-
const iskireji = file.endsWith(
|
|
72
|
+
const iskireji = file.endsWith(".feature.ts");
|
|
73
73
|
// For kireji files, always process regardless of type
|
|
74
74
|
// For .feature files, check if type matches or is undefined
|
|
75
75
|
// Note: both 'feature' and 'background' types use .feature extension
|
|
76
|
-
const isType = iskireji || !type || file.endsWith(`.${type}`) || (type ===
|
|
77
|
-
const matchesFilter =
|
|
76
|
+
const isType = iskireji || !type || file.endsWith(`.${type}`) || (type === "background" && file.endsWith(".feature"));
|
|
77
|
+
const matchesFilter = featureFilter === undefined || featureFilter.every((f) => f === "") || featureFilter.length < 1
|
|
78
|
+
? true
|
|
79
|
+
: !!featureFilter.find((f) => file.replace(/\/.*?\/([^.*?/])/, "$1").match(f));
|
|
78
80
|
if (!isType || !matchesFilter)
|
|
79
81
|
return false;
|
|
80
82
|
// When --run-policy is active, apply prefix-based access filtering (features only, not backgrounds)
|
|
81
|
-
if (dirFilters && type ===
|
|
83
|
+
if (dirFilters && type === "feature") {
|
|
82
84
|
// Extract relative path from features root (e.g. "/features/smoke/r_health.feature" → "/smoke/r_health.feature")
|
|
83
|
-
const featuresIdx = dir.indexOf(
|
|
84
|
-
const relativePath = featuresIdx >= 0 ? dir.substring(featuresIdx +
|
|
85
|
-
const filename = file.split(
|
|
85
|
+
const featuresIdx = dir.indexOf("/features");
|
|
86
|
+
const relativePath = featuresIdx >= 0 ? dir.substring(featuresIdx + "/features".length) : dir;
|
|
87
|
+
const filename = file.split("/").pop() || file;
|
|
86
88
|
const fullRelative = `${relativePath}/${filename}`;
|
|
87
89
|
return featureMatchesFilter(fullRelative, dirFilters);
|
|
88
90
|
}
|
|
89
91
|
return true;
|
|
90
92
|
}
|
|
91
93
|
export function debase(abase, features) {
|
|
92
|
-
return features.map((f) => ({ ...f, path: f.path.replace(abase,
|
|
94
|
+
return features.map((f) => ({ ...f, path: f.path.replace(abase, "") }));
|
|
93
95
|
}
|
|
94
96
|
//# sourceMappingURL=collector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/phases/collector.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,IAAI,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAA0C,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAOjH,MAAM,CAAC,KAAK,UAAU,yBAAyB,
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/phases/collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { type TRunPolicyConfig } from
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type TRunPolicyConfig } from "./run-policy-types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Validates the policy file structure itself.
|
|
5
5
|
* The structure mirrors TRunPolicyConfig (place + dirFilters array).
|
|
@@ -31,9 +31,7 @@ export declare function loadRunPolicy(schemaPath: string): TRunPolicy;
|
|
|
31
31
|
* Validate a runtime config against a loaded policy.
|
|
32
32
|
* Builds a strict Zod schema dynamically from the policy definition.
|
|
33
33
|
*/
|
|
34
|
-
export declare function buildConfigValidator(policy: TRunPolicy): z.ZodObject<
|
|
35
|
-
[x: string]: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
36
|
-
}, z.core.$loose>;
|
|
34
|
+
export declare function buildConfigValidator(policy: TRunPolicy): z.ZodObject<Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>, z.core.$loose>;
|
|
37
35
|
/**
|
|
38
36
|
* Validate a config against a loaded policy, returning array of error strings.
|
|
39
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-policy-schema.d.ts","sourceRoot":"","sources":["../../src/run-policy/run-policy-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAY7E;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"run-policy-schema.d.ts","sourceRoot":"","sources":["../../src/run-policy/run-policy-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAY7E;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;iBAWpB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAQ5D;AA4ID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,uHA8FtD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlH;AAED,sDAAsD;AACtD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAQjG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { readFileSync } from
|
|
3
|
-
import { ACCESS_LEVELS } from
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { readFileSync } from "fs";
|
|
3
|
+
import { ACCESS_LEVELS } from "./run-policy-types.js";
|
|
4
4
|
// ============================================================================
|
|
5
5
|
// Policy File Schema — Hierarchical JSON Schema
|
|
6
6
|
// ============================================================================
|
|
@@ -13,23 +13,23 @@ const DenyRuleSchema = z.object({
|
|
|
13
13
|
* Validates the policy file structure itself.
|
|
14
14
|
* The structure mirrors TRunPolicyConfig (place + dirFilters array).
|
|
15
15
|
*/
|
|
16
|
-
const PolicyFileSchema = z.
|
|
16
|
+
const PolicyFileSchema = z.looseObject({
|
|
17
17
|
$schema: z.string().optional(),
|
|
18
|
-
type: z.literal(
|
|
19
|
-
properties: z.
|
|
20
|
-
definitions: z.
|
|
21
|
-
$defs: z.
|
|
18
|
+
type: z.literal("object").default("object"),
|
|
19
|
+
properties: z.looseObject({}).optional(),
|
|
20
|
+
definitions: z.looseObject({}).optional(),
|
|
21
|
+
$defs: z.looseObject({}).optional(),
|
|
22
22
|
required: z.array(z.string()).optional(),
|
|
23
23
|
allOf: z.array(z.unknown()).optional(),
|
|
24
24
|
anyOf: z.array(z.unknown()).optional(),
|
|
25
25
|
oneOf: z.array(z.unknown()).optional(),
|
|
26
26
|
deny: z.array(DenyRuleSchema).default([]),
|
|
27
|
-
})
|
|
27
|
+
});
|
|
28
28
|
/** Load and parse a policy file */
|
|
29
29
|
export function loadRunPolicy(schemaPath) {
|
|
30
30
|
let raw;
|
|
31
31
|
try {
|
|
32
|
-
raw = readFileSync(schemaPath,
|
|
32
|
+
raw = readFileSync(schemaPath, "utf-8");
|
|
33
33
|
}
|
|
34
34
|
catch (err) {
|
|
35
35
|
throw new Error(`Cannot read run policy "${schemaPath}": ${err.message}`);
|
|
@@ -37,15 +37,15 @@ export function loadRunPolicy(schemaPath) {
|
|
|
37
37
|
return PolicyFileSchema.parse(JSON.parse(raw));
|
|
38
38
|
}
|
|
39
39
|
function resolveRef(ref, rootDocs) {
|
|
40
|
-
if (!ref.startsWith(
|
|
40
|
+
if (!ref.startsWith("#/"))
|
|
41
41
|
return undefined;
|
|
42
|
-
const parts = ref.substring(2).split(
|
|
42
|
+
const parts = ref.substring(2).split("/");
|
|
43
43
|
for (const doc of rootDocs) {
|
|
44
44
|
if (!doc)
|
|
45
45
|
continue;
|
|
46
46
|
let curr = doc;
|
|
47
47
|
for (const part of parts) {
|
|
48
|
-
if (typeof curr ===
|
|
48
|
+
if (typeof curr === "object" && curr !== null && part in curr) {
|
|
49
49
|
curr = curr[part];
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
@@ -63,7 +63,7 @@ function evaluateCondition(conditionObj, config, ctx, rootDocs, allowedKeys) {
|
|
|
63
63
|
return true;
|
|
64
64
|
let ok = true;
|
|
65
65
|
// 1. resolve $ref
|
|
66
|
-
if (typeof conditionObj.$ref ===
|
|
66
|
+
if (typeof conditionObj.$ref === "string") {
|
|
67
67
|
const resolved = resolveRef(conditionObj.$ref, rootDocs);
|
|
68
68
|
if (resolved) {
|
|
69
69
|
ok = evaluateCondition(resolved, config, ctx, rootDocs, allowedKeys) && ok;
|
|
@@ -84,7 +84,7 @@ function evaluateCondition(conditionObj, config, ctx, rootDocs, allowedKeys) {
|
|
|
84
84
|
const results = conditionObj.anyOf.map((rule) => evaluateBranch(rule, config, rootDocs));
|
|
85
85
|
const passing = results.filter((result) => result.ok);
|
|
86
86
|
if (passing.length === 0) {
|
|
87
|
-
ctx.addIssue({ code: z.ZodIssueCode.custom, message:
|
|
87
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "must match at least one schema in anyOf", path: [] });
|
|
88
88
|
ok = false;
|
|
89
89
|
}
|
|
90
90
|
else {
|
|
@@ -99,7 +99,7 @@ function evaluateCondition(conditionObj, config, ctx, rootDocs, allowedKeys) {
|
|
|
99
99
|
const results = conditionObj.oneOf.map((rule) => evaluateBranch(rule, config, rootDocs));
|
|
100
100
|
const passing = results.filter((result) => result.ok);
|
|
101
101
|
if (passing.length !== 1) {
|
|
102
|
-
ctx.addIssue({ code: z.ZodIssueCode.custom, message:
|
|
102
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "must match exactly one schema in oneOf", path: [] });
|
|
103
103
|
ok = false;
|
|
104
104
|
}
|
|
105
105
|
else {
|
|
@@ -109,7 +109,7 @@ function evaluateCondition(conditionObj, config, ctx, rootDocs, allowedKeys) {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
// 3. process if/then
|
|
112
|
-
if (conditionObj.if && typeof conditionObj.if ===
|
|
112
|
+
if (conditionObj.if && typeof conditionObj.if === "object" && "properties" in conditionObj.if) {
|
|
113
113
|
let matchesIf = true;
|
|
114
114
|
for (const [k, v] of Object.entries(conditionObj.if.properties)) {
|
|
115
115
|
const castV = v;
|
|
@@ -131,7 +131,7 @@ function evaluateCondition(conditionObj, config, ctx, rootDocs, allowedKeys) {
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
if (conditionObj.properties && typeof conditionObj.properties ===
|
|
134
|
+
if (conditionObj.properties && typeof conditionObj.properties === "object") {
|
|
135
135
|
for (const [k, v] of Object.entries(conditionObj.properties)) {
|
|
136
136
|
allowedKeys.add(k);
|
|
137
137
|
const castV = v;
|
|
@@ -140,9 +140,9 @@ function evaluateCondition(conditionObj, config, ctx, rootDocs, allowedKeys) {
|
|
|
140
140
|
ctx.addIssue({ code: z.ZodIssueCode.custom, message: `must be equal to constant "${castV.const}"`, path: [k] });
|
|
141
141
|
ok = false;
|
|
142
142
|
}
|
|
143
|
-
if (castV.type ===
|
|
143
|
+
if (castV.type === "number" && typeof config[k] !== "number") {
|
|
144
144
|
// if it's string from env, parse it dynamically
|
|
145
|
-
if (typeof config[k] ===
|
|
145
|
+
if (typeof config[k] === "string" && !isNaN(Number(config[k]))) {
|
|
146
146
|
config[k] = Number(config[k]);
|
|
147
147
|
}
|
|
148
148
|
else {
|
|
@@ -161,7 +161,7 @@ function evaluateBranch(conditionObj, config, rootDocs) {
|
|
|
161
161
|
const ctx = {
|
|
162
162
|
addIssue: (issue) => {
|
|
163
163
|
issues.push(issue);
|
|
164
|
-
}
|
|
164
|
+
},
|
|
165
165
|
};
|
|
166
166
|
const ok = evaluateCondition(conditionObj, config, ctx, rootDocs, branchAllowed);
|
|
167
167
|
return { ok: ok && issues.length === 0, allowedKeys: branchAllowed, issues };
|
|
@@ -171,12 +171,16 @@ function evaluateBranch(conditionObj, config, rootDocs) {
|
|
|
171
171
|
* Builds a strict Zod schema dynamically from the policy definition.
|
|
172
172
|
*/
|
|
173
173
|
export function buildConfigValidator(policy) {
|
|
174
|
-
const validPlaces = policy.properties?.place &&
|
|
174
|
+
const validPlaces = policy.properties?.place &&
|
|
175
|
+
policy.properties.place.enum;
|
|
175
176
|
const validDirs = policy.properties?.dirFilters &&
|
|
176
177
|
policy.properties.dirFilters.items &&
|
|
177
|
-
policy.properties.dirFilters.items
|
|
178
|
-
|
|
179
|
-
policy.properties.dirFilters.items
|
|
178
|
+
policy.properties.dirFilters.items
|
|
179
|
+
.properties &&
|
|
180
|
+
policy.properties.dirFilters.items
|
|
181
|
+
.properties.dir &&
|
|
182
|
+
policy.properties.dirFilters.items
|
|
183
|
+
.properties.dir.enum;
|
|
180
184
|
const baseSchema = {};
|
|
181
185
|
if (validPlaces) {
|
|
182
186
|
baseSchema.place = z.enum(validPlaces);
|
|
@@ -186,7 +190,7 @@ export function buildConfigValidator(policy) {
|
|
|
186
190
|
}
|
|
187
191
|
if (validDirs) {
|
|
188
192
|
baseSchema.dirFilters = z.array(z.object({
|
|
189
|
-
dir: z.union([z.enum(validDirs), z.literal(
|
|
193
|
+
dir: z.union([z.enum(validDirs), z.literal("*")]),
|
|
190
194
|
access: z.enum(ACCESS_LEVELS),
|
|
191
195
|
}));
|
|
192
196
|
}
|
|
@@ -196,17 +200,17 @@ export function buildConfigValidator(policy) {
|
|
|
196
200
|
access: z.enum(ACCESS_LEVELS),
|
|
197
201
|
}));
|
|
198
202
|
}
|
|
199
|
-
const ConfigValidator = z.
|
|
203
|
+
const ConfigValidator = z.looseObject(baseSchema);
|
|
200
204
|
return ConfigValidator.superRefine((config, ctx) => {
|
|
201
205
|
// 1. Evaluate policy rules dynamically
|
|
202
206
|
const rootDocs = [policy];
|
|
203
207
|
// keys that are always allowed by the base schema
|
|
204
208
|
const allowedKeys = new Set();
|
|
205
209
|
// Pre-populate allowedKeys with root properties
|
|
206
|
-
allowedKeys.add(
|
|
207
|
-
allowedKeys.add(
|
|
210
|
+
allowedKeys.add("place");
|
|
211
|
+
allowedKeys.add("dirFilters");
|
|
208
212
|
if (policy.properties)
|
|
209
|
-
Object.keys(policy.properties).forEach(k => allowedKeys.add(k));
|
|
213
|
+
Object.keys(policy.properties).forEach((k) => allowedKeys.add(k));
|
|
210
214
|
evaluateCondition(policy, config, ctx, rootDocs, allowedKeys);
|
|
211
215
|
// Validate strictness: block non-existent parameters
|
|
212
216
|
for (const key of Object.keys(config)) {
|
|
@@ -215,7 +219,7 @@ export function buildConfigValidator(policy) {
|
|
|
215
219
|
code: z.ZodIssueCode.unrecognized_keys,
|
|
216
220
|
keys: [key],
|
|
217
221
|
message: `Unrecognized key(s) in object: '${key}'`,
|
|
218
|
-
path: []
|
|
222
|
+
path: [],
|
|
219
223
|
});
|
|
220
224
|
}
|
|
221
225
|
}
|
|
@@ -225,14 +229,14 @@ export function buildConfigValidator(policy) {
|
|
|
225
229
|
dirFilters.forEach((filter, index) => {
|
|
226
230
|
const flat = { place: config.place, dir: filter.dir, access: filter.access };
|
|
227
231
|
for (const rule of policy.deny) {
|
|
228
|
-
const match = (!rule.place || rule.place === flat.place)
|
|
229
|
-
|
|
230
|
-
|
|
232
|
+
const match = (!rule.place || rule.place === flat.place) &&
|
|
233
|
+
(!rule.dir || rule.dir === flat.dir) &&
|
|
234
|
+
(!rule.access || rule.access === flat.access);
|
|
231
235
|
if (match) {
|
|
232
236
|
ctx.addIssue({
|
|
233
237
|
code: z.ZodIssueCode.custom,
|
|
234
238
|
message: `Filter "${filter.dir}:${filter.access}" in "${config.place}": Denied by policy: ${JSON.stringify(rule)}`,
|
|
235
|
-
path: [
|
|
239
|
+
path: ["dirFilters", index],
|
|
236
240
|
});
|
|
237
241
|
}
|
|
238
242
|
}
|
|
@@ -248,7 +252,7 @@ export function validateRunPolicyConfig(config, policy, schemaPath) {
|
|
|
248
252
|
const result = validator.safeParse(config);
|
|
249
253
|
if (result.success)
|
|
250
254
|
return [];
|
|
251
|
-
return result.error.issues.map((err) => `${err.path.length ?
|
|
255
|
+
return result.error.issues.map((err) => `${err.path.length ? "/" + err.path.join("/") + " " : ""}${err.message}`);
|
|
252
256
|
}
|
|
253
257
|
/** Load policy, validate config, throw on failure. */
|
|
254
258
|
export function loadAndValidateRunPolicy(config, schemaPath) {
|
|
@@ -256,7 +260,7 @@ export function loadAndValidateRunPolicy(config, schemaPath) {
|
|
|
256
260
|
const errors = validateRunPolicyConfig(config, policy, schemaPath);
|
|
257
261
|
if (errors.length > 0) {
|
|
258
262
|
const jsonContext = JSON.stringify({ $schema: schemaPath, ...config }, null, 2);
|
|
259
|
-
throw new Error(`Run policy validation failed:\n${jsonContext}\n\nErrors:\n${errors.map((e) => ` • ${e}`).join(
|
|
263
|
+
throw new Error(`Run policy validation failed:\n${jsonContext}\n\nErrors:\n${errors.map((e) => ` • ${e}`).join("\\n")}`);
|
|
260
264
|
}
|
|
261
265
|
return policy;
|
|
262
266
|
}
|