@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.
- package/LICENSE +202 -0
- package/README.md +30 -0
- package/SPEC.md +92 -0
- package/dist/actions.d.ts +87 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +204 -0
- package/dist/actions.js.map +1 -0
- package/dist/aws.d.ts +27 -0
- package/dist/aws.d.ts.map +1 -0
- package/dist/aws.js +32 -0
- package/dist/aws.js.map +1 -0
- package/dist/blocks.d.ts +287 -0
- package/dist/blocks.d.ts.map +1 -0
- package/dist/blocks.js +352 -0
- package/dist/blocks.js.map +1 -0
- package/dist/codegen.d.ts +21 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +1027 -0
- package/dist/codegen.js.map +1 -0
- package/dist/export.d.ts +256 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +799 -0
- package/dist/export.js.map +1 -0
- package/dist/flow.d.ts +41 -0
- package/dist/flow.d.ts.map +1 -0
- package/dist/flow.js +85 -0
- package/dist/flow.js.map +1 -0
- package/dist/flowdoc.d.ts +111 -0
- package/dist/flowdoc.d.ts.map +1 -0
- package/dist/flowdoc.js +139 -0
- package/dist/flowdoc.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/layout.d.ts +11 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +49 -0
- package/dist/layout.js.map +1 -0
- package/dist/lint/engine.d.ts +16 -0
- package/dist/lint/engine.d.ts.map +1 -0
- package/dist/lint/engine.js +37 -0
- package/dist/lint/engine.js.map +1 -0
- package/dist/lint/graph.d.ts +34 -0
- package/dist/lint/graph.d.ts.map +1 -0
- package/dist/lint/graph.js +79 -0
- package/dist/lint/graph.js.map +1 -0
- package/dist/lint/index.d.ts +7 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +5 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/reporters.d.ts +6 -0
- package/dist/lint/reporters.d.ts.map +1 -0
- package/dist/lint/reporters.js +30 -0
- package/dist/lint/reporters.js.map +1 -0
- package/dist/lint/rules/action-allowed-in-flow-type.d.ts +11 -0
- package/dist/lint/rules/action-allowed-in-flow-type.d.ts.map +1 -0
- package/dist/lint/rules/action-allowed-in-flow-type.js +32 -0
- package/dist/lint/rules/action-allowed-in-flow-type.js.map +1 -0
- package/dist/lint/rules/action-count.d.ts +16 -0
- package/dist/lint/rules/action-count.d.ts.map +1 -0
- package/dist/lint/rules/action-count.js +32 -0
- package/dist/lint/rules/action-count.js.map +1 -0
- package/dist/lint/rules/error-branches.d.ts +10 -0
- package/dist/lint/rules/error-branches.d.ts.map +1 -0
- package/dist/lint/rules/error-branches.js +39 -0
- package/dist/lint/rules/error-branches.js.map +1 -0
- package/dist/lint/rules/index.d.ts +17 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/index.js +36 -0
- package/dist/lint/rules/index.js.map +1 -0
- package/dist/lint/rules/module-depth-5.d.ts +14 -0
- package/dist/lint/rules/module-depth-5.d.ts.map +1 -0
- package/dist/lint/rules/module-depth-5.js +67 -0
- package/dist/lint/rules/module-depth-5.js.map +1 -0
- package/dist/lint/rules/no-literal-arn.d.ts +21 -0
- package/dist/lint/rules/no-literal-arn.d.ts.map +1 -0
- package/dist/lint/rules/no-literal-arn.js +58 -0
- package/dist/lint/rules/no-literal-arn.js.map +1 -0
- package/dist/lint/rules/no-unresolved-token.d.ts +8 -0
- package/dist/lint/rules/no-unresolved-token.d.ts.map +1 -0
- package/dist/lint/rules/no-unresolved-token.js +71 -0
- package/dist/lint/rules/no-unresolved-token.js.map +1 -0
- package/dist/lint/rules/prompt-length-3000.d.ts +16 -0
- package/dist/lint/rules/prompt-length-3000.d.ts.map +1 -0
- package/dist/lint/rules/prompt-length-3000.js +61 -0
- package/dist/lint/rules/prompt-length-3000.js.map +1 -0
- package/dist/lint/rules/reachable-blocks.d.ts +7 -0
- package/dist/lint/rules/reachable-blocks.d.ts.map +1 -0
- package/dist/lint/rules/reachable-blocks.js +45 -0
- package/dist/lint/rules/reachable-blocks.js.map +1 -0
- package/dist/lint/rules/recording-consent-before-record.d.ts +3 -0
- package/dist/lint/rules/recording-consent-before-record.d.ts.map +1 -0
- package/dist/lint/rules/recording-consent-before-record.js +87 -0
- package/dist/lint/rules/recording-consent-before-record.js.map +1 -0
- package/dist/lint/rules/terminal-blocks.d.ts +8 -0
- package/dist/lint/rules/terminal-blocks.d.ts.map +1 -0
- package/dist/lint/rules/terminal-blocks.js +40 -0
- package/dist/lint/rules/terminal-blocks.js.map +1 -0
- package/dist/lint/rules/unique-names.d.ts +7 -0
- package/dist/lint/rules/unique-names.d.ts.map +1 -0
- package/dist/lint/rules/unique-names.js +40 -0
- package/dist/lint/rules/unique-names.js.map +1 -0
- package/dist/lint/types.d.ts +30 -0
- package/dist/lint/types.d.ts.map +1 -0
- package/dist/lint/types.js +11 -0
- package/dist/lint/types.js.map +1 -0
- package/dist/materialize.d.ts +31 -0
- package/dist/materialize.d.ts.map +1 -0
- package/dist/materialize.js +192 -0
- package/dist/materialize.js.map +1 -0
- package/dist/package-names.d.ts +11 -0
- package/dist/package-names.d.ts.map +1 -0
- package/dist/package-names.js +25 -0
- package/dist/package-names.js.map +1 -0
- package/dist/refs.d.ts +35 -0
- package/dist/refs.d.ts.map +1 -0
- package/dist/refs.js +69 -0
- package/dist/refs.js.map +1 -0
- package/dist/serialize.d.ts +13 -0
- package/dist/serialize.d.ts.map +1 -0
- package/dist/serialize.js +86 -0
- package/dist/serialize.js.map +1 -0
- package/dist/simulate.d.ts +446 -0
- package/dist/simulate.d.ts.map +1 -0
- package/dist/simulate.js +1115 -0
- package/dist/simulate.js.map +1 -0
- package/dist/synth.d.ts +25 -0
- package/dist/synth.d.ts.map +1 -0
- package/dist/synth.js +93 -0
- package/dist/synth.js.map +1 -0
- package/package.json +73 -0
- package/src/actions.ts +221 -0
- package/src/aws.ts +55 -0
- package/src/blocks.ts +619 -0
- package/src/codegen.ts +1144 -0
- package/src/export.ts +1190 -0
- package/src/flow.ts +108 -0
- package/src/flowdoc.ts +261 -0
- package/src/index.ts +31 -0
- package/src/layout.ts +54 -0
- package/src/lint/engine.ts +56 -0
- package/src/lint/graph.ts +86 -0
- package/src/lint/index.ts +10 -0
- package/src/lint/reporters.ts +44 -0
- package/src/lint/rules/action-allowed-in-flow-type.ts +32 -0
- package/src/lint/rules/action-count.ts +35 -0
- package/src/lint/rules/error-branches.ts +45 -0
- package/src/lint/rules/index.ts +53 -0
- package/src/lint/rules/module-depth-5.ts +70 -0
- package/src/lint/rules/no-literal-arn.ts +64 -0
- package/src/lint/rules/no-unresolved-token.ts +80 -0
- package/src/lint/rules/prompt-length-3000.ts +66 -0
- package/src/lint/rules/reachable-blocks.ts +50 -0
- package/src/lint/rules/recording-consent-before-record.ts +90 -0
- package/src/lint/rules/terminal-blocks.ts +45 -0
- package/src/lint/rules/unique-names.ts +44 -0
- package/src/lint/types.ts +43 -0
- package/src/materialize.ts +230 -0
- package/src/package-names.ts +26 -0
- package/src/refs.ts +93 -0
- package/src/serialize.ts +97 -0
- package/src/simulate.ts +1610 -0
- 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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"}
|
package/dist/synth.d.ts
ADDED
|
@@ -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":"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"}
|
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
|
+
}
|