@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.
Files changed (288) hide show
  1. package/LICENSE +201 -0
  2. package/dist/deliverable-spec/index.d.ts +3 -0
  3. package/dist/deliverable-spec/index.d.ts.map +1 -0
  4. package/dist/deliverable-spec/index.js +19 -0
  5. package/dist/deliverable-spec/index.js.map +1 -0
  6. package/dist/deliverable-spec/lib/schema.d.ts +151 -0
  7. package/dist/deliverable-spec/lib/schema.d.ts.map +1 -0
  8. package/dist/deliverable-spec/lib/schema.js +139 -0
  9. package/dist/deliverable-spec/lib/schema.js.map +1 -0
  10. package/dist/deliverable-spec/lib/types.d.ts +8 -0
  11. package/dist/deliverable-spec/lib/types.d.ts.map +1 -0
  12. package/dist/deliverable-spec/lib/types.js +3 -0
  13. package/dist/deliverable-spec/lib/types.js.map +1 -0
  14. package/dist/payload-codec/index.d.ts +8 -0
  15. package/dist/payload-codec/index.d.ts.map +1 -0
  16. package/dist/payload-codec/index.js +27 -0
  17. package/dist/payload-codec/index.js.map +1 -0
  18. package/dist/payload-codec/lib/blob-store.d.ts +37 -0
  19. package/dist/payload-codec/lib/blob-store.d.ts.map +1 -0
  20. package/dist/payload-codec/lib/blob-store.js +0 -0
  21. package/dist/payload-codec/lib/blob-store.js.map +1 -0
  22. package/dist/payload-codec/lib/codec-context.d.ts +6 -0
  23. package/dist/payload-codec/lib/codec-context.d.ts.map +1 -0
  24. package/dist/payload-codec/lib/codec-context.js +16 -0
  25. package/dist/payload-codec/lib/codec-context.js.map +1 -0
  26. package/dist/payload-codec/lib/codec.d.ts +51 -0
  27. package/dist/payload-codec/lib/codec.d.ts.map +1 -0
  28. package/dist/payload-codec/lib/codec.js +330 -0
  29. package/dist/payload-codec/lib/codec.js.map +1 -0
  30. package/dist/payload-codec/lib/enums.d.ts +18 -0
  31. package/dist/payload-codec/lib/enums.d.ts.map +1 -0
  32. package/dist/payload-codec/lib/enums.js +23 -0
  33. package/dist/payload-codec/lib/enums.js.map +1 -0
  34. package/dist/payload-codec/lib/errors.d.ts +18 -0
  35. package/dist/payload-codec/lib/errors.d.ts.map +1 -0
  36. package/dist/payload-codec/lib/errors.js +39 -0
  37. package/dist/payload-codec/lib/errors.js.map +1 -0
  38. package/dist/payload-codec/lib/http-blob-store.d.ts +21 -0
  39. package/dist/payload-codec/lib/http-blob-store.d.ts.map +1 -0
  40. package/dist/payload-codec/lib/http-blob-store.js +139 -0
  41. package/dist/payload-codec/lib/http-blob-store.js.map +1 -0
  42. package/dist/payload-codec/lib/lru-cache.d.ts +12 -0
  43. package/dist/payload-codec/lib/lru-cache.d.ts.map +1 -0
  44. package/dist/payload-codec/lib/lru-cache.js +59 -0
  45. package/dist/payload-codec/lib/lru-cache.js.map +1 -0
  46. package/dist/schema/action.schema.json +181 -0
  47. package/dist/schema/reusable-workflow.schema.json +46 -0
  48. package/dist/schema/workflow.schema.json +373 -0
  49. package/dist/workflow/index.d.ts +14 -0
  50. package/dist/workflow/index.d.ts.map +1 -0
  51. package/dist/workflow/index.js +49 -0
  52. package/dist/workflow/index.js.map +1 -0
  53. package/dist/workflow/lib/action-input-validator.d.ts +10 -0
  54. package/dist/workflow/lib/action-input-validator.d.ts.map +1 -0
  55. package/dist/workflow/lib/action-input-validator.js +69 -0
  56. package/dist/workflow/lib/action-input-validator.js.map +1 -0
  57. package/dist/workflow/lib/compiler/action-shape.d.ts +5 -0
  58. package/dist/workflow/lib/compiler/action-shape.d.ts.map +1 -0
  59. package/dist/workflow/lib/compiler/action-shape.js +43 -0
  60. package/dist/workflow/lib/compiler/action-shape.js.map +1 -0
  61. package/dist/workflow/lib/compiler/canonical-json.d.ts +3 -0
  62. package/dist/workflow/lib/compiler/canonical-json.d.ts.map +1 -0
  63. package/dist/workflow/lib/compiler/canonical-json.js +45 -0
  64. package/dist/workflow/lib/compiler/canonical-json.js.map +1 -0
  65. package/dist/workflow/lib/compiler/compile.d.ts +4 -0
  66. package/dist/workflow/lib/compiler/compile.d.ts.map +1 -0
  67. package/dist/workflow/lib/compiler/compile.js +794 -0
  68. package/dist/workflow/lib/compiler/compile.js.map +1 -0
  69. package/dist/workflow/lib/compiler/concurrency.d.ts +5 -0
  70. package/dist/workflow/lib/compiler/concurrency.d.ts.map +1 -0
  71. package/dist/workflow/lib/compiler/concurrency.js +104 -0
  72. package/dist/workflow/lib/compiler/concurrency.js.map +1 -0
  73. package/dist/workflow/lib/compiler/dag.d.ts +10 -0
  74. package/dist/workflow/lib/compiler/dag.d.ts.map +1 -0
  75. package/dist/workflow/lib/compiler/dag.js +74 -0
  76. package/dist/workflow/lib/compiler/dag.js.map +1 -0
  77. package/dist/workflow/lib/compiler/index.d.ts +6 -0
  78. package/dist/workflow/lib/compiler/index.d.ts.map +1 -0
  79. package/dist/workflow/lib/compiler/index.js +14 -0
  80. package/dist/workflow/lib/compiler/index.js.map +1 -0
  81. package/dist/workflow/lib/compiler/inputs.d.ts +4 -0
  82. package/dist/workflow/lib/compiler/inputs.d.ts.map +1 -0
  83. package/dist/workflow/lib/compiler/inputs.js +108 -0
  84. package/dist/workflow/lib/compiler/inputs.js.map +1 -0
  85. package/dist/workflow/lib/compiler/installation-resource-validator.d.ts +9 -0
  86. package/dist/workflow/lib/compiler/installation-resource-validator.d.ts.map +1 -0
  87. package/dist/workflow/lib/compiler/installation-resource-validator.js +76 -0
  88. package/dist/workflow/lib/compiler/installation-resource-validator.js.map +1 -0
  89. package/dist/workflow/lib/compiler/manifest-source.d.ts +4 -0
  90. package/dist/workflow/lib/compiler/manifest-source.d.ts.map +1 -0
  91. package/dist/workflow/lib/compiler/manifest-source.js +100 -0
  92. package/dist/workflow/lib/compiler/manifest-source.js.map +1 -0
  93. package/dist/workflow/lib/compiler/matrix.d.ts +4 -0
  94. package/dist/workflow/lib/compiler/matrix.d.ts.map +1 -0
  95. package/dist/workflow/lib/compiler/matrix.js +76 -0
  96. package/dist/workflow/lib/compiler/matrix.js.map +1 -0
  97. package/dist/workflow/lib/compiler/mount-plan.d.ts +4 -0
  98. package/dist/workflow/lib/compiler/mount-plan.d.ts.map +1 -0
  99. package/dist/workflow/lib/compiler/mount-plan.js +96 -0
  100. package/dist/workflow/lib/compiler/mount-plan.js.map +1 -0
  101. package/dist/workflow/lib/compiler/payload-reach-in.d.ts +14 -0
  102. package/dist/workflow/lib/compiler/payload-reach-in.d.ts.map +1 -0
  103. package/dist/workflow/lib/compiler/payload-reach-in.js +273 -0
  104. package/dist/workflow/lib/compiler/payload-reach-in.js.map +1 -0
  105. package/dist/workflow/lib/compiler/permissions.d.ts +6 -0
  106. package/dist/workflow/lib/compiler/permissions.d.ts.map +1 -0
  107. package/dist/workflow/lib/compiler/permissions.js +43 -0
  108. package/dist/workflow/lib/compiler/permissions.js.map +1 -0
  109. package/dist/workflow/lib/compiler/retry-timeout.d.ts +6 -0
  110. package/dist/workflow/lib/compiler/retry-timeout.d.ts.map +1 -0
  111. package/dist/workflow/lib/compiler/retry-timeout.js +64 -0
  112. package/dist/workflow/lib/compiler/retry-timeout.js.map +1 -0
  113. package/dist/workflow/lib/compiler/review-step.d.ts +18 -0
  114. package/dist/workflow/lib/compiler/review-step.d.ts.map +1 -0
  115. package/dist/workflow/lib/compiler/review-step.js +247 -0
  116. package/dist/workflow/lib/compiler/review-step.js.map +1 -0
  117. package/dist/workflow/lib/compiler/types.d.ts +42 -0
  118. package/dist/workflow/lib/compiler/types.d.ts.map +1 -0
  119. package/dist/workflow/lib/compiler/types.js +3 -0
  120. package/dist/workflow/lib/compiler/types.js.map +1 -0
  121. package/dist/workflow/lib/compiler/variable-requirements.d.ts +5 -0
  122. package/dist/workflow/lib/compiler/variable-requirements.d.ts.map +1 -0
  123. package/dist/workflow/lib/compiler/variable-requirements.js +119 -0
  124. package/dist/workflow/lib/compiler/variable-requirements.js.map +1 -0
  125. package/dist/workflow/lib/deliverable-spec-keys.d.ts +3 -0
  126. package/dist/workflow/lib/deliverable-spec-keys.d.ts.map +1 -0
  127. package/dist/workflow/lib/deliverable-spec-keys.js +90 -0
  128. package/dist/workflow/lib/deliverable-spec-keys.js.map +1 -0
  129. package/dist/workflow/lib/dispatch-inputs/index.d.ts +23 -0
  130. package/dist/workflow/lib/dispatch-inputs/index.d.ts.map +1 -0
  131. package/dist/workflow/lib/dispatch-inputs/index.js +106 -0
  132. package/dist/workflow/lib/dispatch-inputs/index.js.map +1 -0
  133. package/dist/workflow/lib/dispatch-inputs/to-json-schema.d.ts +3 -0
  134. package/dist/workflow/lib/dispatch-inputs/to-json-schema.d.ts.map +1 -0
  135. package/dist/workflow/lib/dispatch-inputs/to-json-schema.js +43 -0
  136. package/dist/workflow/lib/dispatch-inputs/to-json-schema.js.map +1 -0
  137. package/dist/workflow/lib/duration.d.ts +2 -0
  138. package/dist/workflow/lib/duration.d.ts.map +1 -0
  139. package/dist/workflow/lib/duration.js +26 -0
  140. package/dist/workflow/lib/duration.js.map +1 -0
  141. package/dist/workflow/lib/errors.d.ts +9 -0
  142. package/dist/workflow/lib/errors.d.ts.map +1 -0
  143. package/dist/workflow/lib/errors.js +28 -0
  144. package/dist/workflow/lib/errors.js.map +1 -0
  145. package/dist/workflow/lib/expression/ast.d.ts +61 -0
  146. package/dist/workflow/lib/expression/ast.d.ts.map +1 -0
  147. package/dist/workflow/lib/expression/ast.js +34 -0
  148. package/dist/workflow/lib/expression/ast.js.map +1 -0
  149. package/dist/workflow/lib/expression/context.d.ts +63 -0
  150. package/dist/workflow/lib/expression/context.d.ts.map +1 -0
  151. package/dist/workflow/lib/expression/context.js +32 -0
  152. package/dist/workflow/lib/expression/context.js.map +1 -0
  153. package/dist/workflow/lib/expression/evaluator.d.ts +5 -0
  154. package/dist/workflow/lib/expression/evaluator.d.ts.map +1 -0
  155. package/dist/workflow/lib/expression/evaluator.js +291 -0
  156. package/dist/workflow/lib/expression/evaluator.js.map +1 -0
  157. package/dist/workflow/lib/expression/index.d.ts +9 -0
  158. package/dist/workflow/lib/expression/index.d.ts.map +1 -0
  159. package/dist/workflow/lib/expression/index.js +26 -0
  160. package/dist/workflow/lib/expression/index.js.map +1 -0
  161. package/dist/workflow/lib/expression/interpolation.d.ts +9 -0
  162. package/dist/workflow/lib/expression/interpolation.d.ts.map +1 -0
  163. package/dist/workflow/lib/expression/interpolation.js +51 -0
  164. package/dist/workflow/lib/expression/interpolation.js.map +1 -0
  165. package/dist/workflow/lib/expression/parser.d.ts +4 -0
  166. package/dist/workflow/lib/expression/parser.d.ts.map +1 -0
  167. package/dist/workflow/lib/expression/parser.js +203 -0
  168. package/dist/workflow/lib/expression/parser.js.map +1 -0
  169. package/dist/workflow/lib/expression/template.d.ts +18 -0
  170. package/dist/workflow/lib/expression/template.d.ts.map +1 -0
  171. package/dist/workflow/lib/expression/template.js +63 -0
  172. package/dist/workflow/lib/expression/template.js.map +1 -0
  173. package/dist/workflow/lib/expression/tokenizer.d.ts +3 -0
  174. package/dist/workflow/lib/expression/tokenizer.d.ts.map +1 -0
  175. package/dist/workflow/lib/expression/tokenizer.js +153 -0
  176. package/dist/workflow/lib/expression/tokenizer.js.map +1 -0
  177. package/dist/workflow/lib/expression/tokens.d.ts +25 -0
  178. package/dist/workflow/lib/expression/tokens.d.ts.map +1 -0
  179. package/dist/workflow/lib/expression/tokens.js +24 -0
  180. package/dist/workflow/lib/expression/tokens.js.map +1 -0
  181. package/dist/workflow/lib/expression/walk-artifact-refs.d.ts +5 -0
  182. package/dist/workflow/lib/expression/walk-artifact-refs.d.ts.map +1 -0
  183. package/dist/workflow/lib/expression/walk-artifact-refs.js +138 -0
  184. package/dist/workflow/lib/expression/walk-artifact-refs.js.map +1 -0
  185. package/dist/workflow/lib/installation-resource-kind.d.ts +14 -0
  186. package/dist/workflow/lib/installation-resource-kind.d.ts.map +1 -0
  187. package/dist/workflow/lib/installation-resource-kind.js +59 -0
  188. package/dist/workflow/lib/installation-resource-kind.js.map +1 -0
  189. package/dist/workflow/lib/schemas-loader.d.ts +4 -0
  190. package/dist/workflow/lib/schemas-loader.d.ts.map +1 -0
  191. package/dist/workflow/lib/schemas-loader.js +36 -0
  192. package/dist/workflow/lib/schemas-loader.js.map +1 -0
  193. package/dist/workflow/lib/serializer.d.ts +3 -0
  194. package/dist/workflow/lib/serializer.d.ts.map +1 -0
  195. package/dist/workflow/lib/serializer.js +15 -0
  196. package/dist/workflow/lib/serializer.js.map +1 -0
  197. package/dist/workflow/lib/types.d.ts +179 -0
  198. package/dist/workflow/lib/types.d.ts.map +1 -0
  199. package/dist/workflow/lib/types.js +3 -0
  200. package/dist/workflow/lib/types.js.map +1 -0
  201. package/dist/workflow/lib/validate.d.ts +8 -0
  202. package/dist/workflow/lib/validate.d.ts.map +1 -0
  203. package/dist/workflow/lib/validate.js +119 -0
  204. package/dist/workflow/lib/validate.js.map +1 -0
  205. package/dist/workspace-manifest/index.d.ts +6 -0
  206. package/dist/workspace-manifest/index.d.ts.map +1 -0
  207. package/dist/workspace-manifest/index.js +22 -0
  208. package/dist/workspace-manifest/index.js.map +1 -0
  209. package/dist/workspace-manifest/lib/compile.d.ts +8 -0
  210. package/dist/workspace-manifest/lib/compile.d.ts.map +1 -0
  211. package/dist/workspace-manifest/lib/compile.js +439 -0
  212. package/dist/workspace-manifest/lib/compile.js.map +1 -0
  213. package/dist/workspace-manifest/lib/interpolate.d.ts +12 -0
  214. package/dist/workspace-manifest/lib/interpolate.d.ts.map +1 -0
  215. package/dist/workspace-manifest/lib/interpolate.js +81 -0
  216. package/dist/workspace-manifest/lib/interpolate.js.map +1 -0
  217. package/dist/workspace-manifest/lib/resolve-extends.d.ts +10 -0
  218. package/dist/workspace-manifest/lib/resolve-extends.d.ts.map +1 -0
  219. package/dist/workspace-manifest/lib/resolve-extends.js +108 -0
  220. package/dist/workspace-manifest/lib/resolve-extends.js.map +1 -0
  221. package/dist/workspace-manifest/lib/schema.d.ts +710 -0
  222. package/dist/workspace-manifest/lib/schema.d.ts.map +1 -0
  223. package/dist/workspace-manifest/lib/schema.js +355 -0
  224. package/dist/workspace-manifest/lib/schema.js.map +1 -0
  225. package/dist/workspace-manifest/lib/types.d.ts +153 -0
  226. package/dist/workspace-manifest/lib/types.d.ts.map +1 -0
  227. package/dist/workspace-manifest/lib/types.js +10 -0
  228. package/dist/workspace-manifest/lib/types.js.map +1 -0
  229. package/package.json +79 -0
  230. package/schema/action.schema.json +181 -0
  231. package/schema/reusable-workflow.schema.json +46 -0
  232. package/schema/workflow.schema.json +373 -0
  233. package/src/deliverable-spec/index.ts +19 -0
  234. package/src/deliverable-spec/lib/schema.ts +248 -0
  235. package/src/deliverable-spec/lib/types.ts +26 -0
  236. package/src/payload-codec/index.ts +40 -0
  237. package/src/payload-codec/lib/blob-store.ts +0 -0
  238. package/src/payload-codec/lib/codec-context.ts +38 -0
  239. package/src/payload-codec/lib/codec.ts +593 -0
  240. package/src/payload-codec/lib/enums.ts +58 -0
  241. package/src/payload-codec/lib/errors.ts +54 -0
  242. package/src/payload-codec/lib/http-blob-store.ts +257 -0
  243. package/src/payload-codec/lib/lru-cache.ts +81 -0
  244. package/src/workflow/index.ts +98 -0
  245. package/src/workflow/lib/action-input-validator.ts +160 -0
  246. package/src/workflow/lib/compiler/action-shape.ts +71 -0
  247. package/src/workflow/lib/compiler/canonical-json.ts +53 -0
  248. package/src/workflow/lib/compiler/compile.ts +1518 -0
  249. package/src/workflow/lib/compiler/concurrency.ts +223 -0
  250. package/src/workflow/lib/compiler/dag.ts +108 -0
  251. package/src/workflow/lib/compiler/index.ts +10 -0
  252. package/src/workflow/lib/compiler/inputs.ts +199 -0
  253. package/src/workflow/lib/compiler/installation-resource-validator.ts +114 -0
  254. package/src/workflow/lib/compiler/manifest-source.ts +176 -0
  255. package/src/workflow/lib/compiler/matrix.ts +135 -0
  256. package/src/workflow/lib/compiler/mount-plan.ts +202 -0
  257. package/src/workflow/lib/compiler/payload-reach-in.ts +497 -0
  258. package/src/workflow/lib/compiler/permissions.ts +64 -0
  259. package/src/workflow/lib/compiler/retry-timeout.ts +105 -0
  260. package/src/workflow/lib/compiler/review-step.ts +517 -0
  261. package/src/workflow/lib/compiler/types.ts +170 -0
  262. package/src/workflow/lib/compiler/variable-requirements.ts +208 -0
  263. package/src/workflow/lib/deliverable-spec-keys.ts +109 -0
  264. package/src/workflow/lib/dispatch-inputs/index.ts +160 -0
  265. package/src/workflow/lib/dispatch-inputs/to-json-schema.ts +60 -0
  266. package/src/workflow/lib/duration.ts +48 -0
  267. package/src/workflow/lib/errors.ts +37 -0
  268. package/src/workflow/lib/expression/ast.ts +108 -0
  269. package/src/workflow/lib/expression/context.ts +148 -0
  270. package/src/workflow/lib/expression/evaluator.ts +492 -0
  271. package/src/workflow/lib/expression/index.ts +28 -0
  272. package/src/workflow/lib/expression/interpolation.ts +84 -0
  273. package/src/workflow/lib/expression/parser.ts +264 -0
  274. package/src/workflow/lib/expression/template.ts +117 -0
  275. package/src/workflow/lib/expression/tokenizer.ts +200 -0
  276. package/src/workflow/lib/expression/tokens.ts +30 -0
  277. package/src/workflow/lib/expression/walk-artifact-refs.ts +232 -0
  278. package/src/workflow/lib/installation-resource-kind.ts +107 -0
  279. package/src/workflow/lib/schemas-loader.ts +64 -0
  280. package/src/workflow/lib/serializer.ts +30 -0
  281. package/src/workflow/lib/types.ts +361 -0
  282. package/src/workflow/lib/validate.ts +199 -0
  283. package/src/workspace-manifest/index.ts +27 -0
  284. package/src/workspace-manifest/lib/compile.ts +608 -0
  285. package/src/workspace-manifest/lib/interpolate.ts +140 -0
  286. package/src/workspace-manifest/lib/resolve-extends.ts +260 -0
  287. package/src/workspace-manifest/lib/schema.ts +612 -0
  288. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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,3 @@
1
+ export declare function extractZodTopLevelObjectKeys(source: string): readonly string[] | null;
2
+ export declare function extractJsonSchemaTopLevelKeys(source: string | object): readonly string[] | null;
3
+ //# sourceMappingURL=deliverable-spec-keys.d.ts.map
@@ -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"}