@ansible-flow/core 0.86.0 → 0.88.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/README.md +1 -1
  2. package/dist/ai/describe.js +8 -7
  3. package/dist/ai/handlers.js +27 -25
  4. package/dist/ai/handlers.js.map +1 -1
  5. package/dist/ai/ops.js +8 -7
  6. package/dist/ai/reference.js +2 -2
  7. package/dist/ai/scenarios.js +12 -8
  8. package/dist/awx/import.js +7 -6
  9. package/dist/catalog/draft.d.ts +2 -0
  10. package/dist/catalog/draft.js +23 -4
  11. package/dist/catalog/draft.js.map +2 -2
  12. package/dist/chunks/{chunk-BXHI5EQM.js → chunk-2DT5DOSO.js} +43 -1
  13. package/dist/chunks/chunk-2DT5DOSO.js.map +7 -0
  14. package/dist/chunks/{chunk-DHU774ES.js → chunk-2KB3J3R5.js} +2 -2
  15. package/dist/chunks/{chunk-EAJFZKPB.js → chunk-37FKZNRN.js} +3 -3
  16. package/dist/chunks/{chunk-TPRZZHXA.js → chunk-57KJYXWA.js} +7 -7
  17. package/dist/chunks/{chunk-JTWR3TGG.js → chunk-7ALTNZCI.js} +4 -4
  18. package/dist/chunks/{chunk-UXIXXEIW.js → chunk-APBEHKCF.js} +2 -2
  19. package/dist/chunks/{chunk-ZAYNYPCX.js → chunk-ARA3VJR2.js} +2 -2
  20. package/dist/chunks/{chunk-7GLSXIZ3.js → chunk-BSX6G7QY.js} +5 -5
  21. package/dist/chunks/{chunk-H7Z2FBRD.js → chunk-CATQHJS6.js} +8 -8
  22. package/dist/chunks/{chunk-J7KCGVHU.js → chunk-CCWUUVSG.js} +2 -2
  23. package/dist/chunks/{chunk-C6SQEXL5.js → chunk-CNQ7M7HA.js} +2 -2
  24. package/dist/chunks/{chunk-NT62IE3Y.js → chunk-CNYGDBID.js} +2 -2
  25. package/dist/chunks/chunk-FIKPXL6E.js +23 -0
  26. package/dist/chunks/chunk-FIKPXL6E.js.map +7 -0
  27. package/dist/chunks/{chunk-CM23ODBB.js → chunk-J5LYSQ3L.js} +2 -2
  28. package/dist/chunks/{chunk-72LO6GQE.js → chunk-KXD6FX2Z.js} +2 -2
  29. package/dist/chunks/{chunk-4RMWFRWG.js → chunk-LELKMVJG.js} +45 -7
  30. package/dist/chunks/chunk-LELKMVJG.js.map +7 -0
  31. package/dist/chunks/{chunk-XOPGOWNQ.js → chunk-O5Y3AZ4X.js} +1 -1
  32. package/dist/chunks/chunk-O5Y3AZ4X.js.map +7 -0
  33. package/dist/chunks/{chunk-5XGAGNH5.js → chunk-OGNFHW5O.js} +7 -13
  34. package/dist/chunks/chunk-OGNFHW5O.js.map +7 -0
  35. package/dist/chunks/chunk-OJZSZBHW.js +45 -0
  36. package/dist/chunks/chunk-OJZSZBHW.js.map +7 -0
  37. package/dist/chunks/{chunk-R4MW3DRT.js → chunk-OW32YCZ6.js} +2 -2
  38. package/dist/chunks/{chunk-2QQC4IZ7.js → chunk-PNLY5IWM.js} +8 -8
  39. package/dist/chunks/chunk-PNLY5IWM.js.map +7 -0
  40. package/dist/chunks/{chunk-76T45V37.js → chunk-TBFB7A2Z.js} +5 -1
  41. package/dist/chunks/{chunk-76T45V37.js.map → chunk-TBFB7A2Z.js.map} +2 -2
  42. package/dist/chunks/{chunk-BXJOUAXV.js → chunk-TEJARYAE.js} +3 -3
  43. package/dist/chunks/{chunk-T5UB4MBB.js → chunk-TOTSB4HG.js} +41 -1
  44. package/dist/chunks/chunk-TOTSB4HG.js.map +7 -0
  45. package/dist/chunks/{chunk-MZ6IJWB2.js → chunk-TPMACJFA.js} +4 -4
  46. package/dist/chunks/{chunk-CXVJWFGT.js → chunk-WTVGCMGV.js} +8 -4
  47. package/dist/chunks/chunk-WTVGCMGV.js.map +7 -0
  48. package/dist/chunks/{chunk-6MLYGFT6.js → chunk-XJAMBKE3.js} +6 -2
  49. package/dist/chunks/chunk-XJAMBKE3.js.map +7 -0
  50. package/dist/chunks/{chunk-ABYJBONR.js → chunk-ZXUXX3YY.js} +4 -4
  51. package/dist/engine/binding.js +3 -1
  52. package/dist/engine/bypass.js +4 -2
  53. package/dist/engine/engines.js +9 -5
  54. package/dist/engine/files.js +9 -5
  55. package/dist/engine/optionA.js +8 -4
  56. package/dist/engine/partial.js +3 -1
  57. package/dist/engine/partial.js.map +1 -1
  58. package/dist/engine/preview.js +9 -5
  59. package/dist/engine/preview.js.map +1 -1
  60. package/dist/engine/writePlan.js +12 -9
  61. package/dist/export/drawio.js +3 -3
  62. package/dist/export/layoutCheck.js +3 -3
  63. package/dist/export/scene.js +2 -2
  64. package/dist/export/svg.js +4 -4
  65. package/dist/flow/commands.d.ts +10 -0
  66. package/dist/flow/commands.js +3 -1
  67. package/dist/flow/facts.d.ts +6 -0
  68. package/dist/flow/facts.js +13 -0
  69. package/dist/flow/facts.js.map +7 -0
  70. package/dist/flow/findingCodes.js +1 -1
  71. package/dist/flow/localFiles.d.ts +17 -0
  72. package/dist/flow/localFiles.js +14 -0
  73. package/dist/flow/localFiles.js.map +7 -0
  74. package/dist/flow/save.js +3 -1
  75. package/dist/flow/save.js.map +1 -1
  76. package/dist/flow/validate.js +3 -2
  77. package/dist/import/outline.js +9 -7
  78. package/dist/import/playbook.js +6 -5
  79. package/dist/import/source.js +3 -2
  80. package/dist/lens/caption.js +1 -1
  81. package/dist/lens/data.js +3 -1
  82. package/dist/lens/index.js +11 -9
  83. package/dist/lens/index.js.map +1 -1
  84. package/dist/lens/types.d.ts +2 -0
  85. package/dist/lens/types.js +1 -1
  86. package/dist/messageCheck.js +2 -0
  87. package/dist/messageCheck.js.map +2 -2
  88. package/dist/protocol.d.ts +29 -0
  89. package/dist/run/command.d.ts +13 -4
  90. package/dist/run/command.js +19 -0
  91. package/dist/run/command.js.map +3 -3
  92. package/dist/scenario/live.js +11 -7
  93. package/dist/scenario/simulate.js +10 -6
  94. package/dist/view/flowFacts.js +12 -9
  95. package/dist/view/flowFacts.js.map +1 -1
  96. package/dist/view/route.d.ts +3 -1
  97. package/dist/view/route.js +1 -1
  98. package/dist/view/serverChange.d.ts +23 -0
  99. package/dist/view/serverChange.js +48 -0
  100. package/dist/view/serverChange.js.map +7 -0
  101. package/package.json +1 -1
  102. package/dist/chunks/chunk-2QQC4IZ7.js.map +0 -7
  103. package/dist/chunks/chunk-4RMWFRWG.js.map +0 -7
  104. package/dist/chunks/chunk-5XGAGNH5.js.map +0 -7
  105. package/dist/chunks/chunk-6MLYGFT6.js.map +0 -7
  106. package/dist/chunks/chunk-BXHI5EQM.js.map +0 -7
  107. package/dist/chunks/chunk-CXVJWFGT.js.map +0 -7
  108. package/dist/chunks/chunk-T5UB4MBB.js.map +0 -7
  109. package/dist/chunks/chunk-XOPGOWNQ.js.map +0 -7
  110. /package/dist/chunks/{chunk-DHU774ES.js.map → chunk-2KB3J3R5.js.map} +0 -0
  111. /package/dist/chunks/{chunk-EAJFZKPB.js.map → chunk-37FKZNRN.js.map} +0 -0
  112. /package/dist/chunks/{chunk-TPRZZHXA.js.map → chunk-57KJYXWA.js.map} +0 -0
  113. /package/dist/chunks/{chunk-JTWR3TGG.js.map → chunk-7ALTNZCI.js.map} +0 -0
  114. /package/dist/chunks/{chunk-UXIXXEIW.js.map → chunk-APBEHKCF.js.map} +0 -0
  115. /package/dist/chunks/{chunk-ZAYNYPCX.js.map → chunk-ARA3VJR2.js.map} +0 -0
  116. /package/dist/chunks/{chunk-7GLSXIZ3.js.map → chunk-BSX6G7QY.js.map} +0 -0
  117. /package/dist/chunks/{chunk-H7Z2FBRD.js.map → chunk-CATQHJS6.js.map} +0 -0
  118. /package/dist/chunks/{chunk-J7KCGVHU.js.map → chunk-CCWUUVSG.js.map} +0 -0
  119. /package/dist/chunks/{chunk-C6SQEXL5.js.map → chunk-CNQ7M7HA.js.map} +0 -0
  120. /package/dist/chunks/{chunk-NT62IE3Y.js.map → chunk-CNYGDBID.js.map} +0 -0
  121. /package/dist/chunks/{chunk-CM23ODBB.js.map → chunk-J5LYSQ3L.js.map} +0 -0
  122. /package/dist/chunks/{chunk-72LO6GQE.js.map → chunk-KXD6FX2Z.js.map} +0 -0
  123. /package/dist/chunks/{chunk-R4MW3DRT.js.map → chunk-OW32YCZ6.js.map} +0 -0
  124. /package/dist/chunks/{chunk-BXJOUAXV.js.map → chunk-TEJARYAE.js.map} +0 -0
  125. /package/dist/chunks/{chunk-MZ6IJWB2.js.map → chunk-TPMACJFA.js.map} +0 -0
  126. /package/dist/chunks/{chunk-ABYJBONR.js.map → chunk-ZXUXX3YY.js.map} +0 -0
@@ -1,15 +1,17 @@
1
1
  import {
2
2
  engineFor
3
- } from "../chunks/chunk-J7KCGVHU.js";
4
- import "../chunks/chunk-CXVJWFGT.js";
3
+ } from "../chunks/chunk-CCWUUVSG.js";
4
+ import "../chunks/chunk-WTVGCMGV.js";
5
5
  import "../chunks/chunk-OEEHAY5X.js";
6
6
  import "../chunks/chunk-LPBLGBDT.js";
7
- import "../chunks/chunk-6MLYGFT6.js";
8
- import "../chunks/chunk-ZAYNYPCX.js";
7
+ import "../chunks/chunk-XJAMBKE3.js";
8
+ import "../chunks/chunk-OJZSZBHW.js";
9
+ import "../chunks/chunk-ARA3VJR2.js";
9
10
  import "../chunks/chunk-56VTJ6YF.js";
11
+ import "../chunks/chunk-LNFMYJUJ.js";
10
12
  import "../chunks/chunk-BAZIS67B.js";
11
13
  import "../chunks/chunk-X3DEH47B.js";
12
- import "../chunks/chunk-T5UB4MBB.js";
14
+ import "../chunks/chunk-TOTSB4HG.js";
13
15
  import "../chunks/chunk-SN7X6FYV.js";
14
16
  import "../chunks/chunk-24G5UVEF.js";
15
17
  import "../chunks/chunk-CORZL72E.js";
@@ -20,6 +22,7 @@ import "../chunks/chunk-GK3SD3WE.js";
20
22
  import "../chunks/chunk-H6ARLMMI.js";
21
23
  import "../chunks/chunk-TG3C3GIL.js";
22
24
  import "../chunks/chunk-WISXIO3I.js";
25
+ import "../chunks/chunk-FIKPXL6E.js";
23
26
  import "../chunks/chunk-WG7O3OBV.js";
24
27
  import "../chunks/chunk-NUGJSYSP.js";
25
28
  import "../chunks/chunk-XRGZNPPO.js";
@@ -32,6 +35,7 @@ import "../chunks/chunk-HFHXHOBC.js";
32
35
  import "../chunks/chunk-RKLF3DLT.js";
33
36
  import "../chunks/chunk-GTHXWNCC.js";
34
37
  import "../chunks/chunk-OEQXGULI.js";
38
+ import "../chunks/chunk-T6SZLRDM.js";
35
39
  import "../chunks/chunk-AJRIS5VY.js";
36
40
  import "../chunks/chunk-GQ2W4RTY.js";
37
41
  import "../chunks/chunk-BVEW6MKL.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/core/engine/preview.ts"],
4
4
  "sourcesContent": ["// What a node compiles to, for the inspector (mockup 03), plus the engine's findings for the canvas.\nimport type { FlowDocument, Ulid } from '../flow/types';\nimport type { Finding } from '../flow/validate';\nimport { engineFor } from './engines';\n\nexport interface CodePreview {\n /** Generated play text per node (its own lines from its level file). */\n plays: Record<Ulid, string>;\n /** Engine findings the validator does not already report. */\n findings: Finding[];\n}\n\nexport function codePreview(doc: FlowDocument, source: string): CodePreview {\n const result = engineFor(doc).generate(doc, { source });\n const plays: Record<Ulid, string> = {};\n for (const [node, range] of Object.entries(result.plays)) {\n const file = result.files.find((f) => f.name === range.file);\n if (file) plays[node] = file.text.split('\\n').slice(range.start, range.end).join('\\n');\n }\n return {\n plays,\n findings: result.findings.filter((f) => f.code !== 'codegen-no-targets'),\n };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,YAAY,KAAmB,QAA6B;AAC1E,QAAM,SAAS,UAAU,GAAG,EAAE,SAAS,KAAK,EAAE,OAAO,CAAC;AACtD,QAAM,QAA8B,CAAC;AACrC,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,OAAO,KAAK,GAAG;AACxD,UAAM,OAAO,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM,IAAI;AAC3D,QAAI,KAAM,OAAM,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,EAAE,MAAM,MAAM,OAAO,MAAM,GAAG,EAAE,KAAK,IAAI;AAAA,EACvF;AACA,SAAO;AAAA,IACL;AAAA,IACA,UAAU,OAAO,SAAS,OAAO,CAAC,MAAM,EAAE,SAAS,oBAAoB;AAAA,EACzE;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,YAAY,KAAmB,QAA6B;AAC1E,QAAM,SAAS,UAAU,GAAG,EAAE,SAAS,KAAK,EAAE,OAAO,CAAC;AACtD,QAAM,QAA8B,CAAC;AACrC,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,OAAO,KAAK,GAAG;AACxD,UAAM,OAAO,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM,IAAI;AAC3D,QAAI,KAAM,OAAM,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,EAAE,MAAM,MAAM,OAAO,MAAM,GAAG,EAAE,KAAK,IAAI;AAAA,EACvF;AACA,SAAO;AAAA,IACL;AAAA,IACA,UAAU,OAAO,SAAS,OAAO,CAAC,MAAM,EAAE,SAAS,oBAAoB;AAAA,EACzE;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,31 +1,33 @@
1
1
  import {
2
2
  planGenerated
3
- } from "../chunks/chunk-JTWR3TGG.js";
4
- import "../chunks/chunk-J7KCGVHU.js";
5
- import "../chunks/chunk-UXIXXEIW.js";
6
- import "../chunks/chunk-CXVJWFGT.js";
3
+ } from "../chunks/chunk-7ALTNZCI.js";
4
+ import "../chunks/chunk-CCWUUVSG.js";
5
+ import "../chunks/chunk-APBEHKCF.js";
6
+ import "../chunks/chunk-WTVGCMGV.js";
7
7
  import "../chunks/chunk-OEEHAY5X.js";
8
8
  import "../chunks/chunk-LPBLGBDT.js";
9
- import "../chunks/chunk-6MLYGFT6.js";
10
- import "../chunks/chunk-ZAYNYPCX.js";
9
+ import "../chunks/chunk-XJAMBKE3.js";
10
+ import "../chunks/chunk-OJZSZBHW.js";
11
+ import "../chunks/chunk-ARA3VJR2.js";
11
12
  import "../chunks/chunk-56VTJ6YF.js";
13
+ import "../chunks/chunk-LNFMYJUJ.js";
12
14
  import "../chunks/chunk-BAZIS67B.js";
13
15
  import "../chunks/chunk-X3DEH47B.js";
14
- import "../chunks/chunk-T5UB4MBB.js";
16
+ import "../chunks/chunk-TOTSB4HG.js";
15
17
  import "../chunks/chunk-SN7X6FYV.js";
16
18
  import "../chunks/chunk-24G5UVEF.js";
17
19
  import "../chunks/chunk-CORZL72E.js";
18
20
  import "../chunks/chunk-75QLJHZ5.js";
19
21
  import "../chunks/chunk-LMTTJDCC.js";
20
- import "../chunks/chunk-2QQC4IZ7.js";
22
+ import "../chunks/chunk-PNLY5IWM.js";
21
23
  import "../chunks/chunk-OREXQ4IZ.js";
22
24
  import "../chunks/chunk-KSM4O2XL.js";
23
- import "../chunks/chunk-T6SZLRDM.js";
24
25
  import "../chunks/chunk-7D55CRGU.js";
25
26
  import "../chunks/chunk-GK3SD3WE.js";
26
27
  import "../chunks/chunk-H6ARLMMI.js";
27
28
  import "../chunks/chunk-TG3C3GIL.js";
28
29
  import "../chunks/chunk-WISXIO3I.js";
30
+ import "../chunks/chunk-FIKPXL6E.js";
29
31
  import "../chunks/chunk-WG7O3OBV.js";
30
32
  import "../chunks/chunk-NUGJSYSP.js";
31
33
  import "../chunks/chunk-XRGZNPPO.js";
@@ -38,6 +40,7 @@ import "../chunks/chunk-HFHXHOBC.js";
38
40
  import "../chunks/chunk-RKLF3DLT.js";
39
41
  import "../chunks/chunk-GTHXWNCC.js";
40
42
  import "../chunks/chunk-OEQXGULI.js";
43
+ import "../chunks/chunk-T6SZLRDM.js";
41
44
  import "../chunks/chunk-AJRIS5VY.js";
42
45
  import "../chunks/chunk-GQ2W4RTY.js";
43
46
  import "../chunks/chunk-BVEW6MKL.js";
@@ -9,12 +9,12 @@ import {
9
9
  shiftOf,
10
10
  toDrawio,
11
11
  toneColour
12
- } from "../chunks/chunk-R4MW3DRT.js";
12
+ } from "../chunks/chunk-OW32YCZ6.js";
13
13
  import "../chunks/chunk-YNEJJZMA.js";
14
14
  import "../chunks/chunk-AXSX5DJE.js";
15
15
  import "../chunks/chunk-X3DEH47B.js";
16
- import "../chunks/chunk-72LO6GQE.js";
17
- import "../chunks/chunk-4RMWFRWG.js";
16
+ import "../chunks/chunk-KXD6FX2Z.js";
17
+ import "../chunks/chunk-LELKMVJG.js";
18
18
  import "../chunks/chunk-X4UNEUME.js";
19
19
  import "../chunks/chunk-RLCV7OFW.js";
20
20
  import "../chunks/chunk-OY4PP6RF.js";
@@ -2,10 +2,10 @@ import {
2
2
  LAYOUT_FIX,
3
3
  flowLayoutProblems,
4
4
  layoutProblems
5
- } from "../chunks/chunk-BXJOUAXV.js";
5
+ } from "../chunks/chunk-TEJARYAE.js";
6
6
  import "../chunks/chunk-SD6TCN3P.js";
7
- import "../chunks/chunk-72LO6GQE.js";
8
- import "../chunks/chunk-4RMWFRWG.js";
7
+ import "../chunks/chunk-KXD6FX2Z.js";
8
+ import "../chunks/chunk-LELKMVJG.js";
9
9
  import "../chunks/chunk-X4UNEUME.js";
10
10
  import "../chunks/chunk-RLCV7OFW.js";
11
11
  import "../chunks/chunk-KSM4O2XL.js";
@@ -2,8 +2,8 @@ import {
2
2
  levelSuffix,
3
3
  portCentre,
4
4
  scenesOf
5
- } from "../chunks/chunk-72LO6GQE.js";
6
- import "../chunks/chunk-4RMWFRWG.js";
5
+ } from "../chunks/chunk-KXD6FX2Z.js";
6
+ import "../chunks/chunk-LELKMVJG.js";
7
7
  import "../chunks/chunk-X4UNEUME.js";
8
8
  import "../chunks/chunk-OY4PP6RF.js";
9
9
  import "../chunks/chunk-TS4N2EIO.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  sceneSvg,
3
3
  toSvg
4
- } from "../chunks/chunk-EAJFZKPB.js";
4
+ } from "../chunks/chunk-37FKZNRN.js";
5
5
  import "../chunks/chunk-JWYLAANO.js";
6
6
  import "../chunks/chunk-NCPIAK5Y.js";
7
- import "../chunks/chunk-R4MW3DRT.js";
7
+ import "../chunks/chunk-OW32YCZ6.js";
8
8
  import "../chunks/chunk-YNEJJZMA.js";
9
9
  import "../chunks/chunk-AXSX5DJE.js";
10
10
  import "../chunks/chunk-X3DEH47B.js";
11
- import "../chunks/chunk-72LO6GQE.js";
12
- import "../chunks/chunk-4RMWFRWG.js";
11
+ import "../chunks/chunk-KXD6FX2Z.js";
12
+ import "../chunks/chunk-LELKMVJG.js";
13
13
  import "../chunks/chunk-X4UNEUME.js";
14
14
  import "../chunks/chunk-RLCV7OFW.js";
15
15
  import "../chunks/chunk-OY4PP6RF.js";
@@ -152,6 +152,16 @@ export type FlowCommand = {
152
152
  field: ContractField | null;
153
153
  /** New name for the field (rename keeps the definition). */
154
154
  rename?: string;
155
+ }
156
+ /**
157
+ * AFD-287: a fact an earlier step sets (set_fact) read by `reader`: an output of that name on
158
+ * the setter (a fact needs no `from:`) and an input of the reader from it, in one edit.
159
+ */
160
+ | {
161
+ kind: 'useFact';
162
+ reader: Ulid;
163
+ setter: Ulid;
164
+ name: string;
155
165
  } | {
156
166
  kind: 'updateFlow';
157
167
  patch: FlowPatch;
@@ -6,7 +6,7 @@ import {
6
6
  planCommand,
7
7
  shadowedKeys,
8
8
  testedFinding
9
- } from "../chunks/chunk-T5UB4MBB.js";
9
+ } from "../chunks/chunk-TOTSB4HG.js";
10
10
  import "../chunks/chunk-SN7X6FYV.js";
11
11
  import "../chunks/chunk-24G5UVEF.js";
12
12
  import "../chunks/chunk-CORZL72E.js";
@@ -16,6 +16,7 @@ import "../chunks/chunk-GK3SD3WE.js";
16
16
  import "../chunks/chunk-H6ARLMMI.js";
17
17
  import "../chunks/chunk-TG3C3GIL.js";
18
18
  import "../chunks/chunk-WISXIO3I.js";
19
+ import "../chunks/chunk-FIKPXL6E.js";
19
20
  import "../chunks/chunk-WG7O3OBV.js";
20
21
  import "../chunks/chunk-NUGJSYSP.js";
21
22
  import "../chunks/chunk-XRGZNPPO.js";
@@ -28,6 +29,7 @@ import "../chunks/chunk-HFHXHOBC.js";
28
29
  import "../chunks/chunk-RKLF3DLT.js";
29
30
  import "../chunks/chunk-GTHXWNCC.js";
30
31
  import "../chunks/chunk-OEQXGULI.js";
32
+ import "../chunks/chunk-T6SZLRDM.js";
31
33
  import "../chunks/chunk-BVEW6MKL.js";
32
34
  import "../chunks/chunk-BUPWGYNF.js";
33
35
  import "../chunks/chunk-WKETMTKT.js";
@@ -0,0 +1,6 @@
1
+ import type { FlowModel } from './model';
2
+ import type { FlowNode } from './types';
3
+ /** The facts a set_fact step sets: its parameters' keys (`cacheable` is an option). */
4
+ export declare function setFactNames(impl: FlowNode['impl']): string[];
5
+ /** The nearest step that runs before `reader` and sets `name` with set_fact. */
6
+ export declare function factSetter(model: FlowModel, reader: FlowNode, name: string): FlowNode | undefined;
@@ -0,0 +1,13 @@
1
+ import {
2
+ factSetter,
3
+ setFactNames
4
+ } from "../chunks/chunk-FIKPXL6E.js";
5
+ import "../chunks/chunk-T6SZLRDM.js";
6
+ import "../chunks/chunk-BUPWGYNF.js";
7
+ import "../chunks/chunk-WKETMTKT.js";
8
+ import "../chunks/chunk-2OD7UZ7V.js";
9
+ export {
10
+ factSetter,
11
+ setFactNames
12
+ };
13
+ //# sourceMappingURL=facts.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FINDING_CODES
3
- } from "../chunks/chunk-76T45V37.js";
3
+ } from "../chunks/chunk-TBFB7A2Z.js";
4
4
  export {
5
5
  FINDING_CODES
6
6
  };
@@ -0,0 +1,17 @@
1
+ /** Modules that read a local file, the parameter naming it and the subfolder Ansible looks in. */
2
+ export declare const LOCAL_FILES: Record<string, {
3
+ param: string;
4
+ sub: string;
5
+ }>;
6
+ /** The variable generated plays set to the repository root. */
7
+ export declare const REPO_ROOT_VAR = "afd_repo_root";
8
+ /**
9
+ * The repository file a module step names by a relative path, as written; undefined when it names
10
+ * none (another module, a remote source, an absolute or templated path).
11
+ */
12
+ export declare function localFileOf(module: string, params: unknown): {
13
+ param: string;
14
+ path: string;
15
+ } | undefined;
16
+ /** The params with a relative repository file written from `{{ afd_repo_root }}`. */
17
+ export declare function rootedParams(module: string, params: unknown): unknown;
@@ -0,0 +1,14 @@
1
+ import {
2
+ LOCAL_FILES,
3
+ REPO_ROOT_VAR,
4
+ localFileOf,
5
+ rootedParams
6
+ } from "../chunks/chunk-OJZSZBHW.js";
7
+ import "../chunks/chunk-LNFMYJUJ.js";
8
+ export {
9
+ LOCAL_FILES,
10
+ REPO_ROOT_VAR,
11
+ localFileOf,
12
+ rootedParams
13
+ };
14
+ //# sourceMappingURL=localFiles.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
package/dist/flow/save.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  implementedAgain
3
- } from "../chunks/chunk-T5UB4MBB.js";
3
+ } from "../chunks/chunk-TOTSB4HG.js";
4
4
  import "../chunks/chunk-SN7X6FYV.js";
5
5
  import "../chunks/chunk-24G5UVEF.js";
6
6
  import {
@@ -16,6 +16,7 @@ import {
16
16
  versionBump
17
17
  } from "../chunks/chunk-TG3C3GIL.js";
18
18
  import "../chunks/chunk-WISXIO3I.js";
19
+ import "../chunks/chunk-FIKPXL6E.js";
19
20
  import "../chunks/chunk-WG7O3OBV.js";
20
21
  import "../chunks/chunk-NUGJSYSP.js";
21
22
  import "../chunks/chunk-XRGZNPPO.js";
@@ -28,6 +29,7 @@ import "../chunks/chunk-HFHXHOBC.js";
28
29
  import "../chunks/chunk-RKLF3DLT.js";
29
30
  import "../chunks/chunk-GTHXWNCC.js";
30
31
  import "../chunks/chunk-OEQXGULI.js";
32
+ import "../chunks/chunk-T6SZLRDM.js";
31
33
  import "../chunks/chunk-BVEW6MKL.js";
32
34
  import "../chunks/chunk-BUPWGYNF.js";
33
35
  import "../chunks/chunk-WKETMTKT.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/core/flow/save.ts"],
4
4
  "sourcesContent": ["// Edits made on save: tested nodes whose design changed since the file on disk are implemented again\n// (decision 15; hand edits in the text editor, canvas commands already did it), then flow.version\n// moves once relative to Git HEAD or the last saved text (ADR-0006).\nimport type { TextEdit } from '../yaml/edits';\nimport { setIn } from '../yaml/ops';\nimport { YamlTransaction } from '../yaml/transaction';\nimport { implementedAgain } from './commands';\nimport { flowFromFile, parseFlow } from './document';\nimport { testedDropBack, versionBump } from './semantic';\nimport type { Ulid } from './types';\n\nexport interface SavePlan {\n edits: TextEdit[];\n dropped: Ulid[];\n}\n\n/** `saved` is the file on disk before this save, `base` the version bump's base. */\nexport function planSave(text: string, saved?: string, base?: string): SavePlan {\n const current = parseFlow(text);\n if (!current.doc) return { edits: [], dropped: [] };\n const tx = new YamlTransaction(text, current.file);\n const savedDoc = saved === undefined ? undefined : parseFlow(saved).doc;\n const dropped = savedDoc ? testedDropBack(savedDoc, current.doc) : [];\n if (dropped.length > 0) implementedAgain(tx, dropped);\n const baseDoc = base === undefined ? undefined : parseFlow(base).doc;\n const now = flowFromFile(tx.current).doc;\n const next = baseDoc && now ? versionBump(now, baseDoc) : undefined;\n if (next !== undefined) tx.apply((f) => setIn(f, ['flow', 'version'], next));\n return { edits: tx.edits(), dropped };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,SAAS,SAAS,MAAc,OAAgB,MAAyB;AAC9E,QAAM,UAAU,UAAU,IAAI;AAC9B,MAAI,CAAC,QAAQ,IAAK,QAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,EAAE;AAClD,QAAM,KAAK,IAAI,gBAAgB,MAAM,QAAQ,IAAI;AACjD,QAAM,WAAW,UAAU,SAAY,SAAY,UAAU,KAAK,EAAE;AACpE,QAAM,UAAU,WAAW,eAAe,UAAU,QAAQ,GAAG,IAAI,CAAC;AACpE,MAAI,QAAQ,SAAS,EAAG,kBAAiB,IAAI,OAAO;AACpD,QAAM,UAAU,SAAS,SAAY,SAAY,UAAU,IAAI,EAAE;AACjE,QAAM,MAAM,aAAa,GAAG,OAAO,EAAE;AACrC,QAAM,OAAO,WAAW,MAAM,YAAY,KAAK,OAAO,IAAI;AAC1D,MAAI,SAAS,OAAW,IAAG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,SAAS,GAAG,IAAI,CAAC;AAC3E,SAAO,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ;AACtC;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,SAAS,SAAS,MAAc,OAAgB,MAAyB;AAC9E,QAAM,UAAU,UAAU,IAAI;AAC9B,MAAI,CAAC,QAAQ,IAAK,QAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,EAAE;AAClD,QAAM,KAAK,IAAI,gBAAgB,MAAM,QAAQ,IAAI;AACjD,QAAM,WAAW,UAAU,SAAY,SAAY,UAAU,KAAK,EAAE;AACpE,QAAM,UAAU,WAAW,eAAe,UAAU,QAAQ,GAAG,IAAI,CAAC;AACpE,MAAI,QAAQ,SAAS,EAAG,kBAAiB,IAAI,OAAO;AACpD,QAAM,UAAU,SAAS,SAAY,SAAY,UAAU,IAAI,EAAE;AACjE,QAAM,MAAM,aAAa,GAAG,OAAO,EAAE;AACrC,QAAM,OAAO,WAAW,MAAM,YAAY,KAAK,OAAO,IAAI;AAC1D,MAAI,SAAS,OAAW,IAAG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,SAAS,GAAG,IAAI,CAAC;AAC3E,SAAO,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ;AACtC;",
6
6
  "names": []
7
7
  }
@@ -5,15 +5,15 @@ import {
5
5
  bareParams,
6
6
  pointerToPath,
7
7
  validateFlow
8
- } from "../chunks/chunk-2QQC4IZ7.js";
8
+ } from "../chunks/chunk-PNLY5IWM.js";
9
9
  import "../chunks/chunk-OREXQ4IZ.js";
10
10
  import "../chunks/chunk-KSM4O2XL.js";
11
- import "../chunks/chunk-T6SZLRDM.js";
12
11
  import "../chunks/chunk-7D55CRGU.js";
13
12
  import "../chunks/chunk-GK3SD3WE.js";
14
13
  import "../chunks/chunk-H6ARLMMI.js";
15
14
  import "../chunks/chunk-TG3C3GIL.js";
16
15
  import "../chunks/chunk-WISXIO3I.js";
16
+ import "../chunks/chunk-FIKPXL6E.js";
17
17
  import "../chunks/chunk-WG7O3OBV.js";
18
18
  import "../chunks/chunk-NUGJSYSP.js";
19
19
  import "../chunks/chunk-XRGZNPPO.js";
@@ -26,6 +26,7 @@ import "../chunks/chunk-HFHXHOBC.js";
26
26
  import "../chunks/chunk-RKLF3DLT.js";
27
27
  import "../chunks/chunk-GTHXWNCC.js";
28
28
  import "../chunks/chunk-OEQXGULI.js";
29
+ import "../chunks/chunk-T6SZLRDM.js";
29
30
  import "../chunks/chunk-AJRIS5VY.js";
30
31
  import "../chunks/chunk-GQ2W4RTY.js";
31
32
  import "../chunks/chunk-BVEW6MKL.js";
@@ -4,27 +4,28 @@ import {
4
4
  paged,
5
5
  sourceOutline,
6
6
  taskBinding
7
- } from "../chunks/chunk-TPRZZHXA.js";
8
- import "../chunks/chunk-5XGAGNH5.js";
7
+ } from "../chunks/chunk-57KJYXWA.js";
8
+ import "../chunks/chunk-OGNFHW5O.js";
9
9
  import "../chunks/chunk-IYVI5MSS.js";
10
- import "../chunks/chunk-H7Z2FBRD.js";
11
- import "../chunks/chunk-LNFMYJUJ.js";
12
- import "../chunks/chunk-5CD65KH3.js";
10
+ import "../chunks/chunk-OJZSZBHW.js";
11
+ import "../chunks/chunk-CATQHJS6.js";
13
12
  import "../chunks/chunk-6L43PFIN.js";
13
+ import "../chunks/chunk-5CD65KH3.js";
14
14
  import "../chunks/chunk-PDUQ3KMW.js";
15
+ import "../chunks/chunk-LNFMYJUJ.js";
15
16
  import "../chunks/chunk-BAZIS67B.js";
16
17
  import "../chunks/chunk-TC7FOG4T.js";
17
18
  import "../chunks/chunk-75QLJHZ5.js";
18
19
  import "../chunks/chunk-LMTTJDCC.js";
19
- import "../chunks/chunk-2QQC4IZ7.js";
20
+ import "../chunks/chunk-PNLY5IWM.js";
20
21
  import "../chunks/chunk-OREXQ4IZ.js";
21
22
  import "../chunks/chunk-KSM4O2XL.js";
22
- import "../chunks/chunk-T6SZLRDM.js";
23
23
  import "../chunks/chunk-7D55CRGU.js";
24
24
  import "../chunks/chunk-GK3SD3WE.js";
25
25
  import "../chunks/chunk-H6ARLMMI.js";
26
26
  import "../chunks/chunk-TG3C3GIL.js";
27
27
  import "../chunks/chunk-WISXIO3I.js";
28
+ import "../chunks/chunk-FIKPXL6E.js";
28
29
  import "../chunks/chunk-WG7O3OBV.js";
29
30
  import "../chunks/chunk-NUGJSYSP.js";
30
31
  import "../chunks/chunk-XRGZNPPO.js";
@@ -37,6 +38,7 @@ import "../chunks/chunk-HFHXHOBC.js";
37
38
  import "../chunks/chunk-RKLF3DLT.js";
38
39
  import "../chunks/chunk-GTHXWNCC.js";
39
40
  import "../chunks/chunk-OEQXGULI.js";
41
+ import "../chunks/chunk-T6SZLRDM.js";
40
42
  import "../chunks/chunk-AJRIS5VY.js";
41
43
  import "../chunks/chunk-GQ2W4RTY.js";
42
44
  import "../chunks/chunk-BVEW6MKL.js";
@@ -3,24 +3,24 @@ import {
3
3
  flatPlays,
4
4
  importPlaybook,
5
5
  mainPlay
6
- } from "../chunks/chunk-H7Z2FBRD.js";
7
- import "../chunks/chunk-LNFMYJUJ.js";
8
- import "../chunks/chunk-5CD65KH3.js";
6
+ } from "../chunks/chunk-CATQHJS6.js";
9
7
  import "../chunks/chunk-6L43PFIN.js";
8
+ import "../chunks/chunk-5CD65KH3.js";
10
9
  import "../chunks/chunk-PDUQ3KMW.js";
10
+ import "../chunks/chunk-LNFMYJUJ.js";
11
11
  import "../chunks/chunk-BAZIS67B.js";
12
12
  import "../chunks/chunk-TC7FOG4T.js";
13
13
  import "../chunks/chunk-75QLJHZ5.js";
14
14
  import "../chunks/chunk-LMTTJDCC.js";
15
- import "../chunks/chunk-2QQC4IZ7.js";
15
+ import "../chunks/chunk-PNLY5IWM.js";
16
16
  import "../chunks/chunk-OREXQ4IZ.js";
17
17
  import "../chunks/chunk-KSM4O2XL.js";
18
- import "../chunks/chunk-T6SZLRDM.js";
19
18
  import "../chunks/chunk-7D55CRGU.js";
20
19
  import "../chunks/chunk-GK3SD3WE.js";
21
20
  import "../chunks/chunk-H6ARLMMI.js";
22
21
  import "../chunks/chunk-TG3C3GIL.js";
23
22
  import "../chunks/chunk-WISXIO3I.js";
23
+ import "../chunks/chunk-FIKPXL6E.js";
24
24
  import "../chunks/chunk-WG7O3OBV.js";
25
25
  import "../chunks/chunk-NUGJSYSP.js";
26
26
  import "../chunks/chunk-XRGZNPPO.js";
@@ -33,6 +33,7 @@ import "../chunks/chunk-HFHXHOBC.js";
33
33
  import "../chunks/chunk-RKLF3DLT.js";
34
34
  import "../chunks/chunk-GTHXWNCC.js";
35
35
  import "../chunks/chunk-OEQXGULI.js";
36
+ import "../chunks/chunk-T6SZLRDM.js";
36
37
  import "../chunks/chunk-AJRIS5VY.js";
37
38
  import "../chunks/chunk-GQ2W4RTY.js";
38
39
  import "../chunks/chunk-BVEW6MKL.js";
@@ -2,9 +2,10 @@ import {
2
2
  parseKv,
3
3
  readPlaybook,
4
4
  scanFolder
5
- } from "../chunks/chunk-5XGAGNH5.js";
6
- import "../chunks/chunk-LNFMYJUJ.js";
5
+ } from "../chunks/chunk-OGNFHW5O.js";
6
+ import "../chunks/chunk-OJZSZBHW.js";
7
7
  import "../chunks/chunk-6L43PFIN.js";
8
+ import "../chunks/chunk-LNFMYJUJ.js";
8
9
  import "../chunks/chunk-TC7FOG4T.js";
9
10
  import "../chunks/chunk-OEQXGULI.js";
10
11
  import "../chunks/chunk-VHCA4A7K.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  LENSES
3
- } from "../chunks/chunk-XOPGOWNQ.js";
3
+ } from "../chunks/chunk-O5Y3AZ4X.js";
4
4
 
5
5
  // src/core/lens/caption.ts
6
6
  var EMPTY = {
package/dist/lens/data.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  dataLens
3
- } from "../chunks/chunk-BXHI5EQM.js";
3
+ } from "../chunks/chunk-2DT5DOSO.js";
4
4
  import "../chunks/chunk-LQZOPIIG.js";
5
+ import "../chunks/chunk-FIKPXL6E.js";
6
+ import "../chunks/chunk-T6SZLRDM.js";
5
7
  import "../chunks/chunk-BUPWGYNF.js";
6
8
  import "../chunks/chunk-WKETMTKT.js";
7
9
  import "../chunks/chunk-VHCA4A7K.js";
@@ -1,9 +1,16 @@
1
1
  import {
2
2
  timingLens
3
3
  } from "../chunks/chunk-VEYR53BH.js";
4
+ import {
5
+ accessLens
6
+ } from "../chunks/chunk-WS52COFG.js";
7
+ import {
8
+ declaredTarget,
9
+ inventoryLens
10
+ } from "../chunks/chunk-KWEFZFLC.js";
4
11
  import {
5
12
  LENSES
6
- } from "../chunks/chunk-XOPGOWNQ.js";
13
+ } from "../chunks/chunk-O5Y3AZ4X.js";
7
14
  import {
8
15
  changesLens
9
16
  } from "../chunks/chunk-YQ2WXJLS.js";
@@ -12,14 +19,7 @@ import {
12
19
  } from "../chunks/chunk-4N3AN5CJ.js";
13
20
  import {
14
21
  dataLens
15
- } from "../chunks/chunk-BXHI5EQM.js";
16
- import {
17
- accessLens
18
- } from "../chunks/chunk-WS52COFG.js";
19
- import {
20
- declaredTarget,
21
- inventoryLens
22
- } from "../chunks/chunk-KWEFZFLC.js";
22
+ } from "../chunks/chunk-2DT5DOSO.js";
23
23
  import {
24
24
  incoming,
25
25
  title
@@ -32,6 +32,7 @@ import {
32
32
  import "../chunks/chunk-BAZIS67B.js";
33
33
  import "../chunks/chunk-XOVPLQDM.js";
34
34
  import "../chunks/chunk-TG3C3GIL.js";
35
+ import "../chunks/chunk-FIKPXL6E.js";
35
36
  import "../chunks/chunk-XRGZNPPO.js";
36
37
  import "../chunks/chunk-VG3RKETK.js";
37
38
  import "../chunks/chunk-TS4N2EIO.js";
@@ -39,6 +40,7 @@ import "../chunks/chunk-BCX7P6SV.js";
39
40
  import "../chunks/chunk-HFHXHOBC.js";
40
41
  import "../chunks/chunk-RKLF3DLT.js";
41
42
  import "../chunks/chunk-GTHXWNCC.js";
43
+ import "../chunks/chunk-T6SZLRDM.js";
42
44
  import {
43
45
  durationSeconds
44
46
  } from "../chunks/chunk-GQ2W4RTY.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/core/lens/index.ts"],
4
4
  "sourcesContent": ["// One entry point for the webview: the active lens's view with accepted findings marked, and the\n// summary card rows of semantic zoom (D-19), which draw on every lens's facts.\nimport { durationSeconds } from '../engine/util';\nimport { acceptedAll } from '../flow/decisions';\nimport { modelOf } from '../flow/model';\nimport type { FlowDocument, FlowNode } from '../flow/types';\nimport type { RunView } from '../protocol';\nimport { formatSeconds, nodeHosts } from '../run/view';\nimport { accessLens } from './access';\nimport { changesLens } from './changes';\nimport { codeLens } from './code';\nimport { incoming, title } from './common';\nimport { dataLens } from './data';\nimport { declaredTarget, inventoryLens } from './inventory';\nimport { timingLens } from './timing';\nimport type { LensFacts, LensId, LensView } from './types';\n\nexport function lensView(\n lens: LensId,\n doc: FlowDocument,\n facts: LensFacts,\n run: RunView | null,\n): LensView {\n const view =\n lens === 'inventory'\n ? inventoryLens(doc, facts.inventory, run, facts.code)\n : lens === 'data'\n ? dataLens(doc)\n : lens === 'code'\n ? codeLens(doc, facts.code)\n : lens === 'access'\n ? accessLens(doc, facts.inventory, facts.code)\n : lens === 'changes'\n ? changesLens(doc, facts.compare)\n : timingLens(doc, facts.timing);\n const accepted = new Map(\n acceptedAll(doc)\n .filter((a) => a.area === 'lens')\n .map((a) => [a.what, { reason: a.reason ?? '', by: a.by }]),\n );\n const rank = (f: LensView['findings'][number]) =>\n (f.accepted ? 2 : 0) + (f.severity === 'warning' ? 0 : 1);\n view.findings = view.findings\n .map((f) => (accepted.has(f.id) ? { ...f, accepted: accepted.get(f.id) } : f))\n .sort((a, b) => rank(a) - rank(b));\n return view;\n}\n\nexport interface SummaryRow {\n label: string;\n value: string;\n}\n\n/** Mockup 08 \"zoomed in or selected\": hosts, limit, data, binding, access, timing. */\nexport function summaryRows(\n doc: FlowDocument,\n node: FlowNode,\n facts: LensFacts,\n run: RunView | null,\n): SummaryRow[] {\n const model = modelOf(doc);\n const rows: SummaryRow[] = [];\n const add = (label: string, value: string | undefined) => {\n if (value) rows.push({ label, value });\n };\n const inv = facts.inventory?.state === 'ready' ? facts.inventory.facts : undefined;\n const targets = inv?.targets ?? facts.inventory?.targets ?? '';\n const pattern = declaredTarget(doc, node, targets, facts.code)?.pattern ?? targets;\n if (pattern) {\n const count = inv?.patterns[pattern]?.count;\n const ran = run?.summary ? nodeHosts(run.summary, node.id).length : undefined;\n add('hosts', `${pattern}${count !== undefined ? ` \u00B7 ${count}` : ''}${ran ? ` \u2192 ${ran}` : ''}`);\n }\n const from = incoming(model, node.id);\n if (from.length > 0)\n add(\n 'limit',\n `${from[0]?.port} from ${title(model, from[0]?.from ?? '')}${from.length > 1 ? ` +${from.length - 1}` : ''}`,\n );\n add('inputs', Object.keys(node.inputs ?? {}).join(', '));\n add('outputs', Object.keys(node.outputs ?? {}).join(', '));\n const code = facts.code?.nodes[node.id];\n if (node.impl?.ref)\n add(node.impl.kind, `${node.impl.ref}${code?.version ? ` ${code.version}` : ''}`);\n if (code?.collection)\n add(\n 'collection',\n `${code.collection}${facts.code?.collections[code.collection] ? ` ${facts.code.collections[code.collection]}` : ''}`,\n );\n add('credential', node.settings?.credential);\n if (node.settings?.become) add('become', 'yes');\n const s = node.settings ?? {};\n const limits = [\n s.serial !== undefined ? `${s.serial}` : '',\n s.timeout ? `timeout ${s.timeout}` : '',\n s.retries ? `retries ${s.retries}` : '',\n ].filter(Boolean);\n add('serial', limits.join(' \u00B7 '));\n const t = facts.timing?.nodes[node.id];\n if (t) add('duration', `avg ${formatSeconds(t.avg)} \u00B7 p95 ${formatSeconds(t.p95)}`);\n else if (durationSeconds(s.timeout) === undefined && run?.summary?.timings?.[node.id]) {\n const x = run.summary.timings[node.id];\n if (x) add('duration', `last ${formatSeconds(x.end - x.start)}`);\n }\n return rows;\n}\n\nexport type { LensFacts, LensId, LensView } from './types';\nexport { LENSES } from './types';\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -62,6 +62,8 @@ export interface DataWire {
62
62
  to: Ulid;
63
63
  label: string;
64
64
  title: string;
65
+ /** AFD-287: a value read without an input (a fact an earlier step sets): drawn as a warning. */
66
+ undeclared?: boolean;
65
67
  }
66
68
  /** A node of the compared version that is gone (AFD-57): drawn as a ghost on its level. */
67
69
  export interface GhostNode {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  LENSES
3
- } from "../chunks/chunk-XOPGOWNQ.js";
3
+ } from "../chunks/chunk-O5Y3AZ4X.js";
4
4
  export {
5
5
  LENSES
6
6
  };
@@ -35,6 +35,8 @@ function messageProblem(m) {
35
35
  return isMap(m.request) ? void 0 : "scenarioEdit: bad request";
36
36
  case "runScenarios":
37
37
  return strList(m.names) ? void 0 : "runScenarios: bad names";
38
+ case "serverUpdate":
39
+ return typeof m.show === "boolean" ? void 0 : "serverUpdate: bad show";
38
40
  case "mergeChoose":
39
41
  return str(m.id, 500) && (m.side === "ours" || m.side === "theirs") ? void 0 : "mergeChoose: bad choice";
40
42
  case "lens":
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/core/messageCheck.ts"],
4
- "sourcesContent": ["// AFD-165: the host checks what a designer webview sends before acting on it. The webview runs\n// under a strict CSP with no HTML sinks, so a compromised page is unlikely; these checks keep one\n// from turning a message into a git option, a file outside the workspace or a probe argument.\n// Shape only: what a value means (a known ref, a path inside the folder) is checked where it is\n// used.\n\nconst isMap = (v: unknown): v is Record<string, unknown> =>\n !!v && typeof v === 'object' && !Array.isArray(v);\n\nconst str = (v: unknown, max = 4096): v is string => typeof v === 'string' && v.length <= max;\nconst optNum = (v: unknown) => v === undefined || (typeof v === 'number' && Number.isFinite(v));\nconst strList = (v: unknown) =>\n v === undefined || (Array.isArray(v) && v.every((x) => str(x, 200)));\n\n/** A plugin name the probe looks up: dotted words, no option or path syntax. */\nexport const PLUGIN_NAME = /^[A-Za-z0-9_][A-Za-z0-9_.]{0,199}$/;\n\n/** A git revision a designer may ask to compare with: never an option (`-\u2026`), no spaces. */\nexport const GIT_REF = /^[A-Za-z0-9_][A-Za-z0-9_./@{}^~-]{0,199}$/;\n\nconst CATALOG_OPS = new Set(['search', 'doc', 'roles', 'playbooks', 'rebuild']);\n\nfunction catalogProblem(r: unknown): string | undefined {\n if (!isMap(r) || !CATALOG_OPS.has(String(r.op))) return 'catalog: unknown request';\n if (r.op === 'search' && (!str(r.query, 500) || !strList(r.types))) return 'catalog: bad search';\n if (r.op === 'doc' && (!str(r.fqcn) || !PLUGIN_NAME.test(r.fqcn)))\n return 'catalog: not a plugin name';\n return undefined;\n}\n\n/** Why a message from the webview is refused, or undefined when its shape is right. */\nexport function messageProblem(m: unknown): string | undefined {\n if (!isMap(m) || !str(m.type, 64)) return 'not a designer message';\n if ('reqId' in m && !optNum(m.reqId)) return `${m.type}: bad reqId`;\n switch (m.type) {\n case 'openCode':\n return str(m.path) && m.path !== '' && optNum(m.line) ? undefined : 'openCode: bad path';\n case 'openText':\n return m.path === undefined ||\n (Array.isArray(m.path) &&\n m.path.every((p) => str(p, 1000) || (typeof p === 'number' && Number.isInteger(p))))\n ? undefined\n : 'openText: bad path';\n case 'compareWith':\n return str(m.ref, 200) && GIT_REF.test(m.ref) ? undefined : 'compareWith: bad ref';\n case 'catalog':\n return catalogProblem(m.request);\n case 'openLink':\n return str(m.url) ? undefined : 'openLink: bad url';\n case 'copyText':\n return str(m.text, 10_000_000) && optNum(m.count) ? undefined : 'copyText: bad text';\n case 'command':\n return isMap(m.command) && str(m.command.kind, 64) ? undefined : 'command: bad command';\n case 'scenarioEdit':\n return isMap(m.request) ? undefined : 'scenarioEdit: bad request';\n case 'runScenarios':\n return strList(m.names) ? undefined : 'runScenarios: bad names';\n case 'mergeChoose':\n return str(m.id, 500) && (m.side === 'ours' || m.side === 'theirs')\n ? undefined\n : 'mergeChoose: bad choice';\n case 'lens':\n return m.lens === null || str(m.lens, 64) ? undefined : 'lens: bad lens';\n default:\n return undefined;\n }\n}\n"],
5
- "mappings": ";AAMA,IAAM,QAAQ,CAAC,MACb,CAAC,CAAC,KAAK,OAAO,MAAM,YAAY,CAAC,MAAM,QAAQ,CAAC;AAElD,IAAM,MAAM,CAAC,GAAY,MAAM,SAAsB,OAAO,MAAM,YAAY,EAAE,UAAU;AAC1F,IAAM,SAAS,CAAC,MAAe,MAAM,UAAc,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC;AAC7F,IAAM,UAAU,CAAC,MACf,MAAM,UAAc,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;AAG7D,IAAM,cAAc;AAGpB,IAAM,UAAU;AAEvB,IAAM,cAAc,oBAAI,IAAI,CAAC,UAAU,OAAO,SAAS,aAAa,SAAS,CAAC;AAE9E,SAAS,eAAe,GAAgC;AACtD,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,OAAO,EAAE,EAAE,CAAC,EAAG,QAAO;AACxD,MAAI,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAI,QAAO;AAC3E,MAAI,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,IAAI;AAC7D,WAAO;AACT,SAAO;AACT;AAGO,SAAS,eAAe,GAAgC;AAC7D,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAG,QAAO;AAC1C,MAAI,WAAW,KAAK,CAAC,OAAO,EAAE,KAAK,EAAG,QAAO,GAAG,EAAE,IAAI;AACtD,UAAQ,EAAE,MAAM;AAAA,IACd,KAAK;AACH,aAAO,IAAI,EAAE,IAAI,KAAK,EAAE,SAAS,MAAM,OAAO,EAAE,IAAI,IAAI,SAAY;AAAA,IACtE,KAAK;AACH,aAAO,EAAE,SAAS,UACf,MAAM,QAAQ,EAAE,IAAI,KACnB,EAAE,KAAK,MAAM,CAAC,MAAM,IAAI,GAAG,GAAI,KAAM,OAAO,MAAM,YAAY,OAAO,UAAU,CAAC,CAAE,IAClF,SACA;AAAA,IACN,KAAK;AACH,aAAO,IAAI,EAAE,KAAK,GAAG,KAAK,QAAQ,KAAK,EAAE,GAAG,IAAI,SAAY;AAAA,IAC9D,KAAK;AACH,aAAO,eAAe,EAAE,OAAO;AAAA,IACjC,KAAK;AACH,aAAO,IAAI,EAAE,GAAG,IAAI,SAAY;AAAA,IAClC,KAAK;AACH,aAAO,IAAI,EAAE,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,IAAI,SAAY;AAAA,IAClE,KAAK;AACH,aAAO,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,MAAM,EAAE,IAAI,SAAY;AAAA,IACnE,KAAK;AACH,aAAO,MAAM,EAAE,OAAO,IAAI,SAAY;AAAA,IACxC,KAAK;AACH,aAAO,QAAQ,EAAE,KAAK,IAAI,SAAY;AAAA,IACxC,KAAK;AACH,aAAO,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS,YACtD,SACA;AAAA,IACN,KAAK;AACH,aAAO,EAAE,SAAS,QAAQ,IAAI,EAAE,MAAM,EAAE,IAAI,SAAY;AAAA,IAC1D;AACE,aAAO;AAAA,EACX;AACF;",
4
+ "sourcesContent": ["// AFD-165: the host checks what a designer webview sends before acting on it. The webview runs\n// under a strict CSP with no HTML sinks, so a compromised page is unlikely; these checks keep one\n// from turning a message into a git option, a file outside the workspace or a probe argument.\n// Shape only: what a value means (a known ref, a path inside the folder) is checked where it is\n// used.\n\nconst isMap = (v: unknown): v is Record<string, unknown> =>\n !!v && typeof v === 'object' && !Array.isArray(v);\n\nconst str = (v: unknown, max = 4096): v is string => typeof v === 'string' && v.length <= max;\nconst optNum = (v: unknown) => v === undefined || (typeof v === 'number' && Number.isFinite(v));\nconst strList = (v: unknown) =>\n v === undefined || (Array.isArray(v) && v.every((x) => str(x, 200)));\n\n/** A plugin name the probe looks up: dotted words, no option or path syntax. */\nexport const PLUGIN_NAME = /^[A-Za-z0-9_][A-Za-z0-9_.]{0,199}$/;\n\n/** A git revision a designer may ask to compare with: never an option (`-\u2026`), no spaces. */\nexport const GIT_REF = /^[A-Za-z0-9_][A-Za-z0-9_./@{}^~-]{0,199}$/;\n\nconst CATALOG_OPS = new Set(['search', 'doc', 'roles', 'playbooks', 'rebuild']);\n\nfunction catalogProblem(r: unknown): string | undefined {\n if (!isMap(r) || !CATALOG_OPS.has(String(r.op))) return 'catalog: unknown request';\n if (r.op === 'search' && (!str(r.query, 500) || !strList(r.types))) return 'catalog: bad search';\n if (r.op === 'doc' && (!str(r.fqcn) || !PLUGIN_NAME.test(r.fqcn)))\n return 'catalog: not a plugin name';\n return undefined;\n}\n\n/** Why a message from the webview is refused, or undefined when its shape is right. */\nexport function messageProblem(m: unknown): string | undefined {\n if (!isMap(m) || !str(m.type, 64)) return 'not a designer message';\n if ('reqId' in m && !optNum(m.reqId)) return `${m.type}: bad reqId`;\n switch (m.type) {\n case 'openCode':\n return str(m.path) && m.path !== '' && optNum(m.line) ? undefined : 'openCode: bad path';\n case 'openText':\n return m.path === undefined ||\n (Array.isArray(m.path) &&\n m.path.every((p) => str(p, 1000) || (typeof p === 'number' && Number.isInteger(p))))\n ? undefined\n : 'openText: bad path';\n case 'compareWith':\n return str(m.ref, 200) && GIT_REF.test(m.ref) ? undefined : 'compareWith: bad ref';\n case 'catalog':\n return catalogProblem(m.request);\n case 'openLink':\n return str(m.url) ? undefined : 'openLink: bad url';\n case 'copyText':\n return str(m.text, 10_000_000) && optNum(m.count) ? undefined : 'copyText: bad text';\n case 'command':\n return isMap(m.command) && str(m.command.kind, 64) ? undefined : 'command: bad command';\n case 'scenarioEdit':\n return isMap(m.request) ? undefined : 'scenarioEdit: bad request';\n case 'runScenarios':\n return strList(m.names) ? undefined : 'runScenarios: bad names';\n case 'serverUpdate':\n return typeof m.show === 'boolean' ? undefined : 'serverUpdate: bad show';\n case 'mergeChoose':\n return str(m.id, 500) && (m.side === 'ours' || m.side === 'theirs')\n ? undefined\n : 'mergeChoose: bad choice';\n case 'lens':\n return m.lens === null || str(m.lens, 64) ? undefined : 'lens: bad lens';\n default:\n return undefined;\n }\n}\n"],
5
+ "mappings": ";AAMA,IAAM,QAAQ,CAAC,MACb,CAAC,CAAC,KAAK,OAAO,MAAM,YAAY,CAAC,MAAM,QAAQ,CAAC;AAElD,IAAM,MAAM,CAAC,GAAY,MAAM,SAAsB,OAAO,MAAM,YAAY,EAAE,UAAU;AAC1F,IAAM,SAAS,CAAC,MAAe,MAAM,UAAc,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC;AAC7F,IAAM,UAAU,CAAC,MACf,MAAM,UAAc,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;AAG7D,IAAM,cAAc;AAGpB,IAAM,UAAU;AAEvB,IAAM,cAAc,oBAAI,IAAI,CAAC,UAAU,OAAO,SAAS,aAAa,SAAS,CAAC;AAE9E,SAAS,eAAe,GAAgC;AACtD,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,OAAO,EAAE,EAAE,CAAC,EAAG,QAAO;AACxD,MAAI,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAI,QAAO;AAC3E,MAAI,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,IAAI;AAC7D,WAAO;AACT,SAAO;AACT;AAGO,SAAS,eAAe,GAAgC;AAC7D,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAG,QAAO;AAC1C,MAAI,WAAW,KAAK,CAAC,OAAO,EAAE,KAAK,EAAG,QAAO,GAAG,EAAE,IAAI;AACtD,UAAQ,EAAE,MAAM;AAAA,IACd,KAAK;AACH,aAAO,IAAI,EAAE,IAAI,KAAK,EAAE,SAAS,MAAM,OAAO,EAAE,IAAI,IAAI,SAAY;AAAA,IACtE,KAAK;AACH,aAAO,EAAE,SAAS,UACf,MAAM,QAAQ,EAAE,IAAI,KACnB,EAAE,KAAK,MAAM,CAAC,MAAM,IAAI,GAAG,GAAI,KAAM,OAAO,MAAM,YAAY,OAAO,UAAU,CAAC,CAAE,IAClF,SACA;AAAA,IACN,KAAK;AACH,aAAO,IAAI,EAAE,KAAK,GAAG,KAAK,QAAQ,KAAK,EAAE,GAAG,IAAI,SAAY;AAAA,IAC9D,KAAK;AACH,aAAO,eAAe,EAAE,OAAO;AAAA,IACjC,KAAK;AACH,aAAO,IAAI,EAAE,GAAG,IAAI,SAAY;AAAA,IAClC,KAAK;AACH,aAAO,IAAI,EAAE,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,IAAI,SAAY;AAAA,IAClE,KAAK;AACH,aAAO,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,MAAM,EAAE,IAAI,SAAY;AAAA,IACnE,KAAK;AACH,aAAO,MAAM,EAAE,OAAO,IAAI,SAAY;AAAA,IACxC,KAAK;AACH,aAAO,QAAQ,EAAE,KAAK,IAAI,SAAY;AAAA,IACxC,KAAK;AACH,aAAO,OAAO,EAAE,SAAS,YAAY,SAAY;AAAA,IACnD,KAAK;AACH,aAAO,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS,YACtD,SACA;AAAA,IACN,KAAK;AACH,aAAO,EAAE,SAAS,QAAQ,IAAI,EAAE,MAAM,EAAE,IAAI,SAAY;AAAA,IAC1D;AACE,aAAO;AAAA,EACX;AACF;",
6
6
  "names": []
7
7
  }