@bett3r-dev/blueprint-schema 1.7.0 → 1.9.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 (206) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/build/cjs/apply-design.d.ts +1 -1
  3. package/build/cjs/apply-design.d.ts.map +1 -1
  4. package/build/cjs/apply-design.js +18 -5
  5. package/build/cjs/apply-design.js.map +1 -1
  6. package/build/cjs/apply-overrides.d.ts.map +1 -1
  7. package/build/cjs/apply-overrides.js +20 -2
  8. package/build/cjs/apply-overrides.js.map +1 -1
  9. package/build/cjs/card-holds.d.ts +4 -0
  10. package/build/cjs/card-holds.d.ts.map +1 -0
  11. package/build/cjs/card-holds.js +51 -0
  12. package/build/cjs/card-holds.js.map +1 -0
  13. package/build/cjs/channel-link.d.ts +11 -0
  14. package/build/cjs/channel-link.d.ts.map +1 -0
  15. package/build/cjs/channel-link.js +39 -0
  16. package/build/cjs/channel-link.js.map +1 -0
  17. package/build/cjs/coverage-links.d.ts +1 -1
  18. package/build/cjs/coverage-links.d.ts.map +1 -1
  19. package/build/cjs/coverage-links.js +10 -3
  20. package/build/cjs/coverage-links.js.map +1 -1
  21. package/build/cjs/design.d.ts +38 -3
  22. package/build/cjs/design.d.ts.map +1 -1
  23. package/build/cjs/design.js +21 -5
  24. package/build/cjs/design.js.map +1 -1
  25. package/build/cjs/diagnostics.d.ts +12 -0
  26. package/build/cjs/diagnostics.d.ts.map +1 -1
  27. package/build/cjs/diagnostics.js.map +1 -1
  28. package/build/cjs/edge-endpoints.d.ts +33 -0
  29. package/build/cjs/edge-endpoints.d.ts.map +1 -0
  30. package/build/cjs/edge-endpoints.js +83 -0
  31. package/build/cjs/edge-endpoints.js.map +1 -0
  32. package/build/cjs/effective-design.d.ts +21 -0
  33. package/build/cjs/effective-design.d.ts.map +1 -0
  34. package/build/cjs/effective-design.js +177 -0
  35. package/build/cjs/effective-design.js.map +1 -0
  36. package/build/cjs/fork-scenarios.d.ts +3 -1
  37. package/build/cjs/fork-scenarios.d.ts.map +1 -1
  38. package/build/cjs/fork-scenarios.js +20 -5
  39. package/build/cjs/fork-scenarios.js.map +1 -1
  40. package/build/cjs/graph.d.ts +25 -0
  41. package/build/cjs/graph.d.ts.map +1 -1
  42. package/build/cjs/graph.js +36 -0
  43. package/build/cjs/graph.js.map +1 -1
  44. package/build/cjs/index.d.ts +10 -0
  45. package/build/cjs/index.d.ts.map +1 -1
  46. package/build/cjs/index.js +10 -0
  47. package/build/cjs/index.js.map +1 -1
  48. package/build/cjs/map-review-view.d.ts +29 -0
  49. package/build/cjs/map-review-view.d.ts.map +1 -0
  50. package/build/cjs/map-review-view.js +64 -0
  51. package/build/cjs/map-review-view.js.map +1 -0
  52. package/build/cjs/map-structure.d.ts +26 -2
  53. package/build/cjs/map-structure.d.ts.map +1 -1
  54. package/build/cjs/map-structure.js.map +1 -1
  55. package/build/cjs/map-vocabulary.d.ts +8 -1
  56. package/build/cjs/map-vocabulary.d.ts.map +1 -1
  57. package/build/cjs/map-vocabulary.js +15 -2
  58. package/build/cjs/map-vocabulary.js.map +1 -1
  59. package/build/cjs/nodes.d.ts +2 -0
  60. package/build/cjs/nodes.d.ts.map +1 -1
  61. package/build/cjs/overrides.d.ts +21 -0
  62. package/build/cjs/overrides.d.ts.map +1 -1
  63. package/build/cjs/overrides.js +53 -1
  64. package/build/cjs/overrides.js.map +1 -1
  65. package/build/cjs/reachability.js +1 -1
  66. package/build/cjs/reachability.js.map +1 -1
  67. package/build/cjs/reality-check.d.ts +1 -1
  68. package/build/cjs/reality-check.d.ts.map +1 -1
  69. package/build/cjs/reality-check.js +46 -9
  70. package/build/cjs/reality-check.js.map +1 -1
  71. package/build/cjs/scenario-test-level.d.ts +25 -0
  72. package/build/cjs/scenario-test-level.d.ts.map +1 -0
  73. package/build/cjs/scenario-test-level.js +43 -0
  74. package/build/cjs/scenario-test-level.js.map +1 -0
  75. package/build/cjs/session-phase.d.ts +80 -0
  76. package/build/cjs/session-phase.d.ts.map +1 -0
  77. package/build/cjs/session-phase.js +97 -0
  78. package/build/cjs/session-phase.js.map +1 -0
  79. package/build/cjs/session.d.ts +21 -2
  80. package/build/cjs/session.d.ts.map +1 -1
  81. package/build/cjs/session.js +3 -2
  82. package/build/cjs/session.js.map +1 -1
  83. package/build/cjs/spec.d.ts +3 -0
  84. package/build/cjs/spec.d.ts.map +1 -1
  85. package/build/cjs/spec.js +85 -17
  86. package/build/cjs/spec.js.map +1 -1
  87. package/build/cjs/step-elements.d.ts +27 -0
  88. package/build/cjs/step-elements.d.ts.map +1 -0
  89. package/build/cjs/step-elements.js +28 -0
  90. package/build/cjs/step-elements.js.map +1 -0
  91. package/build/cjs/tags.d.ts +26 -0
  92. package/build/cjs/tags.d.ts.map +1 -0
  93. package/build/cjs/tags.js +28 -0
  94. package/build/cjs/tags.js.map +1 -0
  95. package/build/cjs/unproduced-events.d.ts +10 -0
  96. package/build/cjs/unproduced-events.d.ts.map +1 -0
  97. package/build/cjs/unproduced-events.js +37 -0
  98. package/build/cjs/unproduced-events.js.map +1 -0
  99. package/build/cjs/validate-design.d.ts +1 -1
  100. package/build/cjs/validate-design.d.ts.map +1 -1
  101. package/build/cjs/validate-design.js +74 -4
  102. package/build/cjs/validate-design.js.map +1 -1
  103. package/build/esm/apply-design.d.ts +1 -1
  104. package/build/esm/apply-design.d.ts.map +1 -1
  105. package/build/esm/apply-design.js +18 -5
  106. package/build/esm/apply-design.js.map +1 -1
  107. package/build/esm/apply-overrides.d.ts.map +1 -1
  108. package/build/esm/apply-overrides.js +20 -2
  109. package/build/esm/apply-overrides.js.map +1 -1
  110. package/build/esm/card-holds.d.ts +4 -0
  111. package/build/esm/card-holds.d.ts.map +1 -0
  112. package/build/esm/card-holds.js +48 -0
  113. package/build/esm/card-holds.js.map +1 -0
  114. package/build/esm/channel-link.d.ts +11 -0
  115. package/build/esm/channel-link.d.ts.map +1 -0
  116. package/build/esm/channel-link.js +34 -0
  117. package/build/esm/channel-link.js.map +1 -0
  118. package/build/esm/coverage-links.d.ts +1 -1
  119. package/build/esm/coverage-links.d.ts.map +1 -1
  120. package/build/esm/coverage-links.js +10 -3
  121. package/build/esm/coverage-links.js.map +1 -1
  122. package/build/esm/design.d.ts +38 -3
  123. package/build/esm/design.d.ts.map +1 -1
  124. package/build/esm/design.js +18 -4
  125. package/build/esm/design.js.map +1 -1
  126. package/build/esm/diagnostics.d.ts +12 -0
  127. package/build/esm/diagnostics.d.ts.map +1 -1
  128. package/build/esm/diagnostics.js.map +1 -1
  129. package/build/esm/edge-endpoints.d.ts +33 -0
  130. package/build/esm/edge-endpoints.d.ts.map +1 -0
  131. package/build/esm/edge-endpoints.js +77 -0
  132. package/build/esm/edge-endpoints.js.map +1 -0
  133. package/build/esm/effective-design.d.ts +21 -0
  134. package/build/esm/effective-design.d.ts.map +1 -0
  135. package/build/esm/effective-design.js +174 -0
  136. package/build/esm/effective-design.js.map +1 -0
  137. package/build/esm/fork-scenarios.d.ts +3 -1
  138. package/build/esm/fork-scenarios.d.ts.map +1 -1
  139. package/build/esm/fork-scenarios.js +20 -5
  140. package/build/esm/fork-scenarios.js.map +1 -1
  141. package/build/esm/graph.d.ts +25 -0
  142. package/build/esm/graph.d.ts.map +1 -1
  143. package/build/esm/graph.js +33 -0
  144. package/build/esm/graph.js.map +1 -1
  145. package/build/esm/index.d.ts +10 -0
  146. package/build/esm/index.d.ts.map +1 -1
  147. package/build/esm/index.js +10 -0
  148. package/build/esm/index.js.map +1 -1
  149. package/build/esm/map-review-view.d.ts +29 -0
  150. package/build/esm/map-review-view.d.ts.map +1 -0
  151. package/build/esm/map-review-view.js +58 -0
  152. package/build/esm/map-review-view.js.map +1 -0
  153. package/build/esm/map-structure.d.ts +26 -2
  154. package/build/esm/map-structure.d.ts.map +1 -1
  155. package/build/esm/map-structure.js.map +1 -1
  156. package/build/esm/map-vocabulary.d.ts +8 -1
  157. package/build/esm/map-vocabulary.d.ts.map +1 -1
  158. package/build/esm/map-vocabulary.js +13 -1
  159. package/build/esm/map-vocabulary.js.map +1 -1
  160. package/build/esm/nodes.d.ts +2 -0
  161. package/build/esm/nodes.d.ts.map +1 -1
  162. package/build/esm/overrides.d.ts +21 -0
  163. package/build/esm/overrides.d.ts.map +1 -1
  164. package/build/esm/overrides.js +51 -1
  165. package/build/esm/overrides.js.map +1 -1
  166. package/build/esm/reachability.js +1 -1
  167. package/build/esm/reachability.js.map +1 -1
  168. package/build/esm/reality-check.d.ts +1 -1
  169. package/build/esm/reality-check.d.ts.map +1 -1
  170. package/build/esm/reality-check.js +47 -10
  171. package/build/esm/reality-check.js.map +1 -1
  172. package/build/esm/scenario-test-level.d.ts +25 -0
  173. package/build/esm/scenario-test-level.d.ts.map +1 -0
  174. package/build/esm/scenario-test-level.js +37 -0
  175. package/build/esm/scenario-test-level.js.map +1 -0
  176. package/build/esm/session-phase.d.ts +80 -0
  177. package/build/esm/session-phase.d.ts.map +1 -0
  178. package/build/esm/session-phase.js +93 -0
  179. package/build/esm/session-phase.js.map +1 -0
  180. package/build/esm/session.d.ts +21 -2
  181. package/build/esm/session.d.ts.map +1 -1
  182. package/build/esm/session.js +3 -2
  183. package/build/esm/session.js.map +1 -1
  184. package/build/esm/spec.d.ts +3 -0
  185. package/build/esm/spec.d.ts.map +1 -1
  186. package/build/esm/spec.js +88 -20
  187. package/build/esm/spec.js.map +1 -1
  188. package/build/esm/step-elements.d.ts +27 -0
  189. package/build/esm/step-elements.d.ts.map +1 -0
  190. package/build/esm/step-elements.js +21 -0
  191. package/build/esm/step-elements.js.map +1 -0
  192. package/build/esm/tags.d.ts +26 -0
  193. package/build/esm/tags.d.ts.map +1 -0
  194. package/build/esm/tags.js +21 -0
  195. package/build/esm/tags.js.map +1 -0
  196. package/build/esm/unproduced-events.d.ts +10 -0
  197. package/build/esm/unproduced-events.d.ts.map +1 -0
  198. package/build/esm/unproduced-events.js +32 -0
  199. package/build/esm/unproduced-events.js.map +1 -0
  200. package/build/esm/validate-design.d.ts +1 -1
  201. package/build/esm/validate-design.d.ts.map +1 -1
  202. package/build/esm/validate-design.js +74 -4
  203. package/build/esm/validate-design.js.map +1 -1
  204. package/build/tsconfig.tsbuildinfo +1 -1
  205. package/package.json +1 -1
  206. package/schema/map.schema.json +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"reality-check.js","sourceRoot":"","sources":["../../src/reality-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reality-check.js","sourceRoot":"","sources":["../../src/reality-check.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAuB,UAAU,EAAE,MAAM,EAAE,WAAW,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAY/G,MAAM,UAAU,cAAc,CAAE,OAAoB;IAClD,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM;QAC5B,CAAC,CAAC,QAAS,OAAO,CAAC,QAAS,EAAE;QAC9B,CAAC,CAAC,QAAS,OAAO,CAAC,IAAK,IAAK,OAAO,CAAC,EAAG,IAAK,OAAO,CAAC,QAAS,EAAE,CAAC;AACrE,CAAC;AAkBD,MAAM,UAAU,gBAAgB,CAAE,SAAiB,EAAE,KAAa,EAAE,QAAQ,GAAG,CAAC;IAC9E,MAAM,MAAM,GAAG,kBAAmB,SAAU,gBAAiB,KAAM,QAAQ,CAAC;IAC5E,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAI,MAAO,MAAO,QAAS,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;AACxE,CAAC;AAID,SAAS,MAAM,CACb,SAAgC,EAChC,KAA4B,EAC5B,OAAkB;IAElB,OAAO,SAAS,IAAI,KAAK,IAAI,OAAO,CAAC;AACvC,CAAC;AAUD,SAAS,OAAO,CAAE,IAAgD;IAChE,OAAO,GAAI,IAAI,CAAC,IAAK,IAAK,IAAI,CAAC,EAAG,IAAK,IAAI,CAAC,IAAK,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,UAAU,CAAE,IAAmB;IACtC,OAAO,MAAM,CAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAE,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAE,KAAqB;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IACpD,KAAM,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAE,CAAC;QAC1B,UAAU,CAAC,GAAG,CAAE,UAAU,CAAE,IAAI,CAAE,EAAE,IAAI,CAAE,CAAC;IAC7C,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IACxD,KAAM,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAK,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAG,UAAU,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,CAAE,EAAE,IAAI,CAAC,QAAQ,CAAE,CAAC;IACtF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,GAAG,CAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAE,OAAO,CAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAE,KAAK,CAAE,EAAE,CAAC;AACxH,CAAC;AAED,SAAS,MAAM,CAAE,OAAgB,EAAE,EAAU;IAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAE,EAAE,CAAE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAE,EAAE,CAAE,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAE,OAAqC;IACtD,OAAO,CAAE,GAAG,CAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAE,CAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC;AACrF,CAAC;AAED,SAAS,OAAO,CAAE,UAAyC;IACzD,OAAO,CAAE,GAAG,IAAI,GAAG,CAAE,UAAU,IAAI,EAAE,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAE,IAAmB,EAAE,GAAkC;IAC9E,IAAK,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;QAAG,OAAO,KAAK,CAAC;IAC1F,IAAK,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAE,IAAI,CAAC,OAAO,CAAE,KAAK,QAAQ,CAAE,GAAG,CAAC,OAAO,CAAE;QAAE,OAAO,KAAK,CAAC;IACrG,IAAK,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;QAAG,OAAO,KAAK,CAAC;IACrE,IAAK,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAE,IAAI,CAAC,UAAU,CAAE,KAAK,OAAO,CAAE,GAAG,CAAC,UAAU,CAAE;QAAE,OAAO,KAAK,CAAC;IAC5G,IAAK,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAE,KAAK,GAAG,CAAC,OAAO;QAAG,OAAO,KAAK,CAAC;IAC3F,6GAA6G;IAC7G,IAAK,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAE,IAAI,CAAC,IAAI,CAAE,KAAK,OAAO,CAAE,GAAG,CAAC,IAAI,CAAE;QAAE,OAAO,KAAK,CAAC;IAC1F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAE,KAAkB,EAAE,OAAgB;IACjE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAE,CAAC;IAC5C,IAAK,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,CAAE,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAE,CAAC;IAChG,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAE,KAAK,CAAC,EAAE,CAAE,CAAC;IACvC,IAAK,MAAM,KAAK,SAAS;QAAG,OAAO,SAAS,CAAC;IAC7C,OAAO,MAAM,CAAE,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAE,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAE,QAAsB,EAAE,OAAgB,EAAE,QAAgB;IACrF,IAAK,OAAO,CAAC,UAAU,CAAC,GAAG,CAAE,QAAQ,CAAE;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,IAAI,GAAG,UAAU,CAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAE,CAAC;IAChG,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAE,OAAO,EAAE,IAAI,CAAE,CAAC;AACvF,CAAC;AAED,uGAAuG;AACvG,SAAS,cAAc,CAAE,aAAsC,EAAE,OAAgB;IAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAM,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,kBAAkB,CAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAE,CAAC;QAChE,IAAK,KAAK,KAAK,SAAS;YAAG,MAAM,CAAC,GAAG,CAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAE,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAsB,EACtB,OAAgB,EAChB,QAAgB,EAChB,MAAmC;IAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAE,QAAQ,CAAE,CAAC;IACrC,OAAO,MAAM,CACX,OAAO,CAAC,UAAU,CAAC,GAAG,CAAE,QAAQ,CAAE;QAChC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAI,QAAS,oCAAoC,EAAE;QACrF,CAAC,CAAC,KAAK,KAAK,SAAS;YACnB,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAI,QAAS,yCAA0C,KAAM,mDAAmD,EAAE;YACpJ,CAAC,CAAC,SAAS,EACf,SAAS,EACT,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAI,QAAQ,CAAC,KAAM,yBAAyB,EAAE,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAE,QAAsB,EAAE,OAAgB,EAAE,GAAW;IAC3E,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,IAAK,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAG,OAAO,IAAI,CAAC;IACnE,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC;IAC7C,IAAK,MAAM,KAAK,SAAS;QAAG,OAAO,KAAK,CAAC;IACzC,OAAO,QAAQ,CAAC,KAAK,CAAE,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAE,SAAS,CAAE,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAsB,EACtB,OAAgB,EAChB,kBAAuC,EACvC,MAAmC;IAEnC,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAE,QAAQ,CAAC,IAAI,CAAE,IAAI,QAAQ,CAAC,IAAI;QAClD,EAAE,EAAE,MAAM,CAAC,GAAG,CAAE,QAAQ,CAAC,EAAE,CAAE,IAAI,QAAQ,CAAC,EAAE;QAC5C,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,CAAE,EAAU,EAAY,EAAE,CACzC,MAAM,CAAE,OAAO,EAAE,EAAE,CAAE,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAE,EAAE,CAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAE,QAAQ,CAAC,IAAI,CAAE;QACzC,CAAC,CAAC,QAAQ,CAAC,IAAI;QACf,CAAC,CAAC,CAAC,QAAQ,CAAE,QAAQ,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvD,OAAO,MAAM,CACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAE,GAAG,CAAE,IAAI,aAAa,CAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAE;QACjE,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAI,GAAI,oCAAoC,EAAE;QAChF,CAAC,CAAC,SAAS,EACb,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,4BAA6B,QAAS,+BAA+B,EAAE;QACrG,CAAC,CAAC,SAAS,EACb,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAI,GAAI,4BAA4B,EAAE,CACrE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAkB,EAClB,OAAgB,EAChB,kBAAuC,EACvC,QAA4B;IAE5B,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAE,QAAQ,CAAE,CAAC;IACvF,8GAA8G;IAC9G,mHAAmH;IACnH,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAE,KAAK,CAAE,IAAI,cAAc,CAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7G,MAAM,QAAQ,GAAG,MAAM,CAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAE,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAE,CAAC;IAEjG,OAAO,MAAM,CACX,KAAK;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAI,QAAS,6CAA6C,EAAE;QAC9F,CAAC,CAAC,SAAS,EACb,CAAC,QAAQ;QACP,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAmB,KAAK,CAAC,EAAG,+BAA+B,EAAE;QAC3F,CAAC,CAAC,SAAS,EACb,gBAAgB,CAAE,KAAK,CAAE;QACvB,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAI,KAAK,CAAC,EAAG,qEAAqE,EAAE;QACpH,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAI,KAAK,CAAC,EAAG,2BAA2B,EAAE,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAkB,EAClB,OAAgB,EAChB,kBAAuC,EACvC,gBAAqC;IAErC,MAAM,CAAE,OAAO,EAAE,OAAO,CAAE,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM;QAChD,CAAC,CAAC,CAAE,MAAM,CAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAE,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAE,EAAE,KAAK,CAAC,EAAE,CAAE;QAC/F,CAAC,CAAC;YACA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;mBAChF,gBAAgB,CAAC,GAAG,CAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7F,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;SAClE,CAAC;IAEJ,OAAO,MAAM,CACX,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAI,OAAQ,mCAAmC,EAAE,EACvG,SAAS,EACT,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAI,OAAQ,kCAAkC,EAAE,CAC/E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAAuB,EACvB,MAA8B;IAE9B,MAAM,OAAO,GAAG,YAAY,CAAE,OAAO,CAAE,CAAC;IACxC,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IACnD,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,aAAa,CAAC,GAAG,CAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAE,CAAC,CAC5F,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAE,aAAa,CAAC,GAAG,CAAE,OAAO,CAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,cAAc,CAAE,aAAa,EAAE,OAAO,CAAE,CAAC;IAExD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,aAAa,CAAC,OAAO,CAAC,CAAE,QAAQ,EAAE,KAAK,EAAG,EAAE;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAE,CAAC;QAC7E,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,iBAAkB,KAAM,GAAG;YACjC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;YACnC,GAAG,iBAAiB,CAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAE;SAC5D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,OAAO,CAAC,CAAE,QAAQ,EAAE,KAAK,EAAG,EAAE;QAC1C,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,iBAAkB,KAAM,GAAG;YACjC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;YACxF,GAAG,iBAAiB,CAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAE;SACtE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAE,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAE,KAAK,EAAE,KAAK,EAAG,EAAE;QACjD,MAAM,QAAQ,GAAG,oBAAoB,CAAE,KAAK,EAAE,OAAO,CAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,UAAW,KAAM,GAAG;YAC1B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE;YACzD,GAAG,gBAAgB,CAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAE;SACpE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAE,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAE,KAAK,EAAE,KAAK,EAAG,EAAE;QACjD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,UAAW,KAAM,GAAG;YAC1B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM;gBAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;gBACtC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;YAC9E,GAAG,gBAAgB,CAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,CAAE;SAC5E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,WAAW,CAAE,CAAC;IAChF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAE,CAAC;IAExE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAE,EAAE,CAAC;AAClG,CAAC;AAaD,MAAM,UAAU,iBAAiB,CAAE,KAA6B;IAC9D,MAAM,KAAK,GAAG,yBAAyB,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAE,CAAC;IACvE,IAAK,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAG,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAE1E,MAAM,KAAK,GAAG,CAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;IACxC,MAAM,KAAK,GAAG,CAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,CAAC,OAAO,CAAC,CAAE,IAAI,EAAE,KAAK,EAAG,EAAE;QAC9B,SAAS,CAAC,GAAG,CAAE,UAAU,CAAE,IAAI,CAAE,EAAE,KAAK,CAAE,CAAC;QAC3C,SAAS,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,KAAM,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACvC,IAAK,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC;YACxD,IAAK,KAAK,KAAK,SAAS;gBAAG,SAAS;YACpC,KAAK,CAAE,KAAK,CAAE,GAAG,EAAE,GAAG,KAAK,CAAE,KAAK,CAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACpF,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;SACnF,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,CAAE,IAAmB,EAAE,KAAK,EAAG,EAAE;YAC7C,IAAK,OAAO,CAAE,IAAI,CAAE,KAAK,GAAG;gBAAG,OAAO;YACtC,KAAK,CAAE,KAAK,CAAE,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { MapEntryId, MapFork, MapNode } from './map-structure.js';
2
+ import type { MapNodeLevel } from './map-vocabulary.js';
3
+ /** The test level a scenario's test runs at; the scaffolder's `TestLevel` is this type. */
4
+ export type ScenarioTestLevel = 'unit' | 'integration';
5
+ /** The test level a map card implies (ESAS-297-F1): What is unit; How, Why and Who are integration. */
6
+ export declare const TEST_LEVEL_OF_CARD: Record<MapNodeLevel, ScenarioTestLevel>;
7
+ /** The map cards and forks a scenario's anchors are resolved against. */
8
+ export type ScenarioTestLevelMap = {
9
+ nodes: readonly MapNode[];
10
+ forks: readonly MapFork[];
11
+ };
12
+ /** The map card an anchor names: the node itself, or a fork's anchor card. */
13
+ export declare function anchorCard(anchor: MapEntryId, map: ScenarioTestLevelMap): MapNode | undefined;
14
+ /**
15
+ * The level an anchor set implies: the most integrated of its cards' levels, a fork taking its
16
+ * anchor card's (ESAS-297-F1). Undefined when no anchor names a card, so coverage decides.
17
+ */
18
+ export declare function anchorTestLevel(anchors: readonly MapEntryId[], map: ScenarioTestLevelMap): ScenarioTestLevel | undefined;
19
+ /**
20
+ * A scenario's test level: its anchors' (most integrated wins), else its coverage's, where one
21
+ * covered aggregate is unit and more is integration (ESAS-287-F16). `coveredTypes` are the node
22
+ * types of the elements it covers. Never undefined: nothing to decide from is unit.
23
+ */
24
+ export declare function scenarioTestLevel(anchors: readonly MapEntryId[], map: ScenarioTestLevelMap, coveredTypes: readonly string[]): ScenarioTestLevel;
25
+ //# sourceMappingURL=scenario-test-level.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-test-level.d.ts","sourceRoot":"","sources":["../../src/scenario-test-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,2FAA2F;AAC3F,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,aAAa,CAAC;AAEvD,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAKtE,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CAC3B,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,UAAU,CAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,oBAAoB,GAAI,OAAO,GAAG,SAAS,CAK/F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAE,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,oBAAoB,GAAI,iBAAiB,GAAG,SAAS,CAO1H;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GACzF,iBAAiB,CAEnB"}
@@ -0,0 +1,37 @@
1
+ /** The test level a map card implies (ESAS-297-F1): What is unit; How, Why and Who are integration. */
2
+ export const TEST_LEVEL_OF_CARD = {
3
+ deliverable: 'unit',
4
+ impact: 'integration',
5
+ goal: 'integration',
6
+ mapActor: 'integration'
7
+ };
8
+ /** The map card an anchor names: the node itself, or a fork's anchor card. */
9
+ export function anchorCard(anchor, map) {
10
+ const node = map.nodes.find(n => n.id === anchor);
11
+ if (node)
12
+ return node;
13
+ const fork = map.forks.find(f => f.id === anchor);
14
+ return fork?.anchor === undefined ? undefined : map.nodes.find(n => n.id === fork.anchor);
15
+ }
16
+ /**
17
+ * The level an anchor set implies: the most integrated of its cards' levels, a fork taking its
18
+ * anchor card's (ESAS-297-F1). Undefined when no anchor names a card, so coverage decides.
19
+ */
20
+ export function anchorTestLevel(anchors, map) {
21
+ const levels = anchors
22
+ .map(a => anchorCard(a, map))
23
+ .filter((c) => c !== undefined)
24
+ .map(c => TEST_LEVEL_OF_CARD[c.level]);
25
+ if (levels.length === 0)
26
+ return undefined;
27
+ return levels.includes('integration') ? 'integration' : 'unit';
28
+ }
29
+ /**
30
+ * A scenario's test level: its anchors' (most integrated wins), else its coverage's, where one
31
+ * covered aggregate is unit and more is integration (ESAS-287-F16). `coveredTypes` are the node
32
+ * types of the elements it covers. Never undefined: nothing to decide from is unit.
33
+ */
34
+ export function scenarioTestLevel(anchors, map, coveredTypes) {
35
+ return anchorTestLevel(anchors, map) ?? (coveredTypes.filter(t => t === 'aggregate').length > 1 ? 'integration' : 'unit');
36
+ }
37
+ //# sourceMappingURL=scenario-test-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-test-level.js","sourceRoot":"","sources":["../../src/scenario-test-level.ts"],"names":[],"mappings":"AAUA,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAA4C;IACzE,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,aAAa;CACxB,CAAC;AAQF,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAE,MAAkB,EAAE,GAAyB;IACvE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;IACpD,IAAK,IAAI;QAAG,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;IACpD,OAAO,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAE,CAAC;AAC9F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAE,OAA8B,EAAE,GAAyB;IACxF,MAAM,MAAM,GAAG,OAAO;SACnB,GAAG,CAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAE,CAAC,EAAE,GAAG,CAAE,CAAC;SAC/B,MAAM,CAAE,CAAE,CAAC,EAAiB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAE;SAChD,GAAG,CAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAE,CAAC,CAAC,KAAK,CAAE,CAAC,CAAC;IAC5C,IAAK,MAAM,CAAC,MAAM,KAAK,CAAC;QAAG,OAAO,SAAS,CAAC;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAE,aAAa,CAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA8B,EAAE,GAAyB,EAAE,YAA+B;IAE1F,OAAO,eAAe,CAAE,OAAO,EAAE,GAAG,CAAE,IAAI,CAAE,YAAY,CAAC,MAAM,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC;AAClI,CAAC"}
@@ -0,0 +1,80 @@
1
+ import type { SessionStage } from './session.js';
2
+ /**
3
+ * What a session is doing now, beside its lifecycle state (active / unanchored / frozen), which says only whether it
4
+ * is anchored. A phase is derived, never stored: the server reads the session's newest facts (its design job, its
5
+ * Design done chain, its implementation dispatch, its agent's commit signals, its branch's merge) and sessionPhaseOf picks
6
+ * the one that describes the present. `merged` is the end: the ticket branch landed and nothing waits on anyone.
7
+ */
8
+ export declare const SESSION_PHASES: readonly ["designing", "design-done", "implementing", "review", "needs-human", "blocked", "merged"];
9
+ export type SessionPhaseName = typeof SESSION_PHASES[number];
10
+ /** Who the session waits on: its agent working, a person acting, a runner claiming a queued job, or nobody (it ended). */
11
+ export declare const SESSION_PHASE_WAITING_ON: readonly ["agent", "you", "runner", "nobody"];
12
+ export type SessionPhaseWaitingOn = typeof SESSION_PHASE_WAITING_ON[number];
13
+ /**
14
+ * The precise situation, each code belonging to one phase (PHASE_OF_CODE). A view words the code; `reason`, `step` and
15
+ * `link` carry what the wording names.
16
+ */
17
+ export declare const SESSION_PHASE_CODES: readonly ["design-queued", "design-running", "agent-replied", "map-ready", "design-ready", "design-failed", "design-finishing", "design-finish-failed", "design-done", "dispatch-queued", "dispatch-starting", "agent-working", "dispatch-failed", "dispatch-refused", "needs-human", "pr-ready", "merged"];
18
+ export type SessionPhaseCode = typeof SESSION_PHASE_CODES[number];
19
+ export declare const PHASE_OF_CODE: Record<SessionPhaseCode, SessionPhaseName>;
20
+ /**
21
+ * A session's phase. `since` is when the deciding fact happened (ISO). `step` is the step a running job or the Design
22
+ * done chain is at; `reason` a failure reason, a refused dispatch's outcome or a signal commit's subject; `link` the
23
+ * implementation agent's live Claude Code session.
24
+ */
25
+ export type SessionPhase = {
26
+ phase: SessionPhaseName;
27
+ code: SessionPhaseCode;
28
+ waitingOn: SessionPhaseWaitingOn;
29
+ since: string;
30
+ step?: string;
31
+ reason?: string;
32
+ link?: string;
33
+ };
34
+ type JobStatus = 'queued' | 'claimed' | 'done' | 'failed';
35
+ /**
36
+ * The facts a phase is derived from, each the session's newest of its kind; `at` is when it last changed (ISO).
37
+ * `designJob.stage` is the stage the job was claimed in, when it recorded one. `merge` is the session's branch merging into
38
+ * `target`, as the runner's merge poll reported it.
39
+ */
40
+ export type SessionPhaseFacts = {
41
+ ticket: boolean;
42
+ stage?: SessionStage;
43
+ designJob?: {
44
+ status: JobStatus;
45
+ step: string | null;
46
+ stage: string | null;
47
+ failureReason: string | null;
48
+ at: string;
49
+ };
50
+ completion?: {
51
+ step: 'bundle' | 'scaffold' | 'transition' | 'done';
52
+ failed: boolean;
53
+ failureReason: string | null;
54
+ at: string;
55
+ };
56
+ dispatch?: {
57
+ outcome: string;
58
+ status: JobStatus | null;
59
+ failureReason: string | null;
60
+ sessionUrl: string | null;
61
+ at: string;
62
+ };
63
+ signal?: {
64
+ value: 'done' | 'needs-human';
65
+ subject: string;
66
+ at: string;
67
+ };
68
+ merge?: {
69
+ target: string;
70
+ at: string;
71
+ };
72
+ };
73
+ /**
74
+ * The session's phase: of its facts, the newest decides. A finished design job (done) never outranks a later stage's
75
+ * fact, so a reply to a board comment during implementation does not read as the session designing again; a design job
76
+ * still queued or running does, while it runs. Undefined for a session with none of the facts.
77
+ */
78
+ export declare const sessionPhaseOf: (facts: SessionPhaseFacts) => SessionPhase | undefined;
79
+ export {};
80
+ //# sourceMappingURL=session-phase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-phase.d.ts","sourceRoot":"","sources":["../../src/session-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,qGAAwG,CAAC;AACpI,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAE,MAAM,CAAE,CAAC;AAE/D,0HAA0H;AAC1H,eAAO,MAAM,wBAAwB,+CAAkD,CAAC;AACxF,MAAM,MAAM,qBAAqB,GAAG,OAAO,wBAAwB,CAAE,MAAM,CAAE,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,mBAAmB,6SAKtB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,OAAO,mBAAmB,CAAE,MAAM,CAAE,CAAC;AAEpE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAkBpE,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACvH,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAChI,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9H,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC,CAAC;AAsCF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAK,OAAO,iBAAiB,KAAI,YAAY,GAAG,SAa1E,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * What a session is doing now, beside its lifecycle state (active / unanchored / frozen), which says only whether it
3
+ * is anchored. A phase is derived, never stored: the server reads the session's newest facts (its design job, its
4
+ * Design done chain, its implementation dispatch, its agent's commit signals, its branch's merge) and sessionPhaseOf picks
5
+ * the one that describes the present. `merged` is the end: the ticket branch landed and nothing waits on anyone.
6
+ */
7
+ export const SESSION_PHASES = ['designing', 'design-done', 'implementing', 'review', 'needs-human', 'blocked', 'merged'];
8
+ /** Who the session waits on: its agent working, a person acting, a runner claiming a queued job, or nobody (it ended). */
9
+ export const SESSION_PHASE_WAITING_ON = ['agent', 'you', 'runner', 'nobody'];
10
+ /**
11
+ * The precise situation, each code belonging to one phase (PHASE_OF_CODE). A view words the code; `reason`, `step` and
12
+ * `link` carry what the wording names.
13
+ */
14
+ export const SESSION_PHASE_CODES = [
15
+ 'design-queued', 'design-running', 'agent-replied', 'map-ready', 'design-ready', 'design-failed',
16
+ 'design-finishing', 'design-finish-failed', 'design-done',
17
+ 'dispatch-queued', 'dispatch-starting', 'agent-working', 'dispatch-failed', 'dispatch-refused',
18
+ 'needs-human', 'pr-ready', 'merged'
19
+ ];
20
+ export const PHASE_OF_CODE = {
21
+ 'design-queued': 'designing',
22
+ 'design-running': 'designing',
23
+ 'agent-replied': 'designing',
24
+ 'map-ready': 'designing',
25
+ 'design-ready': 'designing',
26
+ 'design-failed': 'blocked',
27
+ 'design-finishing': 'designing',
28
+ 'design-finish-failed': 'blocked',
29
+ 'design-done': 'design-done',
30
+ 'dispatch-queued': 'implementing',
31
+ 'dispatch-starting': 'implementing',
32
+ 'agent-working': 'implementing',
33
+ 'dispatch-failed': 'blocked',
34
+ 'dispatch-refused': 'blocked',
35
+ 'needs-human': 'needs-human',
36
+ 'pr-ready': 'review',
37
+ merged: 'merged'
38
+ };
39
+ const phase = (code, waitingOn, since, extra = {}) => ({
40
+ phase: PHASE_OF_CODE[code], code, waitingOn, since,
41
+ ...Object.fromEntries(Object.entries(extra).filter(([, value]) => value !== undefined && value !== null && value !== ''))
42
+ });
43
+ const designPhase = (facts, job) => {
44
+ const step = job.step ?? undefined;
45
+ if (job.status === 'queued')
46
+ return phase('design-queued', 'runner', job.at);
47
+ if (job.status === 'claimed')
48
+ return phase('design-running', 'agent', job.at, { step });
49
+ if (job.status === 'failed')
50
+ return phase('design-failed', 'you', job.at, { reason: job.failureReason ?? undefined });
51
+ if (!facts.ticket)
52
+ return phase('agent-replied', 'you', job.at);
53
+ return phase((job.stage ?? facts.stage) === 'program' ? 'design-ready' : 'map-ready', 'you', job.at);
54
+ };
55
+ const completionPhase = (completion) => {
56
+ if (completion.step === 'done')
57
+ return phase('design-done', 'you', completion.at);
58
+ if (completion.failed)
59
+ return phase('design-finish-failed', 'you', completion.at, { step: completion.step, reason: completion.failureReason ?? undefined });
60
+ return phase('design-finishing', 'runner', completion.at, { step: completion.step });
61
+ };
62
+ const dispatchPhase = (dispatch) => {
63
+ if (dispatch.outcome !== 'dispatched')
64
+ return phase('dispatch-refused', 'you', dispatch.at, { reason: dispatch.outcome });
65
+ if (dispatch.status === 'done')
66
+ return phase('agent-working', 'agent', dispatch.at, { link: dispatch.sessionUrl ?? undefined });
67
+ if (dispatch.status === 'failed')
68
+ return phase('dispatch-failed', 'you', dispatch.at, { reason: dispatch.failureReason ?? undefined });
69
+ if (dispatch.status === 'claimed')
70
+ return phase('dispatch-starting', 'runner', dispatch.at);
71
+ return phase('dispatch-queued', 'runner', dispatch.at);
72
+ };
73
+ const signalPhase = (signal) => signal.value === 'needs-human'
74
+ ? phase('needs-human', 'you', signal.at, { reason: signal.subject })
75
+ : phase('pr-ready', 'you', signal.at);
76
+ const mergePhase = (merge) => phase('merged', 'nobody', merge.at, { reason: merge.target });
77
+ /**
78
+ * The session's phase: of its facts, the newest decides. A finished design job (done) never outranks a later stage's
79
+ * fact, so a reply to a board comment during implementation does not read as the session designing again; a design job
80
+ * still queued or running does, while it runs. Undefined for a session with none of the facts.
81
+ */
82
+ export const sessionPhaseOf = (facts) => {
83
+ const later = [
84
+ facts.completion && completionPhase(facts.completion),
85
+ facts.dispatch && dispatchPhase(facts.dispatch),
86
+ facts.signal && signalPhase(facts.signal),
87
+ facts.merge && mergePhase(facts.merge)
88
+ ].filter((candidate) => candidate !== undefined);
89
+ const job = facts.designJob;
90
+ const candidates = job === undefined || (job.status === 'done' && later.length > 0) ? later : [...later, designPhase(facts, job)];
91
+ return candidates.reduce((newest, candidate) => newest === undefined || Date.parse(candidate.since) > Date.parse(newest.since) ? candidate : newest, undefined);
92
+ };
93
+ //# sourceMappingURL=session-phase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-phase.js","sourceRoot":"","sources":["../../src/session-phase.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,24 @@ export type DesignSession = RealityPointer & {
34
34
  at: string;
35
35
  by: ActorId;
36
36
  };
37
+ /** BP-188 (D9, ADR-036 attribute): the Baseline a Change session was started from; absent on any other session. */
38
+ startedFrom?: SessionStartedFrom;
39
+ };
40
+ /** BP-188 (D13, map F6 A): the member's selection a Change session starts on: the cards, the scope, and the typed request. */
41
+ export type SessionSeed = {
42
+ elementIds?: string[];
43
+ scopeId?: string;
44
+ request?: string;
45
+ };
46
+ /**
47
+ * BP-188 (D9): where a Change session was started: the Baseline's id, its seq at the press, the commit its extraction was
48
+ * pushed at (null when none is known), and the seed when the member sent one.
49
+ */
50
+ export type SessionStartedFrom = {
51
+ sessionId: SessionId;
52
+ seq: number;
53
+ commitSha: string | null;
54
+ seed?: SessionSeed;
37
55
  };
38
56
  /** ESAS-329 (F8): a ticket session's stages, in order; Map agreed moves it from the first to the second, irreversibly. */
39
57
  export type SessionStage = 'map' | 'program';
@@ -59,8 +77,9 @@ export declare function isSessionFrozen(session: Pick<DesignSession, 'state'>):
59
77
  */
60
78
  export declare function isTicketSession(session: Pick<DesignSession, 'ticketRefs'>): boolean;
61
79
  /**
62
- * ESAS-329 (F1): the session's stage. The stored stage when a `stage-advance` moved it; otherwise `'map'` for a ticket
63
- * session, created before ESAS-329 or not; otherwise undefined: a session with no ticket refs runs in no stage.
80
+ * ESAS-329 (F1): the session's stage. The stored stage when one is stored: the one a `stage-advance` moved it to, or
81
+ * (BP-188 D9) the `'map'` a Change session's SessionCreated stored; otherwise `'map'` for a ticket session, created
82
+ * before ESAS-329 or not; otherwise undefined: a session with no ticket refs and no stored stage runs in no stage.
64
83
  */
65
84
  export declare function stageOf(session: Pick<DesignSession, 'ticketRefs' | 'stage'>): SessionStage | undefined;
66
85
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAErC,eAAO,MAAM,sBAAsB,EAAE,oBAAwB,CAAC;AAE9D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE9D,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAyC,CAAC;AAE5F,wBAAgB,cAAc,CAAE,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,YAAY,CAEtE;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IAC3C,aAAa,EAAE,oBAAoB,CAAC;IACpC,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+HAA+H;IAC/H,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,qHAAqH;IACrH,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;CACtD,CAAC;AAEF,0HAA0H;AAC1H,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,CAAC;AAE7C,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAMvB,wBAAgB,iBAAiB,CAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAI,aAAa,CAgC9F;AAED,wBAAgB,eAAe,CAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAI,OAAO,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,GAAI,OAAO,CAErF;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,OAAO,CAAC,GAAI,YAAY,GAAG,SAAS,CAGxG"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
@@ -55,8 +55,9 @@ export function isTicketSession(session) {
55
55
  return (session.ticketRefs?.length ?? 0) > 0;
56
56
  }
57
57
  /**
58
- * ESAS-329 (F1): the session's stage. The stored stage when a `stage-advance` moved it; otherwise `'map'` for a ticket
59
- * session, created before ESAS-329 or not; otherwise undefined: a session with no ticket refs runs in no stage.
58
+ * ESAS-329 (F1): the session's stage. The stored stage when one is stored: the one a `stage-advance` moved it to, or
59
+ * (BP-188 D9) the `'map'` a Change session's SessionCreated stored; otherwise `'map'` for a ticket session, created
60
+ * before ESAS-329 or not; otherwise undefined: a session with no ticket refs and no stored stage runs in no stage.
60
61
  */
61
62
  export function stageOf(session) {
62
63
  if (session.stage !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,sBAAsB,GAAyB,CAAC,CAAC;AAQ9D,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAE,CAAC;AAE5F,MAAM,UAAU,cAAc,CAAE,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAM,cAAqC,CAAC,QAAQ,CAAE,KAAK,CAAE,CAAC;AAChG,CAAC;AAqCD,SAAS,eAAe,CAAE,YAAgC,EAAE,KAAc;IACxE,OAAO,YAAY,CAAC,QAAQ,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,CAAE,GAAG,YAAY,CAAE,CAAC,CAAC,CAAC,CAAE,GAAG,YAAY,EAAE,KAAK,CAAE,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAE,OAAsB,EAAE,KAAmB;IAC5E,QAAS,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,OAAO;gBACL,GAAG,OAAO;gBACV,KAAK,EAAE,QAAQ;gBACf,eAAe,EAAE,KAAK,CAAC,QAAQ;gBAC/B,UAAU,EAAE,KAAK,CAAC,GAAG;gBACrB,SAAS,EAAE,KAAK,CAAC,EAAE;gBACnB,YAAY,EAAE,eAAe,CAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAE;aACtE,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAClE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACpE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;YACxC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,IAAI,YAAY,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,KAAK,CAAC;YACjC,KAAK,WAAW,CAAC;YACjB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAE,OAAqC;IACpE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAE,OAA0C;IACzE,OAAO,CAAE,OAAO,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAE,OAAoD;IAC3E,IAAK,OAAO,CAAC,KAAK,KAAK,SAAS;QAAG,OAAO,OAAO,CAAC,KAAK,CAAC;IACxD,OAAO,eAAe,CAAE,OAAO,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,sBAAsB,GAAyB,CAAC,CAAC;AAQ9D,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAE,CAAC;AAE5F,MAAM,UAAU,cAAc,CAAE,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAM,cAAqC,CAAC,QAAQ,CAAE,KAAK,CAAE,CAAC;AAChG,CAAC;AAgDD,SAAS,eAAe,CAAE,YAAgC,EAAE,KAAc;IACxE,OAAO,YAAY,CAAC,QAAQ,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,CAAE,GAAG,YAAY,CAAE,CAAC,CAAC,CAAC,CAAE,GAAG,YAAY,EAAE,KAAK,CAAE,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAE,OAAsB,EAAE,KAAmB;IAC5E,QAAS,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,OAAO;gBACL,GAAG,OAAO;gBACV,KAAK,EAAE,QAAQ;gBACf,eAAe,EAAE,KAAK,CAAC,QAAQ;gBAC/B,UAAU,EAAE,KAAK,CAAC,GAAG;gBACrB,SAAS,EAAE,KAAK,CAAC,EAAE;gBACnB,YAAY,EAAE,eAAe,CAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAE;aACtE,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAClE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACpE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAG,OAAO,OAAO,CAAC;YACjD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;YACxC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,IAAI,YAAY,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,KAAK,CAAC;YACjC,KAAK,WAAW,CAAC;YACjB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAE,OAAqC;IACpE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAE,OAA0C;IACzE,OAAO,CAAE,OAAO,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAE,OAAoD;IAC3E,IAAK,OAAO,CAAC,KAAK,KAAK,SAAS;QAAG,OAAO,OAAO,CAAC,KAAK,CAAC;IACxD,OAAO,eAAe,CAAE,OAAO,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC"}
@@ -93,6 +93,9 @@ export declare function specSourceSeq(ops: readonly Op[]): number;
93
93
  /**
94
94
  * F7, F8: blueprint.md, the written sections in spine order with the derived ones (decision tree, scenarios,
95
95
  * observations, artifacts) read from the same fold, under a provenance header that prints the source seq.
96
+ * Specification v1: its normative parts, which an implementation agent parses, are the front matter's `key`, the
97
+ * `## Scenarios` (each `- <id> — <title> (<note>)` with its Given, When and Then) and the `## Artifacts` (each node and
98
+ * edge with its id, type and verb); every other section is prose for people.
96
99
  */
97
100
  export declare function renderBlueprint(input: SpecRenderInput): string;
98
101
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/spec.ts"],"names":[],"mappings":"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"}
package/build/esm/spec.js CHANGED
@@ -1,8 +1,10 @@
1
- import { proposedNodeId } from './apply-design.js';
1
+ import { applyDesign, proposedNodeId } from './apply-design.js';
2
2
  import { MODIFIABLE_NODE_FIELDS, isCommentIdAnchor } from './design.js';
3
- import { joinForkScenarios } from './fork-scenarios.js';
4
- import { emptyGraph } from './graph.js';
3
+ import { effectiveDesignOf } from './effective-design.js';
4
+ import { FORK_SCENARIO_KEY_PREFIX, joinForkScenarios } from './fork-scenarios.js';
5
+ import { emptyGraph, nodeId, parseNodeId } from './graph.js';
5
6
  import { joinMapLinks } from './map-links.js';
7
+ import { anchorTestLevel } from './scenario-test-level.js';
6
8
  export const SPEC_VERSION = 1;
7
9
  // The written sections in spine order, spelled as the spec-post payload carries them. The decision tree's
8
10
  // written entries are its rationales; the tree itself, the artifacts and the provenance header are derived (F7).
@@ -111,6 +113,17 @@ function section(heading, lines) {
111
113
  body.pop();
112
114
  return ['', `## ${heading}`, '', ...(body.length > 0 ? body : [NONE])];
113
115
  }
116
+ /**
117
+ * Specification v1: blueprint.md opens with front matter, `key` naming the item (the session's first ticket, when it has
118
+ * one) and `session` its session, so an agent tells this item's design from another's.
119
+ */
120
+ const frontMatterOf = (manifest) => [
121
+ '---',
122
+ ...(manifest.ticketRefs.length > 0 ? [`key: ${manifest.ticketRefs[0]}`] : []),
123
+ `session: ${manifest.sessionId}`,
124
+ '---',
125
+ ''
126
+ ];
114
127
  const headerOf = (title, manifest, sourceSeq) => [
115
128
  `# ${title} — ${manifest.name}`,
116
129
  '',
@@ -170,22 +183,46 @@ function nodeRef(map, id) {
170
183
  return id;
171
184
  return `${id} "${node.title}"${node.struck === undefined ? '' : ' (struck)'}`;
172
185
  }
173
- const stepLines = (steps) => STEP_KEYWORDS.flatMap(([key, keyword]) => steps[key].map((step, index) => ` - ${index === 0 ? keyword : 'And'} ${step.text}`));
186
+ const stepLines = (steps, nameOf) => STEP_KEYWORDS.flatMap(([key, keyword]) => steps[key].map((step, index) => ` - ${index === 0 ? keyword : 'And'} ${step.text}${step.exercises === undefined ? '' : ` (exercises ${nameOf(step.exercises.esId)})`}`));
187
+ // The labels the design's own nodes carry once applied; the render holds no extraction, so an extracted node reads by id.
188
+ function elementNamesOf(design) {
189
+ const labels = new Map(applyDesign(emptyGraph(), design).graph.nodes.map(node => [node.id, node.label]));
190
+ return esId => labels.get(esId) ?? esId;
191
+ }
192
+ /**
193
+ * Specification v1: a scenario's id as blueprint.md prints it, one token with no space or backtick. A stored scenario's
194
+ * is its map id; a derived one's is its key, `derived:<fork>/<option>/<walk>`, with the walk, a use case's words,
195
+ * percent-encoded, so decodeURIComponent of the walk gives the map's key back.
196
+ */
197
+ const scenarioIdOf = (id) => {
198
+ if (!id.startsWith(FORK_SCENARIO_KEY_PREFIX))
199
+ return id;
200
+ const [forkId, optionId, ...walk] = id.slice(FORK_SCENARIO_KEY_PREFIX.length).split('/');
201
+ return `${FORK_SCENARIO_KEY_PREFIX}${forkId}/${optionId}/${encodeURIComponent(walk.join('/'))}`;
202
+ };
203
+ // BP-229 (D11): the note's tail, inside its parentheses: the test level when the anchors decide it (a
204
+ // coverage-decided level needs the graph, which this render does not hold, so it prints nothing), then the
205
+ // rejection marker with its code when one is known. Never a line of its own: an indented line reads as a step.
206
+ const scenarioNoteTail = (scenario, map) => {
207
+ const level = anchorTestLevel(scenario.anchors, map);
208
+ const rejection = scenario.rejection;
209
+ return `${level === undefined ? '' : `, ${level === 'unit' ? 'unit test' : 'flow test'}`}${rejection === undefined ? '' : `, rejection${rejection.code === undefined ? '' : ` ${rejection.code}`}`}`;
210
+ };
174
211
  // ESAS-296: each stored scenario not struck, with its status and any review reason, then the scenarios the
175
212
  // decided forks' chosen walks propose and no stored scenario holds yet.
176
- function scenariosOf(map) {
213
+ function scenariosOf(map, nameOf) {
177
214
  const report = joinForkScenarios(map);
178
215
  const reviewOf = new Map(report.derived.map(judgement => [judgement.scenarioId, judgement.reviewReason]));
179
216
  const stored = map.scenarios.filter(scenario => scenario.status.kind !== 'struck').flatMap(scenario => {
180
217
  const review = reviewOf.get(scenario.id);
181
218
  return [
182
- `- ${scenario.id} — ${scenario.title} (${scenario.status.kind}${review === undefined || review === null ? '' : `, under review: ${review}`})`,
183
- ...stepLines(scenario)
219
+ `- ${scenarioIdOf(scenario.id)} — ${scenario.title} (${scenario.status.kind}${review === undefined || review === null ? '' : `, under review: ${review}`}${scenarioNoteTail(scenario, map)})`,
220
+ ...stepLines(scenario, nameOf)
184
221
  ];
185
222
  });
186
223
  const proposed = report.proposals.flatMap(proposal => [
187
- `- ${proposal.key} — ${proposal.title} (from ${proposal.forkId}, ${proposal.state === 'ready' ? 'ready' : 'needs Gherkin'})`,
188
- ...(proposal.state === 'ready' ? stepLines(proposal) : [` - ${proposal.text}`])
224
+ `- ${scenarioIdOf(proposal.key)} — ${proposal.title} (from ${proposal.forkId}, ${proposal.state === 'ready' ? 'ready' : 'needs Gherkin'}${scenarioNoteTail(proposal, map)})`,
225
+ ...(proposal.state === 'ready' ? stepLines(proposal, nameOf) : [` - ${proposal.text}`])
189
226
  ]);
190
227
  return [...stored, ...proposed];
191
228
  }
@@ -201,23 +238,42 @@ const DETAIL_LABELS = {
201
238
  queries: 'Queries',
202
239
  rule: 'Rule',
203
240
  errorCodes: 'Error codes',
204
- generic: 'Generic'
241
+ generic: 'Generic',
242
+ tags: 'Tags'
205
243
  };
206
244
  function detailLines(fields, shown) {
207
245
  return shown.flatMap(field => {
208
246
  const value = fields[field];
209
247
  if (value === undefined)
210
248
  return [];
211
- const text = field === 'errorCodes' ? value.join(', ')
212
- : field === 'queries' ? JSON.stringify(value)
213
- : field === 'generic' ? (value ? 'yes' : 'no')
214
- : String(value);
249
+ const text = field === 'tags' && value.length === 0 ? 'none'
250
+ : field === 'errorCodes' || field === 'tags' ? value.join(', ')
251
+ : field === 'queries' ? JSON.stringify(value)
252
+ : field === 'generic' ? (value ? 'yes' : 'no')
253
+ : String(value);
215
254
  return [` ${DETAIL_LABELS[field]}: ${text}`];
216
255
  });
217
256
  }
218
- const NODE_DETAIL_FIELDS = ['resourceKey', 'queries', 'rule', 'errorCodes', 'generic'];
257
+ const NODE_DETAIL_FIELDS = ['resourceKey', 'queries', 'rule', 'errorCodes', 'generic', 'tags'];
258
+ /**
259
+ * Specification v1: the type of the node `id` names, which a modify or removal prints so an agent knows what the
260
+ * extractor can show: the type its id spells (the extractor's `<subdomain>_<abbrev>_<slug>`), else the type of the node
261
+ * the design proposes under it, else `unknown`.
262
+ */
263
+ const nodeTypeOf = (design, id) => parseNodeId(id)?.type ?? (design.propose?.nodes ?? []).find(node => proposedNodeId(node) === id)?.type ?? 'unknown';
264
+ /** Specification v1: the id a modify gives its node: its label or subdomain set anew, when its id spells them. */
265
+ function modifiedIdOf(id, set) {
266
+ const parsed = parseNodeId(id);
267
+ if (parsed === undefined || (set.label === undefined && set.subdomain === undefined))
268
+ return id;
269
+ return nodeId(set.subdomain ?? parsed.subdomain, parsed.type, set.label ?? parsed.slug);
270
+ }
219
271
  // F7: the design's proposals, modifies and removals, each element with the deliverables its map links serve.
220
- function artifactsOf(design, map) {
272
+ // Specification v1: a modify names its node's type and, when it changes the id, the new id after `→`; a node removal
273
+ // names its type. The effective design is rendered (effectiveDesignOf): a modify or removal of one of the design's own
274
+ // proposals is folded into it, so only the modifies and removals of code remain as lines of their own.
275
+ function artifactsOf(replayed, replayedMap) {
276
+ const { design, map } = effectiveDesignOf(replayed, replayedMap);
221
277
  const serves = (esId) => {
222
278
  const deliverables = map.links.filter(link => link.esId === esId).map(link => nodeRef(map, link.deliverableId));
223
279
  return deliverables.length > 0 ? `, serves ${deliverables.join(', ')}` : '';
@@ -227,9 +283,16 @@ function artifactsOf(design, map) {
227
283
  return [`- ${node.type} ${node.label} in ${node.subdomain} (\`${id}\`)${serves(id)}`, ...detailLines(node, NODE_DETAIL_FIELDS)];
228
284
  });
229
285
  const edges = (design.propose?.edges ?? []).map(edge => `- edge \`${edge.from}\` → \`${edge.to}\` (${edge.kind}${edge.handlers === undefined ? '' : `; handlers ${edge.handlers.join(', ')}`})`);
230
- const modifies = (design.modify ?? []).flatMap(entry => [`- modifies \`${entry.id}\`${serves(entry.id)}`, ...detailLines(entry.set, MODIFIABLE_NODE_FIELDS)]);
286
+ const modifies = (design.modify ?? []).flatMap(entry => {
287
+ const renamed = modifiedIdOf(entry.id, entry.set ?? {});
288
+ return [
289
+ `- modifies ${nodeTypeOf(design, entry.id)} \`${entry.id}\`${renamed === entry.id ? '' : ` → \`${renamed}\``}${serves(entry.id)}`,
290
+ ...detailLines(entry.set ?? {}, MODIFIABLE_NODE_FIELDS),
291
+ ...(entry.note === undefined || entry.note.trim() === '' ? [] : [` Change: ${entry.note}`])
292
+ ];
293
+ });
231
294
  const removes = (design.remove ?? []).map(entry => entry.kind === 'node'
232
- ? `- removes node \`${entry.id}\``
295
+ ? `- removes ${nodeTypeOf(design, entry.id)} \`${entry.id}\``
233
296
  : `- removes edge \`${entry.from}\` → \`${entry.to}\` (${entry.edgeKind})`);
234
297
  return [...nodes, ...edges, ...modifies, ...removes];
235
298
  }
@@ -252,6 +315,9 @@ function refsOf(map, refs) {
252
315
  /**
253
316
  * F7, F8: blueprint.md, the written sections in spine order with the derived ones (decision tree, scenarios,
254
317
  * observations, artifacts) read from the same fold, under a provenance header that prints the source seq.
318
+ * Specification v1: its normative parts, which an implementation agent parses, are the front matter's `key`, the
319
+ * `## Scenarios` (each `- <id> — <title> (<note>)` with its Given, When and Then) and the `## Artifacts` (each node and
320
+ * edge with its id, type and verb); every other section is prose for people.
255
321
  */
256
322
  export function renderBlueprint(input) {
257
323
  const { design, map, spec: folded } = input.replay(input.ops);
@@ -262,12 +328,13 @@ export function renderBlueprint(input) {
262
328
  });
263
329
  const tests = spec.of('testingDecisions').map(entry => bullet(entryLines(entry, entry.kind === 'tracer-bullet' ? 'Tracer bullet: ' : '')));
264
330
  return documentOf([
331
+ ...frontMatterOf(input.manifest),
265
332
  ...headerOf('Blueprint', input.manifest, specSourceSeq(input.ops)),
266
333
  ...section('Problem', paragraphs(spec.of('problem'))),
267
334
  ...section('Solution', paragraphs(spec.of('solution'))),
268
335
  ...section('User Stories', stories),
269
336
  ...section('Resolved decision tree', decisionTreeOf(map, spec)),
270
- ...section('Scenarios', scenariosOf(map)),
337
+ ...section('Scenarios', scenariosOf(map, elementNamesOf(design))),
271
338
  ...section('Observations', observationsOf(map)),
272
339
  ...section('Implementation Decisions', bullets(spec.of('implementationDecisions'))),
273
340
  ...section('Testing Decisions', tests),
@@ -368,7 +435,8 @@ function refStruckGaps({ map, spec }) {
368
435
  const ownerChangesUnreadGaps = ({ ops, agentSyncSeq }) => ops
369
436
  .filter(op => op.author === 'human' && op.class === 'semantic' && op.seq > (agentSyncSeq ?? 0))
370
437
  .map(op => ({ code: 'owner-changes-unread', ref: String(op.seq),
371
- message: `the owner's ${op.verb} at seq ${op.seq} is past the agent's last sync; ask the design agent to fold the change` }));
438
+ message: `the owner's ${op.verb} at seq ${op.seq} is past the agent's last sync; ask the design agent to fold the change`
439
+ + ' (on the board: wait for its round to finish, or press Design to start one)' }));
372
440
  // An open question is a comment thread nobody resolved. A reply joins the thread its commentId chain roots in, as the
373
441
  // board's buildThreads groups it (sticky-notes-board discussion-threads.ts), and the thread is open while any of its
374
442
  // remarks is unresolved. Which comments hold it open is scaffold-core's rule, not the board's: an unresolved reaction