wingfoil 0.2.1 → 0.3.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 (452) hide show
  1. package/README.md +88 -42
  2. package/dist/agent/discovery.d.ts +72 -0
  3. package/dist/agent/discovery.d.ts.map +1 -0
  4. package/dist/agent/discovery.js +210 -0
  5. package/dist/agent/discovery.js.map +1 -0
  6. package/dist/agent/execute.d.ts +206 -0
  7. package/dist/agent/execute.d.ts.map +1 -0
  8. package/dist/agent/execute.js +581 -0
  9. package/dist/agent/execute.js.map +1 -0
  10. package/dist/agent/index.d.ts +23 -0
  11. package/dist/agent/index.d.ts.map +1 -0
  12. package/dist/agent/index.js +85 -0
  13. package/dist/agent/index.js.map +1 -0
  14. package/dist/agent/launch.d.ts +133 -0
  15. package/dist/agent/launch.d.ts.map +1 -0
  16. package/dist/agent/launch.js +380 -0
  17. package/dist/agent/launch.js.map +1 -0
  18. package/dist/agent/manifest.d.ts +30 -0
  19. package/dist/agent/manifest.d.ts.map +1 -0
  20. package/dist/agent/manifest.js +93 -0
  21. package/dist/agent/manifest.js.map +1 -0
  22. package/dist/agent/placeholders.d.ts +49 -0
  23. package/dist/agent/placeholders.d.ts.map +1 -0
  24. package/dist/agent/placeholders.js +177 -0
  25. package/dist/agent/placeholders.js.map +1 -0
  26. package/dist/agent/run-log.d.ts +254 -0
  27. package/dist/agent/run-log.d.ts.map +1 -0
  28. package/dist/agent/run-log.js +612 -0
  29. package/dist/agent/run-log.js.map +1 -0
  30. package/dist/agent/schema.d.ts +100 -0
  31. package/dist/agent/schema.d.ts.map +1 -0
  32. package/dist/agent/schema.js +89 -0
  33. package/dist/agent/schema.js.map +1 -0
  34. package/dist/agent/step.d.ts +41 -0
  35. package/dist/agent/step.d.ts.map +1 -0
  36. package/dist/agent/step.js +95 -0
  37. package/dist/agent/step.js.map +1 -0
  38. package/dist/build-info.json +4 -0
  39. package/dist/cli/error.d.ts +11 -2
  40. package/dist/cli/error.d.ts.map +1 -1
  41. package/dist/cli/error.js +27 -6
  42. package/dist/cli/error.js.map +1 -1
  43. package/dist/cli/exit.d.ts +33 -3
  44. package/dist/cli/exit.d.ts.map +1 -1
  45. package/dist/cli/exit.js +54 -3
  46. package/dist/cli/exit.js.map +1 -1
  47. package/dist/cli/index.d.ts +2 -2
  48. package/dist/cli/index.d.ts.map +1 -1
  49. package/dist/cli/index.js +3 -2
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/cli/init-command.d.ts.map +1 -1
  52. package/dist/cli/init-command.js +6 -3
  53. package/dist/cli/init-command.js.map +1 -1
  54. package/dist/cli/mcp-command.d.ts +13 -4
  55. package/dist/cli/mcp-command.d.ts.map +1 -1
  56. package/dist/cli/mcp-command.js +25 -8
  57. package/dist/cli/mcp-command.js.map +1 -1
  58. package/dist/cli/output.d.ts +12 -4
  59. package/dist/cli/output.d.ts.map +1 -1
  60. package/dist/cli/output.js +15 -4
  61. package/dist/cli/output.js.map +1 -1
  62. package/dist/cli/program.d.ts +1 -1
  63. package/dist/cli/program.d.ts.map +1 -1
  64. package/dist/cli/program.js +270 -60
  65. package/dist/cli/program.js.map +1 -1
  66. package/dist/cli/registrar.d.ts +16 -7
  67. package/dist/cli/registrar.d.ts.map +1 -1
  68. package/dist/cli/registrar.js +71 -6
  69. package/dist/cli/registrar.js.map +1 -1
  70. package/dist/cli/suggest.d.ts +20 -0
  71. package/dist/cli/suggest.d.ts.map +1 -0
  72. package/dist/cli/suggest.js +49 -0
  73. package/dist/cli/suggest.js.map +1 -0
  74. package/dist/cli/warning.d.ts +26 -0
  75. package/dist/cli/warning.d.ts.map +1 -0
  76. package/dist/cli/warning.js +66 -0
  77. package/dist/cli/warning.js.map +1 -0
  78. package/dist/cli.js +11 -2
  79. package/dist/cli.js.map +1 -1
  80. package/dist/core/agent-execute.d.ts +44 -0
  81. package/dist/core/agent-execute.d.ts.map +1 -0
  82. package/dist/core/agent-execute.js +71 -0
  83. package/dist/core/agent-execute.js.map +1 -0
  84. package/dist/core/agent-list.d.ts +95 -0
  85. package/dist/core/agent-list.d.ts.map +1 -0
  86. package/dist/core/agent-list.js +207 -0
  87. package/dist/core/agent-list.js.map +1 -0
  88. package/dist/core/agent-show.d.ts +44 -0
  89. package/dist/core/agent-show.d.ts.map +1 -0
  90. package/dist/core/agent-show.js +188 -0
  91. package/dist/core/agent-show.js.map +1 -0
  92. package/dist/core/approval-authority.d.ts +17 -14
  93. package/dist/core/approval-authority.d.ts.map +1 -1
  94. package/dist/core/approval-authority.js +9 -9
  95. package/dist/core/approval-authority.js.map +1 -1
  96. package/dist/core/builtin-asset.d.ts +18 -15
  97. package/dist/core/builtin-asset.d.ts.map +1 -1
  98. package/dist/core/builtin-asset.js +17 -14
  99. package/dist/core/builtin-asset.js.map +1 -1
  100. package/dist/core/builtin-integrity.d.ts +12 -2
  101. package/dist/core/builtin-integrity.d.ts.map +1 -1
  102. package/dist/core/builtin-integrity.js +85 -9
  103. package/dist/core/builtin-integrity.js.map +1 -1
  104. package/dist/core/confinement.d.ts +3 -1
  105. package/dist/core/confinement.d.ts.map +1 -1
  106. package/dist/core/confinement.js +7 -4
  107. package/dist/core/confinement.js.map +1 -1
  108. package/dist/core/context.d.ts +150 -98
  109. package/dist/core/context.d.ts.map +1 -1
  110. package/dist/core/context.js +602 -66
  111. package/dist/core/context.js.map +1 -1
  112. package/dist/core/directive-assign.d.ts +33 -7
  113. package/dist/core/directive-assign.d.ts.map +1 -1
  114. package/dist/core/directive-assign.js +67 -27
  115. package/dist/core/directive-assign.js.map +1 -1
  116. package/dist/core/directive-scope.d.ts +36 -0
  117. package/dist/core/directive-scope.d.ts.map +1 -0
  118. package/dist/core/directive-scope.js +34 -0
  119. package/dist/core/directive-scope.js.map +1 -0
  120. package/dist/core/directives-list.d.ts +13 -3
  121. package/dist/core/directives-list.d.ts.map +1 -1
  122. package/dist/core/directives-list.js +18 -6
  123. package/dist/core/directives-list.js.map +1 -1
  124. package/dist/core/dry-run.d.ts +33 -0
  125. package/dist/core/dry-run.d.ts.map +1 -0
  126. package/dist/core/dry-run.js +45 -0
  127. package/dist/core/dry-run.js.map +1 -0
  128. package/dist/core/element-ref.d.ts +23 -0
  129. package/dist/core/element-ref.d.ts.map +1 -0
  130. package/dist/core/element-ref.js +24 -0
  131. package/dist/core/element-ref.js.map +1 -0
  132. package/dist/core/error-details.d.ts +20 -0
  133. package/dist/core/error-details.d.ts.map +1 -0
  134. package/dist/core/error-details.js +65 -0
  135. package/dist/core/error-details.js.map +1 -0
  136. package/dist/core/exit-code.js +6 -6
  137. package/dist/core/git-identity.d.ts +46 -11
  138. package/dist/core/git-identity.d.ts.map +1 -1
  139. package/dist/core/git-identity.js +140 -27
  140. package/dist/core/git-identity.js.map +1 -1
  141. package/dist/core/index.d.ts +189 -14
  142. package/dist/core/index.d.ts.map +1 -1
  143. package/dist/core/index.js +1241 -238
  144. package/dist/core/index.js.map +1 -1
  145. package/dist/core/init.d.ts +50 -8
  146. package/dist/core/init.d.ts.map +1 -1
  147. package/dist/core/init.js +139 -27
  148. package/dist/core/init.js.map +1 -1
  149. package/dist/core/loaders.d.ts +170 -14
  150. package/dist/core/loaders.d.ts.map +1 -1
  151. package/dist/core/loaders.js +570 -89
  152. package/dist/core/loaders.js.map +1 -1
  153. package/dist/core/memory-add-link.d.ts +28 -0
  154. package/dist/core/memory-add-link.d.ts.map +1 -0
  155. package/dist/core/memory-add-link.js +67 -0
  156. package/dist/core/memory-add-link.js.map +1 -0
  157. package/dist/core/memory-add-type.d.ts +25 -1
  158. package/dist/core/memory-add-type.d.ts.map +1 -1
  159. package/dist/core/memory-add-type.js +59 -1
  160. package/dist/core/memory-add-type.js.map +1 -1
  161. package/dist/core/memory-amend.d.ts +80 -0
  162. package/dist/core/memory-amend.d.ts.map +1 -0
  163. package/dist/core/memory-amend.js +160 -0
  164. package/dist/core/memory-amend.js.map +1 -0
  165. package/dist/core/memory-supersede.d.ts +28 -0
  166. package/dist/core/memory-supersede.d.ts.map +1 -0
  167. package/dist/core/memory-supersede.js +79 -0
  168. package/dist/core/memory-supersede.js.map +1 -0
  169. package/dist/core/memory-transition.d.ts +190 -30
  170. package/dist/core/memory-transition.d.ts.map +1 -1
  171. package/dist/core/memory-transition.js +480 -59
  172. package/dist/core/memory-transition.js.map +1 -1
  173. package/dist/core/registry.d.ts +147 -23
  174. package/dist/core/registry.d.ts.map +1 -1
  175. package/dist/core/registry.js +50 -0
  176. package/dist/core/registry.js.map +1 -1
  177. package/dist/core/relevance.d.ts +74 -12
  178. package/dist/core/relevance.d.ts.map +1 -1
  179. package/dist/core/relevance.js +45 -27
  180. package/dist/core/relevance.js.map +1 -1
  181. package/dist/core/require-reason.d.ts.map +1 -1
  182. package/dist/core/require-reason.js +6 -5
  183. package/dist/core/require-reason.js.map +1 -1
  184. package/dist/core/required-fields.d.ts +28 -0
  185. package/dist/core/required-fields.d.ts.map +1 -0
  186. package/dist/core/required-fields.js +60 -0
  187. package/dist/core/required-fields.js.map +1 -0
  188. package/dist/core/revision.d.ts +82 -0
  189. package/dist/core/revision.d.ts.map +1 -0
  190. package/dist/core/revision.js +144 -0
  191. package/dist/core/revision.js.map +1 -0
  192. package/dist/core/types.d.ts +28 -2
  193. package/dist/core/types.d.ts.map +1 -1
  194. package/dist/core/types.js +12 -3
  195. package/dist/core/types.js.map +1 -1
  196. package/dist/core/workflow-core-checks.d.ts +34 -0
  197. package/dist/core/workflow-core-checks.d.ts.map +1 -0
  198. package/dist/core/workflow-core-checks.js +403 -0
  199. package/dist/core/workflow-core-checks.js.map +1 -0
  200. package/dist/core/workflow-create-remove.d.ts +65 -0
  201. package/dist/core/workflow-create-remove.d.ts.map +1 -0
  202. package/dist/core/workflow-create-remove.js +277 -0
  203. package/dist/core/workflow-create-remove.js.map +1 -0
  204. package/dist/core/workflow-deduction.d.ts +48 -0
  205. package/dist/core/workflow-deduction.d.ts.map +1 -0
  206. package/dist/core/workflow-deduction.js +523 -0
  207. package/dist/core/workflow-deduction.js.map +1 -0
  208. package/dist/core/workflow-diagnostics.d.ts +83 -0
  209. package/dist/core/workflow-diagnostics.d.ts.map +1 -0
  210. package/dist/core/workflow-diagnostics.js +375 -0
  211. package/dist/core/workflow-diagnostics.js.map +1 -0
  212. package/dist/core/workflow-exit-state.d.ts +125 -0
  213. package/dist/core/workflow-exit-state.d.ts.map +1 -0
  214. package/dist/core/workflow-exit-state.js +243 -0
  215. package/dist/core/workflow-exit-state.js.map +1 -0
  216. package/dist/core/workflow-finalize.d.ts +37 -0
  217. package/dist/core/workflow-finalize.d.ts.map +1 -0
  218. package/dist/core/workflow-finalize.js +153 -0
  219. package/dist/core/workflow-finalize.js.map +1 -0
  220. package/dist/core/workflow-list-show.d.ts +176 -0
  221. package/dist/core/workflow-list-show.d.ts.map +1 -0
  222. package/dist/core/workflow-list-show.js +268 -0
  223. package/dist/core/workflow-list-show.js.map +1 -0
  224. package/dist/core/workflow-next.d.ts +268 -0
  225. package/dist/core/workflow-next.d.ts.map +1 -0
  226. package/dist/core/workflow-next.js +503 -0
  227. package/dist/core/workflow-next.js.map +1 -0
  228. package/dist/core/workflow-registry.d.ts +52 -0
  229. package/dist/core/workflow-registry.d.ts.map +1 -0
  230. package/dist/core/workflow-registry.js +158 -0
  231. package/dist/core/workflow-registry.js.map +1 -0
  232. package/dist/core/workflow-start-end.d.ts +71 -0
  233. package/dist/core/workflow-start-end.d.ts.map +1 -0
  234. package/dist/core/workflow-start-end.js +298 -0
  235. package/dist/core/workflow-start-end.js.map +1 -0
  236. package/dist/core/workflow-status.d.ts +83 -0
  237. package/dist/core/workflow-status.d.ts.map +1 -0
  238. package/dist/core/workflow-status.js +125 -0
  239. package/dist/core/workflow-status.js.map +1 -0
  240. package/dist/core/write-guard.d.ts +51 -8
  241. package/dist/core/write-guard.d.ts.map +1 -1
  242. package/dist/core/write-guard.js +139 -9
  243. package/dist/core/write-guard.js.map +1 -1
  244. package/dist/directives/index.d.ts +3 -2
  245. package/dist/directives/index.d.ts.map +1 -1
  246. package/dist/directives/index.js +5 -3
  247. package/dist/directives/index.js.map +1 -1
  248. package/dist/directives/schema.d.ts +35 -30
  249. package/dist/directives/schema.d.ts.map +1 -1
  250. package/dist/directives/schema.js +36 -30
  251. package/dist/directives/schema.js.map +1 -1
  252. package/dist/directives/version.d.ts +28 -0
  253. package/dist/directives/version.d.ts.map +1 -0
  254. package/dist/directives/version.js +51 -0
  255. package/dist/directives/version.js.map +1 -0
  256. package/dist/dna/edit.d.ts +7 -6
  257. package/dist/dna/edit.d.ts.map +1 -1
  258. package/dist/dna/edit.js +96 -41
  259. package/dist/dna/edit.js.map +1 -1
  260. package/dist/dna/mutate.js +18 -3
  261. package/dist/dna/mutate.js.map +1 -1
  262. package/dist/dna/path.d.ts +2 -2
  263. package/dist/dna/roles.d.ts +1 -1
  264. package/dist/dna/schema.d.ts +61 -3
  265. package/dist/dna/schema.d.ts.map +1 -1
  266. package/dist/dna/schema.js +121 -6
  267. package/dist/dna/schema.js.map +1 -1
  268. package/dist/mcp/dna-resource.d.ts.map +1 -1
  269. package/dist/mcp/dna-resource.js +4 -4
  270. package/dist/mcp/dna-resource.js.map +1 -1
  271. package/dist/mcp/index.d.ts +9 -5
  272. package/dist/mcp/index.d.ts.map +1 -1
  273. package/dist/mcp/index.js +13 -2
  274. package/dist/mcp/index.js.map +1 -1
  275. package/dist/mcp/memory-resource.d.ts.map +1 -1
  276. package/dist/mcp/memory-resource.js +30 -19
  277. package/dist/mcp/memory-resource.js.map +1 -1
  278. package/dist/mcp/prompt.d.ts +61 -24
  279. package/dist/mcp/prompt.d.ts.map +1 -1
  280. package/dist/mcp/prompt.js +176 -47
  281. package/dist/mcp/prompt.js.map +1 -1
  282. package/dist/mcp/read-only.d.ts +39 -0
  283. package/dist/mcp/read-only.d.ts.map +1 -1
  284. package/dist/mcp/read-only.js +61 -0
  285. package/dist/mcp/read-only.js.map +1 -1
  286. package/dist/mcp/registrar.d.ts +10 -0
  287. package/dist/mcp/registrar.d.ts.map +1 -1
  288. package/dist/mcp/registrar.js +48 -12
  289. package/dist/mcp/registrar.js.map +1 -1
  290. package/dist/mcp/server.d.ts +21 -14
  291. package/dist/mcp/server.d.ts.map +1 -1
  292. package/dist/mcp/server.js +41 -15
  293. package/dist/mcp/server.js.map +1 -1
  294. package/dist/mcp/session-resource.d.ts +13 -0
  295. package/dist/mcp/session-resource.d.ts.map +1 -0
  296. package/dist/mcp/session-resource.js +65 -0
  297. package/dist/mcp/session-resource.js.map +1 -0
  298. package/dist/mcp/workflow-resource.d.ts +18 -0
  299. package/dist/mcp/workflow-resource.d.ts.map +1 -1
  300. package/dist/mcp/workflow-resource.js +37 -8
  301. package/dist/mcp/workflow-resource.js.map +1 -1
  302. package/dist/memory/add.d.ts +160 -17
  303. package/dist/memory/add.d.ts.map +1 -1
  304. package/dist/memory/add.js +361 -51
  305. package/dist/memory/add.js.map +1 -1
  306. package/dist/memory/audit.d.ts +165 -32
  307. package/dist/memory/audit.d.ts.map +1 -1
  308. package/dist/memory/audit.js +267 -97
  309. package/dist/memory/audit.js.map +1 -1
  310. package/dist/memory/commit-message.d.ts +60 -38
  311. package/dist/memory/commit-message.d.ts.map +1 -1
  312. package/dist/memory/commit-message.js +167 -21
  313. package/dist/memory/commit-message.js.map +1 -1
  314. package/dist/memory/entry.d.ts.map +1 -1
  315. package/dist/memory/entry.js +1 -2
  316. package/dist/memory/entry.js.map +1 -1
  317. package/dist/memory/frontmatter-edit.d.ts +16 -4
  318. package/dist/memory/frontmatter-edit.d.ts.map +1 -1
  319. package/dist/memory/frontmatter-edit.js +13 -1
  320. package/dist/memory/frontmatter-edit.js.map +1 -1
  321. package/dist/memory/git-log.d.ts +18 -6
  322. package/dist/memory/git-log.d.ts.map +1 -1
  323. package/dist/memory/git-log.js +40 -13
  324. package/dist/memory/git-log.js.map +1 -1
  325. package/dist/memory/history.d.ts +74 -13
  326. package/dist/memory/history.d.ts.map +1 -1
  327. package/dist/memory/history.js +129 -45
  328. package/dist/memory/history.js.map +1 -1
  329. package/dist/memory/index.d.ts +13 -11
  330. package/dist/memory/index.d.ts.map +1 -1
  331. package/dist/memory/index.js +38 -3
  332. package/dist/memory/index.js.map +1 -1
  333. package/dist/memory/query.d.ts +161 -19
  334. package/dist/memory/query.d.ts.map +1 -1
  335. package/dist/memory/query.js +435 -55
  336. package/dist/memory/query.js.map +1 -1
  337. package/dist/memory/schema.d.ts +52 -3
  338. package/dist/memory/schema.d.ts.map +1 -1
  339. package/dist/memory/schema.js +132 -8
  340. package/dist/memory/schema.js.map +1 -1
  341. package/dist/memory/state-machine.d.ts +65 -10
  342. package/dist/memory/state-machine.d.ts.map +1 -1
  343. package/dist/memory/state-machine.js +136 -48
  344. package/dist/memory/state-machine.js.map +1 -1
  345. package/dist/memory/submit.d.ts +52 -3
  346. package/dist/memory/submit.d.ts.map +1 -1
  347. package/dist/memory/submit.js +118 -11
  348. package/dist/memory/submit.js.map +1 -1
  349. package/dist/storage/build-stamp.d.ts +18 -0
  350. package/dist/storage/build-stamp.d.ts.map +1 -0
  351. package/dist/storage/build-stamp.js +68 -0
  352. package/dist/storage/build-stamp.js.map +1 -0
  353. package/dist/storage/builtin-adapters.d.ts +32 -0
  354. package/dist/storage/builtin-adapters.d.ts.map +1 -0
  355. package/dist/storage/builtin-adapters.js +100 -0
  356. package/dist/storage/builtin-adapters.js.map +1 -0
  357. package/dist/storage/builtin-directives.d.ts +0 -29
  358. package/dist/storage/builtin-directives.d.ts.map +1 -1
  359. package/dist/storage/builtin-directives.js +9 -4
  360. package/dist/storage/builtin-directives.js.map +1 -1
  361. package/dist/storage/commit.d.ts +310 -3
  362. package/dist/storage/commit.d.ts.map +1 -1
  363. package/dist/storage/commit.js +807 -33
  364. package/dist/storage/commit.js.map +1 -1
  365. package/dist/storage/document.d.ts +6 -0
  366. package/dist/storage/document.d.ts.map +1 -1
  367. package/dist/storage/document.js +10 -1
  368. package/dist/storage/document.js.map +1 -1
  369. package/dist/storage/dry-run.d.ts +65 -0
  370. package/dist/storage/dry-run.d.ts.map +1 -0
  371. package/dist/storage/dry-run.js +150 -0
  372. package/dist/storage/dry-run.js.map +1 -0
  373. package/dist/storage/errors.d.ts +26 -0
  374. package/dist/storage/errors.d.ts.map +1 -1
  375. package/dist/storage/errors.js +27 -1
  376. package/dist/storage/errors.js.map +1 -1
  377. package/dist/storage/frontmatter.d.ts +1 -1
  378. package/dist/storage/frontmatter.js +1 -1
  379. package/dist/storage/git-read.d.ts +64 -0
  380. package/dist/storage/git-read.d.ts.map +1 -0
  381. package/dist/storage/git-read.js +107 -0
  382. package/dist/storage/git-read.js.map +1 -0
  383. package/dist/storage/index.d.ts +13 -5
  384. package/dist/storage/index.d.ts.map +1 -1
  385. package/dist/storage/index.js +39 -2
  386. package/dist/storage/index.js.map +1 -1
  387. package/dist/storage/layout.d.ts +2 -2
  388. package/dist/storage/layout.d.ts.map +1 -1
  389. package/dist/storage/layout.js +2 -7
  390. package/dist/storage/layout.js.map +1 -1
  391. package/dist/storage/memory-path.d.ts +18 -5
  392. package/dist/storage/memory-path.d.ts.map +1 -1
  393. package/dist/storage/memory-path.js +41 -5
  394. package/dist/storage/memory-path.js.map +1 -1
  395. package/dist/storage/snapshot.js +1 -1
  396. package/dist/storage/templates.d.ts +33 -6
  397. package/dist/storage/templates.d.ts.map +1 -1
  398. package/dist/storage/templates.js +182 -17
  399. package/dist/storage/templates.js.map +1 -1
  400. package/dist/validation/config-version.d.ts +19 -0
  401. package/dist/validation/config-version.d.ts.map +1 -0
  402. package/dist/validation/config-version.js +53 -0
  403. package/dist/validation/config-version.js.map +1 -0
  404. package/dist/validation/diagnostic.d.ts +40 -0
  405. package/dist/validation/diagnostic.d.ts.map +1 -0
  406. package/dist/validation/diagnostic.js +41 -0
  407. package/dist/validation/diagnostic.js.map +1 -0
  408. package/dist/validation/format.d.ts +74 -0
  409. package/dist/validation/format.d.ts.map +1 -0
  410. package/dist/validation/format.js +104 -0
  411. package/dist/validation/format.js.map +1 -0
  412. package/dist/validation/id.d.ts +40 -0
  413. package/dist/validation/id.d.ts.map +1 -1
  414. package/dist/validation/id.js +99 -12
  415. package/dist/validation/id.js.map +1 -1
  416. package/dist/validation/identity.d.ts +40 -0
  417. package/dist/validation/identity.d.ts.map +1 -0
  418. package/dist/validation/identity.js +78 -0
  419. package/dist/validation/identity.js.map +1 -0
  420. package/dist/validation/index.d.ts +9 -3
  421. package/dist/validation/index.d.ts.map +1 -1
  422. package/dist/validation/index.js +33 -1
  423. package/dist/validation/index.js.map +1 -1
  424. package/dist/validation/secret-scan.d.ts +10 -7
  425. package/dist/validation/secret-scan.d.ts.map +1 -1
  426. package/dist/validation/secret-scan.js +39 -16
  427. package/dist/validation/secret-scan.js.map +1 -1
  428. package/dist/validation/warning.d.ts +30 -16
  429. package/dist/validation/warning.d.ts.map +1 -1
  430. package/dist/validation/warning.js +74 -7
  431. package/dist/validation/warning.js.map +1 -1
  432. package/dist/workflow/bindings.d.ts +152 -0
  433. package/dist/workflow/bindings.d.ts.map +1 -0
  434. package/dist/workflow/bindings.js +249 -0
  435. package/dist/workflow/bindings.js.map +1 -0
  436. package/dist/workflow/create.d.ts +13 -0
  437. package/dist/workflow/create.d.ts.map +1 -0
  438. package/dist/workflow/create.js +41 -0
  439. package/dist/workflow/create.js.map +1 -0
  440. package/dist/workflow/deduce.d.ts +400 -0
  441. package/dist/workflow/deduce.d.ts.map +1 -0
  442. package/dist/workflow/deduce.js +1109 -0
  443. package/dist/workflow/deduce.js.map +1 -0
  444. package/dist/workflow/manifest-edit.d.ts +19 -0
  445. package/dist/workflow/manifest-edit.d.ts.map +1 -0
  446. package/dist/workflow/manifest-edit.js +124 -0
  447. package/dist/workflow/manifest-edit.js.map +1 -0
  448. package/dist/workflow/schema.d.ts +158 -19
  449. package/dist/workflow/schema.d.ts.map +1 -1
  450. package/dist/workflow/schema.js +190 -16
  451. package/dist/workflow/schema.js.map +1 -1
  452. package/package.json +37 -13
@@ -11,9 +11,18 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.coreOk = coreOk;
13
13
  exports.coreErr = coreErr;
14
- /** Build a success {@link CoreResult}, optionally carrying the git commit the operation produced. */
15
- function coreOk(value, commit) {
16
- return commit ? { ok: true, value, commit } : { ok: true, value };
14
+ /**
15
+ * Build a success {@link CoreResult}, optionally carrying the git commit the operation produced and
16
+ * the warnings to show the operator (task-169). An empty `warnings` list is the same as none: the
17
+ * result then has no `warnings` key, the shape every success had before the channel existed.
18
+ */
19
+ function coreOk(value, commit, warnings) {
20
+ return {
21
+ ok: true,
22
+ value,
23
+ ...(commit ? { commit } : {}),
24
+ ...(warnings !== undefined && warnings.length > 0 ? { warnings: [...warnings] } : {}),
25
+ };
17
26
  }
18
27
  /** Build a failure {@link CoreResult} from a {@link CoreError}. */
19
28
  function coreErr(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AA8BH,wBAEC;AAGD,0BAEC;AARD,qGAAqG;AACrG,SAAgB,MAAM,CAAI,KAAQ,EAAE,MAAyC;IAC3E,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACpE,CAAC;AAED,mEAAmE;AACnE,SAAgB,OAAO,CAAY,KAAgB;IACjD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAwDH,wBAWC;AAGD,0BAEC;AArBD;;;;GAIG;AACH,SAAgB,MAAM,CACpB,KAAQ,EACR,MAAyC,EACzC,QAA4B;IAE5B,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK;QACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,SAAgB,OAAO,CAAY,KAAgB;IACjD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { DnaYaml } from '../dna/schema';
2
+ import type { MemoryYaml } from '../memory/schema';
3
+ import type { Diagnostic } from '../validation';
4
+ import { type BindingsYaml } from '../workflow/bindings';
5
+ import { type Workflow } from '../workflow/schema';
6
+ /** What the core checks read besides the workflow files: the other pillars, from one baseline. */
7
+ export interface WorkflowCoreInputs {
8
+ /** `memory.yaml`, or `null` when the project has none. */
9
+ readonly memoryYaml: MemoryYaml | null;
10
+ /** `dna.yaml`, or `null` when the project has none. */
11
+ readonly dnaYaml: DnaYaml | null;
12
+ /**
13
+ * The frontmatter fields the template of `type` declares, or `null` when the type has no template or
14
+ * it cannot be read (the field half of `W_PHASE_TOKEN_OUT_OF_SCOPE` is then not decided).
15
+ */
16
+ readonly templateFields: (type: string) => ReadonlySet<string> | null;
17
+ }
18
+ /** The registry the checks run on: the loader's accepted result. */
19
+ export interface CheckedRegistry {
20
+ /** The manifest's `include` list — the diagnostics' `file`, one per workflow. */
21
+ readonly include: readonly string[];
22
+ /** The workflows, in `include` order. */
23
+ readonly workflows: readonly Workflow[];
24
+ /** `workflows/bindings.yaml`, or `null` when the project has none. */
25
+ readonly bindings: BindingsYaml | null;
26
+ }
27
+ /** `W_WORKFLOW_CHECKS_NOT_RUN` (`bug-281`, spec-003 "Where each check runs"): a core check skipped for want of its input. */
28
+ export declare const W_WORKFLOW_CHECKS_NOT_RUN = "W_WORKFLOW_CHECKS_NOT_RUN";
29
+ /**
30
+ * Every core diagnostic of `registry` (spec-003 § "Diagnostics", `core` rows), in spec-003's order.
31
+ * Pure: it reads only its arguments.
32
+ */
33
+ export declare function workflowCoreDiagnostics(registry: CheckedRegistry, inputs: WorkflowCoreInputs): Diagnostic[];
34
+ //# sourceMappingURL=workflow-core-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-core-checks.d.ts","sourceRoot":"","sources":["../../src/core/workflow-core-checks.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAiE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAIlE,kGAAkG;AAClG,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACvE;AAED,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,yCAAyC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IACxC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CACxC;AA6DD,6HAA6H;AAC7H,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AAErE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,kBAAkB,GAAG,UAAU,EAAE,CAK3G"}
@@ -0,0 +1,403 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.W_WORKFLOW_CHECKS_NOT_RUN = void 0;
4
+ exports.workflowCoreDiagnostics = workflowCoreDiagnostics;
5
+ /**
6
+ * The Workflow pillar's **core** checks (spec-003-workflows-yaml-schema § "Diagnostics", rows whose
7
+ * "Runs in" is `core`; `spec-017` §2; task-194, `bug-150`): the checks that need `memory.yaml` or
8
+ * `dna.yaml` as well as the loaded workflow files, and therefore cannot run in the pillar-isolated
9
+ * loader (`./loaders.ts`, REQ-SYS-02). They run on a registry the loader has already accepted — a load
10
+ * with an error throws before they are reached, so the error the user must fix first is the one
11
+ * reported (spec-003).
12
+ *
13
+ * Rows, in table order: `E_PHASE_ROLE_UNKNOWN`, `E_PHASE_APPROVER_UNKNOWN`,
14
+ * `E_WORKFLOW_ELEMENT_TYPE_UNKNOWN`, `E_WORKFLOW_COLLECTION_UNRESOLVED`, `E_PHASE_CADENCE_EVENT_UNKNOWN`
15
+ * (spec-003 open question 3: an event that can never fire), then the warnings
16
+ * `W_PHASE_TOKEN_OUT_OF_SCOPE`, `W_PHASE_EXIT_STATE_UNDETERMINED`, `W_PHASE_FALLBACK_STATE_MISMATCH`,
17
+ * `W_PHASE_FALLBACK_NOT_REENTRANT`.
18
+ *
19
+ * Order (REQ-SYS-07): files in manifest `include` order; within a file the workflow-level row before
20
+ * the phases, phases in declared order, and per phase the rows in table order; within one row, the
21
+ * fields in the order each check visits them. The caller appends the result after the loader's own
22
+ * diagnostics.
23
+ *
24
+ * A check is not decided when its input is missing (spec-003's rule for loader checks, applied here):
25
+ * without `dna.yaml` no role, approver or `dna:` collection is checked; without `memory.yaml` no type,
26
+ * cadence event, token, exit state or fallback; without a type's template its fields are not checked.
27
+ * The first two skips are reported, each as one `W_WORKFLOW_CHECKS_NOT_RUN` warning ahead of the per-file
28
+ * rows (`bug-281`, task-204), so an empty result means the checks ran and found nothing.
29
+ */
30
+ const path_1 = require("../dna/path");
31
+ const state_machine_1 = require("../memory/state-machine");
32
+ const bindings_1 = require("../workflow/bindings");
33
+ const schema_1 = require("../workflow/schema");
34
+ const workflow_exit_state_1 = require("./workflow-exit-state");
35
+ /** The core rows, in spec-003's table order — the order the diagnostics of one phase come out in. */
36
+ const ROWS = [
37
+ 'E_PHASE_ROLE_UNKNOWN',
38
+ 'E_PHASE_APPROVER_UNKNOWN',
39
+ 'E_WORKFLOW_ELEMENT_TYPE_UNKNOWN',
40
+ 'E_WORKFLOW_COLLECTION_UNRESOLVED',
41
+ 'E_PHASE_CADENCE_EVENT_UNKNOWN',
42
+ 'W_PHASE_TOKEN_OUT_OF_SCOPE',
43
+ 'W_PHASE_EXIT_STATE_UNDETERMINED',
44
+ 'W_PHASE_FALLBACK_STATE_MISMATCH',
45
+ 'W_PHASE_FALLBACK_NOT_REENTRANT',
46
+ ];
47
+ /** A `{<type>.<field>}` token. `{item…}` (a collection entry) is not a Memory element and is skipped. */
48
+ const TYPED_TOKEN_RE = /\{([a-z][a-z0-9-]*)\.([A-Za-z0-9_-]+)\}/g;
49
+ const DNA_COLLECTION = 'dna:';
50
+ const BINDINGS_COLLECTION = 'bindings:';
51
+ /** A list read from a frontmatter field of the bound element (spec-003 § "Collections", task-230). */
52
+ const ELEMENT_COLLECTION = 'element:';
53
+ /** The frontmatter field name an `element:` reference may name. */
54
+ const ELEMENT_FIELD_RE = /^[a-z][a-z0-9_-]*$/;
55
+ /** Collects diagnostics by position, dedupes them by `(file, path, code)`, and emits them in order. */
56
+ class Collector {
57
+ include;
58
+ entries = [];
59
+ seen = new Set();
60
+ constructor(include) {
61
+ this.include = include;
62
+ }
63
+ /**
64
+ * @param problem - What tells two problems of one row at one path apart (review F1): the token for
65
+ * `W_PHASE_TOKEN_OUT_OF_SCOPE`, the message for `E_WORKFLOW_COLLECTION_UNRESOLVED`; empty for the
66
+ * rows that report at most one problem per path. The same problem raised again on another include
67
+ * path is reported once, with the first path's message (deterministic traversal).
68
+ */
69
+ add(file, phase, row, path, message, problem = '') {
70
+ const code = row;
71
+ const key = `${file}\u0000${path}\u0000${code}\u0000${problem}`;
72
+ if (this.seen.has(key))
73
+ return;
74
+ this.seen.add(key);
75
+ const severity = code.startsWith('E_') ? 'error' : 'warning';
76
+ this.entries.push({
77
+ file,
78
+ phase,
79
+ row: ROWS.indexOf(row),
80
+ seq: this.entries.length,
81
+ diagnostic: { code, severity, file: this.include[file], path, message },
82
+ });
83
+ }
84
+ ordered() {
85
+ return [...this.entries]
86
+ .sort((a, b) => a.file - b.file || a.phase - b.phase || a.row - b.row || a.seq - b.seq)
87
+ .map((entry) => entry.diagnostic);
88
+ }
89
+ }
90
+ /** `W_WORKFLOW_CHECKS_NOT_RUN` (`bug-281`, spec-003 "Where each check runs"): a core check skipped for want of its input. */
91
+ exports.W_WORKFLOW_CHECKS_NOT_RUN = 'W_WORKFLOW_CHECKS_NOT_RUN';
92
+ /**
93
+ * Every core diagnostic of `registry` (spec-003 § "Diagnostics", `core` rows), in spec-003's order.
94
+ * Pure: it reads only its arguments.
95
+ */
96
+ function workflowCoreDiagnostics(registry, inputs) {
97
+ const out = new Collector(registry.include);
98
+ registry.workflows.forEach((workflow, i) => staticChecks(out, i, workflow, registry.bindings, inputs));
99
+ if (inputs.memoryYaml)
100
+ contextChecks(out, registry, inputs.memoryYaml, inputs);
101
+ return [...notRunDiagnostics(registry, inputs), ...out.ordered()];
102
+ }
103
+ /**
104
+ * One `W_WORKFLOW_CHECKS_NOT_RUN` warning per missing input of the core checks, `dna.yaml` first, naming the
105
+ * checks that did not run (`bug-281`): the skip itself is spec-003's rule, but without a trace an empty
106
+ * `diagnostics` could not tell "checked and clean" from "not checked". `file` is the missing file relative to
107
+ * `.wingfoil/`, as the other diagnostics' `file`; `path` is empty. None for a registry with no workflow, which
108
+ * no check would have read.
109
+ */
110
+ function notRunDiagnostics(registry, inputs) {
111
+ if (registry.workflows.length === 0)
112
+ return [];
113
+ const missing = [];
114
+ const notRun = (file, checks) => {
115
+ missing.push({ code: exports.W_WORKFLOW_CHECKS_NOT_RUN, severity: 'warning', file, path: '', message: `${file} is absent: the ${checks} checks were not run` });
116
+ };
117
+ if (inputs.dnaYaml === null)
118
+ notRun('dna.yaml', 'role, approver and dna: collection');
119
+ if (inputs.memoryYaml === null)
120
+ notRun('memory.yaml', 'type, cadence event, token, exit state and fallback');
121
+ return missing;
122
+ }
123
+ // ---- the rows that read one workflow and the other pillars, with no include context ---------------
124
+ function staticChecks(out, i, workflow, bindings, inputs) {
125
+ const { memoryYaml, dnaYaml } = inputs;
126
+ const knownType = (type) => memoryYaml !== null && Object.prototype.hasOwnProperty.call(memoryYaml.types, type);
127
+ const unknownType = (type) => `unknown memory type '${type}' (not defined in memory.yaml)`;
128
+ if (memoryYaml && workflow.element !== undefined && !knownType(workflow.element)) {
129
+ out.add(i, -1, 'E_WORKFLOW_ELEMENT_TYPE_UNKNOWN', 'element', unknownType(workflow.element));
130
+ }
131
+ const roles = new Set((dnaYaml?.team.roles ?? []).map((role) => role.name));
132
+ workflow.phases.forEach((phase, p) => {
133
+ const at = (field) => `phases[${p}].${field}`;
134
+ if (dnaYaml) {
135
+ const unknownRole = (role) => `unknown role '${role}' (not defined in dna.yaml)`;
136
+ if (phase.role !== undefined && !roles.has(phase.role))
137
+ out.add(i, p, 'E_PHASE_ROLE_UNKNOWN', at('role'), unknownRole(phase.role));
138
+ const approval = phase.approval; // one of the two (schema union)
139
+ if (approval?.by_role !== undefined && !roles.has(approval.by_role)) {
140
+ out.add(i, p, 'E_PHASE_ROLE_UNKNOWN', at('approval.by_role'), unknownRole(approval.by_role));
141
+ }
142
+ const person = approval?.by_person;
143
+ if (person !== undefined && !dnaYaml.team.members.some((member) => member.name === person || member.email === person)) {
144
+ out.add(i, p, 'E_PHASE_APPROVER_UNKNOWN', at('approval.by_person'), `unknown approver '${person}' (no team.members[] name or email in dna.yaml)`);
145
+ }
146
+ }
147
+ const over = phase.iterate_over;
148
+ const isCollection = over !== undefined && [DNA_COLLECTION, BINDINGS_COLLECTION, ELEMENT_COLLECTION].some((prefix) => over.startsWith(prefix));
149
+ if (memoryYaml) {
150
+ if (over !== undefined && !isCollection && !knownType(over))
151
+ out.add(i, p, 'E_WORKFLOW_ELEMENT_TYPE_UNKNOWN', at('iterate_over'), unknownType(over));
152
+ // A selection's `where.type` (`bug-282`): only without `iterate_over` (with it, `where` filters the
153
+ // iteration and `type` may be a collection entry's field); a value with a `{…}` token is not decided.
154
+ const selected = over === undefined ? phase.where?.['type'] : undefined;
155
+ if (selected !== undefined) {
156
+ const values = Array.isArray(selected)
157
+ ? selected.map((value, k) => [String(value), at(`where.type[${k}]`)])
158
+ : [[String(selected), at('where.type')]];
159
+ for (const [type, path] of values) {
160
+ if (!type.includes('{') && !knownType(type))
161
+ out.add(i, p, 'E_WORKFLOW_ELEMENT_TYPE_UNKNOWN', path, unknownType(type));
162
+ }
163
+ }
164
+ (phase.actions ?? []).forEach((action, a) => {
165
+ // `memory.add(type: T)`, and the `T` of a typed `<T>.set_state` / `<T>.sync_state` (`bug-282`).
166
+ const type = (0, bindings_1.memoryAddType)(action) ?? (0, bindings_1.typedStateType)(action);
167
+ if (type !== null && !knownType(type))
168
+ out.add(i, p, 'E_WORKFLOW_ELEMENT_TYPE_UNKNOWN', at(`actions[${a}]`), unknownType(type));
169
+ });
170
+ (phase.produces ?? []).forEach((entry, k) => {
171
+ if (typeof entry !== 'string' && !knownType(entry.type))
172
+ out.add(i, p, 'E_WORKFLOW_ELEMENT_TYPE_UNKNOWN', at(`produces[${k}].type`), unknownType(entry.type));
173
+ });
174
+ }
175
+ if (over !== undefined && isCollection) {
176
+ for (const message of collectionProblems(over, dnaYaml, bindings, workflow))
177
+ out.add(i, p, 'E_WORKFLOW_COLLECTION_UNRESOLVED', at('iterate_over'), message, message);
178
+ }
179
+ const cadence = phase.cadence;
180
+ const event = typeof cadence === 'object' && cadence !== null ? cadence.recurring?.on : undefined;
181
+ if (memoryYaml && event !== undefined && !eventFires(memoryYaml, event)) {
182
+ out.add(i, p, 'E_PHASE_CADENCE_EVENT_UNKNOWN', at('cadence.recurring.on'), `cadence event '${event}' names no memory.yaml type and state (<memory-type>-<state>)`);
183
+ }
184
+ });
185
+ }
186
+ /**
187
+ * `E_WORKFLOW_COLLECTION_UNRESOLVED`'s messages for a collection reference (`spec-003` § "Collections"):
188
+ * a `dna:` path that names no list, a `bindings:` name that names no collection, and the key problems
189
+ * of a `dna.yaml` list's entries (a `bindings.yaml` collection's keys are the loader's
190
+ * `E_BINDING_COLLECTION_KEY`). A `dna:` reference without `dna.yaml` is not decided. An `element:<field>`
191
+ * reference (task-230) needs a field name and an including workflow bound to an element; its entries are
192
+ * Memory content, checked when deduction reads them (`spec-017` §4.6).
193
+ */
194
+ function collectionProblems(reference, dnaYaml, bindings, workflow) {
195
+ if (reference.startsWith(ELEMENT_COLLECTION)) {
196
+ const field = reference.slice(ELEMENT_COLLECTION.length);
197
+ if (!ELEMENT_FIELD_RE.test(field))
198
+ return [`collection '${reference}' names no frontmatter field (expected [a-z][a-z0-9_-]*)`];
199
+ if (workflow.element === undefined) {
200
+ return [`collection '${reference}' reads a field of the bound element, but workflow '${workflow.name}' declares no element`];
201
+ }
202
+ return [];
203
+ }
204
+ if (reference.startsWith(BINDINGS_COLLECTION)) {
205
+ const name = reference.slice(BINDINGS_COLLECTION.length);
206
+ const collections = bindings?.collections ?? {};
207
+ return Object.prototype.hasOwnProperty.call(collections, name) ? [] : [`collection '${reference}' names no collection in bindings.yaml`];
208
+ }
209
+ if (!dnaYaml)
210
+ return [];
211
+ const resolved = (0, path_1.resolveDnaPath)(dnaYaml, reference.slice(DNA_COLLECTION.length));
212
+ const listed = resolved.ok && (resolved.target.kind === 'collection' || resolved.target.kind === 'string-list') && Array.isArray(resolved.target.value);
213
+ if (!listed)
214
+ return [`collection '${reference}' names no list in dna.yaml`];
215
+ const entries = resolved.target.value;
216
+ return (0, bindings_1.collectionKeyIssues)(entries).map((issue) => `collection '${reference}' entry ${issue.index}: ${issue.message}`);
217
+ }
218
+ /**
219
+ * Whether a cadence event `<memory-type>-<state>` can fire (`spec-003` § "Recurring phases", open
220
+ * question 3): some split at a `-` gives a type `memory.yaml` registers and a state an element of that
221
+ * type can enter — a `sequence` state, a reject or return target, or `deprecated`.
222
+ */
223
+ function eventFires(memoryYaml, event) {
224
+ for (let cut = event.indexOf('-'); cut !== -1; cut = event.indexOf('-', cut + 1)) {
225
+ const type = event.slice(0, cut);
226
+ if (!Object.prototype.hasOwnProperty.call(memoryYaml.types, type))
227
+ continue;
228
+ if ((0, workflow_exit_state_1.machineStates)((0, state_machine_1.resolveStateMachine)(memoryYaml, type)).has(event.slice(cut + 1)))
229
+ return true;
230
+ }
231
+ return false;
232
+ }
233
+ function contextChecks(out, registry, memoryYaml, inputs) {
234
+ const byName = new Map();
235
+ // Names are unique and every phase include resolves: the loader refuses a registry where either
236
+ // fails (E_WORKFLOW_DUPLICATE_NAME, E_WORKFLOW_INCLUDE_UNRESOLVED), and the core checks run only on
237
+ // an accepted one.
238
+ registry.workflows.forEach((workflow, i) => byName.set(workflow.name, i));
239
+ const workflowsByName = new Map(registry.workflows.map((workflow) => [workflow.name, workflow]));
240
+ const done = new Set();
241
+ const reached = new Set();
242
+ // Termination: a position is visited once (`done`), and a position is a finite combination (scope
243
+ // types are deduplicated, states are a machine's), so even an include cycle — which the loader
244
+ // refuses anyway (E_WORKFLOW_INCLUDE_CYCLE) — could not loop.
245
+ const visit = (i, context, tokens) => {
246
+ const key = `${i}|${context.scope.join(',')}|${context.start.boundType}|${context.start.state}|${context.start.instance}|${tokens}`;
247
+ if (done.has(key))
248
+ return;
249
+ done.add(key);
250
+ reached.add(i);
251
+ const workflow = registry.workflows[i];
252
+ const states = (0, workflow_exit_state_1.workflowExitStates)(workflow, memoryYaml, context.start, workflowsByName);
253
+ stateDiagnostics(out, i, workflow, states, memoryYaml);
254
+ // A self-creating instance's element is in scope for all of its phases (its `{id}` before the
255
+ // element exists is not reported, spec-003).
256
+ const selfType = states.find((state) => state.boundType !== null)?.boundType ?? null;
257
+ const own = workflow.element ?? (context.start.instance ? selfType : null);
258
+ const scope = own === null || context.scope.includes(own) ? context.scope : [...context.scope, own];
259
+ if (tokens)
260
+ tokenDiagnostics(out, i, workflow, scope, inputs);
261
+ workflow.phases.forEach((phase, p) => {
262
+ if (phase.include === undefined)
263
+ return;
264
+ const target = byName.get(phase.include);
265
+ const sub = registry.workflows[target];
266
+ const over = phase.iterate_over;
267
+ let start;
268
+ let subScope = scope;
269
+ if (over !== undefined && over.includes(':')) {
270
+ start = { boundType: null, state: null, instance: false };
271
+ }
272
+ else if (over !== undefined) {
273
+ start = { boundType: over, state: (0, workflow_exit_state_1.iterationStartState)(memoryYaml, over, phase.where), instance: false };
274
+ if (!subScope.includes(over))
275
+ subScope = [...subScope, over];
276
+ }
277
+ else {
278
+ const type = sub.element ?? states[p].boundType;
279
+ const same = type !== null && type === states[p].boundType;
280
+ start = { boundType: type, state: same ? states[p].entry : null, instance: false };
281
+ }
282
+ visit(target, { scope: subScope, start }, tokens);
283
+ });
284
+ };
285
+ registry.workflows.forEach((workflow, i) => {
286
+ if ((0, schema_1.workflowFacts)(workflow).startable) {
287
+ const element = workflow.element ?? null;
288
+ const start = {
289
+ boundType: element,
290
+ state: element === null ? null : (0, workflow_exit_state_1.iterationStartState)(memoryYaml, element, undefined),
291
+ instance: true,
292
+ };
293
+ visit(i, { scope: [], start }, true);
294
+ }
295
+ });
296
+ // A workflow no startable one reaches still gets its exit states checked, from its type's first
297
+ // state (`spec-017` §4.4 "otherwise"); its tokens have no include path to be out of scope on.
298
+ registry.workflows.forEach((workflow, i) => {
299
+ if (reached.has(i))
300
+ return;
301
+ const element = workflow.element ?? null;
302
+ visit(i, { scope: [], start: { boundType: element, state: element === null ? null : (0, workflow_exit_state_1.iterationStartState)(memoryYaml, element, undefined), instance: false } }, false);
303
+ });
304
+ }
305
+ /** `W_PHASE_EXIT_STATE_UNDETERMINED`, `W_PHASE_FALLBACK_STATE_MISMATCH`, `W_PHASE_FALLBACK_NOT_REENTRANT`. */
306
+ function stateDiagnostics(out, i, workflow, states, memoryYaml) {
307
+ workflow.phases.forEach((phase, p) => {
308
+ const state = states[p];
309
+ const at = (field) => `phases[${p}].${field}`;
310
+ const undetermined = state.undetermined;
311
+ if (undetermined) {
312
+ const action = phase.actions[undetermined.action]; // an undetermined action is one of them
313
+ const message = undetermined.from === null
314
+ ? `cannot apply '${action}' to ${undetermined.type}: ${undetermined.reason}`
315
+ : `cannot apply '${action}' to ${undetermined.type} from state '${undetermined.from}': ${undetermined.reason}`;
316
+ out.add(i, p, 'W_PHASE_EXIT_STATE_UNDETERMINED', at(`actions[${undetermined.action}]`), message);
317
+ }
318
+ const fallback = phase.fallback;
319
+ if (!fallback)
320
+ return;
321
+ const setState = fallback.set_state;
322
+ if (setState !== undefined) {
323
+ const differing = state.held.find((held) => held.reject !== setState);
324
+ if (differing) {
325
+ out.add(i, p, 'W_PHASE_FALLBACK_STATE_MISMATCH', at('fallback.set_state'), `fallback set_state '${setState}' differs from the reject target '${differing.reject}' of ${differing.type} gate '${differing.gate}'`);
326
+ }
327
+ }
328
+ const stepIndex = workflow.phases.findIndex((candidate) => candidate.name === fallback.step);
329
+ if (stepIndex !== -1 && stepIndex < p) {
330
+ const forward = state.held.find((held) => {
331
+ const sequence = (0, state_machine_1.resolveStateMachine)(memoryYaml, held.type).sequence;
332
+ const gate = sequence.indexOf(held.gate);
333
+ const reject = sequence.indexOf(held.reject);
334
+ return gate !== -1 && reject !== -1 && reject > gate;
335
+ });
336
+ if (forward) {
337
+ out.add(i, p, 'W_PHASE_FALLBACK_NOT_REENTRANT', at('fallback.step'), `fallback step '${fallback.step}' is an earlier phase, but a reject from ${forward.type} gate '${forward.gate}' goes forward to '${forward.reject}': the reject completes this phase`);
338
+ }
339
+ }
340
+ });
341
+ }
342
+ /**
343
+ * The types a phase's **selection** names (`spec-003` § "Selections": `where` without `iterate_over`; its
344
+ * `type` key, a scalar or a list), in declared order, minus those already in `scope`. Empty for any other
345
+ * phase: an iterating phase's `where` filters candidates and binds the iterated type in the sub instead.
346
+ */
347
+ function selectedTypes(phase, scope) {
348
+ if (phase.where === undefined || phase.iterate_over !== undefined)
349
+ return [];
350
+ const declared = phase.where['type'];
351
+ const types = (Array.isArray(declared) ? declared : declared === undefined ? [] : [declared]).map(String);
352
+ return types.filter((type, k) => !scope.includes(type) && types.indexOf(type) === k);
353
+ }
354
+ /**
355
+ * `W_PHASE_TOKEN_OUT_OF_SCOPE` for one workflow on one include path: every `{<type>.<field>}` token in
356
+ * a `where` value, a `produces` pattern or an action argument, visited in that order. `{element.<f>}`
357
+ * names the innermost scope; inside a `{ type: T, path }` entry, `T` is in scope (`dl-104` D3); in an
358
+ * action argument of a phase that declares a selection, each type it selects is in scope too — the
359
+ * token names each selected element of that type (`spec-017` §4.1, task-199) — while `{element.<f>}`
360
+ * still names the innermost bound element.
361
+ */
362
+ function tokenDiagnostics(out, i, workflow, scope, inputs) {
363
+ workflow.phases.forEach((phase, p) => {
364
+ const at = (field) => `phases[${p}].${field}`;
365
+ const check = (text, path, extra, selected = []) => {
366
+ const local = extra === null || scope.includes(extra) ? scope : [...scope, extra];
367
+ for (const match of text.matchAll(TYPED_TOKEN_RE)) {
368
+ const [token, named, field] = match;
369
+ if (named === 'item')
370
+ continue;
371
+ const type = named === 'element' ? (local[local.length - 1] ?? null) : local.includes(named) || selected.includes(named) ? named : null;
372
+ if (type === null) {
373
+ const inScope = local.length > 0 ? local.join(', ') : 'none';
374
+ const where = selected.length > 0 ? `${inScope}; selected: ${selected.join(', ')}` : inScope;
375
+ out.add(i, p, 'W_PHASE_TOKEN_OUT_OF_SCOPE', path, `token '${token}' names no enclosing element (in scope: ${where})`, token);
376
+ continue;
377
+ }
378
+ const fields = inputs.templateFields(type);
379
+ if (fields !== null && !fields.has(field)) {
380
+ out.add(i, p, 'W_PHASE_TOKEN_OUT_OF_SCOPE', path, `token '${token}': the ${type} template declares no field '${field}'`, token);
381
+ }
382
+ }
383
+ };
384
+ for (const [key, value] of Object.entries(phase.where ?? {})) {
385
+ if (Array.isArray(value))
386
+ value.forEach((item, k) => check(String(item), at(`where.${key}[${k}]`), null));
387
+ else
388
+ check(String(value), at(`where.${key}`), null);
389
+ }
390
+ (phase.produces ?? []).forEach((entry, k) => {
391
+ if (typeof entry === 'string')
392
+ check(entry, at(`produces[${k}]`), null);
393
+ else
394
+ check(entry.path, at(`produces[${k}].path`), entry.type);
395
+ });
396
+ const selected = selectedTypes(phase, scope);
397
+ (phase.actions ?? []).forEach((action, a) => {
398
+ if ((0, bindings_1.tokenName)(action) !== action)
399
+ check(action, at(`actions[${a}]`), null, selected);
400
+ });
401
+ });
402
+ }
403
+ //# sourceMappingURL=workflow-core-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-core-checks.js","sourceRoot":"","sources":["../../src/core/workflow-core-checks.ts"],"names":[],"mappings":";;;AA4HA,0DAKC;AAjID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,sCAA6C;AAG7C,2DAA8D;AAE9D,mDAAwH;AACxH,+CAAkE;AAElE,+DAAoI;AAyBpI,qGAAqG;AACrG,MAAM,IAAI,GAAG;IACX,sBAAsB;IACtB,0BAA0B;IAC1B,iCAAiC;IACjC,kCAAkC;IAClC,+BAA+B;IAC/B,4BAA4B;IAC5B,iCAAiC;IACjC,iCAAiC;IACjC,gCAAgC;CACxB,CAAC;AAGX,yGAAyG;AACzG,MAAM,cAAc,GAAG,0CAA0C,CAAC;AAElE,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,mBAAmB,GAAG,WAAW,CAAC;AACxC,sGAAsG;AACtG,MAAM,kBAAkB,GAAG,UAAU,CAAC;AACtC,mEAAmE;AACnE,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAE9C,uGAAuG;AACvG,MAAM,SAAS;IAIgB;IAHZ,OAAO,GAAwF,EAAE,CAAC;IAClG,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAE3D;;;;;OAKG;IACH,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,GAAQ,EAAE,IAAY,EAAE,OAAe,EAAE,OAAO,GAAG,EAAE;QACpF,MAAM,IAAI,GAAG,GAAG,CAAC;QACjB,MAAM,GAAG,GAAG,GAAG,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,OAAO,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,IAAI;YACJ,KAAK;YACL,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YACxB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACzE,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;aACtF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;CACF;AAED,6HAA6H;AAChH,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AAErE;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,QAAyB,EAAE,MAA0B;IAC3F,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACvG,IAAI,MAAM,CAAC,UAAU;QAAE,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,QAAyB,EAAE,MAA0B;IAC9E,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAQ,EAAE;QACpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iCAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,mBAAmB,MAAM,sBAAsB,EAAE,CAAC,CAAC;IAC1J,CAAC,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QAAE,MAAM,CAAC,UAAU,EAAE,oCAAoC,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;QAAE,MAAM,CAAC,aAAa,EAAE,qDAAqD,CAAC,CAAC;IAC7G,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sGAAsG;AAEtG,SAAS,YAAY,CAAC,GAAc,EAAE,CAAS,EAAE,QAAkB,EAAE,QAA6B,EAAE,MAA0B;IAC5H,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjI,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,wBAAwB,IAAI,gCAAgC,CAAC;IAE3G,IAAI,UAAU,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iCAAiC,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;QAE9D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,iBAAiB,IAAI,6BAA6B,CAAC;YACjG,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,sBAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACnI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAgE,CAAC,CAAC,gCAAgC;YACzH,IAAI,QAAQ,EAAE,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,sBAAsB,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,EAAE,SAAS,CAAC;YACnC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;gBACtH,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,0BAA0B,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,MAAM,iDAAiD,CAAC,CAAC;YACpJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/I,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,iCAAiC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACrJ,oGAAoG;YACpG,sGAAsG;YACtG,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACpC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAU,CAAC;oBAC9E,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAU,CAAC,CAAC;gBACpD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;wBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,iCAAiC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzH,CAAC;YACH,CAAC;YACD,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,gGAAgG;gBAChG,MAAM,IAAI,GAAG,IAAA,wBAAa,EAAC,MAAM,CAAC,IAAI,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAC;gBAC7D,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,iCAAiC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAClI,CAAC,CAAC,CAAC;YACH,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,iCAAiC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChK,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,IAAI,YAAY,EAAE,CAAC;YACvC,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,kCAAkC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvK,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAkB,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAA2C,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvI,IAAI,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,GAAG,CACL,CAAC,EACD,CAAC,EACD,+BAA+B,EAC/B,EAAE,CAAC,sBAAsB,CAAC,EAC1B,kBAAkB,KAAK,+DAA+D,CACvF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,SAAiB,EAAE,OAAuB,EAAE,QAA6B,EAAE,QAAkB;IACvH,IAAI,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,eAAe,SAAS,0DAA0D,CAAC,CAAC;QAC/H,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,eAAe,SAAS,uDAAuD,QAAQ,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAC/H,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,SAAS,wCAAwC,CAAC,CAAC;IAC3I,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxJ,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,eAAe,SAAS,6BAA6B,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAI,QAA6C,CAAC,MAAM,CAAC,KAAkD,CAAC;IACzH,OAAO,IAAA,8BAAmB,EAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,SAAS,WAAW,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACzH,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,UAAsB,EAAE,KAAa;IACvD,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,SAAS;QAC5E,IAAI,IAAA,mCAAa,EAAC,IAAA,mCAAmB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAWD,SAAS,aAAa,CAAC,GAAc,EAAE,QAAyB,EAAE,UAAsB,EAAE,MAA0B;IAClH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,gGAAgG;IAChG,oGAAoG;IACpG,mBAAmB;IACnB,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAU,CAAC,CAAC,CAAC;IAC1G,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,kGAAkG;IAClG,+FAA+F;IAC/F,8DAA8D;IAC9D,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,OAAgB,EAAE,MAAe,EAAQ,EAAE;QACnE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;QACpI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAA,wCAAkB,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACxF,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEvD,8FAA8F;QAC9F,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC;QACrF,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpG,IAAI,MAAM;YAAE,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE9D,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO;YACxC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAE,CAAC;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;YAChC,IAAI,KAAgB,CAAC;YACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC5D,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAA,yCAAmB,EAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACxG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;gBACjD,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;gBAC5D,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YACtF,CAAC;YACD,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,IAAA,sBAAa,EAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC;YACzC,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,yCAAmB,EAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC;gBACpF,QAAQ,EAAE,IAAI;aACf,CAAC;YACF,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,gGAAgG;IAChG,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC;QACzC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,yCAAmB,EAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACvK,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8GAA8G;AAC9G,SAAS,gBAAgB,CAAC,GAAc,EAAE,CAAS,EAAE,QAAkB,EAAE,MAAiC,EAAE,UAAsB;IAChI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAQ,CAAC,YAAY,CAAC,MAAM,CAAE,CAAC,CAAC,wCAAwC;YAC7F,MAAM,OAAO,GACX,YAAY,CAAC,IAAI,KAAK,IAAI;gBACxB,CAAC,CAAC,iBAAiB,MAAM,QAAQ,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;gBAC5E,CAAC,CAAC,iBAAiB,MAAM,QAAQ,YAAY,CAAC,IAAI,gBAAgB,YAAY,CAAC,IAAI,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;YACnH,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,iCAAiC,EAAE,EAAE,CAAC,WAAW,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YACtE,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,CAAC,GAAG,CACL,CAAC,EACD,CAAC,EACD,iCAAiC,EACjC,EAAE,CAAC,oBAAoB,CAAC,EACxB,uBAAuB,QAAQ,qCAAqC,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI,GAAG,CACtI,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7F,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvC,MAAM,QAAQ,GAAG,IAAA,mCAAmB,EAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;gBACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7C,OAAO,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CACL,CAAC,EACD,CAAC,EACD,gCAAgC,EAChC,EAAE,CAAC,eAAe,CAAC,EACnB,kBAAkB,QAAQ,CAAC,IAAI,4CAA4C,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,IAAI,sBAAsB,OAAO,CAAC,MAAM,oCAAoC,CACtL,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAiC,EAAE,KAAwB;IAChF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1G,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,GAAc,EAAE,CAAS,EAAE,QAAkB,EAAE,KAAwB,EAAE,MAA0B;IAC3H,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,KAAoB,EAAE,WAA8B,EAAE,EAAQ,EAAE;YACzG,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;YAClF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAA4C,CAAC;gBAC3E,IAAI,KAAK,KAAK,MAAM;oBAAE,SAAS;gBAC/B,MAAM,IAAI,GACR,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7H,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC7F,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,4BAA4B,EAAE,IAAI,EAAE,UAAU,KAAK,2CAA2C,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC7H,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1C,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,4BAA4B,EAAE,IAAI,EAAE,UAAU,KAAK,UAAU,IAAI,gCAAgC,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClI,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;gBACrG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;;gBACnE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,IAAA,oBAAS,EAAC,MAAM,CAAC,KAAK,MAAM;gBAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { type Baseline } from '../workflow/deduce';
2
+ import { type CoreResult } from './types';
3
+ /** The manifest both commands edit, repository-relative. */
4
+ export declare const WORKFLOWS_MANIFEST_PATH = ".wingfoil/workflows.yaml";
5
+ /** `--kind` with a boolean (exit 2; `spec-003`'s `E_WORKFLOW_KIND_CONFLICT`, as an argument error). */
6
+ export declare const KIND_CONFLICT_MESSAGE = "--kind cannot be combined with --startable or --includable (declare one or the other)";
7
+ /** Neither `--kind` nor a boolean (exit 2; `spec-003`'s `E_WORKFLOW_NEITHER_STARTABLE_NOR_INCLUDABLE`). */
8
+ export declare const NO_DECLARATION_MESSAGE = "missing required argument: --kind, --startable or --includable";
9
+ /** `spec-017` §10's refusal of a duplicate name (BDD P4.8 sc. 3). */
10
+ export declare const workflowExistsMessage: (name: string) => string;
11
+ /** `wingfoil workflow create <name> …` params: the name rides the positional, `--kind` / `--element` / `--description` the options. */
12
+ export interface WorkflowCreateParams {
13
+ readonly root: string;
14
+ readonly positional?: string;
15
+ readonly options?: Readonly<Record<string, string | readonly string[]>>;
16
+ readonly startable?: boolean;
17
+ readonly includable?: boolean;
18
+ }
19
+ /** `wingfoil workflow remove <ref>` params. */
20
+ export interface WorkflowRemoveParams {
21
+ readonly root: string;
22
+ readonly positional?: string;
23
+ }
24
+ /** `workflow create`'s result (`spec-017` §8, task-211): the workflow written and the commit. */
25
+ export interface CreateResult {
26
+ readonly baseline: Baseline;
27
+ readonly name: string;
28
+ readonly file: string;
29
+ readonly startable: boolean;
30
+ readonly includable: boolean;
31
+ readonly commit: string;
32
+ }
33
+ /** `workflow remove`'s result (`spec-017` §8, task-211): the workflow deleted and the commit. */
34
+ export interface RemoveResult {
35
+ readonly baseline: Baseline;
36
+ readonly name: string;
37
+ readonly file: string;
38
+ readonly commit: string;
39
+ }
40
+ /**
41
+ * `workflow create <name>` (`spec-017` §7.7, BDD P4.8). Refusal order: usage → identity (REQ-SEC-01) →
42
+ * initialized project → the registry at `HEAD` (a `spec-003` error is `VALIDATION`) → a workflow of that name
43
+ * loaded at `HEAD` (`CONFLICT`) → confinement → the target on disk (`dl-086`, `CONFLICT`) → the write guard on
44
+ * the target and on `workflows.yaml` → the in-place manifest edit → the prospective load → the commit.
45
+ *
46
+ * @throws `UsageError` (exit 2) for the argument errors; `DiagnosticsError` for a `spec-003` error at `HEAD`.
47
+ */
48
+ export declare function workflowCreate(params: WorkflowCreateParams): Promise<CoreResult<CreateResult>>;
49
+ /**
50
+ * `workflow remove <ref>` (`spec-017` §7.8, BDD P4.9, REQ-SEC-07). `<ref>` is a workflow name, or an open
51
+ * instance id standing for its workflow (as `show` resolves it). Refusal order: usage → identity →
52
+ * initialized project → the registry and the deduction at `HEAD` → `<ref>` (`NOT_FOUND`) → a file under
53
+ * `workflows/built-in/` (REQ-SEC-07 clause (a), `VALIDATION`) → included by another workflow (clause (b),
54
+ * `dl-030`; `CONFLICT`, every referrer in `details.referrers`) → an open instance (`CONFLICT`, every id in
55
+ * `details.instances`; each also a `details.issues` line, which the surfaces print) → confinement → the write guard on the file and on `workflows.yaml` → the in-place
56
+ * manifest edit → the prospective load → the commit.
57
+ *
58
+ * @throws `UsageError` (exit 2) without `<ref>`; `DiagnosticsError` for a `spec-003` error at `HEAD`.
59
+ */
60
+ export declare function workflowRemove(params: WorkflowRemoveParams): Promise<CoreResult<RemoveResult>>;
61
+ /** `workflow create`'s `--format console` rendering: the workflow, its file and the commit. Pure. */
62
+ export declare function renderCreateConsole(value: CreateResult): string;
63
+ /** `workflow remove`'s `--format console` rendering: the workflow, its file and the commit. Pure. */
64
+ export declare function renderRemoveConsole(value: RemoveResult): string;
65
+ //# sourceMappingURL=workflow-create-remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-create-remove.d.ts","sourceRoot":"","sources":["../../src/core/workflow-create-remove.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAUxE,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAO3D,4DAA4D;AAC5D,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAKlE,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,0FAA0F,CAAC;AAE7H,2GAA2G;AAC3G,eAAO,MAAM,sBAAsB,mEAAmE,CAAC;AAEvG,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,MAA4C,CAAC;AAElG,uIAAuI;AACvI,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAgED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CA6CpG;AAUD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAyDpG;AAOD,qGAAqG;AACrG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAG/D;AAED,qGAAqG;AACrG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAG/D"}