@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
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Ansible Flow Designer core: the flow model, commands, validation and playbook generation, for any JavaScript host.
4
4
 
5
- Built from [Ansible Flow Designer](https://github.com/ChistokhinSV/ansible-flow-designer) 0.86.0
5
+ Built from [Ansible Flow Designer](https://github.com/ChistokhinSV/ansible-flow-designer) 0.88.0
6
6
  and released with it. Modules are imported by their path in the source tree, for example
7
7
  `@ansible-flow/core/ai/contributions`.
8
8
 
@@ -3,25 +3,25 @@ import {
3
3
  describeFlow,
4
4
  formatFindings,
5
5
  summarizeFindings
6
- } from "../chunks/chunk-MZ6IJWB2.js";
6
+ } from "../chunks/chunk-TPMACJFA.js";
7
7
  import "../chunks/chunk-Z6Y6M2ZK.js";
8
8
  import "../chunks/chunk-XOVPLQDM.js";
9
9
  import "../chunks/chunk-X3DEH47B.js";
10
- import "../chunks/chunk-BXJOUAXV.js";
10
+ import "../chunks/chunk-TEJARYAE.js";
11
11
  import "../chunks/chunk-SD6TCN3P.js";
12
- import "../chunks/chunk-72LO6GQE.js";
13
- import "../chunks/chunk-4RMWFRWG.js";
12
+ import "../chunks/chunk-KXD6FX2Z.js";
13
+ import "../chunks/chunk-LELKMVJG.js";
14
14
  import "../chunks/chunk-X4UNEUME.js";
15
15
  import "../chunks/chunk-RLCV7OFW.js";
16
- import "../chunks/chunk-2QQC4IZ7.js";
16
+ import "../chunks/chunk-PNLY5IWM.js";
17
17
  import "../chunks/chunk-OREXQ4IZ.js";
18
18
  import "../chunks/chunk-KSM4O2XL.js";
19
- import "../chunks/chunk-T6SZLRDM.js";
20
19
  import "../chunks/chunk-7D55CRGU.js";
21
20
  import "../chunks/chunk-GK3SD3WE.js";
22
21
  import "../chunks/chunk-H6ARLMMI.js";
23
22
  import "../chunks/chunk-TG3C3GIL.js";
24
23
  import "../chunks/chunk-WISXIO3I.js";
24
+ import "../chunks/chunk-FIKPXL6E.js";
25
25
  import "../chunks/chunk-WG7O3OBV.js";
26
26
  import "../chunks/chunk-NUGJSYSP.js";
27
27
  import "../chunks/chunk-XRGZNPPO.js";
@@ -34,6 +34,7 @@ import "../chunks/chunk-HFHXHOBC.js";
34
34
  import "../chunks/chunk-RKLF3DLT.js";
35
35
  import "../chunks/chunk-GTHXWNCC.js";
36
36
  import "../chunks/chunk-OEQXGULI.js";
37
+ import "../chunks/chunk-T6SZLRDM.js";
37
38
  import "../chunks/chunk-AJRIS5VY.js";
38
39
  import "../chunks/chunk-GQ2W4RTY.js";
39
40
  import "../chunks/chunk-BVEW6MKL.js";
@@ -45,7 +46,7 @@ import "../chunks/chunk-GHG3VINX.js";
45
46
  import "../chunks/chunk-5TUAMVIV.js";
46
47
  import "../chunks/chunk-45CE2RUH.js";
47
48
  import "../chunks/chunk-E2YZJWO7.js";
48
- import "../chunks/chunk-76T45V37.js";
49
+ import "../chunks/chunk-TBFB7A2Z.js";
49
50
  import "../chunks/chunk-SELZNC6A.js";
50
51
  import "../chunks/chunk-A2VWJAFE.js";
51
52
  import "../chunks/chunk-3DHWUD35.js";
@@ -2,10 +2,10 @@ import {
2
2
  generatedDirOf,
3
3
  paged,
4
4
  sourceOutline
5
- } from "../chunks/chunk-TPRZZHXA.js";
5
+ } from "../chunks/chunk-57KJYXWA.js";
6
6
  import {
7
7
  readPlaybook
8
- } from "../chunks/chunk-5XGAGNH5.js";
8
+ } from "../chunks/chunk-OGNFHW5O.js";
9
9
  import {
10
10
  newFlowText
11
11
  } from "../chunks/chunk-CFNYFH2A.js";
@@ -14,12 +14,12 @@ import {
14
14
  } from "../chunks/chunk-3P2IP6FE.js";
15
15
  import {
16
16
  sceneSvg
17
- } from "../chunks/chunk-EAJFZKPB.js";
17
+ } from "../chunks/chunk-37FKZNRN.js";
18
18
  import "../chunks/chunk-JWYLAANO.js";
19
19
  import "../chunks/chunk-NCPIAK5Y.js";
20
20
  import {
21
21
  toDrawio
22
- } from "../chunks/chunk-R4MW3DRT.js";
22
+ } from "../chunks/chunk-OW32YCZ6.js";
23
23
  import "../chunks/chunk-YNEJJZMA.js";
24
24
  import "../chunks/chunk-AXSX5DJE.js";
25
25
  import {
@@ -32,32 +32,33 @@ import {
32
32
  scenarioProblemLines,
33
33
  scenariosLine,
34
34
  scenariosTool
35
- } from "../chunks/chunk-DHU774ES.js";
35
+ } from "../chunks/chunk-2KB3J3R5.js";
36
36
  import "../chunks/chunk-FTJ6VOQL.js";
37
37
  import "../chunks/chunk-2PSB652B.js";
38
38
  import {
39
39
  checkLive
40
- } from "../chunks/chunk-CM23ODBB.js";
41
- import "../chunks/chunk-7GLSXIZ3.js";
42
- import "../chunks/chunk-23ISDYUS.js";
40
+ } from "../chunks/chunk-J5LYSQ3L.js";
41
+ import "../chunks/chunk-BSX6G7QY.js";
43
42
  import "../chunks/chunk-TH6ICGA5.js";
43
+ import "../chunks/chunk-23ISDYUS.js";
44
44
  import "../chunks/chunk-KOG6OURH.js";
45
- import "../chunks/chunk-CXVJWFGT.js";
45
+ import "../chunks/chunk-WTVGCMGV.js";
46
46
  import "../chunks/chunk-OEEHAY5X.js";
47
47
  import "../chunks/chunk-LPBLGBDT.js";
48
- import "../chunks/chunk-6MLYGFT6.js";
49
- import "../chunks/chunk-ZAYNYPCX.js";
48
+ import "../chunks/chunk-XJAMBKE3.js";
49
+ import "../chunks/chunk-OJZSZBHW.js";
50
+ import "../chunks/chunk-ARA3VJR2.js";
50
51
  import "../chunks/chunk-56VTJ6YF.js";
51
52
  import {
52
53
  importWorkflow
53
- } from "../chunks/chunk-NT62IE3Y.js";
54
+ } from "../chunks/chunk-CNYGDBID.js";
54
55
  import {
55
56
  importPlaybook
56
- } from "../chunks/chunk-H7Z2FBRD.js";
57
- import "../chunks/chunk-LNFMYJUJ.js";
58
- import "../chunks/chunk-5CD65KH3.js";
57
+ } from "../chunks/chunk-CATQHJS6.js";
59
58
  import "../chunks/chunk-6L43PFIN.js";
59
+ import "../chunks/chunk-5CD65KH3.js";
60
60
  import "../chunks/chunk-PDUQ3KMW.js";
61
+ import "../chunks/chunk-LNFMYJUJ.js";
61
62
  import {
62
63
  checksum
63
64
  } from "../chunks/chunk-BAZIS67B.js";
@@ -67,7 +68,7 @@ import {
67
68
  describeFlow,
68
69
  formatFindings,
69
70
  summarizeFindings
70
- } from "../chunks/chunk-MZ6IJWB2.js";
71
+ } from "../chunks/chunk-TPMACJFA.js";
71
72
  import "../chunks/chunk-Z6Y6M2ZK.js";
72
73
  import "../chunks/chunk-XOVPLQDM.js";
73
74
  import "../chunks/chunk-X3DEH47B.js";
@@ -83,8 +84,8 @@ import "../chunks/chunk-SZ4STFZT.js";
83
84
  import {
84
85
  OpError,
85
86
  applyOps
86
- } from "../chunks/chunk-ABYJBONR.js";
87
- import "../chunks/chunk-T5UB4MBB.js";
87
+ } from "../chunks/chunk-ZXUXX3YY.js";
88
+ import "../chunks/chunk-TOTSB4HG.js";
88
89
  import "../chunks/chunk-SN7X6FYV.js";
89
90
  import "../chunks/chunk-24G5UVEF.js";
90
91
  import {
@@ -97,28 +98,28 @@ import {
97
98
  } from "../chunks/chunk-LMTTJDCC.js";
98
99
  import {
99
100
  flowLayoutProblems
100
- } from "../chunks/chunk-BXJOUAXV.js";
101
+ } from "../chunks/chunk-TEJARYAE.js";
101
102
  import "../chunks/chunk-SD6TCN3P.js";
102
103
  import {
103
104
  levelSuffix,
104
105
  scenesOf
105
- } from "../chunks/chunk-72LO6GQE.js";
106
- import "../chunks/chunk-4RMWFRWG.js";
106
+ } from "../chunks/chunk-KXD6FX2Z.js";
107
+ import "../chunks/chunk-LELKMVJG.js";
107
108
  import "../chunks/chunk-X4UNEUME.js";
108
109
  import "../chunks/chunk-RLCV7OFW.js";
109
110
  import {
110
111
  validateFlow
111
- } from "../chunks/chunk-2QQC4IZ7.js";
112
+ } from "../chunks/chunk-PNLY5IWM.js";
112
113
  import "../chunks/chunk-OREXQ4IZ.js";
113
114
  import {
114
115
  openFailPorts
115
116
  } from "../chunks/chunk-KSM4O2XL.js";
116
- import "../chunks/chunk-T6SZLRDM.js";
117
117
  import "../chunks/chunk-7D55CRGU.js";
118
118
  import "../chunks/chunk-GK3SD3WE.js";
119
119
  import "../chunks/chunk-H6ARLMMI.js";
120
120
  import "../chunks/chunk-TG3C3GIL.js";
121
121
  import "../chunks/chunk-WISXIO3I.js";
122
+ import "../chunks/chunk-FIKPXL6E.js";
122
123
  import "../chunks/chunk-WG7O3OBV.js";
123
124
  import "../chunks/chunk-NUGJSYSP.js";
124
125
  import {
@@ -133,6 +134,7 @@ import "../chunks/chunk-HFHXHOBC.js";
133
134
  import "../chunks/chunk-RKLF3DLT.js";
134
135
  import "../chunks/chunk-GTHXWNCC.js";
135
136
  import "../chunks/chunk-OEQXGULI.js";
137
+ import "../chunks/chunk-T6SZLRDM.js";
136
138
  import "../chunks/chunk-AJRIS5VY.js";
137
139
  import "../chunks/chunk-GQ2W4RTY.js";
138
140
  import "../chunks/chunk-BVEW6MKL.js";
@@ -148,8 +150,8 @@ import "../chunks/chunk-45CE2RUH.js";
148
150
  import "../chunks/chunk-E2YZJWO7.js";
149
151
  import {
150
152
  reference
151
- } from "../chunks/chunk-C6SQEXL5.js";
152
- import "../chunks/chunk-76T45V37.js";
153
+ } from "../chunks/chunk-CNQ7M7HA.js";
154
+ import "../chunks/chunk-TBFB7A2Z.js";
153
155
  import {
154
156
  checkOps,
155
157
  dropNulls
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/core/ai/handlers.ts"],
4
4
  "sourcesContent": ["// The AI tools themselves (AFD-19), independent of who calls them: Copilot through the extension\n// host, Claude Code, Codex and Gemini through the MCP server. Each adapter supplies a FlowIO (how\n// files are found, read and written there); every answer is plain text by key, never with IDs.\n\nimport { importWorkflow } from '../awx/import';\nimport {\n type AwxExport,\n exportTemplates,\n jobTemplateFromExport,\n playbooksOf,\n workflowFromExport,\n} from '../awx/workflow';\nimport { checksum } from '../engine/util';\nimport { toDrawio } from '../export/drawio';\nimport { flowLayoutProblems } from '../export/layoutCheck';\nimport { type ExportSource, levelSuffix, scenesOf } from '../export/scene';\nimport { sceneSvg } from '../export/svg';\nimport { completeIds } from '../flow/completeIds';\nimport { parseFlow } from '../flow/document';\nimport { SLUG, slugify } from '../flow/ids';\nimport { type FlowModel, ROOT } from '../flow/model';\nimport { openFailPorts } from '../flow/openPorts';\nimport type { SchemaValidator } from '../flow/schema';\nimport { newFlowText } from '../flow/template';\nimport { flowText } from '../flow/text';\nimport { type Finding, validateFlow } from '../flow/validate';\nimport { generatedDirOf, paged, sourceOutline } from '../import/outline';\nimport { importPlaybook } from '../import/playbook';\nimport type { SourceIO } from '../import/read';\nimport type { ImportResult } from '../import/result';\nimport { type PlaybookForm, readPlaybook } from '../import/source';\nimport { checkLive } from '../scenario/live';\nimport type { ScenarioResult } from '../scenario/scenarios';\nimport { diffEdits } from '../yaml/edits';\nimport { countFindings, describeFlow, formatFindings, summarizeFindings } from './describe';\nimport { longLevelHints } from './hints';\nimport { type InventoryInput, type InventoryIO, inventoryTool } from './inventory';\nimport { applyOps, type Op, OpError, type OpsContext } from './ops';\nimport { type ReferenceTopic, reference } from './reference';\nimport { keyPath, RefError, resolveNode, withoutIds } from './refs';\nimport {\n type ScenariosInput,\n scenarioProblemLines,\n scenariosLine,\n scenariosTool,\n} from './scenarios';\nimport { checkOps, dropNulls } from './specs';\n\nexport interface FlowIO {\n /** Flow files the tools may see, as the paths tools take. */\n list(): Promise<string[]>;\n /** The flow a call without path means: the one open in the designer, if any. */\n current?(): string | undefined;\n /** Throws an Error with a message for the model when the path is not an allowed flow. */\n read(path: string): Promise<string>;\n /** Writes the new text of a flow; returns its final text (e.g. version bumped) and notes. */\n write(path: string, before: string, after: string): Promise<{ text: string; notes: string[] }>;\n /** Creates a new flow file; throws when it exists or is not allowed. */\n create(path: string, text: string): Promise<{ text: string; notes: string[] }>;\n /** How ops run for a flow: IDs, the author of decisions, the layout for tidy_up. */\n ops(path: string): OpsContext;\n schema: SchemaValidator;\n /**\n * AFD-25: writes an export (.drawio or .svg) inside the roots, creating folders; returns its path\n * as the tools show it. Throws for anything else.\n */\n writeExport?(path: string, text: string): Promise<string>;\n /**\n * AFD-27: Ansible files inside the roots (playbooks, task files, roles, ansible.cfg, AWX export\n * JSON), read-only: the reader of the root that holds `path`, the path within it, and the prefix\n * tools show for that root (its name when there are several, else ''). Absent where the host\n * cannot read them.\n */\n source?(path: string): { io: SourceIO; path: string; prefix: string } | undefined;\n /** Short module name + the play's collections \u2192 FQCN, where a catalog is loaded. */\n resolveModule?(name: string, collections: string[]): string | undefined;\n /** AFD-261: the repository's inventory files, for the inventory tool. Absent where the host has none. */\n inventory?: InventoryIO;\n /** AFD-117: the scenarios file next to a flow (`<key>.scenarios.yaml`); undefined if none. */\n readScenarios?(flowPath: string, flowKey: string): Promise<string | undefined>;\n /** AFD-117: writes that file (creating it when `before` is undefined); notes for the answer. */\n writeScenarios?(\n flowPath: string,\n flowKey: string,\n before: string | undefined,\n after: string,\n ): Promise<string[]>;\n /**\n * AFD-117: runs scenarios in Ansible (every step its stub) in the configured environment; all\n * when `names` is absent. Absent where the host cannot run them.\n */\n verifyScenarios?(flowPath: string, names?: string[]): Promise<ScenarioResult[] | string>;\n /**\n * AFD-191: generates the flow's code (generated/) from the file as it is now, as a save does;\n * notes for the answer. Absent where the host cannot.\n */\n generate?(path: string): Promise<string[]>;\n /** AFD-191: whether generated/ matches the flow (\"current\", \"out of date: \u2026\"); undefined if unknown. */\n codeState?(path: string): Promise<string | undefined>;\n}\n\nexport interface ToolResult {\n text: string;\n isError?: boolean;\n}\n\nconst fail = (text: string): ToolResult => ({ text, isError: true });\n\n/** A short fingerprint of the file text: flow_edit refuses when the file changed since. */\nexport function revisionOf(text: string): string {\n return checksum(text).slice(-10);\n}\n\ninterface Loaded {\n path: string;\n text: string;\n model: FlowModel;\n findings: Finding[];\n}\n\nasync function pathOf(io: FlowIO, path: unknown): Promise<string> {\n if (typeof path === 'string' && path.trim()) return path.trim();\n const current = io.current?.();\n if (current) return current;\n const all = await io.list();\n if (all.length === 1) return all[0] as string;\n throw new Error(\n all.length === 0\n ? 'No flow files (*.flow.yaml) here; create one with flow_new'\n : `Name the flow with path: ${all.slice(0, 20).join(', ')}${all.length > 20 ? ', \u2026' : ''}`,\n );\n}\n\nfunction check(text: string, schema: SchemaValidator): Omit<Loaded, 'path' | 'text'> | string {\n const parsed = parseFlow(text);\n if (!parsed.doc) {\n const e = parsed.errors[0];\n const line = e ? text.slice(0, e.offset).split('\\n').length : 1;\n return `The file does not parse as YAML (line ${line}: ${e?.message ?? 'unknown error'}). Fix the YAML first.`;\n }\n const { model, findings } = validateFlow(parsed.doc, schema(parsed.doc));\n return { model, findings };\n}\n\nasync function load(io: FlowIO, rawPath: unknown): Promise<Loaded | ToolResult> {\n let path: string;\n let text: string;\n try {\n path = await pathOf(io, rawPath);\n text = await io.read(path);\n } catch (e) {\n return fail((e as Error).message);\n }\n const checked = check(text, io.schema);\n if (typeof checked === 'string') return fail(`${path}: ${checked}`);\n return { path, text, ...checked };\n}\n\nconst isResult = (x: Loaded | ToolResult): x is ToolResult => !('model' in x);\n\nexport async function flowList(io: FlowIO): Promise<ToolResult> {\n const paths = await io.list();\n if (paths.length === 0) return { text: 'No flow files (*.flow.yaml). Create one with flow_new.' };\n const lines: string[] = [];\n for (const path of paths.slice(0, 100)) {\n try {\n const checked = check(await io.read(path), io.schema);\n if (typeof checked === 'string') {\n lines.push(`- ${path}: does not parse`);\n continue;\n }\n const f = checked.model.doc.flow;\n lines.push(\n `- ${path}: \"${f?.name}\" (key ${f?.key}, version ${f?.version}); ${countFindings(checked.findings)}`,\n );\n } catch (e) {\n lines.push(`- ${path}: ${(e as Error).message}`);\n }\n }\n if (paths.length > 100) lines.push(`- \u2026 ${paths.length - 100} more`);\n return { text: lines.join('\\n') };\n}\n\nexport async function flowDescribe(\n io: FlowIO,\n input: {\n path?: string;\n level?: string;\n layout?: boolean;\n nodes?: string[] | string;\n detail?: string;\n only_problems?: boolean;\n page?: number;\n },\n): Promise<ToolResult> {\n const l = await load(io, input.path);\n if (isResult(l)) return l;\n let level: string | undefined;\n if (input.level && input.level !== 'all') {\n if (input.level === 'top') level = ROOT;\n else {\n try {\n const sub = resolveNode(l.model, input.level);\n if (sub.node.type !== 'subflow')\n return fail(\n `${sub.path} is a ${sub.node.type}, not a subflow; level is all, top or a subflow`,\n );\n level = sub.id;\n } catch (e) {\n return fail((e as Error).message);\n }\n }\n }\n // AFD-24: where the canvas shows each node, when asked; AFD-69: what is hard to read there.\n const shown = input.layout ? await io.ops(l.path).positions?.(l.model) : undefined;\n const complete = !l.findings.some((f) => f.code === 'missing-id' || f.code === 'unknown-key');\n const issues =\n shown && complete\n ? flowLayoutProblems(l.model, shown, level ? new Set([level]) : undefined)\n : undefined;\n // AFD-117: one line on the flow's scenarios, so an agent knows they are there.\n const scenarios = complete ? await scenarioCheckOf(io, l) : undefined;\n const line = scenarios ? scenariosLine(scenarios) : undefined;\n const nodes = typeof input.nodes === 'string' ? [input.nodes] : (input.nodes ?? []);\n const view = {\n ...(input.detail === 'brief' ? { brief: true } : {}),\n ...(nodes.length ? { nodes } : {}),\n ...(input.only_problems && issues ? { onlyProblems: true } : {}),\n };\n const text = `${l.path}\\n${describeFlow(l.model, l.findings, revisionOf(l.text), level, shown, issues, view)}${line ? `\\n${line}` : ''}`;\n // AFD-189: a large flow comes in pages, as an outline does.\n return { text: paged(text.split('\\n'), input.page ?? 1, ' and the same arguments') };\n}\n\n/** AFD-117: the live check of a loaded flow's scenarios, where the host reads them. */\nasync function scenarioCheckOf(io: FlowIO, l: Loaded) {\n const key = l.model.doc.flow?.key;\n if (!io.readScenarios || !key) return undefined;\n const text = await io.readScenarios(l.path, key).catch(() => undefined);\n return text === undefined ? undefined : checkLive(l.model.doc, text);\n}\n\nexport async function flowValidate(\n io: FlowIO,\n input: {\n path?: string;\n code?: string | string[];\n node?: string;\n severity?: string;\n summary?: boolean;\n page?: number;\n },\n): Promise<ToolResult> {\n const l = await load(io, input.path);\n if (isResult(l)) return l;\n const gaps = l.findings.some((f) => f.code === 'missing-id');\n // AFD-117: the scenarios file's problems and the scenarios the simulation fails.\n const scenarios = gaps ? undefined : await scenarioCheckOf(io, l);\n const extra = scenarios ? scenarioProblemLines(l.model.doc, scenarios) : [];\n // AFD-189: filters, so the next batch of problems to fix is one call away.\n const codes = (Array.isArray(input.code) ? input.code : (input.code ?? '').split(','))\n .map((c) => c.trim())\n .filter(Boolean);\n const prefix = input.node?.trim();\n const shown = l.findings.filter(\n (f) =>\n (!codes.length || codes.includes(f.code)) &&\n (!input.severity || f.severity === input.severity) &&\n (!prefix ||\n (f.node !== undefined &&\n (keyPath(l.model, f.node) === prefix ||\n keyPath(l.model, f.node).startsWith(`${prefix}/`)))),\n );\n const filtered = shown.length !== l.findings.length;\n // AFD-191: whether generated/ matches the flow.\n const code = gaps ? undefined : await io.codeState?.(l.path).catch(() => undefined);\n const lines = [\n `${l.path}: ${countFindings(l.findings)}${filtered ? ` (showing ${shown.length}: ${[codes.length ? `code ${codes.join(', ')}` : '', prefix ? `node ${prefix}` : '', input.severity ?? ''].filter(Boolean).join(', ')})` : ''}`,\n ...(code ? [`Generated code: ${code}`] : []),\n ...(input.summary\n ? [summarizeFindings(l.model, shown)]\n : formatFindings(l.model, shown, Number.POSITIVE_INFINITY).split('\\n')),\n ...(extra.length ? ['Scenarios:', ...extra] : []),\n ...(gaps ? ['', 'The file was written by hand: run flow_complete_ids first.'] : []),\n `Revision: ${revisionOf(l.text)}`,\n ];\n return {\n text: paged(lines, input.page ?? 1, ' and the same filters (or summary: true, code, node)'),\n };\n}\n\nexport function flowReference(input: { topic?: ReferenceTopic }): ToolResult {\n const topics = ['all', 'format', 'ports', 'patterns', 'ops', 'problems', 'scenarios'];\n const topic = input.topic ?? 'all';\n if (!topics.includes(topic)) return fail(`topic is one of ${topics.join(', ')}`);\n return { text: reference(topic) };\n}\n\n/**\n * Problems keyed by what they are about (code, node by key, port, field), so an edit that renames\n * a node or adds IDs does not make old problems look new.\n */\n/**\n * Findings by what they are about, so an edit can tell which are new and which went away. The\n * message is part of it (one node can have several findings of one code, AFD-21), with the node's\n * title taken out, so retitling a node is not a new problem. Several equal findings count each.\n */\nfunction problemKeys(model: FlowModel, findings: Finding[]): Map<string, Finding[]> {\n const out = new Map<string, Finding[]>();\n for (const f of findings) {\n const node = f.node ? model.nodes.get(f.node)?.node : undefined;\n const edge = f.edge ? model.edges.get(f.edge)?.edge : undefined;\n let message = withoutIds(model, f.message);\n if (node?.title) message = message.replaceAll(`\"${node.title}\"`, '\"<node>\"');\n const key = [\n f.code,\n f.node ? keyPath(model, f.node) : '',\n f.port ?? '',\n edge ? `${keyPath(model, edge.from.node)}.${edge.from.port}` : '',\n f.path.filter((p) => typeof p === 'string').join('.'),\n message,\n ].join('|');\n out.set(key, [...(out.get(key) ?? []), f]);\n }\n return out;\n}\n\n/** \"11 warning(s), 2 info\" for the findings that went away. */\nfunction solvedText(solved: Finding[]): string {\n if (solved.length === 0) return '';\n const n = (s: Finding['severity']) => solved.filter((f) => f.severity === s).length;\n const parts = [\n n('error') ? `${n('error')} error(s)` : '',\n n('warning') ? `${n('warning')} warning(s)` : '',\n n('info') ? `${n('info')} info` : '',\n ].filter(Boolean);\n return `; solved by this edit: ${parts.join(', ')}`;\n}\n\n/** Changed lines, whole, for a dry run. */\nfunction changedLines(before: string, after: string, max = 60): string {\n const out: string[] = [];\n let delta = 0;\n for (const e of [...diffEdits(before, after)].sort((a, b) => a.start - b.start)) {\n const from = before.lastIndexOf('\\n', e.start - 1) + 1;\n const end = before.indexOf('\\n', e.end);\n const to = end < 0 ? before.length : end;\n const grow = e.newText.length - (e.end - e.start);\n const lines = (t: string, sign: string) =>\n t.length\n ? t\n .replaceAll('\\r', '')\n .split('\\n')\n .map((l) => `${sign} ${l}`)\n : [];\n out.push(\n `@@ line ${before.slice(0, from).split('\\n').length}`,\n ...lines(before.slice(from, to), '-'),\n ...lines(after.slice(from + delta, to + delta + grow), '+'),\n );\n delta += grow;\n }\n if (out.length > max)\n return [...out.slice(0, max), `\u2026 ${out.length - max} more line(s)`].join('\\n');\n return out.join('\\n');\n}\n\nexport async function flowEdit(\n io: FlowIO,\n input: { path?: string; ops?: unknown; revision?: string; dry_run?: boolean },\n): Promise<ToolResult> {\n const given = dropNulls(input.ops);\n const problems = checkOps(given);\n if (problems.length > 0)\n return fail(\n `${problems.join('\\n')}\\nNothing was written. flow_reference topic ops lists the ops.`,\n );\n const l = await load(io, input.path);\n if (isResult(l)) return l;\n const now = revisionOf(l.text);\n if (input.revision && input.revision !== now)\n return fail(\n `The flow changed since revision ${input.revision}; nothing was written. The flow now:\\n${describeFlow(l.model, l.findings, now)}`,\n );\n const ops = given as Op[];\n let result: Awaited<ReturnType<typeof applyOps>>;\n try {\n result = await applyOps(l.text, ops, io.ops(l.path));\n } catch (e) {\n if (e instanceof OpError || e instanceof RefError)\n return fail(`${e.message}\\nflow_describe shows the keys and ports.`);\n throw e;\n }\n // AFD-191: regenerate writes generated/ from the file even when no op changed the flow.\n const regenerate = ops.some((o) => o.op === 'regenerate');\n if (result.text === l.text) {\n if (!regenerate) return { text: `Nothing changed. Revision: ${now}` };\n if (input.dry_run)\n return { text: `Dry run: regenerate would write generated/. Revision: ${now}` };\n if (!io.generate) return fail('Generating code is not available here');\n const written = await io.generate(l.path).catch((e: Error) => [`Not generated: ${e.message}`]);\n return { text: [`The flow is unchanged.`, ...written, `Revision: ${now}`].join('\\n') };\n }\n\n const before = problemKeys(l.model, l.findings);\n const report = (text: string, model: FlowModel, findings: Finding[], notes: string[]) => {\n const after = problemKeys(model, findings);\n const added = [...after.entries()].flatMap(([k, fs]) => fs.slice(before.get(k)?.length ?? 0));\n const solved = [...before.entries()].flatMap(([k, fs]) => fs.slice(after.get(k)?.length ?? 0));\n return [\n ...(result.created.length ? [`Created: ${result.created.join(', ')}`] : []),\n ...(result.dropped.length\n ? [`Back to implemented (design changed after a passing run): ${result.dropped.join(', ')}`]\n : []),\n ...result.notes,\n ...notes,\n ...longLevelHints(l.model, model),\n `Problems: ${countFindings(findings)}${solvedText(solved)}`,\n // AFD-189: many new problems come grouped by code; flow_validate lists them one by one.\n ...(added.length > 30\n ? [\n `New problems (${added.length}, by code; flow_validate with code or node lists them):`,\n summarizeFindings(model, added),\n ]\n : added.length\n ? ['New problems:', formatFindings(model, added, 30)]\n : []),\n `Revision: ${revisionOf(text)}`,\n ].join('\\n');\n };\n\n if (input.dry_run) {\n const checked = check(result.text, io.schema);\n if (typeof checked === 'string') return fail(checked);\n return {\n text: [\n `Dry run of ${ops.length} op(s) on ${l.path}: nothing was written.`,\n report(result.text, checked.model, checked.findings, []).replace(/\\nRevision: .*$/, ''),\n 'Changes:',\n changedLines(l.text, result.text),\n ].join('\\n'),\n };\n }\n let written: { text: string; notes: string[] };\n try {\n written = await io.write(l.path, l.text, result.text);\n } catch (e) {\n return fail(`Not written: ${(e as Error).message}`);\n }\n const checked = check(written.text, io.schema);\n if (typeof checked === 'string') return fail(checked);\n return {\n text: [\n `Applied ${ops.length} op(s) to ${l.path}.`,\n report(written.text, checked.model, checked.findings, written.notes),\n ].join('\\n'),\n };\n}\n\nexport async function flowNew(\n io: FlowIO,\n input: { path?: string; name?: string; key?: string; goal?: string },\n): Promise<ToolResult> {\n const path = input.path?.trim() ?? '';\n if (!path.endsWith('.flow.yaml')) return fail('path must end with .flow.yaml');\n if (!input.name?.trim()) return fail('name is required');\n // The file is <key>.flow.yaml by convention: a file name that is a key names the flow.\n const base =\n path\n .split(/[\\\\/]/)\n .pop()\n ?.replace(/\\.flow\\.yaml$/, '') ?? '';\n const key = input.key ?? (SLUG.test(base) ? base : slugify(input.name, 'flow'));\n if (!SLUG.test(key)) return fail(`Key \"${key}\" must be lowercase letters, digits and dashes`);\n let text = newFlowText(input.name.trim(), key, io.ops(path).newId);\n if (input.goal)\n text = (await applyOps(text, [{ op: 'update_flow', goal: input.goal }], io.ops(path))).text;\n let created: { text: string; notes: string[] };\n try {\n created = await io.create(path, text);\n } catch (e) {\n return fail((e as Error).message);\n }\n const checked = check(created.text, io.schema);\n if (typeof checked === 'string') return fail(checked);\n return {\n text: [\n `Created ${path}.`,\n ...created.notes,\n describeFlow(checked.model, checked.findings, revisionOf(created.text)),\n 'Next: add steps with flow_edit. add_node with after: \"start.ok_hosts\" puts the first step between start and done; after: \"<that step>.ok_hosts\" the next one, and so on.',\n ].join('\\n'),\n };\n}\n\nexport async function flowCompleteIds(io: FlowIO, input: { path?: string }): Promise<ToolResult> {\n const l = await load(io, input.path);\n if (isResult(l)) return l;\n const done = completeIds(l.text, io.ops(l.path).newId);\n const unresolved = done.unresolved.map((g) => `- ${g.message}`);\n if (done.text === l.text)\n return {\n text: unresolved.length\n ? `No IDs to add, but these keys name no node (fix them, then run again):\\n${unresolved.join('\\n')}`\n : `Nothing to complete: every item has its ID. Revision: ${revisionOf(l.text)}`,\n };\n let written: { text: string; notes: string[] };\n try {\n written = await io.write(l.path, l.text, done.text);\n } catch (e) {\n return fail(`Not written: ${(e as Error).message}`);\n }\n const f = done.filled;\n return {\n text: [\n `Completed IDs in ${l.path}: ${f.nodes} node(s), ${f.wires} wire(s), ${f.refs} reference(s) by key.`,\n ...written.notes,\n ...(unresolved.length\n ? ['These keys name no node (fix them, then run again):', ...unresolved]\n : []),\n `Revision: ${revisionOf(written.text)}`,\n ].join('\\n'),\n };\n}\n\n/**\n * AFD-25: the flow as a draw.io file (a page per level) or SVG images of its levels, which embed\n * the draw.io file. Positions are what the canvas shows; PNG needs the designer, so not here.\n */\nexport async function flowExport(\n io: FlowIO,\n input: { path?: string; format?: string; level?: string; out?: string },\n): Promise<ToolResult> {\n const format = input.format ?? 'drawio';\n if (format !== 'drawio' && format !== 'svg')\n return fail(\n 'format is drawio or svg. For PNG, the user runs Export as Image in VS Code: the designer draws the text.',\n );\n const l = await load(io, input.path);\n if (isResult(l)) return l;\n if (l.findings.some((f) => f.code === 'missing-id' || f.code === 'unknown-key'))\n return fail(`${l.path} lacks IDs; run flow_complete_ids first`);\n const positions = io.ops(l.path).positions;\n if (!io.writeExport || !positions) return fail('Exports cannot be written here');\n const shown = await positions(l.model);\n const src: ExportSource = {\n doc: { ...l.model.doc, layout: shown.stored },\n shown,\n findings: l.findings,\n openPorts: openFailPorts(l.model),\n };\n const dir = l.path.includes('/') ? l.path.slice(0, l.path.lastIndexOf('/') + 1) : '';\n const key = l.model.doc.flow.key;\n const all = scenesOf(src);\n try {\n if (format === 'drawio') {\n const out = input.out ?? `${dir}${key}.drawio`;\n if (!out.endsWith('.drawio')) return fail('out must end in .drawio');\n const written = await io.writeExport(out, toDrawio(src));\n const subs = all.length - 1;\n return {\n text: [\n `Wrote ${written}: ${all.length} page(s), the top level${subs ? ` and ${subs} subflow(s), each linked from its subflow node` : ''}.`,\n 'Nodes, ports and wires look as on the canvas. Each node carries its key, type, status, intent, binding, inputs, outputs, settings, open ports and problems as draw.io shape data (Edit Data, Ctrl+M; hover shows a summary).',\n 'It opens in draw.io (desktop or app.diagrams.net) and in the Draw.io VS Code extension. The flow file stays the source: export again after changes.',\n ].join('\\n'),\n };\n }\n let scenes = all.filter((s) => s.level === ROOT);\n if (input.level === 'all') scenes = all;\n else if (input.level && input.level !== 'top') {\n const sub = resolveNode(l.model, input.level);\n if (sub.node.type !== 'subflow')\n return fail(\n `${sub.path} is a ${sub.node.type}, not a subflow; level is top, all or a subflow`,\n );\n scenes = all.filter((s) => s.level === sub.id);\n }\n const first = scenes[0];\n if (!first) return fail('That level is not in the flow');\n const out = input.out ?? `${dir}${key}${levelSuffix(first)}.drawio.svg`;\n if (!out.endsWith('.svg')) return fail('out must end in .svg (best .drawio.svg)');\n const ext = out.endsWith('.drawio.svg') ? '.drawio.svg' : '.svg';\n const stem = out.slice(0, -ext.length);\n const base = scenes.length > 1 ? stem.slice(0, stem.length - levelSuffix(first).length) : stem;\n const written: string[] = [];\n for (const scene of scenes) {\n const file = scenes.length > 1 ? `${base}${levelSuffix(scene)}${ext}` : out;\n const svg = sceneSvg(src, scene, { embed: toDrawio(src, { first: scene.level }) });\n written.push(await io.writeExport(file, svg));\n }\n return {\n text: [\n `Wrote ${written.join(', ')}.`,\n 'SVG images in the canvas look, light theme. Each embeds the draw.io diagram (all levels, this one first), so draw.io opens it as an editable diagram with the node details.',\n ].join('\\n'),\n };\n } catch (e) {\n return fail((e as Error).message);\n }\n}\n\n/**\n * AFD-27: existing automation (a playbook, a folder, a role, an AWX export) as text an agent designs\n * from: structure, and per task the exact binding an import writes. Secrets by name only.\n */\nexport async function sourceOutlineTool(\n io: FlowIO,\n input: { path?: string; focus?: string; flow?: string; page?: number; full?: boolean },\n): Promise<ToolResult> {\n const path = input.path?.trim();\n if (!path)\n return fail(\n 'path: a playbook, a folder, a role folder or an AWX export (.json), relative to the workspace',\n );\n const at = io.source?.(path);\n if (!at) return fail('Reading playbooks is not available here');\n const flow =\n input.flow && at.prefix && input.flow.startsWith(at.prefix)\n ? input.flow.slice(at.prefix.length)\n : input.flow;\n try {\n return {\n text: await sourceOutline(at.io, {\n path: at.path,\n ...(input.focus ? { focus: input.focus } : {}),\n ...(input.full === true ? { full: true } : {}),\n ...(flow ? { flow } : {}),\n ...(input.page ? { page: input.page } : {}),\n ...(io.resolveModule ? { resolveModule: io.resolveModule } : {}),\n }),\n };\n } catch (e) {\n return fail((e as Error).message);\n }\n}\n\n/**\n * AFD-27: the as-is import (AFD-26) as a tool: a playbook, or a template of an AWX export, becomes a\n * new flow, one step per task. For an exact copy; an intent-based design is built with flow_new and\n * flow_edit from source_outline instead.\n */\nexport async function flowImport(\n io: FlowIO,\n input: { source?: string; path?: string; template?: string; name?: string },\n): Promise<ToolResult> {\n const given = input.source?.trim().replace(/^\\.\\//, '');\n if (!given)\n return fail('source: a playbook (.yml) or an AWX export (.json), relative to the workspace');\n const at = io.source?.(given);\n if (!at) return fail('Reading playbooks is not available here');\n const src = at.io;\n const source = at.path;\n const stem = slugify(\n (input.template ?? source.split('/').pop() ?? '').replace(/\\.(ya?ml|json)$/, ''),\n 'imported',\n );\n const path = input.path?.trim() || `${at.prefix}flows/${stem}/${stem}.flow.yaml`;\n if (!path.endsWith('.flow.yaml')) return fail('path must end with .flow.yaml');\n const base =\n path\n .split('/')\n .pop()\n ?.replace(/\\.flow\\.yaml$/, '') ?? '';\n const key = SLUG.test(base) ? base : stem;\n const newId = io.ops(path).newId;\n let result: ImportResult;\n if (source.endsWith('.json')) {\n let data: unknown;\n try {\n data = JSON.parse((await src.read(source)) ?? '');\n } catch {\n return fail(`${source} is not readable JSON`);\n }\n const names = exportTemplates(data);\n if (typeof names === 'string') return fail(`${source}: ${names}`);\n const all = [...names.workflows, ...names.jobs];\n const template = input.template ?? (all.length === 1 ? all[0] : undefined);\n if (!template || !all.includes(template))\n return fail(`template: one of ${all.map((n) => `\"${n}\"`).join(', ')}`);\n const job = !names.workflows.includes(template);\n const wf = job\n ? jobTemplateFromExport(data as AwxExport, template)\n : workflowFromExport(data as AwxExport, template);\n const present = new Set<string>();\n const playbooks = new Map<string, PlaybookForm>();\n for (const ref of playbooksOf(wf)) {\n const read = await readPlaybook(src, ref.replace(/^\\.?\\//, ''));\n if (!read.playbook) continue;\n present.add(ref);\n if (read.playbook.plays.length) playbooks.set(ref, read.playbook);\n }\n result = importWorkflow(wf, {\n key,\n newId,\n hasPlaybook: (r) => present.has(r),\n playbooks,\n kind: job ? 'awx_job_template' : 'awx_workflow',\n });\n } else {\n const read = await readPlaybook(\n src,\n source,\n io.resolveModule ? { resolveModule: io.resolveModule } : {},\n );\n if (!read.playbook?.plays.length)\n return fail(\n read.notes.join(' ') || `${source} has no plays: import the playbook that uses it`,\n );\n result = importPlaybook(\n read.playbook,\n {\n key,\n newId,\n generatedDir: generatedDirOf(\n path.startsWith(at.prefix) ? path.slice(at.prefix.length) : path,\n key,\n ),\n ...(input.name ? { name: input.name } : {}),\n },\n read.notes,\n );\n }\n let created: { text: string; notes: string[] };\n try {\n created = await io.create(path, flowText(result.doc));\n } catch (e) {\n return fail((e as Error).message);\n }\n const checked = check(created.text, io.schema);\n if (typeof checked === 'string') return fail(checked);\n const c = result.counts;\n // AFD-189: a compact answer: the notes (capped), problems by code, the top level and the\n // subflows by size; flow_describe and flow_validate page through the rest.\n const notes = result.notes.slice(0, 40);\n const subflows = [...checked.model.nodes.values()]\n .filter((e) => e.node.type === 'subflow' && e.node.subflow?.nodes?.length)\n .map((e) => `${keyPath(checked.model, e.node.id)} (${e.node.subflow?.nodes?.length} node(s))`);\n return {\n text: [\n `Created ${path} from ${source}${input.template ? ` (${input.template})` : ''}: ${c.steps} step(s), ${c.implemented} ready to run, ${c.drafts} to check (the notes say why). One step per task, as the source has them.`,\n ...created.notes,\n ...(notes.length\n ? [\n 'What did not map one to one:',\n ...notes.map((n) => `- ${n}`),\n ...(result.notes.length > notes.length\n ? [`- \u2026 ${result.notes.length - notes.length} more note(s) of the same kinds`]\n : []),\n ]\n : []),\n `Problems: ${countFindings(checked.findings)}`,\n ...(checked.findings.length ? [summarizeFindings(checked.model, checked.findings)] : []),\n describeFlow(checked.model, [], revisionOf(created.text), ROOT, undefined, undefined, {\n brief: true,\n }).replace(/\\n\\nProblems: .*$/, ''),\n ...(subflows.length\n ? [\n '',\n `Subflows (flow_describe with level <key> shows one): ${subflows.slice(0, 60).join(', ')}${subflows.length > 60 ? ', \u2026' : ''}`,\n ]\n : []),\n ].join('\\n'),\n };\n}\n\n/**\n * AFD-189: the largest answer a tool gives. Agents take about 25k tokens per tool result; a\n * larger one is saved to a file they read in pieces.\n */\nexport const MAX_TOOL_TEXT = 40_000;\n\n/** Runs a tool by name: the adapters' single entry point. */\nexport async function runTool(io: FlowIO, name: string, input: unknown): Promise<ToolResult> {\n const r = await runOne(io, name, input);\n if (r.text.length <= MAX_TOOL_TEXT) return r;\n const cut = r.text.lastIndexOf('\\n', MAX_TOOL_TEXT - 400);\n const hint: Record<string, string> = {\n flow_describe: 'level <subflow>, nodes, detail: brief, only_problems or page',\n flow_validate: 'summary: true, code, node or page',\n source_outline: 'page or focus',\n };\n return {\n ...r,\n text: `${r.text.slice(0, cut > 0 ? cut : MAX_TOOL_TEXT - 400)}\\n\u2026 cut: ${r.text.length - (cut > 0 ? cut : MAX_TOOL_TEXT - 400)} more characters. Ask for less: ${hint[name] ?? 'a narrower request'}.`,\n };\n}\n\nasync function runOne(io: FlowIO, name: string, input: unknown): Promise<ToolResult> {\n let args = (input && typeof input === 'object' ? input : {}) as Record<string, never>;\n // AFD-209: source_outline calls the flow it will write `flow` (its `path` is the playbook); an\n // agent coming from it passes `flow:` to the flow tools, which call the flow `path`.\n const named = args as Record<string, unknown>;\n if (name !== 'source_outline' && named.path === undefined && typeof named.flow === 'string')\n args = { ...named, path: named.flow } as unknown as Record<string, never>;\n switch (name) {\n case 'flow_list':\n return flowList(io);\n case 'flow_describe':\n return flowDescribe(io, args);\n case 'flow_validate':\n return flowValidate(io, args);\n case 'flow_reference':\n return flowReference(args);\n case 'flow_edit':\n return flowEdit(io, args);\n case 'flow_new':\n return flowNew(io, args);\n case 'flow_complete_ids':\n return flowCompleteIds(io, args);\n case 'flow_export':\n return flowExport(io, args);\n case 'source_outline':\n return sourceOutlineTool(io, args);\n case 'flow_import':\n return flowImport(io, args);\n case 'inventory':\n return inventoryTool(io.inventory, args as InventoryInput);\n case 'flow_scenarios': {\n const l = await load(io, (args as { path?: string }).path);\n if (isResult(l)) return l;\n if (l.findings.some((f) => f.code === 'missing-id'))\n return fail(`${l.path} was written by hand: run flow_complete_ids first`);\n return scenariosTool(io, { path: l.path, doc: l.model.doc }, args as ScenariosInput);\n }\n }\n return fail(`Unknown tool ${name}`);\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["written", "checked", "out"]
7
7
  }
package/dist/ai/ops.js CHANGED
@@ -2,28 +2,28 @@ import {
2
2
  OpError,
3
3
  applyOps,
4
4
  opLabel
5
- } from "../chunks/chunk-ABYJBONR.js";
6
- import "../chunks/chunk-T5UB4MBB.js";
5
+ } from "../chunks/chunk-ZXUXX3YY.js";
6
+ import "../chunks/chunk-TOTSB4HG.js";
7
7
  import "../chunks/chunk-SN7X6FYV.js";
8
8
  import "../chunks/chunk-24G5UVEF.js";
9
9
  import "../chunks/chunk-CORZL72E.js";
10
10
  import "../chunks/chunk-75QLJHZ5.js";
11
11
  import "../chunks/chunk-LMTTJDCC.js";
12
- import "../chunks/chunk-BXJOUAXV.js";
12
+ import "../chunks/chunk-TEJARYAE.js";
13
13
  import "../chunks/chunk-SD6TCN3P.js";
14
- import "../chunks/chunk-72LO6GQE.js";
15
- import "../chunks/chunk-4RMWFRWG.js";
14
+ import "../chunks/chunk-KXD6FX2Z.js";
15
+ import "../chunks/chunk-LELKMVJG.js";
16
16
  import "../chunks/chunk-X4UNEUME.js";
17
17
  import "../chunks/chunk-RLCV7OFW.js";
18
- import "../chunks/chunk-2QQC4IZ7.js";
18
+ import "../chunks/chunk-PNLY5IWM.js";
19
19
  import "../chunks/chunk-OREXQ4IZ.js";
20
20
  import "../chunks/chunk-KSM4O2XL.js";
21
- import "../chunks/chunk-T6SZLRDM.js";
22
21
  import "../chunks/chunk-7D55CRGU.js";
23
22
  import "../chunks/chunk-GK3SD3WE.js";
24
23
  import "../chunks/chunk-H6ARLMMI.js";
25
24
  import "../chunks/chunk-TG3C3GIL.js";
26
25
  import "../chunks/chunk-WISXIO3I.js";
26
+ import "../chunks/chunk-FIKPXL6E.js";
27
27
  import "../chunks/chunk-WG7O3OBV.js";
28
28
  import "../chunks/chunk-NUGJSYSP.js";
29
29
  import "../chunks/chunk-XRGZNPPO.js";
@@ -36,6 +36,7 @@ import "../chunks/chunk-HFHXHOBC.js";
36
36
  import "../chunks/chunk-RKLF3DLT.js";
37
37
  import "../chunks/chunk-GTHXWNCC.js";
38
38
  import "../chunks/chunk-OEQXGULI.js";
39
+ import "../chunks/chunk-T6SZLRDM.js";
39
40
  import "../chunks/chunk-AJRIS5VY.js";
40
41
  import "../chunks/chunk-GQ2W4RTY.js";
41
42
  import "../chunks/chunk-BVEW6MKL.js";
@@ -7,8 +7,8 @@ import {
7
7
  problemsReference,
8
8
  reference,
9
9
  referenceFiles
10
- } from "../chunks/chunk-C6SQEXL5.js";
11
- import "../chunks/chunk-76T45V37.js";
10
+ } from "../chunks/chunk-CNQ7M7HA.js";
11
+ import "../chunks/chunk-TBFB7A2Z.js";
12
12
  import "../chunks/chunk-SELZNC6A.js";
13
13
  import "../chunks/chunk-A2VWJAFE.js";
14
14
  import "../chunks/chunk-3DHWUD35.js";
@@ -3,23 +3,25 @@ import {
3
3
  scenarioProblemLines,
4
4
  scenariosLine,
5
5
  scenariosTool
6
- } from "../chunks/chunk-DHU774ES.js";
6
+ } from "../chunks/chunk-2KB3J3R5.js";
7
7
  import "../chunks/chunk-FTJ6VOQL.js";
8
8
  import "../chunks/chunk-2PSB652B.js";
9
- import "../chunks/chunk-CM23ODBB.js";
10
- import "../chunks/chunk-7GLSXIZ3.js";
11
- import "../chunks/chunk-23ISDYUS.js";
9
+ import "../chunks/chunk-J5LYSQ3L.js";
10
+ import "../chunks/chunk-BSX6G7QY.js";
12
11
  import "../chunks/chunk-TH6ICGA5.js";
12
+ import "../chunks/chunk-23ISDYUS.js";
13
13
  import "../chunks/chunk-KOG6OURH.js";
14
- import "../chunks/chunk-CXVJWFGT.js";
14
+ import "../chunks/chunk-WTVGCMGV.js";
15
15
  import "../chunks/chunk-OEEHAY5X.js";
16
16
  import "../chunks/chunk-LPBLGBDT.js";
17
- import "../chunks/chunk-6MLYGFT6.js";
18
- import "../chunks/chunk-ZAYNYPCX.js";
17
+ import "../chunks/chunk-XJAMBKE3.js";
18
+ import "../chunks/chunk-OJZSZBHW.js";
19
+ import "../chunks/chunk-ARA3VJR2.js";
19
20
  import "../chunks/chunk-56VTJ6YF.js";
21
+ import "../chunks/chunk-LNFMYJUJ.js";
20
22
  import "../chunks/chunk-BAZIS67B.js";
21
23
  import "../chunks/chunk-X3DEH47B.js";
22
- import "../chunks/chunk-T5UB4MBB.js";
24
+ import "../chunks/chunk-TOTSB4HG.js";
23
25
  import "../chunks/chunk-SN7X6FYV.js";
24
26
  import "../chunks/chunk-24G5UVEF.js";
25
27
  import "../chunks/chunk-CORZL72E.js";
@@ -30,6 +32,7 @@ import "../chunks/chunk-GK3SD3WE.js";
30
32
  import "../chunks/chunk-H6ARLMMI.js";
31
33
  import "../chunks/chunk-TG3C3GIL.js";
32
34
  import "../chunks/chunk-WISXIO3I.js";
35
+ import "../chunks/chunk-FIKPXL6E.js";
33
36
  import "../chunks/chunk-WG7O3OBV.js";
34
37
  import "../chunks/chunk-NUGJSYSP.js";
35
38
  import "../chunks/chunk-XRGZNPPO.js";
@@ -42,6 +45,7 @@ import "../chunks/chunk-HFHXHOBC.js";
42
45
  import "../chunks/chunk-RKLF3DLT.js";
43
46
  import "../chunks/chunk-GTHXWNCC.js";
44
47
  import "../chunks/chunk-OEQXGULI.js";
48
+ import "../chunks/chunk-T6SZLRDM.js";
45
49
  import "../chunks/chunk-AJRIS5VY.js";
46
50
  import "../chunks/chunk-GQ2W4RTY.js";
47
51
  import "../chunks/chunk-BVEW6MKL.js";
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  expandable,
3
3
  importWorkflow
4
- } from "../chunks/chunk-NT62IE3Y.js";
5
- import "../chunks/chunk-H7Z2FBRD.js";
6
- import "../chunks/chunk-LNFMYJUJ.js";
7
- import "../chunks/chunk-5CD65KH3.js";
4
+ } from "../chunks/chunk-CNYGDBID.js";
5
+ import "../chunks/chunk-CATQHJS6.js";
8
6
  import "../chunks/chunk-6L43PFIN.js";
7
+ import "../chunks/chunk-5CD65KH3.js";
9
8
  import "../chunks/chunk-PDUQ3KMW.js";
9
+ import "../chunks/chunk-LNFMYJUJ.js";
10
10
  import "../chunks/chunk-BAZIS67B.js";
11
11
  import "../chunks/chunk-TC7FOG4T.js";
12
12
  import "../chunks/chunk-75QLJHZ5.js";
13
13
  import "../chunks/chunk-LMTTJDCC.js";
14
- import "../chunks/chunk-2QQC4IZ7.js";
14
+ import "../chunks/chunk-PNLY5IWM.js";
15
15
  import "../chunks/chunk-OREXQ4IZ.js";
16
16
  import "../chunks/chunk-KSM4O2XL.js";
17
- import "../chunks/chunk-T6SZLRDM.js";
18
17
  import "../chunks/chunk-7D55CRGU.js";
19
18
  import "../chunks/chunk-GK3SD3WE.js";
20
19
  import "../chunks/chunk-H6ARLMMI.js";
21
20
  import "../chunks/chunk-TG3C3GIL.js";
22
21
  import "../chunks/chunk-WISXIO3I.js";
22
+ import "../chunks/chunk-FIKPXL6E.js";
23
23
  import "../chunks/chunk-WG7O3OBV.js";
24
24
  import "../chunks/chunk-NUGJSYSP.js";
25
25
  import "../chunks/chunk-XRGZNPPO.js";
@@ -32,6 +32,7 @@ import "../chunks/chunk-HFHXHOBC.js";
32
32
  import "../chunks/chunk-RKLF3DLT.js";
33
33
  import "../chunks/chunk-GTHXWNCC.js";
34
34
  import "../chunks/chunk-OEQXGULI.js";
35
+ import "../chunks/chunk-T6SZLRDM.js";
35
36
  import "../chunks/chunk-AJRIS5VY.js";
36
37
  import {
37
38
  duration
@@ -78,6 +78,8 @@ export interface RefChoice {
78
78
  expose?: {
79
79
  node: Ulid;
80
80
  output: string;
81
+ /** AFD-287: the output it becomes (a fact: no `from:`); else the whole registered result. */
82
+ field?: ContractField;
81
83
  };
82
84
  /**
83
85
  * AFD-108 (wave 10: Z1): set when the choice is a module step's whole result: the fields its
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  MAGIC_VARS
3
- } from "../chunks/chunk-2QQC4IZ7.js";
3
+ } from "../chunks/chunk-PNLY5IWM.js";
4
4
  import "../chunks/chunk-OREXQ4IZ.js";
5
5
  import "../chunks/chunk-KSM4O2XL.js";
6
- import {
7
- documentedOptions
8
- } from "../chunks/chunk-T6SZLRDM.js";
9
6
  import "../chunks/chunk-7D55CRGU.js";
10
7
  import "../chunks/chunk-GK3SD3WE.js";
11
8
  import "../chunks/chunk-H6ARLMMI.js";
12
9
  import "../chunks/chunk-TG3C3GIL.js";
13
10
  import "../chunks/chunk-WISXIO3I.js";
11
+ import {
12
+ setFactNames
13
+ } from "../chunks/chunk-FIKPXL6E.js";
14
14
  import "../chunks/chunk-WG7O3OBV.js";
15
15
  import "../chunks/chunk-NUGJSYSP.js";
16
16
  import "../chunks/chunk-XRGZNPPO.js";
@@ -23,6 +23,9 @@ import "../chunks/chunk-HFHXHOBC.js";
23
23
  import "../chunks/chunk-RKLF3DLT.js";
24
24
  import "../chunks/chunk-GTHXWNCC.js";
25
25
  import "../chunks/chunk-OEQXGULI.js";
26
+ import {
27
+ documentedOptions
28
+ } from "../chunks/chunk-T6SZLRDM.js";
26
29
  import {
27
30
  registerName
28
31
  } from "../chunks/chunk-AJRIS5VY.js";
@@ -324,6 +327,22 @@ function refChoices(model, node, fieldsOf) {
324
327
  }
325
328
  };
326
329
  for (const up of upstream) if (up.type === "subflow") inside(up, up.key);
330
+ for (const up of upstream)
331
+ for (const fact of setFactNames(up.impl)) {
332
+ if (up.outputs?.[fact]) continue;
333
+ const from = `${up.key}.${fact}`;
334
+ if (sources.has(from)) continue;
335
+ sources.add(from);
336
+ const as = freeName(fact, taken);
337
+ taken.add(as);
338
+ out.push({
339
+ name: as,
340
+ label: from,
341
+ detail: `fact set by "${up.title}" \xB7 makes it an output there`,
342
+ field: { type: "any", from },
343
+ expose: { node: up.id, output: fact, field: { type: "any" } }
344
+ });
345
+ }
327
346
  for (const up of upstream) {
328
347
  if (up.impl?.kind !== "module") continue;
329
348
  if (Object.values(up.outputs ?? {}).some((f) => f?.from === "impl.register")) continue;