@flow-as-code/core 0.1.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 (164) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +30 -0
  3. package/SPEC.md +92 -0
  4. package/dist/actions.d.ts +87 -0
  5. package/dist/actions.d.ts.map +1 -0
  6. package/dist/actions.js +204 -0
  7. package/dist/actions.js.map +1 -0
  8. package/dist/aws.d.ts +27 -0
  9. package/dist/aws.d.ts.map +1 -0
  10. package/dist/aws.js +32 -0
  11. package/dist/aws.js.map +1 -0
  12. package/dist/blocks.d.ts +287 -0
  13. package/dist/blocks.d.ts.map +1 -0
  14. package/dist/blocks.js +352 -0
  15. package/dist/blocks.js.map +1 -0
  16. package/dist/codegen.d.ts +21 -0
  17. package/dist/codegen.d.ts.map +1 -0
  18. package/dist/codegen.js +1027 -0
  19. package/dist/codegen.js.map +1 -0
  20. package/dist/export.d.ts +256 -0
  21. package/dist/export.d.ts.map +1 -0
  22. package/dist/export.js +799 -0
  23. package/dist/export.js.map +1 -0
  24. package/dist/flow.d.ts +41 -0
  25. package/dist/flow.d.ts.map +1 -0
  26. package/dist/flow.js +85 -0
  27. package/dist/flow.js.map +1 -0
  28. package/dist/flowdoc.d.ts +111 -0
  29. package/dist/flowdoc.d.ts.map +1 -0
  30. package/dist/flowdoc.js +139 -0
  31. package/dist/flowdoc.js.map +1 -0
  32. package/dist/index.d.ts +16 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +26 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/layout.d.ts +11 -0
  37. package/dist/layout.d.ts.map +1 -0
  38. package/dist/layout.js +49 -0
  39. package/dist/layout.js.map +1 -0
  40. package/dist/lint/engine.d.ts +16 -0
  41. package/dist/lint/engine.d.ts.map +1 -0
  42. package/dist/lint/engine.js +37 -0
  43. package/dist/lint/engine.js.map +1 -0
  44. package/dist/lint/graph.d.ts +34 -0
  45. package/dist/lint/graph.d.ts.map +1 -0
  46. package/dist/lint/graph.js +79 -0
  47. package/dist/lint/graph.js.map +1 -0
  48. package/dist/lint/index.d.ts +7 -0
  49. package/dist/lint/index.d.ts.map +1 -0
  50. package/dist/lint/index.js +5 -0
  51. package/dist/lint/index.js.map +1 -0
  52. package/dist/lint/reporters.d.ts +6 -0
  53. package/dist/lint/reporters.d.ts.map +1 -0
  54. package/dist/lint/reporters.js +30 -0
  55. package/dist/lint/reporters.js.map +1 -0
  56. package/dist/lint/rules/action-allowed-in-flow-type.d.ts +11 -0
  57. package/dist/lint/rules/action-allowed-in-flow-type.d.ts.map +1 -0
  58. package/dist/lint/rules/action-allowed-in-flow-type.js +32 -0
  59. package/dist/lint/rules/action-allowed-in-flow-type.js.map +1 -0
  60. package/dist/lint/rules/action-count.d.ts +16 -0
  61. package/dist/lint/rules/action-count.d.ts.map +1 -0
  62. package/dist/lint/rules/action-count.js +32 -0
  63. package/dist/lint/rules/action-count.js.map +1 -0
  64. package/dist/lint/rules/error-branches.d.ts +10 -0
  65. package/dist/lint/rules/error-branches.d.ts.map +1 -0
  66. package/dist/lint/rules/error-branches.js +39 -0
  67. package/dist/lint/rules/error-branches.js.map +1 -0
  68. package/dist/lint/rules/index.d.ts +17 -0
  69. package/dist/lint/rules/index.d.ts.map +1 -0
  70. package/dist/lint/rules/index.js +36 -0
  71. package/dist/lint/rules/index.js.map +1 -0
  72. package/dist/lint/rules/module-depth-5.d.ts +14 -0
  73. package/dist/lint/rules/module-depth-5.d.ts.map +1 -0
  74. package/dist/lint/rules/module-depth-5.js +67 -0
  75. package/dist/lint/rules/module-depth-5.js.map +1 -0
  76. package/dist/lint/rules/no-literal-arn.d.ts +21 -0
  77. package/dist/lint/rules/no-literal-arn.d.ts.map +1 -0
  78. package/dist/lint/rules/no-literal-arn.js +58 -0
  79. package/dist/lint/rules/no-literal-arn.js.map +1 -0
  80. package/dist/lint/rules/no-unresolved-token.d.ts +8 -0
  81. package/dist/lint/rules/no-unresolved-token.d.ts.map +1 -0
  82. package/dist/lint/rules/no-unresolved-token.js +71 -0
  83. package/dist/lint/rules/no-unresolved-token.js.map +1 -0
  84. package/dist/lint/rules/prompt-length-3000.d.ts +16 -0
  85. package/dist/lint/rules/prompt-length-3000.d.ts.map +1 -0
  86. package/dist/lint/rules/prompt-length-3000.js +61 -0
  87. package/dist/lint/rules/prompt-length-3000.js.map +1 -0
  88. package/dist/lint/rules/reachable-blocks.d.ts +7 -0
  89. package/dist/lint/rules/reachable-blocks.d.ts.map +1 -0
  90. package/dist/lint/rules/reachable-blocks.js +45 -0
  91. package/dist/lint/rules/reachable-blocks.js.map +1 -0
  92. package/dist/lint/rules/recording-consent-before-record.d.ts +3 -0
  93. package/dist/lint/rules/recording-consent-before-record.d.ts.map +1 -0
  94. package/dist/lint/rules/recording-consent-before-record.js +87 -0
  95. package/dist/lint/rules/recording-consent-before-record.js.map +1 -0
  96. package/dist/lint/rules/terminal-blocks.d.ts +8 -0
  97. package/dist/lint/rules/terminal-blocks.d.ts.map +1 -0
  98. package/dist/lint/rules/terminal-blocks.js +40 -0
  99. package/dist/lint/rules/terminal-blocks.js.map +1 -0
  100. package/dist/lint/rules/unique-names.d.ts +7 -0
  101. package/dist/lint/rules/unique-names.d.ts.map +1 -0
  102. package/dist/lint/rules/unique-names.js +40 -0
  103. package/dist/lint/rules/unique-names.js.map +1 -0
  104. package/dist/lint/types.d.ts +30 -0
  105. package/dist/lint/types.d.ts.map +1 -0
  106. package/dist/lint/types.js +11 -0
  107. package/dist/lint/types.js.map +1 -0
  108. package/dist/materialize.d.ts +31 -0
  109. package/dist/materialize.d.ts.map +1 -0
  110. package/dist/materialize.js +192 -0
  111. package/dist/materialize.js.map +1 -0
  112. package/dist/package-names.d.ts +11 -0
  113. package/dist/package-names.d.ts.map +1 -0
  114. package/dist/package-names.js +25 -0
  115. package/dist/package-names.js.map +1 -0
  116. package/dist/refs.d.ts +35 -0
  117. package/dist/refs.d.ts.map +1 -0
  118. package/dist/refs.js +69 -0
  119. package/dist/refs.js.map +1 -0
  120. package/dist/serialize.d.ts +13 -0
  121. package/dist/serialize.d.ts.map +1 -0
  122. package/dist/serialize.js +86 -0
  123. package/dist/serialize.js.map +1 -0
  124. package/dist/simulate.d.ts +446 -0
  125. package/dist/simulate.d.ts.map +1 -0
  126. package/dist/simulate.js +1115 -0
  127. package/dist/simulate.js.map +1 -0
  128. package/dist/synth.d.ts +25 -0
  129. package/dist/synth.d.ts.map +1 -0
  130. package/dist/synth.js +93 -0
  131. package/dist/synth.js.map +1 -0
  132. package/package.json +73 -0
  133. package/src/actions.ts +221 -0
  134. package/src/aws.ts +55 -0
  135. package/src/blocks.ts +619 -0
  136. package/src/codegen.ts +1144 -0
  137. package/src/export.ts +1190 -0
  138. package/src/flow.ts +108 -0
  139. package/src/flowdoc.ts +261 -0
  140. package/src/index.ts +31 -0
  141. package/src/layout.ts +54 -0
  142. package/src/lint/engine.ts +56 -0
  143. package/src/lint/graph.ts +86 -0
  144. package/src/lint/index.ts +10 -0
  145. package/src/lint/reporters.ts +44 -0
  146. package/src/lint/rules/action-allowed-in-flow-type.ts +32 -0
  147. package/src/lint/rules/action-count.ts +35 -0
  148. package/src/lint/rules/error-branches.ts +45 -0
  149. package/src/lint/rules/index.ts +53 -0
  150. package/src/lint/rules/module-depth-5.ts +70 -0
  151. package/src/lint/rules/no-literal-arn.ts +64 -0
  152. package/src/lint/rules/no-unresolved-token.ts +80 -0
  153. package/src/lint/rules/prompt-length-3000.ts +66 -0
  154. package/src/lint/rules/reachable-blocks.ts +50 -0
  155. package/src/lint/rules/recording-consent-before-record.ts +90 -0
  156. package/src/lint/rules/terminal-blocks.ts +45 -0
  157. package/src/lint/rules/unique-names.ts +44 -0
  158. package/src/lint/types.ts +43 -0
  159. package/src/materialize.ts +230 -0
  160. package/src/package-names.ts +26 -0
  161. package/src/refs.ts +93 -0
  162. package/src/serialize.ts +97 -0
  163. package/src/simulate.ts +1610 -0
  164. package/src/synth.ts +110 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate.js","sourceRoot":"","sources":["../src/simulate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Block } from "./blocks.js";
2
+ import type { Flow } from "./flow.js";
3
+ import type { FlowDoc } from "./flowdoc.js";
4
+ export interface SynthOptions {
5
+ /** Recorded in meta.generator. Defaults to the package identity. */
6
+ generator?: string;
7
+ /** Set false to emit no `meta` block, which keeps fixtures free of versions. */
8
+ includeMeta?: boolean;
9
+ }
10
+ /**
11
+ * Reachability order: breadth-first from StartAction, then anything unreachable
12
+ * sorted by Identifier.
13
+ *
14
+ * This is NOT the order synth emits. Synth preserves declaration order, because
15
+ * codegen has to produce TypeScript a human would plausibly have written, and a
16
+ * human writes the happy path before the error handlers. Reachability order
17
+ * interleaves them. Preserving declaration order also makes codegen(synth(code))
18
+ * stable with no normalization pass at all, rather than one.
19
+ *
20
+ * Kept for lint (`reachable-blocks`) and for diffing two flows that are
21
+ * semantically identical but declared in a different order.
22
+ */
23
+ export declare function canonicalOrder(blocks: readonly Block[], startId: string): Block[];
24
+ export declare function synth(flow: Flow, options?: SynthOptions): FlowDoc;
25
+ //# sourceMappingURL=synth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../src/synth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAA2B,OAAO,EAAS,MAAM,cAAc,CAAC;AAK5E,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAWD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAwBjF;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAwCrE"}
package/dist/synth.js ADDED
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // synth: builder model in, FlowDoc out.
6
+ import { assertFlow } from "./flow.js";
7
+ import { FLOW_LANGUAGE_VERSION, FLOWDOC_VERSION } from "./flowdoc.js";
8
+ import { autoLayout } from "./layout.js";
9
+ import { collectRefs } from "./refs.js";
10
+ function targets(action) {
11
+ const t = action.Transitions;
12
+ return [
13
+ ...(t.NextAction === undefined ? [] : [t.NextAction]),
14
+ ...(t.Errors ?? []).map((e) => e.NextAction),
15
+ ...(t.Conditions ?? []).map((c) => c.NextAction),
16
+ ];
17
+ }
18
+ /**
19
+ * Reachability order: breadth-first from StartAction, then anything unreachable
20
+ * sorted by Identifier.
21
+ *
22
+ * This is NOT the order synth emits. Synth preserves declaration order, because
23
+ * codegen has to produce TypeScript a human would plausibly have written, and a
24
+ * human writes the happy path before the error handlers. Reachability order
25
+ * interleaves them. Preserving declaration order also makes codegen(synth(code))
26
+ * stable with no normalization pass at all, rather than one.
27
+ *
28
+ * Kept for lint (`reachable-blocks`) and for diffing two flows that are
29
+ * semantically identical but declared in a different order.
30
+ */
31
+ export function canonicalOrder(blocks, startId) {
32
+ const byId = new Map(blocks.map((b) => [b.id, b]));
33
+ if (!byId.has(startId)) {
34
+ throw new Error(`StartAction "${startId}" is not one of the flow's blocks.`);
35
+ }
36
+ const ordered = [];
37
+ const seen = new Set();
38
+ const queue = [startId];
39
+ while (queue.length > 0) {
40
+ const id = queue.shift();
41
+ if (seen.has(id))
42
+ continue;
43
+ const block = byId.get(id);
44
+ if (block === undefined)
45
+ continue; // dangling target; lint reports it
46
+ seen.add(id);
47
+ ordered.push(block);
48
+ for (const t of targets(block.toAction())) {
49
+ if (!seen.has(t))
50
+ queue.push(t);
51
+ }
52
+ }
53
+ const unreachable = blocks.filter((b) => !seen.has(b.id)).sort((a, b) => (a.id < b.id ? -1 : 1));
54
+ return [...ordered, ...unreachable];
55
+ }
56
+ export function synth(flow, options = {}) {
57
+ assertFlow(flow, "synth");
58
+ const startId = flow.startId();
59
+ if (!flow.all().some((b) => b.id === startId)) {
60
+ throw new Error(`StartAction "${startId}" is not one of the flow's blocks.`);
61
+ }
62
+ // Declaration order, deliberately. See canonicalOrder above.
63
+ const actions = flow.all().map((b) => b.toAction());
64
+ // Hand-placed positions win; everything else gets deterministic auto-layout.
65
+ const auto = autoLayout(actions);
66
+ const layout = {};
67
+ for (const a of actions) {
68
+ layout[a.Identifier] = flow.layout[a.Identifier] ?? auto[a.Identifier];
69
+ }
70
+ const content = {
71
+ Version: FLOW_LANGUAGE_VERSION,
72
+ StartAction: startId,
73
+ // A module requires a top-level Settings; a flow must not carry one.
74
+ ...(flow.kind === "module"
75
+ ? { Settings: flow.settings ?? {} }
76
+ : {}),
77
+ Actions: actions,
78
+ };
79
+ const doc = {
80
+ flowdoc: FLOWDOC_VERSION,
81
+ kind: flow.kind,
82
+ name: flow.name,
83
+ connectType: flow.connectType,
84
+ content,
85
+ layout,
86
+ refs: collectRefs(content),
87
+ };
88
+ if (options.includeMeta !== false) {
89
+ doc.meta = { generator: options.generator ?? `core@${FLOWDOC_VERSION}` };
90
+ }
91
+ return doc;
92
+ }
93
+ //# sourceMappingURL=synth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synth.js","sourceRoot":"","sources":["../src/synth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wCAAwC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,SAAS,OAAO,CAAC,MAAkB;IACjC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;IAC7B,OAAO;QACL,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5C,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,MAAwB,EAAE,OAAe;IACtE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,oCAAoC,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IAExB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS,CAAC,mCAAmC;QACtE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAU,EAAE,UAAwB,EAAE;IAC1D,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,oCAAoC,CAAC,CAAC;IAC/E,CAAC;IACD,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpD,6EAA6E;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAE,CAAC;IAC1E,CAAC;IAED,MAAM,OAAO,GAAgB;QAC3B,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,OAAO;QACpB,qEAAqE;QACrE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YACxB,CAAC,CAAC,EAAE,QAAQ,EAAG,IAA+C,CAAC,QAAQ,IAAI,EAAE,EAAE;YAC/E,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,OAAO;KACjB,CAAC;IAEF,MAAM,GAAG,GAAY;QACnB,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO;QACP,MAAM;QACN,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;KAC3B,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ,eAAe,EAAE,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@flow-as-code/core",
3
+ "version": "0.1.0",
4
+ "description": "Typed builder, synthesizer, codegen, lint engine, map and binder materialization, export reverse-mapping, and simulate client for Amazon Connect Flow language. IaC-agnostic; references are abstract tokens.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./lint": {
15
+ "types": "./dist/lint/index.d.ts",
16
+ "import": "./dist/lint/index.js"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "src",
22
+ "README.md",
23
+ "LICENSE",
24
+ "SPEC.md",
25
+ "!**/*.test.ts",
26
+ "!**/*.test.tsx",
27
+ "!**/__fixtures__",
28
+ "!**/__generated__",
29
+ "!**/*.tsbuildinfo",
30
+ "!**/__snapshots__",
31
+ "!**/*.snap",
32
+ "!**/test-helpers.ts",
33
+ "!**/test-helpers.tsx"
34
+ ],
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "engines": {
39
+ "node": ">=22.12"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.json",
43
+ "test": "vitest run"
44
+ },
45
+ "dependencies": {
46
+ "dagre": "^0.8.5"
47
+ },
48
+ "peerDependencies": {
49
+ "@aws-sdk/client-connect": "^3.600.0"
50
+ },
51
+ "peerDependenciesMeta": {
52
+ "@aws-sdk/client-connect": {
53
+ "optional": true
54
+ }
55
+ },
56
+ "devDependencies": {
57
+ "@aws-sdk/client-connect": "^3.925.0",
58
+ "@types/dagre": "^0.7.54",
59
+ "ajv": "^8.20.0",
60
+ "eslint": "^10.9.1",
61
+ "prettier": "^3.9.6",
62
+ "typescript": "^5.9.3"
63
+ },
64
+ "repository": {
65
+ "type": "git",
66
+ "url": "git+https://github.com/flow-as-code/flow-as-code.git",
67
+ "directory": "packages/core"
68
+ },
69
+ "homepage": "https://github.com/flow-as-code/flow-as-code/tree/main/packages/core#readme",
70
+ "bugs": {
71
+ "url": "https://github.com/flow-as-code/flow-as-code/issues"
72
+ }
73
+ }
package/src/actions.ts ADDED
@@ -0,0 +1,221 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // The modeled Amazon Connect action types.
6
+ //
7
+ // Every fact here is transcribed from conformance/flow-language/actions.md,
8
+ // which cites a doc URL per entry. Do not add an entry without adding the
9
+ // citation there first.
10
+
11
+ import type { RefType } from "./flowdoc.js";
12
+
13
+ export const ActionType = {
14
+ MessageParticipant: "MessageParticipant",
15
+ GetParticipantInput: "GetParticipantInput",
16
+ DisconnectParticipant: "DisconnectParticipant",
17
+ CheckHoursOfOperation: "CheckHoursOfOperation",
18
+ Compare: "Compare",
19
+ TransferToFlow: "TransferToFlow",
20
+ EndFlowExecution: "EndFlowExecution",
21
+ TransferContactToQueue: "TransferContactToQueue",
22
+ UpdateContactTargetQueue: "UpdateContactTargetQueue",
23
+ UpdateContactAttributes: "UpdateContactAttributes",
24
+ UpdateContactRecordingBehavior: "UpdateContactRecordingBehavior",
25
+ InvokeFlowModule: "InvokeFlowModule",
26
+ EndFlowModuleExecution: "EndFlowModuleExecution",
27
+ InvokeLambdaFunction: "InvokeLambdaFunction",
28
+ } as const;
29
+
30
+ export type ModeledActionType = (typeof ActionType)[keyof typeof ActionType];
31
+
32
+ /**
33
+ * Reference-bearing parameter fields, by action type. These are the only
34
+ * places a `${cdref:...}` token may appear.
35
+ */
36
+ export const REFERENCE_FIELDS: Readonly<Record<string, Readonly<Record<string, RefType>>>> = {
37
+ [ActionType.UpdateContactTargetQueue]: { QueueId: "queue", AgentId: "queue" },
38
+ [ActionType.CheckHoursOfOperation]: { HoursOfOperationId: "hours" },
39
+ [ActionType.InvokeLambdaFunction]: { LambdaFunctionARN: "lambda" },
40
+ [ActionType.InvokeFlowModule]: { FlowModuleId: "module" },
41
+ [ActionType.TransferToFlow]: { ContactFlowId: "flow" },
42
+ [ActionType.MessageParticipant]: { PromptId: "prompt" },
43
+ [ActionType.GetParticipantInput]: { PromptId: "prompt" },
44
+ };
45
+
46
+ /**
47
+ * Actions that terminate the flow. These carry an empty Transitions object and
48
+ * have no errors at all.
49
+ */
50
+ export const TERMINAL_ACTIONS: readonly string[] = [
51
+ ActionType.DisconnectParticipant,
52
+ ActionType.EndFlowExecution,
53
+ ActionType.EndFlowModuleExecution,
54
+ ];
55
+
56
+ /**
57
+ * The catch-all error every non-terminal modeled action supports. `Compare` is
58
+ * the exception: it fails with NoMatchingCondition instead.
59
+ */
60
+ export const NO_MATCHING_ERROR = "NoMatchingError";
61
+ export const NO_MATCHING_CONDITION = "NoMatchingCondition";
62
+
63
+ /** The error GetParticipantInput takes when no digit arrives in time. */
64
+ export const INPUT_TIME_LIMIT_EXCEEDED = "InputTimeLimitExceeded";
65
+
66
+ /**
67
+ * Additional error types beyond the catch-all, by action type, in the order
68
+ * the builder emits them.
69
+ */
70
+ export const EXTRA_ERRORS: Readonly<Record<string, readonly string[]>> = {
71
+ [ActionType.TransferContactToQueue]: ["QueueAtCapacity"],
72
+ // NoMatchingCondition "Must be defined only if StoreInput is False", which
73
+ // is the only form the builder emits; the order is the admin page's example.
74
+ // https://docs.aws.amazon.com/connect/latest/devguide/participant-actions-getparticipantinput.html
75
+ [ActionType.GetParticipantInput]: [INPUT_TIME_LIMIT_EXCEEDED, NO_MATCHING_CONDITION],
76
+ };
77
+
78
+ // The Restrictions section of an action page names flow types in the console's
79
+ // vocabulary. These groups are that vocabulary in ConnectType terms; every
80
+ // entry in the table below is spelled with them so a restriction can be read
81
+ // straight off the page it cites.
82
+ //
83
+ // inbound flow, contact flow -> INBOUND
84
+ // transfer flow -> TRANSFER
85
+ // whisper flow -> WHISPER (agent, customer, outbound)
86
+ // hold flow -> agent and customer hold; no action allows one
87
+ // customer queue flow -> CUSTOMER_QUEUE
88
+ // flow module -> IN_MODULE
89
+ const INBOUND = ["CONTACT_FLOW"] as const;
90
+ const TRANSFER = ["AGENT_TRANSFER", "QUEUE_TRANSFER"] as const;
91
+ const WHISPER = ["CUSTOMER_WHISPER", "AGENT_WHISPER", "OUTBOUND_WHISPER"] as const;
92
+ const CUSTOMER_QUEUE = ["CUSTOMER_QUEUE"] as const;
93
+
94
+ // A module has no flow type of its own. It runs under whichever flow invokes
95
+ // it ("You can use modules across all flow types"), and AWS documents the
96
+ // consequence of an unsupported block as a runtime one, not a static ban: "If
97
+ // your module contains blocks that are not supported by the specific flow type,
98
+ // this incompatibility might lead the blocks to take the error branch."
99
+ // https://docs.aws.amazon.com/connect/latest/adminguide/contact-flow-modules.html
100
+ // So the invoking flow type, which a module document does not know, decides.
101
+ // MODULE is therefore allowed wherever the action page does not scope the
102
+ // action to modules; EndFlowModuleExecution is the only action whose page
103
+ // mentions modules at all, and it is module-only.
104
+ const IN_MODULE = ["MODULE"] as const;
105
+
106
+ /**
107
+ * Which flow types each action is legal in, transcribed from the Restrictions
108
+ * section of each action's doc page (the modeled set and its pages are listed
109
+ * in conformance/flow-language/actions.md). Consumed by the
110
+ * `action-allowed-in-flow-type` lint rule.
111
+ *
112
+ * An action absent from this table is unrestricted; FLOW_TYPE_UNRESTRICTED
113
+ * names those explicitly, and actions.test.ts holds the two lists to the whole
114
+ * modeled set so a new block cannot land with its Restrictions section unread.
115
+ */
116
+ export const FLOW_TYPE_RESTRICTIONS: Readonly<Record<string, readonly string[]>> = {
117
+ // "This action is supported in contact flows, transfer flows, whisper flows,
118
+ // and customer queue flows. It is not supported in hold flows."
119
+ // https://docs.aws.amazon.com/connect/latest/devguide/participant-actions-messageparticipant.html
120
+ [ActionType.MessageParticipant]: [
121
+ ...INBOUND,
122
+ ...TRANSFER,
123
+ ...WHISPER,
124
+ ...CUSTOMER_QUEUE,
125
+ ...IN_MODULE,
126
+ ],
127
+ // "This action can be used in contact flows, transfer flows, and customer
128
+ // queue flows but not in whisper flows or hold flows."
129
+ // https://docs.aws.amazon.com/connect/latest/devguide/participant-actions-getparticipantinput.html
130
+ // The admin guide's block page also marks the outbound whisper flow as
131
+ // supported; the action page governs here, as it does for every other row.
132
+ // https://docs.aws.amazon.com/connect/latest/adminguide/get-customer-input.html
133
+ [ActionType.GetParticipantInput]: [...INBOUND, ...TRANSFER, ...CUSTOMER_QUEUE, ...IN_MODULE],
134
+ // "This action is supported for all channels and in contact flows, transfer
135
+ // flows, and customer queue flows."
136
+ // https://docs.aws.amazon.com/connect/latest/devguide/participant-actions-disconnectparticipant.html
137
+ [ActionType.DisconnectParticipant]: [...INBOUND, ...TRANSFER, ...CUSTOMER_QUEUE, ...IN_MODULE],
138
+ // "This action is available in inbound flows, transfer flows, and customer
139
+ // queue flows. It is not available to hold flows or to whisper flows."
140
+ // https://docs.aws.amazon.com/connect/latest/devguide/flow-control-actions-checkhoursofoperation.html
141
+ [ActionType.CheckHoursOfOperation]: [...INBOUND, ...TRANSFER, ...CUSTOMER_QUEUE, ...IN_MODULE],
142
+ // "This action is available only in whisper flows and customer queue flows.
143
+ // It is not available in flows, hold flows, or transfer flows."
144
+ // https://docs.aws.amazon.com/connect/latest/devguide/flow-control-actions-endflowexecution.html
145
+ [ActionType.EndFlowExecution]: [...WHISPER, ...CUSTOMER_QUEUE, ...IN_MODULE],
146
+ // "This action is available only in flow modules."
147
+ // https://docs.aws.amazon.com/connect/latest/devguide/endflowmoduleexecution.html
148
+ [ActionType.EndFlowModuleExecution]: [...IN_MODULE],
149
+ // "This action is supported by all channels and only supports Inbound flow
150
+ // types."
151
+ // https://docs.aws.amazon.com/connect/latest/devguide/flow-language-actions-invoke-flow-module.html
152
+ // Modules can invoke modules ("up to five levels of nesting",
153
+ // https://docs.aws.amazon.com/connect/latest/adminguide/contact-flow-modules.html),
154
+ // so MODULE is allowed too; the nesting depth itself is module-depth-5's job.
155
+ [ActionType.InvokeFlowModule]: [...INBOUND, ...IN_MODULE],
156
+ // "This action is supported in inbound contact flows and transfer flows. It
157
+ // is not supported in whisper flows, customer queue flows, or hold flows."
158
+ // https://docs.aws.amazon.com/connect/latest/devguide/contact-actions-transfercontacttoqueue.html
159
+ [ActionType.TransferContactToQueue]: [...INBOUND, ...TRANSFER, ...IN_MODULE],
160
+ // "This action is supported only in inbound contact flows and transfer flows.
161
+ // It is not supported in whisper flows, hold flows, or customer queue flows."
162
+ // https://docs.aws.amazon.com/connect/latest/devguide/contact-actions-updatecontacttargetqueue.html
163
+ [ActionType.UpdateContactTargetQueue]: [...INBOUND, ...TRANSFER, ...IN_MODULE],
164
+ // "This action is available in inbound flows and transfer flows. It is not
165
+ // available to hold flows, customer queue flows, or whisper flows."
166
+ // https://docs.aws.amazon.com/connect/latest/devguide/flow-control-actions-transfertoflow.html
167
+ [ActionType.TransferToFlow]: [...INBOUND, ...TRANSFER, ...IN_MODULE],
168
+ // "This is supported only in contact flows, transfer flows, outbound
169
+ // whispers, and customer queue flows. This is not supported in agent/customer
170
+ // whispers or hold flows."
171
+ // https://docs.aws.amazon.com/connect/latest/devguide/contact-actions-updatecontactrecordingbehavior.html
172
+ [ActionType.UpdateContactRecordingBehavior]: [
173
+ ...INBOUND,
174
+ ...TRANSFER,
175
+ "OUTBOUND_WHISPER",
176
+ ...CUSTOMER_QUEUE,
177
+ ...IN_MODULE,
178
+ ],
179
+ };
180
+
181
+ /**
182
+ * Modeled actions whose doc page states no flow-type restriction. Listed rather
183
+ * than merely omitted from the table above so that "unrestricted" is a recorded
184
+ * reading of the page, not a gap.
185
+ *
186
+ * Compare: "This action is available in every type of flow."
187
+ * https://docs.aws.amazon.com/connect/latest/devguide/flow-control-actions-compare.html
188
+ * UpdateContactAttributes: "None. This can be used in any type of flow and any
189
+ * channel."
190
+ * https://docs.aws.amazon.com/connect/latest/devguide/contact-actions-updatecontactattributes.html
191
+ * InvokeLambdaFunction: "None. This action is supported by all channels and in
192
+ * all types of flows."
193
+ * https://docs.aws.amazon.com/connect/latest/devguide/interactions-invokelambdafunction.html
194
+ */
195
+ export const FLOW_TYPE_UNRESTRICTED: readonly string[] = [
196
+ ActionType.Compare,
197
+ ActionType.UpdateContactAttributes,
198
+ ActionType.InvokeLambdaFunction,
199
+ ];
200
+
201
+ /** InvokeLambdaFunction.InvocationTimeLimitSeconds bounds, per the doc page. */
202
+ export const LAMBDA_TIMEOUT_MIN = 1;
203
+ export const LAMBDA_TIMEOUT_MAX = 8;
204
+
205
+ /**
206
+ * GetParticipantInput.InputTimeLimitSeconds bounds. The action page requires
207
+ * "a valid integer larger than zero"; the ceiling is the console's Set timeout
208
+ * control, which accepts 1 to 180 seconds.
209
+ * https://docs.aws.amazon.com/connect/latest/devguide/participant-actions-getparticipantinput.html
210
+ * https://docs.aws.amazon.com/connect/latest/adminguide/get-customer-input.html
211
+ */
212
+ export const INPUT_TIMEOUT_MIN = 1;
213
+ export const INPUT_TIMEOUT_MAX = 180;
214
+
215
+ /**
216
+ * The keys a DTMF menu branch may match: "must be static and be a single
217
+ * character - 0-9 numeric, *, or #".
218
+ * https://docs.aws.amazon.com/connect/latest/devguide/participant-actions-getparticipantinput.html
219
+ */
220
+ export const DTMF_DIGITS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "#"] as const;
221
+ export type DtmfDigit = (typeof DTMF_DIGITS)[number];
package/src/aws.ts ADDED
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // The little that the export and simulate SDK adapters share. Kept separate so
6
+ // neither adapter imports the other, and so nothing here pulls in the AWS SDK:
7
+ // this module is types and timing only.
8
+
9
+ /** Anything with a `send`, which is the only surface of a v3 client we use. */
10
+ export interface AwsCommandSender {
11
+ send(command: any): Promise<any>;
12
+ }
13
+
14
+ export const defaultSleep = (ms: number): Promise<void> =>
15
+ new Promise((resolve) => setTimeout(resolve, ms));
16
+
17
+ export interface RateLimiterOptions {
18
+ /**
19
+ * Requests per second. Amazon Connect's default quota is RateLimit 2 /
20
+ * BurstLimit 5 for every operation except the exceptions table, per account
21
+ * per Region, and it is shared across users and across instances in the same
22
+ * account. Neither the flow list operations nor the TestCase operations are
23
+ * in the exceptions table, so both adapters default to 2.
24
+ * https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html#connect-api-quotas
25
+ */
26
+ requestsPerSecond?: number;
27
+ /** Injected for tests. Defaults to setTimeout. */
28
+ sleep?: (ms: number) => Promise<void>;
29
+ /** Injected for tests. Defaults to Date.now. */
30
+ now?: () => number;
31
+ }
32
+
33
+ /**
34
+ * Returns an `await`-able gate that spaces calls. Serialized on one promise
35
+ * chain so concurrent callers share a single budget rather than each pacing
36
+ * itself and jointly exceeding the account limit.
37
+ */
38
+ export function createRateLimiter(options: RateLimiterOptions = {}): () => Promise<void> {
39
+ const rps = options.requestsPerSecond ?? 2;
40
+ const minIntervalMs = rps > 0 ? Math.ceil(1000 / rps) : 0;
41
+ const sleep = options.sleep ?? defaultSleep;
42
+ const now = options.now ?? Date.now;
43
+ let nextAllowedAt = 0;
44
+ let gate: Promise<void> = Promise.resolve();
45
+
46
+ return () => {
47
+ const wait = gate.then(async () => {
48
+ const delay = Math.max(0, nextAllowedAt - now());
49
+ if (delay > 0) await sleep(delay);
50
+ nextAllowedAt = now() + minIntervalMs;
51
+ });
52
+ gate = wait.catch(() => undefined);
53
+ return wait;
54
+ };
55
+ }