@synergenius/flowweaver-pack-cicd 0.2.0

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 (126) hide show
  1. package/dist/artifacts.d.ts +13 -0
  2. package/dist/artifacts.d.ts.map +1 -0
  3. package/dist/artifacts.js +26 -0
  4. package/dist/artifacts.js.map +1 -0
  5. package/dist/detection.d.ts +28 -0
  6. package/dist/detection.d.ts.map +1 -0
  7. package/dist/detection.js +81 -0
  8. package/dist/detection.js.map +1 -0
  9. package/dist/index.d.ts +20 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +21 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/job-graph.d.ts +17 -0
  14. package/dist/job-graph.d.ts.map +1 -0
  15. package/dist/job-graph.js +185 -0
  16. package/dist/job-graph.js.map +1 -0
  17. package/dist/native-steps.d.ts +13 -0
  18. package/dist/native-steps.d.ts.map +1 -0
  19. package/dist/native-steps.js +30 -0
  20. package/dist/native-steps.js.map +1 -0
  21. package/dist/node-types/checkout.d.ts +12 -0
  22. package/dist/node-types/checkout.d.ts.map +1 -0
  23. package/dist/node-types/checkout.js +13 -0
  24. package/dist/node-types/checkout.js.map +1 -0
  25. package/dist/node-types/deploy-s3.d.ts +17 -0
  26. package/dist/node-types/deploy-s3.d.ts.map +1 -0
  27. package/dist/node-types/deploy-s3.js +18 -0
  28. package/dist/node-types/deploy-s3.js.map +1 -0
  29. package/dist/node-types/deploy-ssh.d.ts +16 -0
  30. package/dist/node-types/deploy-ssh.d.ts.map +1 -0
  31. package/dist/node-types/deploy-ssh.js +17 -0
  32. package/dist/node-types/deploy-ssh.js.map +1 -0
  33. package/dist/node-types/docker-build.d.ts +15 -0
  34. package/dist/node-types/docker-build.d.ts.map +1 -0
  35. package/dist/node-types/docker-build.js +16 -0
  36. package/dist/node-types/docker-build.js.map +1 -0
  37. package/dist/node-types/docker-login.d.ts +16 -0
  38. package/dist/node-types/docker-login.d.ts.map +1 -0
  39. package/dist/node-types/docker-login.js +17 -0
  40. package/dist/node-types/docker-login.js.map +1 -0
  41. package/dist/node-types/docker-push.d.ts +14 -0
  42. package/dist/node-types/docker-push.d.ts.map +1 -0
  43. package/dist/node-types/docker-push.js +15 -0
  44. package/dist/node-types/docker-push.js.map +1 -0
  45. package/dist/node-types/health-check.d.ts +17 -0
  46. package/dist/node-types/health-check.d.ts.map +1 -0
  47. package/dist/node-types/health-check.js +17 -0
  48. package/dist/node-types/health-check.js.map +1 -0
  49. package/dist/node-types/index.d.ts +16 -0
  50. package/dist/node-types/index.d.ts.map +1 -0
  51. package/dist/node-types/index.js +17 -0
  52. package/dist/node-types/index.js.map +1 -0
  53. package/dist/node-types/npm-build.d.ts +12 -0
  54. package/dist/node-types/npm-build.d.ts.map +1 -0
  55. package/dist/node-types/npm-build.js +13 -0
  56. package/dist/node-types/npm-build.js.map +1 -0
  57. package/dist/node-types/npm-install.d.ts +13 -0
  58. package/dist/node-types/npm-install.d.ts.map +1 -0
  59. package/dist/node-types/npm-install.js +17 -0
  60. package/dist/node-types/npm-install.js.map +1 -0
  61. package/dist/node-types/npm-test.d.ts +14 -0
  62. package/dist/node-types/npm-test.d.ts.map +1 -0
  63. package/dist/node-types/npm-test.js +14 -0
  64. package/dist/node-types/npm-test.js.map +1 -0
  65. package/dist/node-types/setup-node.d.ts +13 -0
  66. package/dist/node-types/setup-node.d.ts.map +1 -0
  67. package/dist/node-types/setup-node.js +14 -0
  68. package/dist/node-types/setup-node.js.map +1 -0
  69. package/dist/node-types/setup-python.d.ts +13 -0
  70. package/dist/node-types/setup-python.d.ts.map +1 -0
  71. package/dist/node-types/setup-python.js +14 -0
  72. package/dist/node-types/setup-python.js.map +1 -0
  73. package/dist/node-types/shell-command.d.ts +16 -0
  74. package/dist/node-types/shell-command.d.ts.map +1 -0
  75. package/dist/node-types/shell-command.js +16 -0
  76. package/dist/node-types/shell-command.js.map +1 -0
  77. package/dist/node-types/slack-notify.d.ts +15 -0
  78. package/dist/node-types/slack-notify.d.ts.map +1 -0
  79. package/dist/node-types/slack-notify.js +16 -0
  80. package/dist/node-types/slack-notify.js.map +1 -0
  81. package/dist/node-types/wait-for-url.d.ts +17 -0
  82. package/dist/node-types/wait-for-url.d.ts.map +1 -0
  83. package/dist/node-types/wait-for-url.js +17 -0
  84. package/dist/node-types/wait-for-url.js.map +1 -0
  85. package/dist/patterns/docker-build-push.d.ts +13 -0
  86. package/dist/patterns/docker-build-push.d.ts.map +1 -0
  87. package/dist/patterns/docker-build-push.js +14 -0
  88. package/dist/patterns/docker-build-push.js.map +1 -0
  89. package/dist/patterns/index.d.ts +2 -0
  90. package/dist/patterns/index.d.ts.map +1 -0
  91. package/dist/patterns/index.js +8 -0
  92. package/dist/patterns/index.js.map +1 -0
  93. package/dist/patterns/multi-env-deploy.d.ts +18 -0
  94. package/dist/patterns/multi-env-deploy.d.ts.map +1 -0
  95. package/dist/patterns/multi-env-deploy.js +19 -0
  96. package/dist/patterns/multi-env-deploy.js.map +1 -0
  97. package/dist/patterns/test-and-deploy.d.ts +15 -0
  98. package/dist/patterns/test-and-deploy.d.ts.map +1 -0
  99. package/dist/patterns/test-and-deploy.js +16 -0
  100. package/dist/patterns/test-and-deploy.js.map +1 -0
  101. package/dist/register.d.ts +9 -0
  102. package/dist/register.d.ts.map +1 -0
  103. package/dist/register.js +25 -0
  104. package/dist/register.js.map +1 -0
  105. package/dist/rules.d.ts +19 -0
  106. package/dist/rules.d.ts.map +1 -0
  107. package/dist/rules.js +247 -0
  108. package/dist/rules.js.map +1 -0
  109. package/dist/secrets-doc.d.ts +9 -0
  110. package/dist/secrets-doc.d.ts.map +1 -0
  111. package/dist/secrets-doc.js +47 -0
  112. package/dist/secrets-doc.js.map +1 -0
  113. package/dist/secrets.d.ts +19 -0
  114. package/dist/secrets.d.ts.map +1 -0
  115. package/dist/secrets.js +50 -0
  116. package/dist/secrets.js.map +1 -0
  117. package/dist/tag-handler.d.ts +12 -0
  118. package/dist/tag-handler.d.ts.map +1 -0
  119. package/dist/tag-handler.js +498 -0
  120. package/dist/tag-handler.js.map +1 -0
  121. package/dist/types.d.ts +90 -0
  122. package/dist/types.d.ts.map +1 -0
  123. package/dist/types.js +9 -0
  124. package/dist/types.js.map +1 -0
  125. package/flowweaver.manifest.json +514 -0
  126. package/package.json +44 -0
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Artifact injection for cross-job data flow.
3
+ *
4
+ * When jobs depend on each other, artifacts need to be uploaded after the
5
+ * upstream job and downloaded before the downstream job runs.
6
+ */
7
+ import type { TCICDArtifact } from '@synergenius/flow-weaver/ast';
8
+ import type { CICDJob } from './types.js';
9
+ /**
10
+ * Inject upload/download artifact steps into jobs that have cross-job dependencies.
11
+ */
12
+ export declare function injectArtifactSteps(jobs: CICDJob[], artifacts: TCICDArtifact[]): void;
13
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAoBrF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Artifact injection for cross-job data flow.
3
+ *
4
+ * When jobs depend on each other, artifacts need to be uploaded after the
5
+ * upstream job and downloaded before the downstream job runs.
6
+ */
7
+ /**
8
+ * Inject upload/download artifact steps into jobs that have cross-job dependencies.
9
+ */
10
+ export function injectArtifactSteps(jobs, artifacts) {
11
+ if (artifacts.length === 0)
12
+ return;
13
+ for (const job of jobs) {
14
+ if (job.needs.length === 0)
15
+ continue;
16
+ const neededJobs = jobs.filter((j) => job.needs.includes(j.id));
17
+ for (const needed of neededJobs) {
18
+ const jobArtifacts = artifacts.filter((a) => !a.name || needed.steps.some((s) => s.nodeType === a.name));
19
+ if (jobArtifacts.length > 0) {
20
+ needed.uploadArtifacts = (needed.uploadArtifacts || []).concat(jobArtifacts);
21
+ job.downloadArtifacts = (job.downloadArtifacts || []).concat(jobArtifacts.map((a) => a.name));
22
+ }
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe,EAAE,SAA0B;IAC7E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAErC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,CAClE,CAAC;YAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC7E,GAAG,CAAC,iBAAiB,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1D,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAChC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * CI/CD workflow detection utilities.
3
+ *
4
+ * Determines whether a workflow AST represents a CI/CD pipeline based
5
+ * on the presence of CI/CD annotations (@secret, @runner, @job, etc.).
6
+ */
7
+ import type { TWorkflowAST } from '@synergenius/flow-weaver/ast';
8
+ /**
9
+ * Check if a workflow is a CI/CD pipeline.
10
+ *
11
+ * Detection signals (any one is sufficient):
12
+ * 1. Workflow options contain CI/CD fields (secrets, runner, caches, etc.)
13
+ * 2. Any node instance has a `job` attribute
14
+ */
15
+ export declare function isCICDWorkflow(ast: TWorkflowAST): boolean;
16
+ /**
17
+ * Get all unique job names from a CI/CD workflow.
18
+ */
19
+ export declare function getJobNames(ast: TWorkflowAST): string[];
20
+ /**
21
+ * Get all declared secret names from a CI/CD workflow.
22
+ */
23
+ export declare function getDeclaredSecrets(ast: TWorkflowAST): string[];
24
+ /**
25
+ * Get all secret:NAME references from connections.
26
+ */
27
+ export declare function getReferencedSecrets(ast: TWorkflowAST): string[];
28
+ //# sourceMappingURL=detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../src/detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAuBzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,CAMvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,CAQhE"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * CI/CD workflow detection utilities.
3
+ *
4
+ * Determines whether a workflow AST represents a CI/CD pipeline based
5
+ * on the presence of CI/CD annotations (@secret, @runner, @job, etc.).
6
+ */
7
+ /**
8
+ * Check if a workflow is a CI/CD pipeline.
9
+ *
10
+ * Detection signals (any one is sufficient):
11
+ * 1. Workflow options contain CI/CD fields (secrets, runner, caches, etc.)
12
+ * 2. Any node instance has a `job` attribute
13
+ */
14
+ export function isCICDWorkflow(ast) {
15
+ const cicd = ast.options?.cicd;
16
+ if (cicd) {
17
+ if (cicd.secrets && cicd.secrets.length > 0)
18
+ return true;
19
+ if (cicd.runner)
20
+ return true;
21
+ if (cicd.caches && cicd.caches.length > 0)
22
+ return true;
23
+ if (cicd.artifacts && cicd.artifacts.length > 0)
24
+ return true;
25
+ if (cicd.environments && cicd.environments.length > 0)
26
+ return true;
27
+ if (cicd.matrix)
28
+ return true;
29
+ if (cicd.services && cicd.services.length > 0)
30
+ return true;
31
+ if (cicd.concurrency)
32
+ return true;
33
+ if (cicd.triggers && cicd.triggers.length > 0)
34
+ return true;
35
+ if (cicd.jobs && cicd.jobs.length > 0)
36
+ return true;
37
+ if (cicd.variables && Object.keys(cicd.variables).length > 0)
38
+ return true;
39
+ if (cicd.beforeScript && cicd.beforeScript.length > 0)
40
+ return true;
41
+ if (cicd.tags && cicd.tags.length > 0)
42
+ return true;
43
+ if (cicd.includes && cicd.includes.length > 0)
44
+ return true;
45
+ if (cicd.stages && cicd.stages.length > 0)
46
+ return true;
47
+ }
48
+ if (ast.instances.some((inst) => inst.job))
49
+ return true;
50
+ return false;
51
+ }
52
+ /**
53
+ * Get all unique job names from a CI/CD workflow.
54
+ */
55
+ export function getJobNames(ast) {
56
+ const jobs = new Set();
57
+ for (const inst of ast.instances) {
58
+ if (inst.job)
59
+ jobs.add(inst.job);
60
+ }
61
+ return Array.from(jobs);
62
+ }
63
+ /**
64
+ * Get all declared secret names from a CI/CD workflow.
65
+ */
66
+ export function getDeclaredSecrets(ast) {
67
+ return (ast.options?.cicd?.secrets || []).map((s) => s.name);
68
+ }
69
+ /**
70
+ * Get all secret:NAME references from connections.
71
+ */
72
+ export function getReferencedSecrets(ast) {
73
+ const secrets = new Set();
74
+ for (const conn of ast.connections) {
75
+ if (conn.from.node.startsWith('secret:')) {
76
+ secrets.add(conn.from.node.substring(7));
77
+ }
78
+ }
79
+ return Array.from(secrets);
80
+ }
81
+ //# sourceMappingURL=detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../src/detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @synergenius/flowweaver-pack-cicd
3
+ *
4
+ * CI/CD pipeline infrastructure for Flow Weaver: tag handler, detection,
5
+ * validation rules, job graph builder, and runtime types.
6
+ *
7
+ * Also includes expression node types for local testing, which map to
8
+ * platform-native actions when exported to GitHub Actions or GitLab CI.
9
+ */
10
+ export { cicdTagHandler } from './tag-handler.js';
11
+ export { isCICDWorkflow, getJobNames, getDeclaredSecrets, getReferencedSecrets } from './detection.js';
12
+ export { getCICDValidationRules } from './rules.js';
13
+ export { buildJobGraph } from './job-graph.js';
14
+ export { resolveJobSecrets } from './secrets.js';
15
+ export { injectArtifactSteps } from './artifacts.js';
16
+ export { generateSecretsDoc } from './secrets-doc.js';
17
+ export { NATIVE_CI_STEPS } from './native-steps.js';
18
+ export type { CICDJob, CICDStep, ActionMapping } from './types.js';
19
+ export * from './node-types/index.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGnE,cAAc,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @synergenius/flowweaver-pack-cicd
3
+ *
4
+ * CI/CD pipeline infrastructure for Flow Weaver: tag handler, detection,
5
+ * validation rules, job graph builder, and runtime types.
6
+ *
7
+ * Also includes expression node types for local testing, which map to
8
+ * platform-native actions when exported to GitHub Actions or GitLab CI.
9
+ */
10
+ // Infrastructure (used by export target packs)
11
+ export { cicdTagHandler } from './tag-handler.js';
12
+ export { isCICDWorkflow, getJobNames, getDeclaredSecrets, getReferencedSecrets } from './detection.js';
13
+ export { getCICDValidationRules } from './rules.js';
14
+ export { buildJobGraph } from './job-graph.js';
15
+ export { resolveJobSecrets } from './secrets.js';
16
+ export { injectArtifactSteps } from './artifacts.js';
17
+ export { generateSecretsDoc } from './secrets-doc.js';
18
+ export { NATIVE_CI_STEPS } from './native-steps.js';
19
+ // Node types (for workflow authoring)
20
+ export * from './node-types/index.js';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,sCAAsC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Job graph construction from a CI/CD workflow AST.
3
+ *
4
+ * Groups node instances by their [job: "name"] attribute, computes
5
+ * inter-job dependencies from connections, applies @job/@stage config,
6
+ * and returns a topologically sorted list of CICDJob objects.
7
+ *
8
+ * Extracted from core's BaseCICDTarget.buildJobGraph().
9
+ */
10
+ import type { TWorkflowAST } from '@synergenius/flow-weaver/ast';
11
+ import type { CICDJob } from './types.js';
12
+ /**
13
+ * Build the job graph from a workflow AST.
14
+ * Returns jobs in topological order (dependencies first).
15
+ */
16
+ export declare function buildJobGraph(ast: TWorkflowAST): CICDJob[];
17
+ //# sourceMappingURL=job-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-graph.d.ts","sourceRoot":"","sources":["../src/job-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,EAAE,CA6H1D"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Job graph construction from a CI/CD workflow AST.
3
+ *
4
+ * Groups node instances by their [job: "name"] attribute, computes
5
+ * inter-job dependencies from connections, applies @job/@stage config,
6
+ * and returns a topologically sorted list of CICDJob objects.
7
+ *
8
+ * Extracted from core's BaseCICDTarget.buildJobGraph().
9
+ */
10
+ /**
11
+ * Build the job graph from a workflow AST.
12
+ * Returns jobs in topological order (dependencies first).
13
+ */
14
+ export function buildJobGraph(ast) {
15
+ const nodeTypeLookup = new Map();
16
+ for (const nt of ast.nodeTypes) {
17
+ nodeTypeLookup.set(nt.name, nt);
18
+ if (nt.functionName !== nt.name)
19
+ nodeTypeLookup.set(nt.functionName, nt);
20
+ }
21
+ const jobMap = new Map();
22
+ const defaultRunner = ast.options?.cicd?.runner;
23
+ for (const inst of ast.instances) {
24
+ const jobName = inst.job || 'default';
25
+ if (!jobMap.has(jobName))
26
+ jobMap.set(jobName, []);
27
+ jobMap.get(jobName).push(inst);
28
+ }
29
+ const nodeJob = new Map();
30
+ for (const inst of ast.instances) {
31
+ nodeJob.set(inst.id, inst.job || 'default');
32
+ }
33
+ const jobDeps = new Map();
34
+ for (const conn of ast.connections) {
35
+ if (conn.from.node.startsWith('secret:'))
36
+ continue;
37
+ if (conn.from.node === 'Start' || conn.to.node === 'Exit')
38
+ continue;
39
+ const fromJob = nodeJob.get(conn.from.node);
40
+ const toJob = nodeJob.get(conn.to.node);
41
+ if (fromJob && toJob && fromJob !== toJob) {
42
+ if (!jobDeps.has(toJob))
43
+ jobDeps.set(toJob, new Set());
44
+ jobDeps.get(toJob).add(fromJob);
45
+ }
46
+ }
47
+ const jobs = [];
48
+ for (const [jobId, instances] of jobMap) {
49
+ const environment = instances.find((i) => i.environment)?.environment;
50
+ const steps = instances.map((inst) => {
51
+ const nt = nodeTypeLookup.get(inst.nodeType);
52
+ return {
53
+ id: inst.id,
54
+ name: inst.config?.label || inst.id,
55
+ nodeType: inst.nodeType,
56
+ ...(nt?.deploy && { nodeTypeDeploy: nt.deploy }),
57
+ };
58
+ });
59
+ const needs = jobDeps.get(jobId)
60
+ ? Array.from(jobDeps.get(jobId))
61
+ : [];
62
+ jobs.push({
63
+ id: jobId,
64
+ name: jobId,
65
+ runner: defaultRunner,
66
+ needs,
67
+ steps,
68
+ environment,
69
+ secrets: [],
70
+ });
71
+ }
72
+ // Apply @job configs
73
+ const jobConfigs = ast.options?.cicd?.jobs;
74
+ if (jobConfigs) {
75
+ for (const jc of jobConfigs) {
76
+ const job = jobs.find(j => j.id === jc.id);
77
+ if (!job)
78
+ continue;
79
+ if (jc.retry !== undefined)
80
+ job.retry = jc.retry;
81
+ if (jc.allowFailure !== undefined)
82
+ job.allowFailure = jc.allowFailure;
83
+ if (jc.timeout)
84
+ job.timeout = jc.timeout;
85
+ if (jc.variables)
86
+ job.variables = { ...job.variables, ...jc.variables };
87
+ if (jc.tags)
88
+ job.tags = jc.tags;
89
+ if (jc.beforeScript)
90
+ job.beforeScript = jc.beforeScript;
91
+ if (jc.rules)
92
+ job.rules = jc.rules;
93
+ if (jc.coverage)
94
+ job.coverage = jc.coverage;
95
+ if (jc.reports)
96
+ job.reports = jc.reports;
97
+ if (jc.runner)
98
+ job.runner = jc.runner;
99
+ if (jc.extends)
100
+ job.extends = jc.extends;
101
+ }
102
+ }
103
+ // Apply @stage assignments
104
+ const stages = ast.options?.cicd?.stages;
105
+ if (stages && stages.length > 0) {
106
+ const depthMap = computeJobDepths(jobs);
107
+ for (const job of jobs) {
108
+ if (!job.stage) {
109
+ for (const s of stages) {
110
+ if (job.id === s.name || job.id.startsWith(s.name + '-') || job.id.startsWith(s.name + '_')) {
111
+ job.stage = s.name;
112
+ break;
113
+ }
114
+ }
115
+ }
116
+ }
117
+ for (const job of jobs) {
118
+ if (!job.stage) {
119
+ const depth = depthMap.get(job.id) || 0;
120
+ job.stage = stages[Math.min(depth, stages.length - 1)].name;
121
+ }
122
+ }
123
+ }
124
+ // Apply workflow-level defaults
125
+ const cicd = ast.options?.cicd;
126
+ if (cicd) {
127
+ for (const job of jobs) {
128
+ if (cicd.variables && !job.variables) {
129
+ job.variables = { ...cicd.variables };
130
+ }
131
+ if (cicd.beforeScript && !job.beforeScript) {
132
+ job.beforeScript = [...cicd.beforeScript];
133
+ }
134
+ if (cicd.tags && !job.tags) {
135
+ job.tags = [...cicd.tags];
136
+ }
137
+ }
138
+ }
139
+ return topoSortJobs(jobs);
140
+ }
141
+ function topoSortJobs(jobs) {
142
+ const jobMap = new Map(jobs.map((j) => [j.id, j]));
143
+ const visited = new Set();
144
+ const sorted = [];
145
+ function visit(id) {
146
+ if (visited.has(id))
147
+ return;
148
+ visited.add(id);
149
+ const job = jobMap.get(id);
150
+ if (!job)
151
+ return;
152
+ for (const dep of job.needs) {
153
+ visit(dep);
154
+ }
155
+ sorted.push(job);
156
+ }
157
+ for (const job of jobs) {
158
+ visit(job.id);
159
+ }
160
+ return sorted;
161
+ }
162
+ function computeJobDepths(jobs) {
163
+ const depths = new Map();
164
+ function depth(jobId, visited) {
165
+ if (depths.has(jobId))
166
+ return depths.get(jobId);
167
+ if (visited.has(jobId))
168
+ return 0;
169
+ visited.add(jobId);
170
+ const job = jobs.find(j => j.id === jobId);
171
+ if (!job || job.needs.length === 0) {
172
+ depths.set(jobId, 0);
173
+ return 0;
174
+ }
175
+ const maxDep = Math.max(...job.needs.map(n => depth(n, visited)));
176
+ const d = maxDep + 1;
177
+ depths.set(jobId, d);
178
+ return d;
179
+ }
180
+ for (const job of jobs) {
181
+ depth(job.id, new Set());
182
+ }
183
+ return depths;
184
+ }
185
+ //# sourceMappingURL=job-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-graph.js","sourceRoot":"","sources":["../src/job-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB;IAC7C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;IACvD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,IAAI;YAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqE,CAAC;IAC5F,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QACnD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAEpE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;QAEtE,MAAM,KAAK,GAAe,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/C,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE;gBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;aACjD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YACjC,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,CAAC,IAAI,CAAC;YACR,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,aAAa;YACrB,KAAK;YACL,KAAK;YACL,WAAW;YACX,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;IAC3C,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACjD,IAAI,EAAE,CAAC,YAAY,KAAK,SAAS;gBAAE,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;YACtE,IAAI,EAAE,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;YACzC,IAAI,EAAE,CAAC,SAAS;gBAAE,GAAG,CAAC,SAAS,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;YACxE,IAAI,EAAE,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;YAChC,IAAI,EAAE,CAAC,YAAY;gBAAE,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;YACxD,IAAI,EAAE,CAAC,KAAK;gBAAE,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,CAAC,QAAQ;gBAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC5C,IAAI,EAAE,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;YACzC,IAAI,EAAE,CAAC,MAAM;gBAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;YACtC,IAAI,EAAE,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC;IACzC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAExC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;wBAC5F,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACxC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;IAC/B,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrC,GAAG,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC3C,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,YAAY,CAAC,IAAe;IACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,SAAS,KAAK,CAAC,EAAU;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO;QAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAe;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,SAAS,KAAK,CAAC,KAAa,EAAE,OAAoB;QAChD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QACjD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Native CI steps that every CI/CD job needs regardless of workflow content.
3
+ * These are the setup steps (checkout, install) that run before the
4
+ * compiled workflow code.
5
+ */
6
+ import type { ActionMapping } from './types.js';
7
+ /**
8
+ * Built-in action mappings for native CI steps.
9
+ * These are only used by the platform-specific export targets (GitHub Actions, GitLab CI)
10
+ * for the setup steps that precede `node dist/workflow.cicd.js --job=X`.
11
+ */
12
+ export declare const NATIVE_CI_STEPS: Record<string, ActionMapping>;
13
+ //# sourceMappingURL=native-steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-steps.d.ts","sourceRoot":"","sources":["../src/native-steps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAkBzD,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Native CI steps that every CI/CD job needs regardless of workflow content.
3
+ * These are the setup steps (checkout, install) that run before the
4
+ * compiled workflow code.
5
+ */
6
+ /**
7
+ * Built-in action mappings for native CI steps.
8
+ * These are only used by the platform-specific export targets (GitHub Actions, GitLab CI)
9
+ * for the setup steps that precede `node dist/workflow.cicd.js --job=X`.
10
+ */
11
+ export const NATIVE_CI_STEPS = {
12
+ checkout: {
13
+ githubAction: 'actions/checkout@v4',
14
+ gitlabScript: ['echo "Checkout handled by GitLab CI runner"'],
15
+ label: 'Checkout code',
16
+ },
17
+ 'setup-node': {
18
+ githubAction: 'actions/setup-node@v4',
19
+ githubWith: { 'node-version': '20' },
20
+ gitlabImage: 'node:20',
21
+ label: 'Setup Node.js',
22
+ },
23
+ 'setup-python': {
24
+ githubAction: 'actions/setup-python@v5',
25
+ githubWith: { 'python-version': '3.12' },
26
+ gitlabImage: 'python:3.12',
27
+ label: 'Setup Python',
28
+ },
29
+ };
30
+ //# sourceMappingURL=native-steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-steps.js","sourceRoot":"","sources":["../src/native-steps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkC;IAC5D,QAAQ,EAAE;QACR,YAAY,EAAE,qBAAqB;QACnC,YAAY,EAAE,CAAC,6CAA6C,CAAC;QAC7D,KAAK,EAAE,eAAe;KACvB;IACD,YAAY,EAAE;QACZ,YAAY,EAAE,uBAAuB;QACrC,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;QACpC,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,eAAe;KACvB;IACD,cAAc,EAAE;QACd,YAAY,EAAE,yBAAyB;QACvC,UAAU,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE;QACxC,WAAW,EAAE,aAAa;QAC1B,KAAK,EAAE,cAAc;KACtB;CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @flowWeaver nodeType
3
+ * @expression
4
+ * @label Checkout
5
+ * @color gray
6
+ * @icon download
7
+ * @output repoPath [order:0] - Path to checked-out repository
8
+ */
9
+ export declare function checkout(): {
10
+ repoPath: string;
11
+ };
12
+ //# sourceMappingURL=checkout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/node-types/checkout.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,QAAQ,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAG/C"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @flowWeaver nodeType
3
+ * @expression
4
+ * @label Checkout
5
+ * @color gray
6
+ * @icon download
7
+ * @output repoPath [order:0] - Path to checked-out repository
8
+ */
9
+ export function checkout() {
10
+ // Stub: CI/CD export maps this to actions/checkout@v4 or GitLab's built-in checkout
11
+ return { repoPath: process.cwd() };
12
+ }
13
+ //# sourceMappingURL=checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/node-types/checkout.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ;IACtB,oFAAoF;IACpF,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @flowWeaver nodeType
3
+ * @expression
4
+ * @label Deploy S3
5
+ * @color orange
6
+ * @icon cloud_upload
7
+ * @input bucket [order:0] - S3 bucket name
8
+ * @input sourcePath [order:1] - Local path to upload
9
+ * @input accessKey [order:2] - AWS access key ID
10
+ * @input secretKey [order:3] - AWS secret access key
11
+ * @input region [order:4] - AWS region (default: us-east-1)
12
+ * @output url [order:0] - S3 URL of uploaded content
13
+ */
14
+ export declare function deployS3(bucket?: string, sourcePath?: string, accessKey?: string, secretKey?: string, region?: string): {
15
+ url: string;
16
+ };
17
+ //# sourceMappingURL=deploy-s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-s3.d.ts","sourceRoot":"","sources":["../../src/node-types/deploy-s3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CACtB,MAAM,GAAE,MAAW,EACnB,UAAU,GAAE,MAAgB,EAC5B,SAAS,GAAE,MAAW,EACtB,SAAS,GAAE,MAAW,EACtB,MAAM,GAAE,MAAoB,GAC3B;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAGjB"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @flowWeaver nodeType
3
+ * @expression
4
+ * @label Deploy S3
5
+ * @color orange
6
+ * @icon cloud_upload
7
+ * @input bucket [order:0] - S3 bucket name
8
+ * @input sourcePath [order:1] - Local path to upload
9
+ * @input accessKey [order:2] - AWS access key ID
10
+ * @input secretKey [order:3] - AWS secret access key
11
+ * @input region [order:4] - AWS region (default: us-east-1)
12
+ * @output url [order:0] - S3 URL of uploaded content
13
+ */
14
+ export function deployS3(bucket = '', sourcePath = 'dist/', accessKey = '', secretKey = '', region = 'us-east-1') {
15
+ // Stub: CI/CD export maps this to aws-actions/configure-aws-credentials@v4 + aws s3 sync
16
+ return { url: `s3://${bucket}/${sourcePath}` };
17
+ }
18
+ //# sourceMappingURL=deploy-s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-s3.js","sourceRoot":"","sources":["../../src/node-types/deploy-s3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CACtB,SAAiB,EAAE,EACnB,aAAqB,OAAO,EAC5B,YAAoB,EAAE,EACtB,YAAoB,EAAE,EACtB,SAAiB,WAAW;IAE5B,yFAAyF;IACzF,OAAO,EAAE,GAAG,EAAE,QAAQ,MAAM,IAAI,UAAU,EAAE,EAAE,CAAC;AACjD,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @flowWeaver nodeType
3
+ * @expression
4
+ * @label Deploy SSH
5
+ * @color purple
6
+ * @icon cloud_upload
7
+ * @input host [order:0] - SSH host
8
+ * @input sshKey [order:1] - SSH private key
9
+ * @input sourcePath [order:2] - Local path to deploy
10
+ * @input remotePath [order:3] - Remote deployment path
11
+ * @output result [order:0] - Deployment result message
12
+ */
13
+ export declare function deploySsh(host?: string, sshKey?: string, sourcePath?: string, remotePath?: string): {
14
+ result: string;
15
+ };
16
+ //# sourceMappingURL=deploy-ssh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-ssh.d.ts","sourceRoot":"","sources":["../../src/node-types/deploy-ssh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CACvB,IAAI,GAAE,MAAW,EACjB,MAAM,GAAE,MAAW,EACnB,UAAU,GAAE,MAAgB,EAC5B,UAAU,GAAE,MAAgB,GAC3B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAGpB"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @flowWeaver nodeType
3
+ * @expression
4
+ * @label Deploy SSH
5
+ * @color purple
6
+ * @icon cloud_upload
7
+ * @input host [order:0] - SSH host
8
+ * @input sshKey [order:1] - SSH private key
9
+ * @input sourcePath [order:2] - Local path to deploy
10
+ * @input remotePath [order:3] - Remote deployment path
11
+ * @output result [order:0] - Deployment result message
12
+ */
13
+ export function deploySsh(host = '', sshKey = '', sourcePath = 'dist/', remotePath = '/app/') {
14
+ // Stub: CI/CD export maps this to rsync/scp commands
15
+ return { result: `Deployed ${sourcePath} to ${host}:${remotePath}` };
16
+ }
17
+ //# sourceMappingURL=deploy-ssh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-ssh.js","sourceRoot":"","sources":["../../src/node-types/deploy-ssh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CACvB,OAAe,EAAE,EACjB,SAAiB,EAAE,EACnB,aAAqB,OAAO,EAC5B,aAAqB,OAAO;IAE5B,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,YAAY,UAAU,OAAO,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC;AACvE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @flowWeaver nodeType
3
+ * @expression
4
+ * @label Docker Build
5
+ * @color blue
6
+ * @icon layers
7
+ * @input context [order:0] - Build context path (default: ".")
8
+ * @input dockerfile [order:1] - Dockerfile path (default: "Dockerfile")
9
+ * @input tags [order:2] - Image tags (comma-separated)
10
+ * @output imageId [order:0] - Built image ID
11
+ */
12
+ export declare function dockerBuild(context?: string, dockerfile?: string, tags?: string): {
13
+ imageId: string;
14
+ };
15
+ //# sourceMappingURL=docker-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-build.d.ts","sourceRoot":"","sources":["../../src/node-types/docker-build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,OAAO,GAAE,MAAY,EACrB,UAAU,GAAE,MAAqB,EACjC,IAAI,GAAE,MAAiB,GACtB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAGrB"}