@xemahq/dsl 0.1.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/LICENSE +201 -0
- package/dist/deliverable-spec/index.d.ts +3 -0
- package/dist/deliverable-spec/index.d.ts.map +1 -0
- package/dist/deliverable-spec/index.js +19 -0
- package/dist/deliverable-spec/index.js.map +1 -0
- package/dist/deliverable-spec/lib/schema.d.ts +151 -0
- package/dist/deliverable-spec/lib/schema.d.ts.map +1 -0
- package/dist/deliverable-spec/lib/schema.js +139 -0
- package/dist/deliverable-spec/lib/schema.js.map +1 -0
- package/dist/deliverable-spec/lib/types.d.ts +8 -0
- package/dist/deliverable-spec/lib/types.d.ts.map +1 -0
- package/dist/deliverable-spec/lib/types.js +3 -0
- package/dist/deliverable-spec/lib/types.js.map +1 -0
- package/dist/payload-codec/index.d.ts +8 -0
- package/dist/payload-codec/index.d.ts.map +1 -0
- package/dist/payload-codec/index.js +27 -0
- package/dist/payload-codec/index.js.map +1 -0
- package/dist/payload-codec/lib/blob-store.d.ts +37 -0
- package/dist/payload-codec/lib/blob-store.d.ts.map +1 -0
- package/dist/payload-codec/lib/blob-store.js +0 -0
- package/dist/payload-codec/lib/blob-store.js.map +1 -0
- package/dist/payload-codec/lib/codec-context.d.ts +6 -0
- package/dist/payload-codec/lib/codec-context.d.ts.map +1 -0
- package/dist/payload-codec/lib/codec-context.js +16 -0
- package/dist/payload-codec/lib/codec-context.js.map +1 -0
- package/dist/payload-codec/lib/codec.d.ts +51 -0
- package/dist/payload-codec/lib/codec.d.ts.map +1 -0
- package/dist/payload-codec/lib/codec.js +330 -0
- package/dist/payload-codec/lib/codec.js.map +1 -0
- package/dist/payload-codec/lib/enums.d.ts +18 -0
- package/dist/payload-codec/lib/enums.d.ts.map +1 -0
- package/dist/payload-codec/lib/enums.js +23 -0
- package/dist/payload-codec/lib/enums.js.map +1 -0
- package/dist/payload-codec/lib/errors.d.ts +18 -0
- package/dist/payload-codec/lib/errors.d.ts.map +1 -0
- package/dist/payload-codec/lib/errors.js +39 -0
- package/dist/payload-codec/lib/errors.js.map +1 -0
- package/dist/payload-codec/lib/http-blob-store.d.ts +21 -0
- package/dist/payload-codec/lib/http-blob-store.d.ts.map +1 -0
- package/dist/payload-codec/lib/http-blob-store.js +139 -0
- package/dist/payload-codec/lib/http-blob-store.js.map +1 -0
- package/dist/payload-codec/lib/lru-cache.d.ts +12 -0
- package/dist/payload-codec/lib/lru-cache.d.ts.map +1 -0
- package/dist/payload-codec/lib/lru-cache.js +59 -0
- package/dist/payload-codec/lib/lru-cache.js.map +1 -0
- package/dist/schema/action.schema.json +181 -0
- package/dist/schema/reusable-workflow.schema.json +46 -0
- package/dist/schema/workflow.schema.json +373 -0
- package/dist/workflow/index.d.ts +14 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +49 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/lib/action-input-validator.d.ts +10 -0
- package/dist/workflow/lib/action-input-validator.d.ts.map +1 -0
- package/dist/workflow/lib/action-input-validator.js +69 -0
- package/dist/workflow/lib/action-input-validator.js.map +1 -0
- package/dist/workflow/lib/compiler/action-shape.d.ts +5 -0
- package/dist/workflow/lib/compiler/action-shape.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/action-shape.js +43 -0
- package/dist/workflow/lib/compiler/action-shape.js.map +1 -0
- package/dist/workflow/lib/compiler/canonical-json.d.ts +3 -0
- package/dist/workflow/lib/compiler/canonical-json.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/canonical-json.js +45 -0
- package/dist/workflow/lib/compiler/canonical-json.js.map +1 -0
- package/dist/workflow/lib/compiler/compile.d.ts +4 -0
- package/dist/workflow/lib/compiler/compile.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/compile.js +794 -0
- package/dist/workflow/lib/compiler/compile.js.map +1 -0
- package/dist/workflow/lib/compiler/concurrency.d.ts +5 -0
- package/dist/workflow/lib/compiler/concurrency.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/concurrency.js +104 -0
- package/dist/workflow/lib/compiler/concurrency.js.map +1 -0
- package/dist/workflow/lib/compiler/dag.d.ts +10 -0
- package/dist/workflow/lib/compiler/dag.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/dag.js +74 -0
- package/dist/workflow/lib/compiler/dag.js.map +1 -0
- package/dist/workflow/lib/compiler/index.d.ts +6 -0
- package/dist/workflow/lib/compiler/index.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/index.js +14 -0
- package/dist/workflow/lib/compiler/index.js.map +1 -0
- package/dist/workflow/lib/compiler/inputs.d.ts +4 -0
- package/dist/workflow/lib/compiler/inputs.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/inputs.js +108 -0
- package/dist/workflow/lib/compiler/inputs.js.map +1 -0
- package/dist/workflow/lib/compiler/installation-resource-validator.d.ts +9 -0
- package/dist/workflow/lib/compiler/installation-resource-validator.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/installation-resource-validator.js +76 -0
- package/dist/workflow/lib/compiler/installation-resource-validator.js.map +1 -0
- package/dist/workflow/lib/compiler/manifest-source.d.ts +4 -0
- package/dist/workflow/lib/compiler/manifest-source.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/manifest-source.js +100 -0
- package/dist/workflow/lib/compiler/manifest-source.js.map +1 -0
- package/dist/workflow/lib/compiler/matrix.d.ts +4 -0
- package/dist/workflow/lib/compiler/matrix.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/matrix.js +76 -0
- package/dist/workflow/lib/compiler/matrix.js.map +1 -0
- package/dist/workflow/lib/compiler/mount-plan.d.ts +4 -0
- package/dist/workflow/lib/compiler/mount-plan.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/mount-plan.js +96 -0
- package/dist/workflow/lib/compiler/mount-plan.js.map +1 -0
- package/dist/workflow/lib/compiler/payload-reach-in.d.ts +14 -0
- package/dist/workflow/lib/compiler/payload-reach-in.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/payload-reach-in.js +273 -0
- package/dist/workflow/lib/compiler/payload-reach-in.js.map +1 -0
- package/dist/workflow/lib/compiler/permissions.d.ts +6 -0
- package/dist/workflow/lib/compiler/permissions.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/permissions.js +43 -0
- package/dist/workflow/lib/compiler/permissions.js.map +1 -0
- package/dist/workflow/lib/compiler/retry-timeout.d.ts +6 -0
- package/dist/workflow/lib/compiler/retry-timeout.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/retry-timeout.js +64 -0
- package/dist/workflow/lib/compiler/retry-timeout.js.map +1 -0
- package/dist/workflow/lib/compiler/review-step.d.ts +18 -0
- package/dist/workflow/lib/compiler/review-step.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/review-step.js +247 -0
- package/dist/workflow/lib/compiler/review-step.js.map +1 -0
- package/dist/workflow/lib/compiler/types.d.ts +42 -0
- package/dist/workflow/lib/compiler/types.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/types.js +3 -0
- package/dist/workflow/lib/compiler/types.js.map +1 -0
- package/dist/workflow/lib/compiler/variable-requirements.d.ts +5 -0
- package/dist/workflow/lib/compiler/variable-requirements.d.ts.map +1 -0
- package/dist/workflow/lib/compiler/variable-requirements.js +119 -0
- package/dist/workflow/lib/compiler/variable-requirements.js.map +1 -0
- package/dist/workflow/lib/deliverable-spec-keys.d.ts +3 -0
- package/dist/workflow/lib/deliverable-spec-keys.d.ts.map +1 -0
- package/dist/workflow/lib/deliverable-spec-keys.js +90 -0
- package/dist/workflow/lib/deliverable-spec-keys.js.map +1 -0
- package/dist/workflow/lib/dispatch-inputs/index.d.ts +23 -0
- package/dist/workflow/lib/dispatch-inputs/index.d.ts.map +1 -0
- package/dist/workflow/lib/dispatch-inputs/index.js +106 -0
- package/dist/workflow/lib/dispatch-inputs/index.js.map +1 -0
- package/dist/workflow/lib/dispatch-inputs/to-json-schema.d.ts +3 -0
- package/dist/workflow/lib/dispatch-inputs/to-json-schema.d.ts.map +1 -0
- package/dist/workflow/lib/dispatch-inputs/to-json-schema.js +43 -0
- package/dist/workflow/lib/dispatch-inputs/to-json-schema.js.map +1 -0
- package/dist/workflow/lib/duration.d.ts +2 -0
- package/dist/workflow/lib/duration.d.ts.map +1 -0
- package/dist/workflow/lib/duration.js +26 -0
- package/dist/workflow/lib/duration.js.map +1 -0
- package/dist/workflow/lib/errors.d.ts +9 -0
- package/dist/workflow/lib/errors.d.ts.map +1 -0
- package/dist/workflow/lib/errors.js +28 -0
- package/dist/workflow/lib/errors.js.map +1 -0
- package/dist/workflow/lib/expression/ast.d.ts +61 -0
- package/dist/workflow/lib/expression/ast.d.ts.map +1 -0
- package/dist/workflow/lib/expression/ast.js +34 -0
- package/dist/workflow/lib/expression/ast.js.map +1 -0
- package/dist/workflow/lib/expression/context.d.ts +63 -0
- package/dist/workflow/lib/expression/context.d.ts.map +1 -0
- package/dist/workflow/lib/expression/context.js +32 -0
- package/dist/workflow/lib/expression/context.js.map +1 -0
- package/dist/workflow/lib/expression/evaluator.d.ts +5 -0
- package/dist/workflow/lib/expression/evaluator.d.ts.map +1 -0
- package/dist/workflow/lib/expression/evaluator.js +291 -0
- package/dist/workflow/lib/expression/evaluator.js.map +1 -0
- package/dist/workflow/lib/expression/index.d.ts +9 -0
- package/dist/workflow/lib/expression/index.d.ts.map +1 -0
- package/dist/workflow/lib/expression/index.js +26 -0
- package/dist/workflow/lib/expression/index.js.map +1 -0
- package/dist/workflow/lib/expression/interpolation.d.ts +9 -0
- package/dist/workflow/lib/expression/interpolation.d.ts.map +1 -0
- package/dist/workflow/lib/expression/interpolation.js +51 -0
- package/dist/workflow/lib/expression/interpolation.js.map +1 -0
- package/dist/workflow/lib/expression/parser.d.ts +4 -0
- package/dist/workflow/lib/expression/parser.d.ts.map +1 -0
- package/dist/workflow/lib/expression/parser.js +203 -0
- package/dist/workflow/lib/expression/parser.js.map +1 -0
- package/dist/workflow/lib/expression/template.d.ts +18 -0
- package/dist/workflow/lib/expression/template.d.ts.map +1 -0
- package/dist/workflow/lib/expression/template.js +63 -0
- package/dist/workflow/lib/expression/template.js.map +1 -0
- package/dist/workflow/lib/expression/tokenizer.d.ts +3 -0
- package/dist/workflow/lib/expression/tokenizer.d.ts.map +1 -0
- package/dist/workflow/lib/expression/tokenizer.js +153 -0
- package/dist/workflow/lib/expression/tokenizer.js.map +1 -0
- package/dist/workflow/lib/expression/tokens.d.ts +25 -0
- package/dist/workflow/lib/expression/tokens.d.ts.map +1 -0
- package/dist/workflow/lib/expression/tokens.js +24 -0
- package/dist/workflow/lib/expression/tokens.js.map +1 -0
- package/dist/workflow/lib/expression/walk-artifact-refs.d.ts +5 -0
- package/dist/workflow/lib/expression/walk-artifact-refs.d.ts.map +1 -0
- package/dist/workflow/lib/expression/walk-artifact-refs.js +138 -0
- package/dist/workflow/lib/expression/walk-artifact-refs.js.map +1 -0
- package/dist/workflow/lib/installation-resource-kind.d.ts +14 -0
- package/dist/workflow/lib/installation-resource-kind.d.ts.map +1 -0
- package/dist/workflow/lib/installation-resource-kind.js +59 -0
- package/dist/workflow/lib/installation-resource-kind.js.map +1 -0
- package/dist/workflow/lib/schemas-loader.d.ts +4 -0
- package/dist/workflow/lib/schemas-loader.d.ts.map +1 -0
- package/dist/workflow/lib/schemas-loader.js +36 -0
- package/dist/workflow/lib/schemas-loader.js.map +1 -0
- package/dist/workflow/lib/serializer.d.ts +3 -0
- package/dist/workflow/lib/serializer.d.ts.map +1 -0
- package/dist/workflow/lib/serializer.js +15 -0
- package/dist/workflow/lib/serializer.js.map +1 -0
- package/dist/workflow/lib/types.d.ts +179 -0
- package/dist/workflow/lib/types.d.ts.map +1 -0
- package/dist/workflow/lib/types.js +3 -0
- package/dist/workflow/lib/types.js.map +1 -0
- package/dist/workflow/lib/validate.d.ts +8 -0
- package/dist/workflow/lib/validate.d.ts.map +1 -0
- package/dist/workflow/lib/validate.js +119 -0
- package/dist/workflow/lib/validate.js.map +1 -0
- package/dist/workspace-manifest/index.d.ts +6 -0
- package/dist/workspace-manifest/index.d.ts.map +1 -0
- package/dist/workspace-manifest/index.js +22 -0
- package/dist/workspace-manifest/index.js.map +1 -0
- package/dist/workspace-manifest/lib/compile.d.ts +8 -0
- package/dist/workspace-manifest/lib/compile.d.ts.map +1 -0
- package/dist/workspace-manifest/lib/compile.js +439 -0
- package/dist/workspace-manifest/lib/compile.js.map +1 -0
- package/dist/workspace-manifest/lib/interpolate.d.ts +12 -0
- package/dist/workspace-manifest/lib/interpolate.d.ts.map +1 -0
- package/dist/workspace-manifest/lib/interpolate.js +81 -0
- package/dist/workspace-manifest/lib/interpolate.js.map +1 -0
- package/dist/workspace-manifest/lib/resolve-extends.d.ts +10 -0
- package/dist/workspace-manifest/lib/resolve-extends.d.ts.map +1 -0
- package/dist/workspace-manifest/lib/resolve-extends.js +108 -0
- package/dist/workspace-manifest/lib/resolve-extends.js.map +1 -0
- package/dist/workspace-manifest/lib/schema.d.ts +710 -0
- package/dist/workspace-manifest/lib/schema.d.ts.map +1 -0
- package/dist/workspace-manifest/lib/schema.js +355 -0
- package/dist/workspace-manifest/lib/schema.js.map +1 -0
- package/dist/workspace-manifest/lib/types.d.ts +153 -0
- package/dist/workspace-manifest/lib/types.d.ts.map +1 -0
- package/dist/workspace-manifest/lib/types.js +10 -0
- package/dist/workspace-manifest/lib/types.js.map +1 -0
- package/package.json +79 -0
- package/schema/action.schema.json +181 -0
- package/schema/reusable-workflow.schema.json +46 -0
- package/schema/workflow.schema.json +373 -0
- package/src/deliverable-spec/index.ts +19 -0
- package/src/deliverable-spec/lib/schema.ts +248 -0
- package/src/deliverable-spec/lib/types.ts +26 -0
- package/src/payload-codec/index.ts +40 -0
- package/src/payload-codec/lib/blob-store.ts +0 -0
- package/src/payload-codec/lib/codec-context.ts +38 -0
- package/src/payload-codec/lib/codec.ts +593 -0
- package/src/payload-codec/lib/enums.ts +58 -0
- package/src/payload-codec/lib/errors.ts +54 -0
- package/src/payload-codec/lib/http-blob-store.ts +257 -0
- package/src/payload-codec/lib/lru-cache.ts +81 -0
- package/src/workflow/index.ts +98 -0
- package/src/workflow/lib/action-input-validator.ts +160 -0
- package/src/workflow/lib/compiler/action-shape.ts +71 -0
- package/src/workflow/lib/compiler/canonical-json.ts +53 -0
- package/src/workflow/lib/compiler/compile.ts +1518 -0
- package/src/workflow/lib/compiler/concurrency.ts +223 -0
- package/src/workflow/lib/compiler/dag.ts +108 -0
- package/src/workflow/lib/compiler/index.ts +10 -0
- package/src/workflow/lib/compiler/inputs.ts +199 -0
- package/src/workflow/lib/compiler/installation-resource-validator.ts +114 -0
- package/src/workflow/lib/compiler/manifest-source.ts +176 -0
- package/src/workflow/lib/compiler/matrix.ts +135 -0
- package/src/workflow/lib/compiler/mount-plan.ts +202 -0
- package/src/workflow/lib/compiler/payload-reach-in.ts +497 -0
- package/src/workflow/lib/compiler/permissions.ts +64 -0
- package/src/workflow/lib/compiler/retry-timeout.ts +105 -0
- package/src/workflow/lib/compiler/review-step.ts +517 -0
- package/src/workflow/lib/compiler/types.ts +170 -0
- package/src/workflow/lib/compiler/variable-requirements.ts +208 -0
- package/src/workflow/lib/deliverable-spec-keys.ts +109 -0
- package/src/workflow/lib/dispatch-inputs/index.ts +160 -0
- package/src/workflow/lib/dispatch-inputs/to-json-schema.ts +60 -0
- package/src/workflow/lib/duration.ts +48 -0
- package/src/workflow/lib/errors.ts +37 -0
- package/src/workflow/lib/expression/ast.ts +108 -0
- package/src/workflow/lib/expression/context.ts +148 -0
- package/src/workflow/lib/expression/evaluator.ts +492 -0
- package/src/workflow/lib/expression/index.ts +28 -0
- package/src/workflow/lib/expression/interpolation.ts +84 -0
- package/src/workflow/lib/expression/parser.ts +264 -0
- package/src/workflow/lib/expression/template.ts +117 -0
- package/src/workflow/lib/expression/tokenizer.ts +200 -0
- package/src/workflow/lib/expression/tokens.ts +30 -0
- package/src/workflow/lib/expression/walk-artifact-refs.ts +232 -0
- package/src/workflow/lib/installation-resource-kind.ts +107 -0
- package/src/workflow/lib/schemas-loader.ts +64 -0
- package/src/workflow/lib/serializer.ts +30 -0
- package/src/workflow/lib/types.ts +361 -0
- package/src/workflow/lib/validate.ts +199 -0
- package/src/workspace-manifest/index.ts +27 -0
- package/src/workspace-manifest/lib/compile.ts +608 -0
- package/src/workspace-manifest/lib/interpolate.ts +140 -0
- package/src/workspace-manifest/lib/resolve-extends.ts +260 -0
- package/src/workspace-manifest/lib/schema.ts +612 -0
- package/src/workspace-manifest/lib/types.ts +392 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZERO_PERMISSIONS = void 0;
|
|
4
|
+
exports.normalizePermissions = normalizePermissions;
|
|
5
|
+
exports.assertJobPermissionsFit = assertJobPermissionsFit;
|
|
6
|
+
const workflow_1 = require("@xemahq/kernel-contracts/workflow");
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
const SCOPE_RANK = Object.freeze({
|
|
9
|
+
[workflow_1.PermissionScope.NONE]: 0,
|
|
10
|
+
[workflow_1.PermissionScope.READ]: 1,
|
|
11
|
+
[workflow_1.PermissionScope.LIMITED]: 2,
|
|
12
|
+
[workflow_1.PermissionScope.WRITE]: 3,
|
|
13
|
+
});
|
|
14
|
+
exports.ZERO_PERMISSIONS = Object.freeze({
|
|
15
|
+
[workflow_1.PermissionResource.REPOS]: workflow_1.PermissionScope.NONE,
|
|
16
|
+
[workflow_1.PermissionResource.KB]: workflow_1.PermissionScope.NONE,
|
|
17
|
+
[workflow_1.PermissionResource.BACKLOG]: workflow_1.PermissionScope.NONE,
|
|
18
|
+
[workflow_1.PermissionResource.INTEGRATIONS]: workflow_1.PermissionScope.NONE,
|
|
19
|
+
[workflow_1.PermissionResource.ARTIFACTS]: workflow_1.PermissionScope.NONE,
|
|
20
|
+
[workflow_1.PermissionResource.MEMORY]: workflow_1.PermissionScope.NONE,
|
|
21
|
+
});
|
|
22
|
+
function normalizePermissions(authored) {
|
|
23
|
+
const base = { ...exports.ZERO_PERMISSIONS };
|
|
24
|
+
if (!authored)
|
|
25
|
+
return base;
|
|
26
|
+
for (const resource of Object.values(workflow_1.PermissionResource)) {
|
|
27
|
+
const scope = authored[resource];
|
|
28
|
+
if (scope !== undefined) {
|
|
29
|
+
base[resource] = scope;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return base;
|
|
33
|
+
}
|
|
34
|
+
function assertJobPermissionsFit(jobPermissions, workflowPermissions, jobKey) {
|
|
35
|
+
for (const resource of Object.values(workflow_1.PermissionResource)) {
|
|
36
|
+
const jobScope = jobPermissions[resource];
|
|
37
|
+
const workflowScope = workflowPermissions[resource];
|
|
38
|
+
if (SCOPE_RANK[jobScope] > SCOPE_RANK[workflowScope]) {
|
|
39
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_PERMISSION_ESCALATION, `Job '${jobKey}' requests ${jobScope} on ${resource} but workflow grants only ${workflowScope}.`, { jobKey, resource, jobScope, workflowScope });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/permissions.ts"],"names":[],"mappings":";;;AA4BA,oDAYC;AAOD,0DAgBC;AA/DD,gEAI2C;AAC3C,sCAA6C;AAI7C,MAAM,UAAU,GAA8C,MAAM,CAAC,MAAM,CAAC;IAC1E,CAAC,0BAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IACzB,CAAC,0BAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IACzB,CAAC,0BAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,CAAC,0BAAe,CAAC,KAAK,CAAC,EAAE,CAAC;CAC3B,CAAC,CAAC;AAGU,QAAA,gBAAgB,GAC3B,MAAM,CAAC,MAAM,CAAC;IACZ,CAAC,6BAAkB,CAAC,KAAK,CAAC,EAAE,0BAAe,CAAC,IAAI;IAChD,CAAC,6BAAkB,CAAC,EAAE,CAAC,EAAE,0BAAe,CAAC,IAAI;IAC7C,CAAC,6BAAkB,CAAC,OAAO,CAAC,EAAE,0BAAe,CAAC,IAAI;IAClD,CAAC,6BAAkB,CAAC,YAAY,CAAC,EAAE,0BAAe,CAAC,IAAI;IACvD,CAAC,6BAAkB,CAAC,SAAS,CAAC,EAAE,0BAAe,CAAC,IAAI;IACpD,CAAC,6BAAkB,CAAC,MAAM,CAAC,EAAE,0BAAe,CAAC,IAAI;CAClD,CAAC,CAAC;AAGL,SAAgB,oBAAoB,CAClC,QAAyC;IAEzC,MAAM,IAAI,GAAgD,EAAE,GAAG,wBAAgB,EAAE,CAAC;IAClF,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,6BAAkB,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,SAAgB,uBAAuB,CACrC,cAAqE,EACrE,mBAA0E,EAC1E,MAAc;IAEd,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,6BAAkB,CAAC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,yBAAgB,CACxB,4BAAiB,CAAC,yBAAyB,EAC3C,QAAQ,MAAM,cAAc,QAAQ,OAAO,QAAQ,6BAA6B,aAAa,GAAG,EAChG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CompiledDefaults, CompiledRetryPolicy } from '@xemahq/kernel-contracts/workflow';
|
|
2
|
+
import type { ActionManifestRetryDefaults, ActionManifestTimeoutDefaults, WorkflowDefaults, WorkflowRetryDeclaration } from '../types';
|
|
3
|
+
export declare function resolveWorkflowDefaults(authored: WorkflowDefaults | undefined): CompiledDefaults;
|
|
4
|
+
export declare function resolveJobRetry(workflowDefault: CompiledRetryPolicy, actionDefault: ActionManifestRetryDefaults | null, jobOverride: WorkflowRetryDeclaration | undefined): CompiledRetryPolicy;
|
|
5
|
+
export declare function resolveJobTimeout(workflowDefaultMs: number, actionDefault: ActionManifestTimeoutDefaults | null, jobOverride: string | undefined): number;
|
|
6
|
+
//# sourceMappingURL=retry-timeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-timeout.d.ts","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/retry-timeout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAmBlB,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACrC,gBAAgB,CAOlB;AAOD,wBAAgB,eAAe,CAC7B,eAAe,EAAE,mBAAmB,EACpC,aAAa,EAAE,2BAA2B,GAAG,IAAI,EACjD,WAAW,EAAE,wBAAwB,GAAG,SAAS,GAChD,mBAAmB,CAMrB;AAKD,wBAAgB,iBAAiB,CAC/B,iBAAiB,EAAE,MAAM,EACzB,aAAa,EAAE,6BAA6B,GAAG,IAAI,EACnD,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,CAQR"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveWorkflowDefaults = resolveWorkflowDefaults;
|
|
4
|
+
exports.resolveJobRetry = resolveJobRetry;
|
|
5
|
+
exports.resolveJobTimeout = resolveJobTimeout;
|
|
6
|
+
const duration_1 = require("../duration");
|
|
7
|
+
const PLATFORM_DEFAULT_RETRY = {
|
|
8
|
+
maxAttempts: 1,
|
|
9
|
+
initialIntervalMs: 1_000,
|
|
10
|
+
backoffCoefficient: 2.0,
|
|
11
|
+
maximumIntervalMs: 60_000,
|
|
12
|
+
nonRetryableErrorTypes: [],
|
|
13
|
+
};
|
|
14
|
+
const PLATFORM_DEFAULT_TIMEOUT_MS = 3_600_000;
|
|
15
|
+
function resolveWorkflowDefaults(authored) {
|
|
16
|
+
return {
|
|
17
|
+
retry: resolveRetry(authored?.retry, PLATFORM_DEFAULT_RETRY),
|
|
18
|
+
timeoutMs: authored?.timeout !== undefined
|
|
19
|
+
? (0, duration_1.parseDurationMs)(authored.timeout)
|
|
20
|
+
: PLATFORM_DEFAULT_TIMEOUT_MS,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function resolveJobRetry(workflowDefault, actionDefault, jobOverride) {
|
|
24
|
+
const actionBaseline = actionDefault
|
|
25
|
+
? fromActionManifestRetry(actionDefault)
|
|
26
|
+
: workflowDefault;
|
|
27
|
+
return resolveRetry(jobOverride, actionBaseline);
|
|
28
|
+
}
|
|
29
|
+
function resolveJobTimeout(workflowDefaultMs, actionDefault, jobOverride) {
|
|
30
|
+
if (jobOverride !== undefined) {
|
|
31
|
+
return (0, duration_1.parseDurationMs)(jobOverride);
|
|
32
|
+
}
|
|
33
|
+
if (actionDefault) {
|
|
34
|
+
return (0, duration_1.parseDurationMs)(actionDefault.startToClose);
|
|
35
|
+
}
|
|
36
|
+
return workflowDefaultMs;
|
|
37
|
+
}
|
|
38
|
+
function resolveRetry(override, baseline) {
|
|
39
|
+
if (!override)
|
|
40
|
+
return baseline;
|
|
41
|
+
return {
|
|
42
|
+
maxAttempts: override.maxAttempts ?? baseline.maxAttempts,
|
|
43
|
+
initialIntervalMs: override.initialInterval !== undefined
|
|
44
|
+
? (0, duration_1.parseDurationMs)(override.initialInterval)
|
|
45
|
+
: baseline.initialIntervalMs,
|
|
46
|
+
backoffCoefficient: override.backoffCoefficient ?? baseline.backoffCoefficient,
|
|
47
|
+
maximumIntervalMs: override.maximumInterval !== undefined
|
|
48
|
+
? (0, duration_1.parseDurationMs)(override.maximumInterval)
|
|
49
|
+
: baseline.maximumIntervalMs,
|
|
50
|
+
nonRetryableErrorTypes: override.nonRetryableErrorTypes !== undefined
|
|
51
|
+
? [...override.nonRetryableErrorTypes]
|
|
52
|
+
: [...baseline.nonRetryableErrorTypes],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function fromActionManifestRetry(retry) {
|
|
56
|
+
return {
|
|
57
|
+
maxAttempts: retry.maxAttempts,
|
|
58
|
+
initialIntervalMs: (0, duration_1.parseDurationMs)(retry.initialInterval),
|
|
59
|
+
backoffCoefficient: retry.backoffCoefficient,
|
|
60
|
+
maximumIntervalMs: (0, duration_1.parseDurationMs)(retry.maximumInterval),
|
|
61
|
+
nonRetryableErrorTypes: retry.nonRetryableErrorTypes !== undefined ? [...retry.nonRetryableErrorTypes] : [],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=retry-timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-timeout.js","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/retry-timeout.ts"],"names":[],"mappings":";;AA4BA,0DASC;AAOD,0CAUC;AAKD,8CAYC;AA7DD,0CAA8C;AAK9C,MAAM,sBAAsB,GAAwB;IAClD,WAAW,EAAE,CAAC;IACd,iBAAiB,EAAE,KAAK;IACxB,kBAAkB,EAAE,GAAG;IACvB,iBAAiB,EAAE,MAAM;IACzB,sBAAsB,EAAE,EAAE;CAC3B,CAAC;AAIF,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAG9C,SAAgB,uBAAuB,CACrC,QAAsC;IAEtC,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,sBAAsB,CAAC;QAC5D,SAAS,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS;YACxC,CAAC,CAAC,IAAA,0BAAe,EAAC,QAAQ,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,2BAA2B;KAChC,CAAC;AACJ,CAAC;AAOD,SAAgB,eAAe,CAC7B,eAAoC,EACpC,aAAiD,EACjD,WAAiD;IAEjD,MAAM,cAAc,GAAG,aAAa;QAClC,CAAC,CAAC,uBAAuB,CAAC,aAAa,CAAC;QACxC,CAAC,CAAC,eAAe,CAAC;IAEpB,OAAO,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC;AAKD,SAAgB,iBAAiB,CAC/B,iBAAyB,EACzB,aAAmD,EACnD,WAA+B;IAE/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAA,0BAAe,EAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,IAAA,0BAAe,EAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,YAAY,CACnB,QAA8C,EAC9C,QAA6B;IAE7B,IAAI,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/B,OAAO;QACL,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW;QACzD,iBAAiB,EACf,QAAQ,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,IAAA,0BAAe,EAAC,QAAQ,CAAC,eAAe,CAAC;YAC3C,CAAC,CAAC,QAAQ,CAAC,iBAAiB;QAChC,kBAAkB,EAChB,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,kBAAkB;QAC5D,iBAAiB,EACf,QAAQ,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,IAAA,0BAAe,EAAC,QAAQ,CAAC,eAAe,CAAC;YAC3C,CAAC,CAAC,QAAQ,CAAC,iBAAiB;QAChC,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,KAAK,SAAS;YACnE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,sBAAsB,CAAC;YACtC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,sBAAsB,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAkC;IACjE,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,iBAAiB,EAAE,IAAA,0BAAe,EAAC,KAAK,CAAC,eAAe,CAAC;QACzD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,iBAAiB,EAAE,IAAA,0BAAe,EAAC,KAAK,CAAC,eAAe,CAAC;QACzD,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE;KAC5G,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WorkflowDocument, WorkflowJobDeclaration } from '../types';
|
|
2
|
+
export declare function isReviewActionRef(uses: string): boolean;
|
|
3
|
+
export type ReviewRedraftStrategyIR = {
|
|
4
|
+
readonly kind: 'static';
|
|
5
|
+
readonly entries: readonly Readonly<Record<string, unknown>>[];
|
|
6
|
+
readonly maxParallel: number;
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: 'dynamic';
|
|
9
|
+
readonly fromExpression: string;
|
|
10
|
+
readonly bindingName: string;
|
|
11
|
+
readonly maxEntries: number;
|
|
12
|
+
readonly maxParallel: number;
|
|
13
|
+
readonly keyBy: string | null;
|
|
14
|
+
};
|
|
15
|
+
export declare function validateReviewSteps(workflow: WorkflowDocument): void;
|
|
16
|
+
export declare function computeReviewNeedsExtensions(workflow: WorkflowDocument): Readonly<Record<string, readonly string[]>>;
|
|
17
|
+
export declare function rewriteReviewStepWith(jobKey: string, payload: WorkflowJobDeclaration, workflow: WorkflowDocument): Readonly<Record<string, unknown>>;
|
|
18
|
+
//# sourceMappingURL=review-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-step.d.ts","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/review-step.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EAEvB,MAAM,UAAU,CAAC;AAUlB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAoBD,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAsFN,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAsEpE;AAaD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,gBAAgB,GACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAkC7C;AAwED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,gBAAgB,GACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwDnC"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isReviewActionRef = isReviewActionRef;
|
|
4
|
+
exports.validateReviewSteps = validateReviewSteps;
|
|
5
|
+
exports.computeReviewNeedsExtensions = computeReviewNeedsExtensions;
|
|
6
|
+
exports.rewriteReviewStepWith = rewriteReviewStepWith;
|
|
7
|
+
const workflow_1 = require("@xemahq/kernel-contracts/workflow");
|
|
8
|
+
const errors_1 = require("../errors");
|
|
9
|
+
const expression_1 = require("../expression");
|
|
10
|
+
const interpolation_1 = require("../expression/interpolation");
|
|
11
|
+
const REVIEW_ACTION_RE = /^xema\/review@[0-9]+(\.[0-9]+(\.[0-9]+(-[A-Za-z0-9.-]+)?)?)?$/;
|
|
12
|
+
const AGENT_ACTION_RE = /^xema\/agent@[0-9]+(\.[0-9]+(\.[0-9]+(-[A-Za-z0-9.-]+)?)?)?$/;
|
|
13
|
+
function isReviewActionRef(uses) {
|
|
14
|
+
return REVIEW_ACTION_RE.test(uses);
|
|
15
|
+
}
|
|
16
|
+
function projectReviewWith(jobKey, rawWith) {
|
|
17
|
+
const w = rawWith ?? {};
|
|
18
|
+
const subjectRaw = w['subject'];
|
|
19
|
+
let subject;
|
|
20
|
+
if (subjectRaw === undefined) {
|
|
21
|
+
subject = undefined;
|
|
22
|
+
}
|
|
23
|
+
else if (typeof subjectRaw === 'string') {
|
|
24
|
+
if (subjectRaw.length === 0) {
|
|
25
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.subject must be a non-empty string or array of strings.`, { jobKey, fieldPath: 'with.subject' });
|
|
26
|
+
}
|
|
27
|
+
subject = subjectRaw;
|
|
28
|
+
}
|
|
29
|
+
else if (Array.isArray(subjectRaw)) {
|
|
30
|
+
if (subjectRaw.length === 0) {
|
|
31
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.subject must be a non-empty array (got []).`, { jobKey, fieldPath: 'with.subject' });
|
|
32
|
+
}
|
|
33
|
+
for (let i = 0; i < subjectRaw.length; i++) {
|
|
34
|
+
const item = subjectRaw[i];
|
|
35
|
+
if (typeof item !== 'string' || item.length === 0) {
|
|
36
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.subject[${i}] must be a non-empty string.`, { jobKey, fieldPath: `with.subject[${i}]` });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
subject = subjectRaw;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.subject must be a string or an array of strings (got ${typeof subjectRaw}).`, { jobKey, fieldPath: 'with.subject' });
|
|
43
|
+
}
|
|
44
|
+
const redraftRaw = w['redraft'];
|
|
45
|
+
let redraft;
|
|
46
|
+
if (redraftRaw === undefined) {
|
|
47
|
+
redraft = undefined;
|
|
48
|
+
}
|
|
49
|
+
else if (typeof redraftRaw === 'object' &&
|
|
50
|
+
redraftRaw !== null &&
|
|
51
|
+
!Array.isArray(redraftRaw)) {
|
|
52
|
+
const stepRaw = redraftRaw['step'];
|
|
53
|
+
if (typeof stepRaw !== 'string' || stepRaw.length === 0) {
|
|
54
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.redraft.step must be a non-empty string naming a producer step.`, { jobKey, fieldPath: 'with.redraft.step' });
|
|
55
|
+
}
|
|
56
|
+
redraft = { step: stepRaw };
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.redraft must be an object of shape '{ step: <stepName> }'.`, { jobKey, fieldPath: 'with.redraft' });
|
|
60
|
+
}
|
|
61
|
+
return { subject, redraft };
|
|
62
|
+
}
|
|
63
|
+
function validateReviewSteps(workflow) {
|
|
64
|
+
for (const [jobKey, job] of Object.entries(workflow.jobs)) {
|
|
65
|
+
if (!isReviewActionRef(job.uses)) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const shape = projectReviewWith(jobKey, job.with);
|
|
69
|
+
if (shape.redraft !== undefined && shape.subject === undefined) {
|
|
70
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' has 'redraft' set but no 'subject'. Author the producer as a separate step and reference it via 'subject: \${{ needs.${shape.redraft.step}.outputs.deliverable }}'.`, { jobKey, fieldPath: 'with' });
|
|
71
|
+
}
|
|
72
|
+
if (shape.redraft !== undefined) {
|
|
73
|
+
const stepName = shape.redraft.step;
|
|
74
|
+
const producer = workflow.jobs[stepName];
|
|
75
|
+
if (!producer) {
|
|
76
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.redraft.step references unknown job '${stepName}'.`, { jobKey, fieldPath: 'with.redraft.step', referencedJob: stepName });
|
|
77
|
+
}
|
|
78
|
+
if (stepName === jobKey) {
|
|
79
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.redraft.step cannot reference itself.`, { jobKey, fieldPath: 'with.redraft.step' });
|
|
80
|
+
}
|
|
81
|
+
if (!AGENT_ACTION_RE.test(producer.uses)) {
|
|
82
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.redraft.step = '${stepName}' must reference a step that uses 'xema/agent@<semver>' (got '${producer.uses}').`, {
|
|
83
|
+
jobKey,
|
|
84
|
+
fieldPath: 'with.redraft.step',
|
|
85
|
+
referencedJob: stepName,
|
|
86
|
+
referencedUses: producer.uses,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const declaredNeeds = job.needs ?? [];
|
|
90
|
+
if (!declaredNeeds.includes(stepName)) {
|
|
91
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.redraft.step = '${stepName}' must also be listed in 'needs:'. Add 'needs: [${[...declaredNeeds, stepName].map((s) => `'${s}'`).join(', ')}]'.`, {
|
|
92
|
+
jobKey,
|
|
93
|
+
fieldPath: 'with.redraft.step',
|
|
94
|
+
referencedJob: stepName,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function computeReviewNeedsExtensions(workflow) {
|
|
101
|
+
const out = {};
|
|
102
|
+
for (const [jobKey, job] of Object.entries(workflow.jobs)) {
|
|
103
|
+
if (!isReviewActionRef(job.uses)) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const shape = projectReviewWith(jobKey, job.with);
|
|
107
|
+
if (shape.redraft === undefined) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const producer = workflow.jobs[shape.redraft.step];
|
|
111
|
+
if (!producer) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const declared = new Set(producer.needs ?? []);
|
|
115
|
+
if (producer.strategy !== undefined && 'dynamic' in producer.strategy) {
|
|
116
|
+
const fromRefs = collectNeedsReferencesFromExpression(producer.strategy.dynamic.from);
|
|
117
|
+
for (const ref of fromRefs) {
|
|
118
|
+
declared.add(ref);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (declared.size === 0) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
out[jobKey] = Object.freeze([...declared]);
|
|
125
|
+
}
|
|
126
|
+
return Object.freeze(out);
|
|
127
|
+
}
|
|
128
|
+
function collectNeedsReferencesFromExpression(rawExpression) {
|
|
129
|
+
const body = (0, interpolation_1.stripInterpolation)(rawExpression);
|
|
130
|
+
const ast = (0, expression_1.compileExpression)(body);
|
|
131
|
+
const seen = new Set();
|
|
132
|
+
walkForNeedsRefs(ast, seen);
|
|
133
|
+
return [...seen];
|
|
134
|
+
}
|
|
135
|
+
function walkForNeedsRefs(node, sink) {
|
|
136
|
+
switch (node.kind) {
|
|
137
|
+
case expression_1.ExpressionNodeKind.MEMBER: {
|
|
138
|
+
if (node.target.kind === expression_1.ExpressionNodeKind.IDENTIFIER &&
|
|
139
|
+
node.target.name === 'needs') {
|
|
140
|
+
sink.add(node.property);
|
|
141
|
+
}
|
|
142
|
+
walkForNeedsRefs(node.target, sink);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
case expression_1.ExpressionNodeKind.INDEX:
|
|
146
|
+
walkForNeedsRefs(node.target, sink);
|
|
147
|
+
walkForNeedsRefs(node.index, sink);
|
|
148
|
+
return;
|
|
149
|
+
case expression_1.ExpressionNodeKind.CALL:
|
|
150
|
+
for (const arg of node.args) {
|
|
151
|
+
walkForNeedsRefs(arg, sink);
|
|
152
|
+
}
|
|
153
|
+
return;
|
|
154
|
+
case expression_1.ExpressionNodeKind.UNARY_NOT:
|
|
155
|
+
walkForNeedsRefs(node.operand, sink);
|
|
156
|
+
return;
|
|
157
|
+
case expression_1.ExpressionNodeKind.BINARY_EQ:
|
|
158
|
+
case expression_1.ExpressionNodeKind.BINARY_NEQ:
|
|
159
|
+
case expression_1.ExpressionNodeKind.BINARY_AND:
|
|
160
|
+
case expression_1.ExpressionNodeKind.BINARY_OR:
|
|
161
|
+
walkForNeedsRefs(node.left, sink);
|
|
162
|
+
walkForNeedsRefs(node.right, sink);
|
|
163
|
+
return;
|
|
164
|
+
case expression_1.ExpressionNodeKind.LITERAL:
|
|
165
|
+
case expression_1.ExpressionNodeKind.IDENTIFIER:
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function rewriteReviewStepWith(jobKey, payload, workflow) {
|
|
170
|
+
if (!isReviewActionRef(payload.uses)) {
|
|
171
|
+
return payload.with ?? {};
|
|
172
|
+
}
|
|
173
|
+
const shape = projectReviewWith(jobKey, payload.with);
|
|
174
|
+
const out = { ...(payload.with ?? {}) };
|
|
175
|
+
delete out['subject'];
|
|
176
|
+
delete out['redraft'];
|
|
177
|
+
if (shape.subject !== undefined) {
|
|
178
|
+
out['subjects'] =
|
|
179
|
+
typeof shape.subject === 'string' ? [shape.subject] : [...shape.subject];
|
|
180
|
+
}
|
|
181
|
+
if (shape.redraft !== undefined) {
|
|
182
|
+
const producer = workflow.jobs[shape.redraft.step];
|
|
183
|
+
if (!producer) {
|
|
184
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_SEMANTIC_INVALID, `Job '${jobKey}' with.redraft.step references unknown job '${shape.redraft.step}'.`, { jobKey, fieldPath: 'with.redraft.step' });
|
|
185
|
+
}
|
|
186
|
+
const ir = {
|
|
187
|
+
step: shape.redraft.step,
|
|
188
|
+
uses: producer.uses,
|
|
189
|
+
with: producer.with ?? {},
|
|
190
|
+
};
|
|
191
|
+
const strategy = compileRedraftStrategyIR(producer.strategy);
|
|
192
|
+
if (strategy !== null) {
|
|
193
|
+
ir['strategy'] = strategy;
|
|
194
|
+
}
|
|
195
|
+
if (producer.matrixGather && producer.matrixGather.length > 0) {
|
|
196
|
+
ir['matrixGather'] = [...producer.matrixGather];
|
|
197
|
+
}
|
|
198
|
+
out['redraft'] = ir;
|
|
199
|
+
}
|
|
200
|
+
return out;
|
|
201
|
+
}
|
|
202
|
+
function compileRedraftStrategyIR(strategy) {
|
|
203
|
+
if (strategy === undefined) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
if ('matrix' in strategy) {
|
|
207
|
+
const entries = expandStaticMatrixAxes(strategy.matrix);
|
|
208
|
+
const maxParallel = strategy.maxParallel !== undefined && strategy.maxParallel > 0
|
|
209
|
+
? Math.min(strategy.maxParallel, entries.length || 1)
|
|
210
|
+
: Math.min(8, Math.max(1, entries.length));
|
|
211
|
+
return {
|
|
212
|
+
kind: 'static',
|
|
213
|
+
entries,
|
|
214
|
+
maxParallel,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
const dyn = strategy.dynamic;
|
|
218
|
+
const body = (0, interpolation_1.stripInterpolation)(dyn.from);
|
|
219
|
+
const maxEntries = dyn.maxEntries ?? 64;
|
|
220
|
+
const maxParallel = strategy.maxParallel !== undefined && strategy.maxParallel > 0
|
|
221
|
+
? Math.min(strategy.maxParallel, maxEntries)
|
|
222
|
+
: Math.min(8, maxEntries);
|
|
223
|
+
return {
|
|
224
|
+
kind: 'dynamic',
|
|
225
|
+
fromExpression: body,
|
|
226
|
+
bindingName: dyn.as,
|
|
227
|
+
maxEntries,
|
|
228
|
+
maxParallel,
|
|
229
|
+
keyBy: dyn.keyBy ?? null,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function expandStaticMatrixAxes(axes) {
|
|
233
|
+
const axisKeys = Object.keys(axes).sort();
|
|
234
|
+
let entries = [{}];
|
|
235
|
+
for (const axis of axisKeys) {
|
|
236
|
+
const values = axes[axis];
|
|
237
|
+
const next = [];
|
|
238
|
+
for (const partial of entries) {
|
|
239
|
+
for (const value of values) {
|
|
240
|
+
next.push({ ...partial, [axis]: value });
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
entries = next;
|
|
244
|
+
}
|
|
245
|
+
return entries.map(Object.freeze);
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=review-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-step.js","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/review-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ActionExecutionKind, Briefcase, TaskQueueName, TriggerPayload, WalletContents, WorkflowRef } from '@xemahq/kernel-contracts/workflow';
|
|
2
|
+
import type { ActionManifest, WorkflowDocument } from '../types';
|
|
3
|
+
export interface CompileInput {
|
|
4
|
+
readonly workflow: WorkflowDocument;
|
|
5
|
+
readonly workflowRef: WorkflowRef;
|
|
6
|
+
readonly trigger: TriggerPayload;
|
|
7
|
+
readonly resolvedRefs: Readonly<Record<string, ResolvedRef>>;
|
|
8
|
+
readonly resolvedAgents?: Readonly<Record<string, ResolvedAgent>>;
|
|
9
|
+
readonly resolvedDeliverableSpecs?: Readonly<Record<string, ResolvedDeliverableSpec>>;
|
|
10
|
+
readonly workflowDefinitionVersionSha256: string;
|
|
11
|
+
readonly resolvedWallets?: Readonly<Record<string, WalletContents>>;
|
|
12
|
+
readonly installationScope?: InstallationCompileScope;
|
|
13
|
+
readonly previewMode?: boolean;
|
|
14
|
+
readonly briefcase?: Briefcase;
|
|
15
|
+
}
|
|
16
|
+
export interface InstallationCompileScope {
|
|
17
|
+
readonly installationId: string;
|
|
18
|
+
readonly orgId: string;
|
|
19
|
+
readonly projectId: string;
|
|
20
|
+
readonly biomeId: string;
|
|
21
|
+
readonly boundResources: Readonly<Record<string, readonly string[]>>;
|
|
22
|
+
}
|
|
23
|
+
export interface ResolvedAgent {
|
|
24
|
+
readonly slug: string;
|
|
25
|
+
readonly snapshotHash: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ResolvedDeliverableSpec {
|
|
28
|
+
readonly ref: string;
|
|
29
|
+
readonly slug: string;
|
|
30
|
+
readonly snapshotHash: string;
|
|
31
|
+
readonly topLevelKeys?: readonly string[];
|
|
32
|
+
}
|
|
33
|
+
export interface ResolvedRef {
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly version: string;
|
|
36
|
+
readonly manifestSha256: string;
|
|
37
|
+
readonly executionKind: ActionExecutionKind;
|
|
38
|
+
readonly taskQueue: TaskQueueName;
|
|
39
|
+
readonly isReusableWorkflow: boolean;
|
|
40
|
+
readonly actionManifest: ActionManifest | null;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,WAAW,EACZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiBjE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAc7D,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAQlE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,CAC1C,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CACxC,CAAC;IACF,QAAQ,CAAC,+BAA+B,EAAE,MAAM,CAAC;IAUjD,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAgBpE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAQtD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAU/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAaD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACtE;AASD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAeD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAWD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CAChD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type WalletContents, type WorkflowVariableRequirement } from '@xemahq/kernel-contracts/workflow';
|
|
2
|
+
import type { WorkflowDocument } from '../types';
|
|
3
|
+
export declare function resolveWalletRequirements(doc: WorkflowDocument, resolvedWallets: Readonly<Record<string, WalletContents>> | undefined): readonly WorkflowVariableRequirement[];
|
|
4
|
+
export declare function validateVariableReferences(doc: WorkflowDocument, requiredVariables: readonly WorkflowVariableRequirement[], resolvedWallets: Readonly<Record<string, WalletContents>> | undefined): void;
|
|
5
|
+
//# sourceMappingURL=variable-requirements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-requirements.d.ts","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/variable-requirements.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EACjC,MAAM,mCAAmC,CAAC;AAU3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA4BjD,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,gBAAgB,EACrB,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,GACpE,SAAS,2BAA2B,EAAE,CA8CxC;AAQD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,gBAAgB,EACrB,iBAAiB,EAAE,SAAS,2BAA2B,EAAE,EACzD,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,GACpE,IAAI,CAkCN"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveWalletRequirements = resolveWalletRequirements;
|
|
4
|
+
exports.validateVariableReferences = validateVariableReferences;
|
|
5
|
+
const workflow_1 = require("@xemahq/kernel-contracts/workflow");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const expression_1 = require("../expression");
|
|
8
|
+
const ast_1 = require("../expression/ast");
|
|
9
|
+
const interpolation_1 = require("../expression/interpolation");
|
|
10
|
+
function resolveWalletRequirements(doc, resolvedWallets) {
|
|
11
|
+
const declaredWallets = doc.requires?.wallets ?? [];
|
|
12
|
+
if (resolvedWallets === undefined) {
|
|
13
|
+
return Object.freeze([]);
|
|
14
|
+
}
|
|
15
|
+
const missingWallets = [];
|
|
16
|
+
for (const name of declaredWallets) {
|
|
17
|
+
if (!Object.hasOwn(resolvedWallets, name)) {
|
|
18
|
+
missingWallets.push(name);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (missingWallets.length > 0) {
|
|
22
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.WORKFLOW_WALLET_NOT_FOUND, `Wallet(s) declared in requires.wallets are not available for this project/org scope: ${missingWallets.join(', ')}`, { missing: missingWallets });
|
|
23
|
+
}
|
|
24
|
+
const merged = new Map();
|
|
25
|
+
for (const name of declaredWallets) {
|
|
26
|
+
const wallet = resolvedWallets[name];
|
|
27
|
+
if (!wallet) {
|
|
28
|
+
throw new Error(`Internal: declaredWallets references unresolved wallet '${name}'.`);
|
|
29
|
+
}
|
|
30
|
+
for (const entry of wallet.entries) {
|
|
31
|
+
merged.set(entry.key, {
|
|
32
|
+
name: entry.key,
|
|
33
|
+
secret: entry.isSecret,
|
|
34
|
+
optional: false,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return Object.freeze([...merged.values()]);
|
|
39
|
+
}
|
|
40
|
+
function validateVariableReferences(doc, requiredVariables, resolvedWallets) {
|
|
41
|
+
if (resolvedWallets === undefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const staticVarNames = new Set(Object.keys(doc.vars ?? {}));
|
|
45
|
+
const allowedVars = new Set(staticVarNames);
|
|
46
|
+
const allowedSecrets = new Set();
|
|
47
|
+
for (const r of requiredVariables) {
|
|
48
|
+
if (r.secret) {
|
|
49
|
+
allowedSecrets.add(r.name);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
allowedVars.add(r.name);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
for (const { source, pathLabel } of collectAllExpressions(doc)) {
|
|
56
|
+
const ast = (0, expression_1.compileExpression)(source);
|
|
57
|
+
walkVariableAccesses(ast, (root, name) => {
|
|
58
|
+
if (root === ast_1.ExpressionRoot.VARS && !allowedVars.has(name)) {
|
|
59
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_EXPRESSION_INVALID, `Expression at ${pathLabel} reads vars.${name}, but '${name}' is not provided by workflow.vars or any wallet in requires.wallets.`, { pathLabel, root, name, source });
|
|
60
|
+
}
|
|
61
|
+
if (root === ast_1.ExpressionRoot.SECRETS && !allowedSecrets.has(name)) {
|
|
62
|
+
throw new errors_1.WorkflowDslError(workflow_1.WorkflowErrorCode.DSL_EXPRESSION_INVALID, `Expression at ${pathLabel} reads secrets.${name}, but '${name}' is not provided by any wallet in requires.wallets (or the wallet entry is not marked secret).`, { pathLabel, root, name, source });
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function collectAllExpressions(doc) {
|
|
68
|
+
const out = [];
|
|
69
|
+
for (const [jobKey, job] of Object.entries(doc.jobs)) {
|
|
70
|
+
for (const expr of (0, expression_1.extractInterpolations)(job.with, ['jobs', jobKey, 'with'])) {
|
|
71
|
+
out.push({ source: expr.source, pathLabel: expr.path.join('.') });
|
|
72
|
+
}
|
|
73
|
+
for (const expr of (0, expression_1.extractInterpolations)(job.outputs, ['jobs', jobKey, 'outputs'])) {
|
|
74
|
+
out.push({ source: expr.source, pathLabel: expr.path.join('.') });
|
|
75
|
+
}
|
|
76
|
+
if (typeof job.if === 'string' && job.if.length > 0) {
|
|
77
|
+
out.push({ source: (0, interpolation_1.stripInterpolation)(job.if), pathLabel: `jobs.${jobKey}.if` });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
function walkVariableAccesses(node, onAccess) {
|
|
83
|
+
switch (node.kind) {
|
|
84
|
+
case expression_1.ExpressionNodeKind.MEMBER: {
|
|
85
|
+
const target = node.target;
|
|
86
|
+
if (target.kind === expression_1.ExpressionNodeKind.IDENTIFIER &&
|
|
87
|
+
(target.name === ast_1.ExpressionRoot.VARS ||
|
|
88
|
+
target.name === ast_1.ExpressionRoot.SECRETS)) {
|
|
89
|
+
onAccess(target.name, node.property);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
walkVariableAccesses(target, onAccess);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
case expression_1.ExpressionNodeKind.INDEX:
|
|
96
|
+
walkVariableAccesses(node.target, onAccess);
|
|
97
|
+
walkVariableAccesses(node.index, onAccess);
|
|
98
|
+
return;
|
|
99
|
+
case expression_1.ExpressionNodeKind.CALL:
|
|
100
|
+
for (const arg of node.args) {
|
|
101
|
+
walkVariableAccesses(arg, onAccess);
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
case expression_1.ExpressionNodeKind.UNARY_NOT:
|
|
105
|
+
walkVariableAccesses(node.operand, onAccess);
|
|
106
|
+
return;
|
|
107
|
+
case expression_1.ExpressionNodeKind.BINARY_EQ:
|
|
108
|
+
case expression_1.ExpressionNodeKind.BINARY_NEQ:
|
|
109
|
+
case expression_1.ExpressionNodeKind.BINARY_AND:
|
|
110
|
+
case expression_1.ExpressionNodeKind.BINARY_OR:
|
|
111
|
+
walkVariableAccesses(node.left, onAccess);
|
|
112
|
+
walkVariableAccesses(node.right, onAccess);
|
|
113
|
+
return;
|
|
114
|
+
case expression_1.ExpressionNodeKind.IDENTIFIER:
|
|
115
|
+
case expression_1.ExpressionNodeKind.LITERAL:
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=variable-requirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-requirements.js","sourceRoot":"","sources":["../../../../src/workflow/lib/compiler/variable-requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliverable-spec-keys.d.ts","sourceRoot":"","sources":["../../../src/workflow/lib/deliverable-spec-keys.ts"],"names":[],"mappings":"AA+BA,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAKrF;AAYD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,GAAG,MAAM,GACtB,SAAS,MAAM,EAAE,GAAG,IAAI,CAiB1B"}
|