@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-holds.js","sourceRoot":"","sources":["../../src/card-holds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const CHANNEL_LINK_PREFIX = "#channel:";
2
+ /** The link destination that opens the channel of `anchor`; null and the legacy `#map` anchor are #general. */
3
+ export declare const channelLinkHref: (anchor: string | null) => string;
4
+ /**
5
+ * The anchor of the channel a link destination names (null for #general, either anchor), or null when the
6
+ * destination is not a channel link naming #general or a card's channel.
7
+ */
8
+ export declare const channelLinkAnchor: (destination: string) => {
9
+ anchor: string | null;
10
+ } | null;
11
+ //# sourceMappingURL=channel-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-link.d.ts","sourceRoot":"","sources":["../../src/channel-link.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAU/C,+GAA+G;AAC/G,eAAO,MAAM,eAAe,GAAK,QAAQ,MAAM,GAAG,IAAI,KAAI,MACoD,CAAC;AAE/G;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAK,aAAa,MAAM,KAAI;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAYrF,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { commentAnchorKey, MAP_GENERAL_ANCHOR } from './design.js';
2
+ // A channel link names a discussion channel by its key (commentAnchorKey: `design` for #general,
3
+ // `node:<anchor>` for a card's channel), URI-encoded after `#channel:`. One contract, so whatever writes a
4
+ // link (the board, a server-side hand-off) and the board that opens it read the same rule.
5
+ export const CHANNEL_LINK_PREFIX = '#channel:';
6
+ const GENERAL_KEY = commentAnchorKey(null);
7
+ const NODE_KEY = commentAnchorKey('');
8
+ // encodeURIComponent leaves `(`, `)`, `!`, `*` and `'` alone; a bare `)` would end a markdown link
9
+ // destination early, so every one of them is percent-encoded as well.
10
+ const encodeKey = (key) => encodeURIComponent(key).replace(/[()!*']/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
11
+ /** The link destination that opens the channel of `anchor`; null and the legacy `#map` anchor are #general. */
12
+ export const channelLinkHref = (anchor) => `${CHANNEL_LINK_PREFIX}${encodeKey(commentAnchorKey(anchor === MAP_GENERAL_ANCHOR ? null : anchor))}`;
13
+ /**
14
+ * The anchor of the channel a link destination names (null for #general, either anchor), or null when the
15
+ * destination is not a channel link naming #general or a card's channel.
16
+ */
17
+ export const channelLinkAnchor = (destination) => {
18
+ if (!destination.startsWith(CHANNEL_LINK_PREFIX))
19
+ return null;
20
+ let key;
21
+ try {
22
+ key = decodeURIComponent(destination.slice(CHANNEL_LINK_PREFIX.length));
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ if (key === GENERAL_KEY)
28
+ return { anchor: null };
29
+ if (!key.startsWith(NODE_KEY) || key.length === NODE_KEY.length)
30
+ return null;
31
+ const anchor = key.slice(NODE_KEY.length);
32
+ return { anchor: anchor === MAP_GENERAL_ANCHOR ? null : anchor };
33
+ };
34
+ //# sourceMappingURL=channel-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-link.js","sourceRoot":"","sources":["../../src/channel-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnE,iGAAiG;AACjG,2GAA2G;AAC3G,2FAA2F;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C,MAAM,WAAW,GAAG,gBAAgB,CAAE,IAAI,CAAE,CAAC;AAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAE,EAAE,CAAE,CAAC;AAExC,mGAAmG;AACnG,sEAAsE;AACtE,MAAM,SAAS,GAAG,CAAE,GAAW,EAAW,EAAE,CAC1C,kBAAkB,CAAE,GAAG,CAAE,CAAC,OAAO,CAAE,UAAU,EAAE,CAAE,CAAC,EAAG,EAAE,CAAC,IAAK,CAAC,CAAC,UAAU,CAAE,CAAC,CAAE,CAAC,QAAQ,CAAE,EAAE,CAAE,CAAC,WAAW,EAAG,EAAE,CAAE,CAAC;AAEnH,+GAA+G;AAC/G,MAAM,CAAC,MAAM,eAAe,GAAG,CAAE,MAAqB,EAAW,EAAE,CACjE,GAAI,mBAAoB,GAAI,SAAS,CAAE,gBAAgB,CAAE,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAE,CAAE,EAAE,CAAC;AAE/G;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAE,WAAmB,EAAqC,EAAE;IAC3F,IAAK,CAAC,WAAW,CAAC,UAAU,CAAE,mBAAmB,CAAE;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,kBAAkB,CAAE,WAAW,CAAC,KAAK,CAAE,mBAAmB,CAAC,MAAM,CAAE,CAAC,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAK,GAAG,KAAK,WAAW;QAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnD,IAAK,CAAC,GAAG,CAAC,UAAU,CAAE,QAAQ,CAAE,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAG,OAAO,IAAI,CAAC;IACjF,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAE,QAAQ,CAAC,MAAM,CAAE,CAAC;IAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC,CAAC"}
@@ -14,7 +14,7 @@ export type CoverageGraph = {
14
14
  nodes: ReadonlyArray<Pick<BlueprintNode, 'id' | 'status'>>;
15
15
  };
16
16
  export type CoverageMap = {
17
- scenarios: ReadonlyArray<Pick<MapScenario, 'id' | 'supersedes' | 'status'>>;
17
+ scenarios: ReadonlyArray<Pick<MapScenario, 'id' | 'supersedes' | 'status' | 'given' | 'when' | 'then'>>;
18
18
  coverage: readonly CoverageLink[];
19
19
  };
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-links.d.ts","sourceRoot":"","sources":["../../src/coverage-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMhF,MAAM,MAAM,cAAc,GAAG;IAC3B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,+FAA+F;IAC/F,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACxC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAIF,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAA;CAAE,CAAC;AAE3F,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC5E,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CACnC,CAAC;AA0BF;;;;GAIG;AACH,wBAAgB,eAAe,CAAE,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,UAAU,GAAI,UAAU,EAAE,CAKnG;AAED,wBAAgB,iBAAiB,CAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,GAAI,cAAc,CA4E3F"}
1
+ {"version":3,"file":"coverage-links.d.ts","sourceRoot":"","sources":["../../src/coverage-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAShF,MAAM,MAAM,cAAc,GAAG;IAC3B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,+FAA+F;IAC/F,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACxC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAIF,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAA;CAAE,CAAC;AAE3F,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IACxG,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CACnC,CAAC;AA0BF;;;;GAIG;AACH,wBAAgB,eAAe,CAAE,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,UAAU,GAAI,UAAU,EAAE,CAKnG;AAED,wBAAgB,iBAAiB,CAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,GAAI,cAAc,CAgF3F"}
@@ -1,3 +1,4 @@
1
+ import { elementVerdictOf, joinStepElements } from './step-elements.js';
1
2
  function byString(a, b) {
2
3
  return a < b ? -1 : a > b ? 1 : 0;
3
4
  }
@@ -32,8 +33,7 @@ export function scenarioLineage(scenarios, id) {
32
33
  return scenarios.filter(s => rootOf(s.id) === root).map(s => s.id);
33
34
  }
34
35
  export function joinCoverageLinks(merged, map) {
35
- const nodeIds = new Set(merged.nodes.map(node => node.id));
36
- const removedIds = new Set(merged.nodes.filter(node => node.status === 'removed').map(node => node.id));
36
+ const elementVerdict = elementVerdictOf(merged);
37
37
  const scenarios = new Map(map.scenarios.map(s => [s.id, s]));
38
38
  const position = new Map(map.scenarios.map((s, index) => [s.id, index]));
39
39
  const rootOf = lineageRoots(map.scenarios);
@@ -70,7 +70,7 @@ export function joinCoverageLinks(merged, map) {
70
70
  for (const link of map.coverage) {
71
71
  const pair = { esId: link.esId, scenarioId: link.scenarioId };
72
72
  const known = scenarios.has(link.scenarioId);
73
- const verdict = !nodeIds.has(link.esId) || !known ? 'dangling' : removedIds.has(link.esId) ? 'removed' : 'live';
73
+ const verdict = !known ? 'dangling' : elementVerdict(link.esId);
74
74
  if (verdict === 'dangling')
75
75
  dangling.push(pair);
76
76
  if (verdict === 'removed')
@@ -81,6 +81,13 @@ export function joinCoverageLinks(merged, map) {
81
81
  const root = rootOf(link.scenarioId);
82
82
  into.set(root, [...(into.get(root) ?? []), link.esId]);
83
83
  }
84
+ for (const [id, elements] of Object.entries(joinStepElements(merged, map))) {
85
+ if (!isLive(id))
86
+ continue;
87
+ const live = elements.filter(element => element.verdict === 'live').map(element => element.esId);
88
+ if (live.length > 0)
89
+ liveOf.set(rootOf(id), [...(liveOf.get(rootOf(id)) ?? []), ...live]);
90
+ }
84
91
  const coversOf = {};
85
92
  const staleCoverage = {};
86
93
  const coveredByOf = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-links.js","sourceRoot":"","sources":["../../src/coverage-links.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage-links.js","sourceRoot":"","sources":["../../src/coverage-links.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export type ProposedNode = DesignAttribution & {
18
18
  rule?: string;
19
19
  errorCodes?: string[];
20
20
  generic?: boolean;
21
+ /** BP-279: the node's tags; the local write door (toProposedNode/toModifyEntry) stores them normalised (tags.ts), sorted, each once; the hosted door (attributedDesignPayload) stores them as sent, so the blueprint and Steward MCPs normalise them before sending (handlers.ts withNormalisedTags). */
22
+ tags?: string[];
21
23
  };
22
24
  export type ProposedEdge = DesignAttribution & {
23
25
  from: string;
@@ -34,12 +36,26 @@ export type ModifiableNodeFields = {
34
36
  rule: string;
35
37
  errorCodes: string[];
36
38
  generic: boolean;
39
+ /** BP-279: the whole tag list; [] clears it. */
40
+ tags: string[];
37
41
  };
38
42
  export declare const MODIFIABLE_NODE_FIELDS: readonly (keyof ModifiableNodeFields)[];
43
+ /**
44
+ * A change the design makes to an element that already exists. `set` overwrites the listed fields; a modify whose
45
+ * `set` is empty marks the element edited for a change no field holds (a command's data schema, an aggregate's logic,
46
+ * a policy, an event's payload), and its `note` describes that change — validateDesign refuses one with neither.
47
+ */
39
48
  export type ModifyEntry = DesignAttribution & {
40
49
  id: string;
41
50
  set: Partial<ModifiableNodeFields>;
42
51
  };
52
+ /** Whether a modify changes none of the fields, so it only declares the change its note describes. */
53
+ export declare const isNoteOnlyModify: (entry: Pick<ModifyEntry, "set">) => boolean;
54
+ /**
55
+ * The note an element carries once a further entry's note lands on it: both, one line each, so a second modify of
56
+ * the same element never loses the first's description; a note it already carries is not repeated.
57
+ */
58
+ export declare function joinedNote(prior: string | undefined, next: string | undefined): string | undefined;
43
59
  export type RemoveEntry = DesignAttribution & ({
44
60
  kind: 'node';
45
61
  id: string;
@@ -59,9 +75,9 @@ export type CommentIdRef = {
59
75
  };
60
76
  export type CommentAnchor = string | EdgeRef | CommentIdRef | null;
61
77
  /**
62
- * The impact map's own general channel. `null` stays the eventstorming board's (and every pre-split
63
- * board-wide comment's) general channel; a board-wide remark made on the map is anchored here instead,
64
- * so a reader knows which board it was made on. `#` appears in no artifact name and no map entry id.
78
+ * A legacy anchor: board-wide remarks made on the impact map were once anchored here. Both boards' #general
79
+ * shows comments under this anchor alongside those anchored `null`, and a new post there anchors `null`.
80
+ * `#` appears in no artifact name and no map entry id.
65
81
  */
66
82
  export declare const MAP_GENERAL_ANCHOR = "#map";
67
83
  export type DesignComment = DesignAttribution & {
@@ -72,6 +88,25 @@ export type DesignComment = DesignAttribution & {
72
88
  mentions?: string[];
73
89
  /** ESAS-266: a board reaction to its thread, not a remark; it asks the agent nothing. */
74
90
  reaction?: CommentReaction;
91
+ /**
92
+ * ADR-137 decision 5: the note a reply job's hand-off leaves in the source thread, linking #general. It is not an answer:
93
+ * the server's unanswered set (design.md NOTICKET-20261016-F8) does not count it as the agent's reply.
94
+ */
95
+ handOff?: true;
96
+ /**
97
+ * BP-287 decisions.md D22 (ADR-139 decision 7): on an agent comment, the member comments in its thread it answers. When
98
+ * present, the server's unanswered set (unansweredCommentsOf) counts only these ids answered; absent, the comment answers
99
+ * every earlier Ask in its thread (ADR-137). The hosted comment verb refuses ids that are not a member's comment in the
100
+ * post's own thread.
101
+ */
102
+ answers?: string[];
103
+ /**
104
+ * The authenticated subject that wrote the comment: its op envelope's `principal`, copied on when the op is
105
+ * folded (`withCommentPrincipal`), never stamped into the payload, which is in the op-chain preimage while the
106
+ * envelope field is not. An op written before comments carried it yields it on replay and still verifies.
107
+ * Absent where the writer recorded none (the local store). The board names the writer from it at read time.
108
+ */
109
+ principal?: string;
75
110
  };
76
111
  export type CommentReaction = 'thumbs-up';
77
112
  export declare const COMMENT_REACTIONS: readonly CommentReaction[];
@@ -1 +1 @@
1
- {"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,26 @@ export const MODIFIABLE_NODE_FIELDS = [
6
6
  'queries',
7
7
  'rule',
8
8
  'errorCodes',
9
- 'generic'
9
+ 'generic',
10
+ 'tags'
10
11
  ];
12
+ /** Whether a modify changes none of the fields, so it only declares the change its note describes. */
13
+ export const isNoteOnlyModify = (entry) => Object.keys(entry.set ?? {}).length === 0;
11
14
  /**
12
- * The impact map's own general channel. `null` stays the eventstorming board's (and every pre-split
13
- * board-wide comment's) general channel; a board-wide remark made on the map is anchored here instead,
14
- * so a reader knows which board it was made on. `#` appears in no artifact name and no map entry id.
15
+ * The note an element carries once a further entry's note lands on it: both, one line each, so a second modify of
16
+ * the same element never loses the first's description; a note it already carries is not repeated.
17
+ */
18
+ export function joinedNote(prior, next) {
19
+ if (next === undefined || next.trim() === '')
20
+ return prior;
21
+ if (prior === undefined || prior.trim() === '')
22
+ return next;
23
+ return prior.split('\n').includes(next) ? prior : `${prior}\n${next}`;
24
+ }
25
+ /**
26
+ * A legacy anchor: board-wide remarks made on the impact map were once anchored here. Both boards' #general
27
+ * shows comments under this anchor alongside those anchored `null`, and a new post there anchors `null`.
28
+ * `#` appears in no artifact name and no map entry id.
15
29
  */
16
30
  export const MAP_GENERAL_ANCHOR = '#map';
17
31
  export const COMMENT_REACTIONS = ['thumbs-up'];
@@ -1 +1 @@
1
- {"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/design.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;AA2CvD,MAAM,CAAC,MAAM,sBAAsB,GAA8C;IAC/E,OAAO;IACP,WAAW;IACX,aAAa;IACb,SAAS;IACT,MAAM;IACN,YAAY;IACZ,SAAS;IACT,MAAM;CACE,CAAC;AAYX,sGAAsG;AACtG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAE,KAA+B,EAAY,EAAE,CAC7E,MAAM,CAAC,IAAI,CAAE,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAE,KAAyB,EAAE,IAAwB;IAC7E,IAAK,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAG,OAAO,KAAK,CAAC;IAC7D,IAAK,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAG,OAAO,IAAI,CAAC;IAC9D,OAAO,KAAK,CAAC,KAAK,CAAE,IAAI,CAAE,CAAC,QAAQ,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAI,KAAM,KAAM,IAAK,EAAE,CAAC;AAChF,CAAC;AAmBD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAiCzC,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAE,WAAW,CAAE,CAAC;AAE7E,6FAA6F;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAE,KAAmE,EAAY,EAAE;IACpH,MAAM,QAAQ,GAAuB,KAAK,CAAC,OAAO,CAAE,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;WAC9B,CAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;eACrB,QAAQ,CAAC,IAAI,CAAE,OAAO,CAAC,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAE,IAAI,EAAE,EAAE,CAAE,CAAC,WAAW,EAAE,KAAK,sBAAsB,CAAE,CAAC,CAAC;AAC1I,CAAC,CAAC;AAOF,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAY,EACZ,SAA+B,EACrB,EAAE;IACZ,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAM,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAE,aAAa,CAAE,EAAG,CAAC;QACrD,MAAM,KAAK,GAAG,KAAK,CAAE,CAAC,CAAE,EAAE,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAE,CAAE,KAAK,EAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAE,CAAC;QACjF,IAAK,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,MAAM,CAAC,EAAE,CAAE;YAAG,GAAG,CAAC,IAAI,CAAE,MAAM,CAAC,EAAE,CAAE,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAOF,MAAM,UAAU,eAAe,CAAE,MAAe;IAC9C,IAAK,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAG,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,MAA0B,CAAC;IACvC,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAE,MAAe;IAChD,IAAK,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAG,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,MAA+B,CAAC;IAC5C,OAAO,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,MAAqB;IACrD,IAAK,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAG,OAAO,QAAQ,CAAC;IAC/D,IAAK,OAAO,MAAM,KAAK,QAAQ;QAAG,OAAO,QAAS,MAAO,EAAE,CAAC;IAC5D,IAAK,iBAAiB,CAAE,MAAM,CAAE;QAAE,OAAO,WAAY,MAAM,CAAC,SAAU,EAAE,CAAC;IACzE,OAAO,QAAS,MAAM,CAAC,IAAK,IAAK,MAAM,CAAC,EAAG,IAAK,MAAM,CAAC,IAAK,EAAE,CAAC;AACjE,CAAC;AAgBD,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAC9B,CAAC"}
@@ -44,6 +44,17 @@ export type OpaqueAccessSite = {
44
44
  file: string;
45
45
  line: number;
46
46
  };
47
+ /**
48
+ * A `RecorderBuilder( events, options )` call whose options the extractor
49
+ * could not read as an object literal, so it cannot tell whether the system
50
+ * is keyed and emits no `keyed` tag for it.
51
+ */
52
+ export type OpaqueRecorderOptions = {
53
+ systemId: string;
54
+ expression: string;
55
+ file: string;
56
+ line: number;
57
+ };
47
58
  export type HandlerScopeIssue = 'unresolved' | 'wrong-type' | 'unconnected';
48
59
  export type TopologyViolation = {
49
60
  from: string;
@@ -69,6 +80,7 @@ export type Diagnostics = {
69
80
  topologyViolations: TopologyViolation[];
70
81
  staleOverrides: StaleOverride[];
71
82
  opaqueAccessSites: OpaqueAccessSite[];
83
+ opaqueRecorderOptions?: OpaqueRecorderOptions[];
72
84
  };
73
85
  export declare function emptyDiagnostics(): Diagnostics;
74
86
  //# sourceMappingURL=diagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,uBAAuB,CAAC;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EACJ,UAAU,GACV,kBAAkB,GAClB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,0BAA0B,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,2BAA2B,EAAE,0BAA0B,EAAE,CAAC;IAC1D,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,WAAW,CAW9C"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAuFA,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,EAAE;QACpB,cAAc,EAAE,EAAE;QAClB,2BAA2B,EAAE,EAAE;QAC/B,WAAW,EAAE,EAAE;QACf,kBAAkB,EAAE,EAAE;QACtB,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAoGA,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,EAAE;QACpB,cAAc,EAAE,EAAE;QAClB,2BAA2B,EAAE,EAAE;QAC/B,WAAW,EAAE,EAAE;QACf,kBAAkB,EAAE,EAAE;QACtB,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ /** The id a `<subdomain>:<type>:<slug>` reference names, when it is one of `known`; otherwise undefined. */
2
+ export declare function canonicalEndpoint(endpoint: string, known: ReadonlySet<string>): string | undefined;
3
+ type EndpointField = 'from' | 'to' | 'handlers';
4
+ /** An endpoint that names no node: which edge, which field, and the proposed ids closest to it. */
5
+ export type UnresolvedEndpoint = {
6
+ edge: number;
7
+ field: EndpointField;
8
+ endpoint: string;
9
+ closest: string[];
10
+ };
11
+ /** Up to `count` of `ids`, nearest `endpoint` first. */
12
+ export declare function closestIds(endpoint: string, ids: Iterable<string>, count?: number): string[];
13
+ /**
14
+ * Judges each edge's endpoints (from, to and handlers) at the door. An endpoint stands when it is a proposed id or a
15
+ * node of `graph`; a reference to one is rewritten to its id. With no graph, an endpoint shaped as a node id stands as a
16
+ * reference to code, as before. Anything else is unresolved, with the proposed ids closest to it. A non-string endpoint
17
+ * is left to the design's own validation.
18
+ */
19
+ export declare function resolveEdgeEndpoints<Edge extends {
20
+ from?: unknown;
21
+ to?: unknown;
22
+ handlers?: unknown;
23
+ }>(edges: readonly Edge[], { proposed, graph }: {
24
+ proposed: ReadonlySet<string>;
25
+ graph?: ReadonlySet<string>;
26
+ }): {
27
+ edges: Edge[];
28
+ unresolved: UnresolvedEndpoint[];
29
+ };
30
+ /** The refusal message for unresolved endpoints, naming each and the proposed ids closest to it. */
31
+ export declare function unresolvedEndpointsMessage(unresolved: readonly UnresolvedEndpoint[]): string;
32
+ export {};
33
+ //# sourceMappingURL=edge-endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-endpoints.d.ts","sourceRoot":"","sources":["../../src/edge-endpoints.ts"],"names":[],"mappings":"AAYA,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAI,MAAM,GAAG,SAAS,CAQpG;AAED,KAAK,aAAa,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,CAAC;AAEhD,mGAAmG;AACnG,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAa7G,wDAAwD;AACxD,wBAAgB,UAAU,CAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,SAAI,GAAI,MAAM,EAAE,CAOzF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,SAAS;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACpG,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,GAClF;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,UAAU,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAoBrD;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAE,UAAU,EAAE,SAAS,kBAAkB,EAAE,GAAI,MAAM,CAM9F"}
@@ -0,0 +1,77 @@
1
+ import { nodeId, parseNodeId } from './graph.js';
2
+ import { NODE_TYPE_BY_ABBREV, NODE_TYPES } from './nodes.js';
3
+ /**
4
+ * Edge endpoints are node ids (`<subdomain>_<abbrev>_<slug>`, as `proposedNodeId` derives them). A design agent can
5
+ * instead write a reference, `<subdomain>:<type>:<slug>`, which names the same node but matches no id, so the edge
6
+ * dangles. These resolve such a reference to the id it names, and judge an endpoint at the door.
7
+ */
8
+ const typeOf = (segment) => NODE_TYPES.includes(segment) ? segment : NODE_TYPE_BY_ABBREV[segment];
9
+ /** The id a `<subdomain>:<type>:<slug>` reference names, when it is one of `known`; otherwise undefined. */
10
+ export function canonicalEndpoint(endpoint, known) {
11
+ const segments = endpoint.split(':');
12
+ if (segments.length !== 3)
13
+ return undefined;
14
+ const [subdomain, segment, slug] = segments;
15
+ const type = typeOf(segment.trim().toLowerCase());
16
+ if (type === undefined || subdomain.trim() === '' || slug.trim() === '')
17
+ return undefined;
18
+ const id = nodeId(subdomain, type, slug);
19
+ return known.has(id) ? id : undefined;
20
+ }
21
+ const distance = (a, b) => {
22
+ let previous = Array.from({ length: b.length + 1 }, (_value, index) => index);
23
+ for (let i = 1; i <= a.length; i++) {
24
+ const row = [i];
25
+ for (let j = 1; j <= b.length; j++)
26
+ row[j] = Math.min(previous[j] + 1, row[j - 1] + 1, previous[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));
27
+ previous = row;
28
+ }
29
+ return previous[b.length];
30
+ };
31
+ /** Up to `count` of `ids`, nearest `endpoint` first. */
32
+ export function closestIds(endpoint, ids, count = 3) {
33
+ const probe = endpoint.toLowerCase().replace(/:/g, '_');
34
+ return [...ids]
35
+ .map(id => ({ id, at: distance(probe, id) }))
36
+ .sort((a, b) => a.at - b.at || a.id.localeCompare(b.id))
37
+ .slice(0, count)
38
+ .map(entry => entry.id);
39
+ }
40
+ /**
41
+ * Judges each edge's endpoints (from, to and handlers) at the door. An endpoint stands when it is a proposed id or a
42
+ * node of `graph`; a reference to one is rewritten to its id. With no graph, an endpoint shaped as a node id stands as a
43
+ * reference to code, as before. Anything else is unresolved, with the proposed ids closest to it. A non-string endpoint
44
+ * is left to the design's own validation.
45
+ */
46
+ export function resolveEdgeEndpoints(edges, { proposed, graph }) {
47
+ const known = graph === undefined ? proposed : new Set([...proposed, ...graph]);
48
+ const unresolved = [];
49
+ const resolved = edges.map((edge, index) => {
50
+ const judge = (endpoint, field) => {
51
+ if (typeof endpoint !== 'string' || known.has(endpoint))
52
+ return endpoint;
53
+ const id = canonicalEndpoint(endpoint, known);
54
+ if (id !== undefined)
55
+ return id;
56
+ if (graph === undefined && parseNodeId(endpoint) !== undefined)
57
+ return endpoint;
58
+ unresolved.push({ edge: index, field, endpoint, closest: closestIds(endpoint, proposed) });
59
+ return endpoint;
60
+ };
61
+ return {
62
+ ...edge,
63
+ ...('from' in edge ? { from: judge(edge.from, 'from') } : {}),
64
+ ...('to' in edge ? { to: judge(edge.to, 'to') } : {}),
65
+ ...(Array.isArray(edge.handlers) ? { handlers: edge.handlers.map(handler => judge(handler, 'handlers')) } : {})
66
+ };
67
+ });
68
+ return { edges: resolved, unresolved };
69
+ }
70
+ /** The refusal message for unresolved endpoints, naming each and the proposed ids closest to it. */
71
+ export function unresolvedEndpointsMessage(unresolved) {
72
+ const each = unresolved.map(({ edge, field, endpoint, closest }) => `edges[${edge}].${field} ${JSON.stringify(endpoint)}`
73
+ + (closest.length > 0 ? ` (closest proposed: ${closest.join(', ')})` : ''));
74
+ return `refusing the whole propose batch: ${each.join('; ')} names no node. An edge endpoint is a node id, `
75
+ + '`<subdomain>_<abbrev>_<slug>` as the propose call returns it in nodeIds, of a node this design proposes or of the code graph.';
76
+ }
77
+ //# sourceMappingURL=edge-endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-endpoints.js","sourceRoot":"","sources":["../../src/edge-endpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { DesignFile } from './design.js';
2
+ import type { MapFile } from './map-structure.js';
3
+ /**
4
+ * The effective design: the design as its consumers read it, with every modify and removal that targets one of the
5
+ * design's own proposals folded into the proposals. A modify of a proposed node edits the proposal, and when it sets the
6
+ * label or subdomain the proposal's derived id moves with it, so every edge, handler scope, comment anchor and map
7
+ * reference to the old id follows. A removal of a proposed node or edge drops it, with every proposed edge touching a
8
+ * dropped node. An edge endpoint written as a `<subdomain>:<type>:<slug>` reference to a proposal is read as that
9
+ * proposal's id; an endpoint naming nothing stays as it is. Modifies and removals of code (graph) elements stay as they are. The session's op history is never
10
+ * folded: this is an export, for the bundle's design.json and map.json and for blueprint.md.
11
+ */
12
+ export type EffectiveDesign = {
13
+ design: DesignFile;
14
+ map: MapFile;
15
+ /** Each proposed node id a modify moved, to the id it ends at. */
16
+ renamed: ReadonlyMap<string, string>;
17
+ /** Each proposed node id a removal dropped, as it read when dropped. */
18
+ dropped: ReadonlySet<string>;
19
+ };
20
+ export declare function effectiveDesignOf(design: DesignFile, map: MapFile): EffectiveDesign;
21
+ //# sourceMappingURL=effective-design.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective-design.d.ts","sourceRoot":"","sources":["../../src/effective-design.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,EAMX,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAgB,OAAO,EAAkB,MAAM,oBAAoB,CAAC;AAEhF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,kEAAkE;IAClE,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,wEAAwE;IACxE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B,CAAC;AA0DF,wBAAgB,iBAAiB,CAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAI,eAAe,CAqGrF"}