@jahia/jahia-cli 0.2.0 → 0.3.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 (128) hide show
  1. package/dist/commands/init.js +4 -4
  2. package/dist/commands/init.js.map +1 -1
  3. package/dist/commands/jahia/provision.d.ts +37 -2
  4. package/dist/commands/jahia/provision.d.ts.map +1 -1
  5. package/dist/commands/jahia/provision.js +241 -53
  6. package/dist/commands/jahia/provision.js.map +1 -1
  7. package/dist/commands/tests/artifacts.d.ts +25 -0
  8. package/dist/commands/tests/artifacts.d.ts.map +1 -0
  9. package/dist/commands/tests/artifacts.js +112 -0
  10. package/dist/commands/tests/artifacts.js.map +1 -0
  11. package/dist/commands/tests/build.d.ts +30 -0
  12. package/dist/commands/tests/build.d.ts.map +1 -0
  13. package/dist/commands/tests/build.js +90 -0
  14. package/dist/commands/tests/build.js.map +1 -0
  15. package/dist/commands/tests/run.d.ts +28 -0
  16. package/dist/commands/tests/run.d.ts.map +1 -0
  17. package/dist/commands/tests/run.js +166 -0
  18. package/dist/commands/tests/run.js.map +1 -0
  19. package/dist/commands/workflow/init.d.ts.map +1 -1
  20. package/dist/commands/workflow/init.js +15 -14
  21. package/dist/commands/workflow/init.js.map +1 -1
  22. package/dist/commands/workflow/run.d.ts +3 -1
  23. package/dist/commands/workflow/run.d.ts.map +1 -1
  24. package/dist/commands/workflow/run.js +62 -14
  25. package/dist/commands/workflow/run.js.map +1 -1
  26. package/dist/lib/artifacts/collect-all.d.ts +17 -0
  27. package/dist/lib/artifacts/collect-all.d.ts.map +1 -0
  28. package/dist/lib/artifacts/collect-all.js +107 -0
  29. package/dist/lib/artifacts/collect-all.js.map +1 -0
  30. package/dist/lib/artifacts/copy-container-artifacts.d.ts +13 -0
  31. package/dist/lib/artifacts/copy-container-artifacts.d.ts.map +1 -0
  32. package/dist/lib/artifacts/copy-container-artifacts.js +48 -0
  33. package/dist/lib/artifacts/copy-container-artifacts.js.map +1 -0
  34. package/dist/lib/artifacts/fetch-container-logs.d.ts +17 -0
  35. package/dist/lib/artifacts/fetch-container-logs.d.ts.map +1 -0
  36. package/dist/lib/artifacts/fetch-container-logs.js +36 -0
  37. package/dist/lib/artifacts/fetch-container-logs.js.map +1 -0
  38. package/dist/lib/artifacts/index.d.ts +6 -0
  39. package/dist/lib/artifacts/index.d.ts.map +1 -0
  40. package/dist/lib/artifacts/index.js +5 -0
  41. package/dist/lib/artifacts/index.js.map +1 -0
  42. package/dist/lib/artifacts/query-vlogs.d.ts +14 -0
  43. package/dist/lib/artifacts/query-vlogs.d.ts.map +1 -0
  44. package/dist/lib/artifacts/query-vlogs.js +33 -0
  45. package/dist/lib/artifacts/query-vlogs.js.map +1 -0
  46. package/dist/lib/artifacts/types.d.ts +28 -0
  47. package/dist/lib/artifacts/types.d.ts.map +1 -0
  48. package/dist/lib/artifacts/types.js +2 -0
  49. package/dist/lib/artifacts/types.js.map +1 -0
  50. package/dist/lib/components/cypress.d.ts +16 -0
  51. package/dist/lib/components/cypress.d.ts.map +1 -0
  52. package/dist/lib/components/cypress.js +35 -0
  53. package/dist/lib/components/cypress.js.map +1 -0
  54. package/dist/lib/components/index.d.ts.map +1 -1
  55. package/dist/lib/components/index.js +3 -0
  56. package/dist/lib/components/index.js.map +1 -1
  57. package/dist/lib/components/jahia.d.ts.map +1 -1
  58. package/dist/lib/components/jahia.js +1 -0
  59. package/dist/lib/components/jahia.js.map +1 -1
  60. package/dist/lib/components/smtp-server.d.ts.map +1 -1
  61. package/dist/lib/components/smtp-server.js +1 -0
  62. package/dist/lib/components/smtp-server.js.map +1 -1
  63. package/dist/lib/components/types.d.ts +12 -0
  64. package/dist/lib/components/types.d.ts.map +1 -1
  65. package/dist/lib/config/config-to-yaml-with-comments.d.ts.map +1 -1
  66. package/dist/lib/config/config-to-yaml-with-comments.js +28 -3
  67. package/dist/lib/config/config-to-yaml-with-comments.js.map +1 -1
  68. package/dist/lib/config/config-to-yaml.d.ts.map +1 -1
  69. package/dist/lib/config/config-to-yaml.js +13 -1
  70. package/dist/lib/config/config-to-yaml.js.map +1 -1
  71. package/dist/lib/config/parser.d.ts +17 -4
  72. package/dist/lib/config/parser.d.ts.map +1 -1
  73. package/dist/lib/config/parser.js +101 -12
  74. package/dist/lib/config/parser.js.map +1 -1
  75. package/dist/lib/config/types.d.ts +57 -3
  76. package/dist/lib/config/types.d.ts.map +1 -1
  77. package/dist/lib/providers/docker/container.d.ts +2 -0
  78. package/dist/lib/providers/docker/container.d.ts.map +1 -1
  79. package/dist/lib/providers/docker/container.js +5 -1
  80. package/dist/lib/providers/docker/container.js.map +1 -1
  81. package/dist/lib/provisioning/filter-files.d.ts +7 -0
  82. package/dist/lib/provisioning/filter-files.d.ts.map +1 -0
  83. package/dist/lib/provisioning/filter-files.js +14 -0
  84. package/dist/lib/provisioning/filter-files.js.map +1 -0
  85. package/dist/lib/provisioning/submit-file-action.d.ts +29 -0
  86. package/dist/lib/provisioning/submit-file-action.d.ts.map +1 -0
  87. package/dist/lib/provisioning/submit-file-action.js +75 -0
  88. package/dist/lib/provisioning/submit-file-action.js.map +1 -0
  89. package/dist/lib/provisioning/types.d.ts +11 -0
  90. package/dist/lib/provisioning/types.d.ts.map +1 -1
  91. package/dist/lib/tests/build-image.d.ts +33 -0
  92. package/dist/lib/tests/build-image.d.ts.map +1 -0
  93. package/dist/lib/tests/build-image.js +59 -0
  94. package/dist/lib/tests/build-image.js.map +1 -0
  95. package/dist/lib/workflow/build-sample-workflow.d.ts +5 -4
  96. package/dist/lib/workflow/build-sample-workflow.d.ts.map +1 -1
  97. package/dist/lib/workflow/build-sample-workflow.js +35 -31
  98. package/dist/lib/workflow/build-sample-workflow.js.map +1 -1
  99. package/dist/lib/workflow/executor.d.ts +3 -1
  100. package/dist/lib/workflow/executor.d.ts.map +1 -1
  101. package/dist/lib/workflow/executor.js +29 -0
  102. package/dist/lib/workflow/executor.js.map +1 -1
  103. package/dist/lib/workflow/format-workflow-sources.d.ts +17 -0
  104. package/dist/lib/workflow/format-workflow-sources.d.ts.map +1 -0
  105. package/dist/lib/workflow/format-workflow-sources.js +85 -0
  106. package/dist/lib/workflow/format-workflow-sources.js.map +1 -0
  107. package/dist/lib/workflow/load-global-workflows.d.ts +24 -0
  108. package/dist/lib/workflow/load-global-workflows.d.ts.map +1 -0
  109. package/dist/lib/workflow/load-global-workflows.js +49 -0
  110. package/dist/lib/workflow/load-global-workflows.js.map +1 -0
  111. package/dist/lib/workflow/merge-workflow-into-config.d.ts +4 -4
  112. package/dist/lib/workflow/merge-workflow-into-config.d.ts.map +1 -1
  113. package/dist/lib/workflow/merge-workflow-into-config.js +4 -4
  114. package/dist/lib/workflow/merge-workflow-into-config.js.map +1 -1
  115. package/dist/lib/workflow/merge-workflow-sources.d.ts +27 -0
  116. package/dist/lib/workflow/merge-workflow-sources.d.ts.map +1 -0
  117. package/dist/lib/workflow/merge-workflow-sources.js +55 -0
  118. package/dist/lib/workflow/merge-workflow-sources.js.map +1 -0
  119. package/dist/lib/workflow/resolve-workflow.d.ts +20 -0
  120. package/dist/lib/workflow/resolve-workflow.d.ts.map +1 -0
  121. package/dist/lib/workflow/resolve-workflow.js +38 -0
  122. package/dist/lib/workflow/resolve-workflow.js.map +1 -0
  123. package/dist/lib/workflow/resolve-workflows-file-path.d.ts +13 -0
  124. package/dist/lib/workflow/resolve-workflows-file-path.d.ts.map +1 -0
  125. package/dist/lib/workflow/resolve-workflows-file-path.js +22 -0
  126. package/dist/lib/workflow/resolve-workflows-file-path.js.map +1 -0
  127. package/oclif.manifest.json +318 -108
  128. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-workflow-sources.js","sourceRoot":"","sources":["../../../src/lib/workflow/format-workflow-sources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { WorkflowsMap } from '../config/types.js';
2
+ /**
3
+ * Result of attempting to load a global workflows file.
4
+ * Provides structured outcome so the caller can decide how to present it.
5
+ */
6
+ export interface GlobalWorkflowsLoadResult {
7
+ readonly found: boolean;
8
+ readonly path: string;
9
+ readonly workflows: WorkflowsMap | undefined;
10
+ readonly error?: string | undefined;
11
+ }
12
+ /**
13
+ * Loads and parses a global workflows YAML file.
14
+ *
15
+ * The file must contain a top-level `workflows:` key with the same structure
16
+ * as the `workflows` section in the main config file.
17
+ *
18
+ * Returns a structured result (never throws for missing files):
19
+ * - found=true, workflows=map → file loaded successfully
20
+ * - found=false → file does not exist (caller decides severity)
21
+ * - found=true, workflows=undefined, error=msg → file exists but is invalid
22
+ */
23
+ export declare const loadGlobalWorkflows: (filePath: string) => Promise<GlobalWorkflowsLoadResult>;
24
+ //# sourceMappingURL=load-global-workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-global-workflows.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/load-global-workflows.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,KACf,OAAO,CAAC,yBAAyB,CA0CnC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import yaml from 'js-yaml';
3
+ import { parseWorkflowsConfig } from '../config/parser.js';
4
+ /**
5
+ * Loads and parses a global workflows YAML file.
6
+ *
7
+ * The file must contain a top-level `workflows:` key with the same structure
8
+ * as the `workflows` section in the main config file.
9
+ *
10
+ * Returns a structured result (never throws for missing files):
11
+ * - found=true, workflows=map → file loaded successfully
12
+ * - found=false → file does not exist (caller decides severity)
13
+ * - found=true, workflows=undefined, error=msg → file exists but is invalid
14
+ */
15
+ export const loadGlobalWorkflows = async (filePath) => {
16
+ const content = await readFile(filePath, 'utf-8').catch((error) => {
17
+ const isNotFound = error instanceof Error &&
18
+ 'code' in error &&
19
+ error.code === 'ENOENT';
20
+ if (isNotFound) {
21
+ return undefined;
22
+ }
23
+ throw error;
24
+ });
25
+ if (content === undefined) {
26
+ return { found: false, path: filePath, workflows: undefined };
27
+ }
28
+ const raw = yaml.load(content);
29
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
30
+ return {
31
+ found: true,
32
+ path: filePath,
33
+ workflows: undefined,
34
+ error: 'Global workflows file must contain a YAML object with a "workflows:" key.',
35
+ };
36
+ }
37
+ const record = raw;
38
+ if (record['workflows'] === undefined) {
39
+ return {
40
+ found: true,
41
+ path: filePath,
42
+ workflows: undefined,
43
+ error: 'Global workflows file must contain a "workflows:" key.',
44
+ };
45
+ }
46
+ const workflows = parseWorkflowsConfig(record['workflows']);
47
+ return { found: true, path: filePath, workflows };
48
+ };
49
+ //# sourceMappingURL=load-global-workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-global-workflows.js","sourceRoot":"","sources":["../../../src/lib/workflow/load-global-workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAc3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,QAAgB,EACoB,EAAE;IACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACzE,MAAM,UAAU,GACd,KAAK,YAAY,KAAK;YACtB,MAAM,IAAI,KAAK;YACd,KAA+B,CAAC,IAAI,KAAK,QAAQ,CAAC;QACrD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO;YACL,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,2EAA2E;SACnF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,GAA8B,CAAC;IAE9C,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,wDAAwD;SAChE,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { JahiaCliConfig, WorkflowConfig } from '../config/types.js';
1
+ import type { JahiaCliConfig, WorkflowsMap } from '../config/types.js';
2
2
  /**
3
- * Merges a workflow config into an existing JahiaCliConfig,
4
- * replacing only the workflow section and preserving all other properties.
3
+ * Merges a workflows map into an existing JahiaCliConfig,
4
+ * replacing only the workflows section and preserving all other properties.
5
5
  */
6
- export declare const mergeWorkflowIntoConfig: (existing: JahiaCliConfig, workflow: WorkflowConfig) => JahiaCliConfig;
6
+ export declare const mergeWorkflowsIntoConfig: (existing: JahiaCliConfig, workflows: WorkflowsMap) => JahiaCliConfig;
7
7
  //# sourceMappingURL=merge-workflow-into-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-workflow-into-config.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/merge-workflow-into-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,cAAc,EACxB,UAAU,cAAc,KACvB,cAGD,CAAC"}
1
+ {"version":3,"file":"merge-workflow-into-config.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/merge-workflow-into-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,UAAU,cAAc,EACxB,WAAW,YAAY,KACtB,cAGD,CAAC"}
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Merges a workflow config into an existing JahiaCliConfig,
3
- * replacing only the workflow section and preserving all other properties.
2
+ * Merges a workflows map into an existing JahiaCliConfig,
3
+ * replacing only the workflows section and preserving all other properties.
4
4
  */
5
- export const mergeWorkflowIntoConfig = (existing, workflow) => ({
5
+ export const mergeWorkflowsIntoConfig = (existing, workflows) => ({
6
6
  ...existing,
7
- workflow,
7
+ workflows,
8
8
  });
9
9
  //# sourceMappingURL=merge-workflow-into-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-workflow-into-config.js","sourceRoot":"","sources":["../../../src/lib/workflow/merge-workflow-into-config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,QAAwB,EACxB,QAAwB,EACR,EAAE,CAAC,CAAC;IACpB,GAAG,QAAQ;IACX,QAAQ;CACT,CAAC,CAAC"}
1
+ {"version":3,"file":"merge-workflow-into-config.js","sourceRoot":"","sources":["../../../src/lib/workflow/merge-workflow-into-config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,QAAwB,EACxB,SAAuB,EACP,EAAE,CAAC,CAAC;IACpB,GAAG,QAAQ;IACX,SAAS;CACV,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { WorkflowsMap } from '../config/types.js';
2
+ /**
3
+ * Source attribution for each workflow in the merged map.
4
+ */
5
+ export type WorkflowSource = 'global' | 'local' | 'local-override';
6
+ /**
7
+ * Result of merging global and local workflow sources.
8
+ * Includes the merged workflows map and per-name source attribution.
9
+ */
10
+ export interface MergedWorkflowsResult {
11
+ readonly workflows: WorkflowsMap;
12
+ readonly sources: Readonly<Record<string, WorkflowSource>>;
13
+ }
14
+ /**
15
+ * Merges global and local workflow sources.
16
+ *
17
+ * Rules:
18
+ * - Local workflows always override global workflows with the same name.
19
+ * - If any local workflow has `default: true`, global defaults are stripped
20
+ * to prevent multiple defaults in the merged map.
21
+ * - Source attribution tracks whether each workflow came from global, local,
22
+ * or is a local override of a global workflow.
23
+ *
24
+ * Returns undefined if both sources are undefined.
25
+ */
26
+ export declare const mergeWorkflowSources: (global: WorkflowsMap | undefined, local: WorkflowsMap | undefined) => MergedWorkflowsResult | undefined;
27
+ //# sourceMappingURL=merge-workflow-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-workflow-sources.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/merge-workflow-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CAC5D;AAkBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,YAAY,GAAG,SAAS,EAChC,OAAO,YAAY,GAAG,SAAS,KAC9B,qBAAqB,GAAG,SAoC1B,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Strips `default: true` from all workflows in a map.
3
+ * Used to clear global defaults when a local default exists.
4
+ */
5
+ const stripDefaults = (workflows) => Object.fromEntries(Object.entries(workflows).map(([name, wf]) => [
6
+ name,
7
+ wf.default === true
8
+ ? { steps: wf.steps }
9
+ : wf,
10
+ ]));
11
+ /**
12
+ * Merges global and local workflow sources.
13
+ *
14
+ * Rules:
15
+ * - Local workflows always override global workflows with the same name.
16
+ * - If any local workflow has `default: true`, global defaults are stripped
17
+ * to prevent multiple defaults in the merged map.
18
+ * - Source attribution tracks whether each workflow came from global, local,
19
+ * or is a local override of a global workflow.
20
+ *
21
+ * Returns undefined if both sources are undefined.
22
+ */
23
+ export const mergeWorkflowSources = (global, local) => {
24
+ if (global === undefined && local === undefined) {
25
+ return undefined;
26
+ }
27
+ if (global === undefined) {
28
+ const sources = {};
29
+ Object.keys(local ?? {}).forEach((name) => {
30
+ sources[name] = 'local';
31
+ });
32
+ return { workflows: local ?? {}, sources };
33
+ }
34
+ if (local === undefined) {
35
+ const sources = {};
36
+ Object.keys(global).forEach((name) => {
37
+ sources[name] = 'global';
38
+ });
39
+ return { workflows: global, sources };
40
+ }
41
+ const localHasDefault = Object.values(local).some((wf) => wf.default === true);
42
+ const effectiveGlobal = localHasDefault ? stripDefaults(global) : global;
43
+ const merged = { ...effectiveGlobal, ...local };
44
+ const sources = {};
45
+ Object.keys(merged).forEach((name) => {
46
+ if (name in local) {
47
+ sources[name] = name in global ? 'local-override' : 'local';
48
+ }
49
+ else {
50
+ sources[name] = 'global';
51
+ }
52
+ });
53
+ return { workflows: merged, sources };
54
+ };
55
+ //# sourceMappingURL=merge-workflow-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-workflow-sources.js","sourceRoot":"","sources":["../../../src/lib/workflow/merge-workflow-sources.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,MAAM,aAAa,GAAG,CACpB,SAAuB,EACT,EAAE,CAChB,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5C,IAAI;IACJ,EAAE,CAAC,OAAO,KAAK,IAAI;QACjB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE;QACrB,CAAC,CAAC,EAAE;CACP,CAAC,CACH,CAAC;AAEJ;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAgC,EAChC,KAA+B,EACI,EAAE;IACrC,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,OAAO,GAAmC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,OAAO,GAAmC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC/E,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzE,MAAM,MAAM,GAAmC,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,EAAE,CAAC;IAChF,MAAM,OAAO,GAAmC,EAAE,CAAC;IAEnD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { WorkflowConfig, WorkflowsMap } from '../config/types.js';
2
+ /**
3
+ * Resolves a workflow by name from the workflows map.
4
+ * Throws if the named workflow does not exist.
5
+ */
6
+ export declare const resolveWorkflowByName: (workflows: WorkflowsMap, name: string) => WorkflowConfig;
7
+ /**
8
+ * Resolves the default workflow from the workflows map.
9
+ * Throws if no workflow has `default: true`.
10
+ */
11
+ export declare const resolveDefaultWorkflow: (workflows: WorkflowsMap) => {
12
+ readonly name: string;
13
+ readonly workflow: WorkflowConfig;
14
+ };
15
+ /**
16
+ * Detects circular workflow calls by checking if a workflow name
17
+ * is already in the call stack.
18
+ */
19
+ export declare const detectCircularCall: (workflowName: string, callStack: readonly string[]) => void;
20
+ //# sourceMappingURL=resolve-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-workflow.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/resolve-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,YAAY,EACvB,MAAM,MAAM,KACX,cASF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,WAAW,YAAY,KACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;CAe5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,WAAW,SAAS,MAAM,EAAE,KAC3B,IAQF,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Resolves a workflow by name from the workflows map.
3
+ * Throws if the named workflow does not exist.
4
+ */
5
+ export const resolveWorkflowByName = (workflows, name) => {
6
+ const workflow = workflows[name];
7
+ if (workflow === undefined) {
8
+ const available = Object.keys(workflows).join(', ');
9
+ throw new Error(`Workflow "${name}" not found. Available workflows: ${available}`);
10
+ }
11
+ return workflow;
12
+ };
13
+ /**
14
+ * Resolves the default workflow from the workflows map.
15
+ * Throws if no workflow has `default: true`.
16
+ */
17
+ export const resolveDefaultWorkflow = (workflows) => {
18
+ const defaultEntry = Object.entries(workflows).find(([, wf]) => wf.default === true);
19
+ if (defaultEntry === undefined) {
20
+ const available = Object.keys(workflows).join(', ');
21
+ throw new Error(`No default workflow found. Use --name to specify one.\n` +
22
+ ` Available workflows: ${available}\n\n` +
23
+ ' Or mark one workflow with "default: true" in your config.');
24
+ }
25
+ return { name: defaultEntry[0], workflow: defaultEntry[1] };
26
+ };
27
+ /**
28
+ * Detects circular workflow calls by checking if a workflow name
29
+ * is already in the call stack.
30
+ */
31
+ export const detectCircularCall = (workflowName, callStack) => {
32
+ if (callStack.includes(workflowName)) {
33
+ const chain = [...callStack, workflowName].join(' → ');
34
+ throw new Error(`Circular workflow detected: ${chain}\n` +
35
+ ` Workflow "${workflowName}" is already being executed.`);
36
+ }
37
+ };
38
+ //# sourceMappingURL=resolve-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-workflow.js","sourceRoot":"","sources":["../../../src/lib/workflow/resolve-workflow.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,SAAuB,EACvB,IAAY,EACI,EAAE;IAClB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,qCAAqC,SAAS,EAAE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,SAAuB,EACuC,EAAE;IAChE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAChC,CAAC;IAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,yDAAyD;YACzD,0BAA0B,SAAS,MAAM;YACzC,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,YAAoB,EACpB,SAA4B,EACtB,EAAE;IACR,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,IAAI;YACxC,eAAe,YAAY,8BAA8B,CAC1D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Resolves the path to the global workflows file.
3
+ *
4
+ * Precedence:
5
+ * 1. CLI flag value (resolved relative to CWD)
6
+ * 2. Config key value (resolved relative to config file directory)
7
+ * 3. undefined (no global file configured)
8
+ *
9
+ * Note: No default filename auto-discovery — the user must explicitly
10
+ * specify a global workflows file via flag or config key.
11
+ */
12
+ export declare const resolveWorkflowsFilePath: (configDir: string, configKey: string | undefined, flagValue: string | undefined) => string | undefined;
13
+ //# sourceMappingURL=resolve-workflows-file-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-workflows-file-path.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/resolve-workflows-file-path.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACnC,WAAW,MAAM,EACjB,WAAW,MAAM,GAAG,SAAS,EAC7B,WAAW,MAAM,GAAG,SAAS,KAC5B,MAAM,GAAG,SAUX,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { resolve } from 'node:path';
2
+ /**
3
+ * Resolves the path to the global workflows file.
4
+ *
5
+ * Precedence:
6
+ * 1. CLI flag value (resolved relative to CWD)
7
+ * 2. Config key value (resolved relative to config file directory)
8
+ * 3. undefined (no global file configured)
9
+ *
10
+ * Note: No default filename auto-discovery — the user must explicitly
11
+ * specify a global workflows file via flag or config key.
12
+ */
13
+ export const resolveWorkflowsFilePath = (configDir, configKey, flagValue) => {
14
+ if (flagValue !== undefined) {
15
+ return resolve(flagValue);
16
+ }
17
+ if (configKey !== undefined) {
18
+ return resolve(configDir, configKey);
19
+ }
20
+ return undefined;
21
+ };
22
+ //# sourceMappingURL=resolve-workflows-file-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-workflows-file-path.js","sourceRoot":"","sources":["../../../src/lib/workflow/resolve-workflows-file-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,SAAiB,EACjB,SAA6B,EAC7B,SAA6B,EACT,EAAE;IACtB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}