callman-core 1.42.0 → 1.44.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 (74) hide show
  1. package/dist/ai/prompts/diagram.d.ts.map +1 -1
  2. package/dist/ai/prompts/diagram.js +10 -5
  3. package/dist/ai/prompts/diagram.js.map +1 -1
  4. package/dist/diagram/geometry.d.ts +1 -0
  5. package/dist/diagram/geometry.d.ts.map +1 -1
  6. package/dist/diagram/geometry.js +15 -0
  7. package/dist/diagram/geometry.js.map +1 -1
  8. package/dist/diagram/ops.d.ts.map +1 -1
  9. package/dist/diagram/ops.js +25 -12
  10. package/dist/diagram/ops.js.map +1 -1
  11. package/dist/diagram/routing/batch.d.ts +2 -0
  12. package/dist/diagram/routing/batch.d.ts.map +1 -1
  13. package/dist/diagram/routing/batch.js +4 -4
  14. package/dist/diagram/routing/batch.js.map +1 -1
  15. package/dist/diagram/routing/index.d.ts +1 -0
  16. package/dist/diagram/routing/index.d.ts.map +1 -1
  17. package/dist/diagram/routing/index.js +1 -0
  18. package/dist/diagram/routing/index.js.map +1 -1
  19. package/dist/diagram/routing/ports.d.ts +14 -0
  20. package/dist/diagram/routing/ports.d.ts.map +1 -0
  21. package/dist/diagram/routing/ports.js +130 -0
  22. package/dist/diagram/routing/ports.js.map +1 -0
  23. package/dist/diagram/routing/sides.d.ts.map +1 -1
  24. package/dist/diagram/routing/sides.js +4 -3
  25. package/dist/diagram/routing/sides.js.map +1 -1
  26. package/dist/diagram/routing/types.d.ts +1 -0
  27. package/dist/diagram/routing/types.d.ts.map +1 -1
  28. package/dist/diagram/routing/types.js.map +1 -1
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/pipeline/config.d.ts +39 -0
  34. package/dist/pipeline/config.d.ts.map +1 -0
  35. package/dist/pipeline/config.js +71 -0
  36. package/dist/pipeline/config.js.map +1 -0
  37. package/dist/pipeline/index.d.ts +4 -0
  38. package/dist/pipeline/index.d.ts.map +1 -0
  39. package/dist/pipeline/index.js +4 -0
  40. package/dist/pipeline/index.js.map +1 -0
  41. package/dist/pipeline/passCriteria.d.ts +41 -0
  42. package/dist/pipeline/passCriteria.d.ts.map +1 -0
  43. package/dist/pipeline/passCriteria.js +67 -0
  44. package/dist/pipeline/passCriteria.js.map +1 -0
  45. package/dist/pipeline/snapshotDiff.d.ts +63 -0
  46. package/dist/pipeline/snapshotDiff.d.ts.map +1 -0
  47. package/dist/pipeline/snapshotDiff.js +148 -0
  48. package/dist/pipeline/snapshotDiff.js.map +1 -0
  49. package/dist-cjs/ai/prompts/diagram.js +10 -5
  50. package/dist-cjs/ai/prompts/diagram.js.map +1 -1
  51. package/dist-cjs/diagram/geometry.js +17 -1
  52. package/dist-cjs/diagram/geometry.js.map +1 -1
  53. package/dist-cjs/diagram/ops.js +25 -12
  54. package/dist-cjs/diagram/ops.js.map +1 -1
  55. package/dist-cjs/diagram/routing/batch.js +4 -4
  56. package/dist-cjs/diagram/routing/batch.js.map +1 -1
  57. package/dist-cjs/diagram/routing/index.js +1 -0
  58. package/dist-cjs/diagram/routing/index.js.map +1 -1
  59. package/dist-cjs/diagram/routing/ports.js +135 -0
  60. package/dist-cjs/diagram/routing/ports.js.map +1 -0
  61. package/dist-cjs/diagram/routing/sides.js +3 -2
  62. package/dist-cjs/diagram/routing/sides.js.map +1 -1
  63. package/dist-cjs/diagram/routing/types.js.map +1 -1
  64. package/dist-cjs/index.js +3 -0
  65. package/dist-cjs/index.js.map +1 -1
  66. package/dist-cjs/pipeline/config.js +78 -0
  67. package/dist-cjs/pipeline/config.js.map +1 -0
  68. package/dist-cjs/pipeline/index.js +20 -0
  69. package/dist-cjs/pipeline/index.js.map +1 -0
  70. package/dist-cjs/pipeline/passCriteria.js +71 -0
  71. package/dist-cjs/pipeline/passCriteria.js.map +1 -0
  72. package/dist-cjs/pipeline/snapshotDiff.js +154 -0
  73. package/dist-cjs/pipeline/snapshotDiff.js.map +1 -0
  74. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/diagram/routing/batch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/diagram/routing/batch.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,5 @@ __exportStar(require("./legacy.js"), exports);
26
26
  __exportStar(require("./path.js"), exports);
27
27
  __exportStar(require("./nudge.js"), exports);
28
28
  __exportStar(require("./batch.js"), exports);
29
+ __exportStar(require("./ports.js"), exports);
29
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/diagram/routing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B;AAC3B,qCAA6E;AAApE,oGAAA,SAAS,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AACpC,kDAAgC;AAChC,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,6CAA2B;AAC3B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/diagram/routing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B;AAC3B,qCAA6E;AAApE,oGAAA,SAAS,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AACpC,kDAAgC;AAChC,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,6CAA2B;AAC3B,6CAA2B;AAC3B,6CAA2B"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assignPorts = exports.takesPorts = void 0;
4
+ // Ports: where along a side each right-angle edge attaches. Edges sharing a
5
+ // side of a shape would otherwise all meet at its midpoint and leave as one
6
+ // trunk that splits a few pixels later. Here they spread evenly along the
7
+ // middle of the side, ordered by where their other end lies so they do not
8
+ // cross — the "port distribution" of draw.io and yEd. An end alone on its
9
+ // side lines up with its partner when the two sides face each other, so
10
+ // slightly offset shapes are joined by a straight line instead of a jog.
11
+ //
12
+ // Host-side and pure: the groups span EVERY edge on a side, so a host runs
13
+ // this over all its edges and hands each edge its sides and offsets to the
14
+ // router (Terminal.side / Terminal.offset, RouteEdge.sourceOffset /
15
+ // targetOffset). Only right-angle edges ("orthogonal", "smart") without
16
+ // manual bends or legacy pins take ports; the others attach as before.
17
+ const geometry_js_1 = require("../geometry.js");
18
+ const legacy_js_1 = require("./legacy.js");
19
+ const sides_js_1 = require("./sides.js");
20
+ // Ports stay in the middle 60% of a side: a line meeting a rounded or
21
+ // slanted outline near its corner reads as detached from the shape.
22
+ const BAND_START = 0.2;
23
+ const BAND = 1 - BAND_START * 2;
24
+ const takesPorts = (edge, defaultRouting) => {
25
+ if (!edge.source || !edge.target || edge.source === edge.target)
26
+ return false;
27
+ if ((edge.waypoints?.length ?? 0) > 0 || (0, legacy_js_1.isLegacyPinnedEdge)(edge))
28
+ return false;
29
+ const routing = edge.routing ?? defaultRouting ?? "orthogonal";
30
+ return routing === "orthogonal" || routing === "smart";
31
+ };
32
+ exports.takesPorts = takesPorts;
33
+ const alongX = (side) => side === "top" || side === "bottom";
34
+ // The side's extent along its own axis.
35
+ const span = (end) => alongX(end.side) ? [end.rect.x, end.rect.x + end.rect.width] : [end.rect.y, end.rect.y + end.rect.height];
36
+ const band = (end) => {
37
+ const [lo, hi] = span(end);
38
+ return [lo + (hi - lo) * BAND_START, hi - (hi - lo) * BAND_START];
39
+ };
40
+ const coordinate = (end) => {
41
+ const [lo, hi] = span(end);
42
+ return lo + (hi - lo) * end.offset;
43
+ };
44
+ const offsetAt = (end, value) => {
45
+ const [lo, hi] = span(end);
46
+ return hi > lo ? (value - lo) / (hi - lo) : 0.5;
47
+ };
48
+ // The two ends face each other across a gap: a straight line can join them.
49
+ const facing = (a, b) => {
50
+ if ((0, geometry_js_1.oppositeSide)(a.side) !== b.side)
51
+ return false;
52
+ switch (a.side) {
53
+ case "right":
54
+ return b.rect.x >= a.rect.x + a.rect.width;
55
+ case "left":
56
+ return b.rect.x + b.rect.width <= a.rect.x;
57
+ case "bottom":
58
+ return b.rect.y >= a.rect.y + a.rect.height;
59
+ case "top":
60
+ default:
61
+ return b.rect.y + b.rect.height <= a.rect.y;
62
+ }
63
+ };
64
+ const assignPorts = (rects, edges, defaultRouting, previous) => {
65
+ const pairs = new Map();
66
+ const groups = new Map();
67
+ const join = (end) => {
68
+ const key = `${end.node}\u0000${end.side}`;
69
+ const group = groups.get(key);
70
+ if (group)
71
+ group.push(end);
72
+ else
73
+ groups.set(key, [end]);
74
+ };
75
+ for (const edge of edges) {
76
+ if (!(0, exports.takesPorts)(edge, defaultRouting))
77
+ continue;
78
+ const source = rects.get(edge.source);
79
+ const target = rects.get(edge.target);
80
+ if (!source || !target)
81
+ continue;
82
+ const sides = (0, sides_js_1.chooseSides)(source, target, { source: edge.sourceHandle, target: edge.targetHandle }, previous?.(edge.id));
83
+ const from = { edge: edge.id, node: edge.source, side: sides.source, rect: source, partner: target, offset: 0.5, shared: false };
84
+ const to = { edge: edge.id, node: edge.target, side: sides.target, rect: target, partner: source, offset: 0.5, shared: false };
85
+ pairs.set(edge.id, [from, to]);
86
+ join(from);
87
+ join(to);
88
+ }
89
+ // Shared sides: spread in the order of the partners along the side, so the
90
+ // lines leave side by side without crossing. Ties (several edges to the
91
+ // same shape) go by edge id — the same order at both ends, so parallel
92
+ // edges stay parallel.
93
+ for (const group of groups.values()) {
94
+ if (group.length < 2)
95
+ continue;
96
+ const along = (end) => (alongX(end.side) ? (0, geometry_js_1.rectCenter)(end.partner).x : (0, geometry_js_1.rectCenter)(end.partner).y);
97
+ group.sort((a, b) => along(a) - along(b) || (a.edge < b.edge ? -1 : a.edge > b.edge ? 1 : 0));
98
+ group.forEach((end, index) => {
99
+ end.offset = BAND_START + (BAND * (index + 0.5)) / group.length;
100
+ end.shared = true;
101
+ });
102
+ }
103
+ // A lone end lines up with its partner across facing sides: on the
104
+ // partner's port when that one is shared, else in the middle of the two
105
+ // sides' overlap.
106
+ for (const [from, to] of pairs.values()) {
107
+ if ((from.shared && to.shared) || !facing(from, to))
108
+ continue;
109
+ if (from.shared || to.shared) {
110
+ const fixed = from.shared ? from : to;
111
+ const lone = fixed === from ? to : from;
112
+ const value = coordinate(fixed);
113
+ const [lo, hi] = band(lone);
114
+ if (value >= lo && value <= hi)
115
+ lone.offset = offsetAt(lone, value);
116
+ continue;
117
+ }
118
+ const [lo1, hi1] = band(from);
119
+ const [lo2, hi2] = band(to);
120
+ const lo = Math.max(lo1, lo2);
121
+ const hi = Math.min(hi1, hi2);
122
+ if (hi < lo)
123
+ continue;
124
+ const value = (lo + hi) / 2;
125
+ from.offset = offsetAt(from, value);
126
+ to.offset = offsetAt(to, value);
127
+ }
128
+ const out = {};
129
+ for (const [id, [from, to]] of pairs) {
130
+ out[id] = { sourceSide: from.side, targetSide: to.side, sourceOffset: from.offset, targetOffset: to.offset };
131
+ }
132
+ return out;
133
+ };
134
+ exports.assignPorts = assignPorts;
135
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/diagram/routing/ports.ts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,oEAAoE;AACpE,wEAAwE;AACxE,uEAAuE;AACvE,gDAAqE;AAErE,2CAAiD;AACjD,yCAAqD;AAarD,sEAAsE;AACtE,oEAAoE;AACpE,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;AAYzB,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,cAA0C,EAAW,EAAE;IAChG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAA,8BAAkB,EAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,IAAI,YAAY,CAAC;IAC/D,OAAO,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,OAAO,CAAC;AACzD,CAAC,CAAC;AALW,QAAA,UAAU,cAKrB;AAEF,MAAM,MAAM,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,CAAC;AAE5E,wCAAwC;AACxC,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAoB,EAAE,CAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE5G,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAoB,EAAE;IAC1C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAU,EAAE;IACtC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAE,KAAa,EAAU,EAAE;IACnD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClD,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,GAAG,CAAC,CAAM,EAAE,CAAM,EAAW,EAAE;IACzC,IAAI,IAAA,0BAAY,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAClD,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7C,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9C,KAAK,KAAK,CAAC;QACX;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CACzB,KAAgC,EAChC,KAA0B,EAC1B,cAA0C,EAC1C,QAAyD,EAC9B,EAAE;IAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAQ,EAAE;QAC9B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,cAAc,CAAC;YAAE,SAAS;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,SAAS;QACjC,MAAM,KAAK,GAAG,IAAA,sBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzH,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAChJ,MAAM,EAAE,GAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC9I,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,CAAC;QACX,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC;IAED,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,uBAAuB;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,CAAC,GAAQ,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAU,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAU,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC3B,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YAChE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,wEAAwE;IACxE,kBAAkB;IAClB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAAE,SAAS;QAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;gBAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpE,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE;YAAE,SAAS;QACtB,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,GAAG,GAA8B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QACrC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;IAC/G,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AArEW,QAAA,WAAW,eAqEtB"}
@@ -62,8 +62,9 @@ const sideVector = (side) => {
62
62
  };
63
63
  exports.sideVector = sideVector;
64
64
  // The point on the boundary where a terminal attaches: the explicit point
65
- // when given (legacy anchors, free ends), else the side's midpoint.
66
- const attachPoint = (terminal, side) => terminal.point ?? (0, geometry_js_1.sideMidpoint)(terminal.rect, side);
65
+ // when given (legacy anchors, free ends), else its port on the side (the
66
+ // midpoint unless an offset is given).
67
+ const attachPoint = (terminal, side) => terminal.point ?? (terminal.offset === undefined ? (0, geometry_js_1.sideMidpoint)(terminal.rect, side) : (0, geometry_js_1.pointOnSide)(terminal.rect, side, terminal.offset));
67
68
  exports.attachPoint = attachPoint;
68
69
  // Where the straight line from the rectangle's centre toward `toward` leaves
69
70
  // the rectangle — used by straight and curved edges so they meet the outline.
@@ -1 +1 @@
1
- {"version":3,"file":"sides.js","sourceRoot":"","sources":["../../../src/diagram/routing/sides.ts"],"names":[],"mappings":";;;AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,gDAAqE;AASrE,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,IAAU,EAAE,EAAS,EAAQ,EAAE;IACjD,MAAM,MAAM,GAAG,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3B,0EAA0E;IAC1E,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/F,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACpC,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CACzB,MAAY,EACZ,MAAY,EACZ,QAA0C,EAAE,EAC5C,QAA2C,EACpC,EAAE;IACT,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxF,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,IAAA,0BAAY,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAClH,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,IAAA,0BAAY,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IAElH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,MAAM,EAAE,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAC;IAE9B,IAAI,UAAmB,CAAC;IACxB,IAAI,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;QAC9E,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC;IACzE,CAAC;SAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QAChC,qDAAqD;QACrD,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAClG,CAAC,CAAC;AA5BW,QAAA,WAAW,eA4BtB;AAEK,MAAM,QAAQ,GAAG,CAAC,MAAgB,EAAE,MAAgB,EAAE,QAA2C,EAAS,EAAE,CACjH,IAAA,mBAAW,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AADnF,QAAA,QAAQ,YAC2E;AAEzF,MAAM,UAAU,GAAG,CAAC,IAAU,EAAS,EAAE;IAC9C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,KAAK,OAAO,CAAC;QACb;YACE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,UAAU,cAYrB;AAEF,0EAA0E;AAC1E,oEAAoE;AAC7D,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAE,IAAU,EAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAA,0BAAY,EAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAA7G,QAAA,WAAW,eAAkG;AAE1H,6EAA6E;AAC7E,8EAA8E;AACvE,MAAM,cAAc,GAAG,CAAC,IAAU,EAAE,MAAa,EAAS,EAAE;IACjE,MAAM,CAAC,GAAG,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7F,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AACtD,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB"}
1
+ {"version":3,"file":"sides.js","sourceRoot":"","sources":["../../../src/diagram/routing/sides.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diagram/routing/types.ts"],"names":[],"mappings":";;;AA+DO,MAAM,mBAAmB,GAAG,CAAC,UAAwB,EAAE,EAAwB,EAAE,CAAC,CAAC;IACxF,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;IAC5B,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;IACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;IACnC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,EAAE;IACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC3B,CAAC,CAAC;AATU,QAAA,mBAAmB,uBAS7B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diagram/routing/types.ts"],"names":[],"mappings":";;;AAkEO,MAAM,mBAAmB,GAAG,CAAC,UAAwB,EAAE,EAAwB,EAAE,CAAC,CAAC;IACxF,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;IAC5B,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;IACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;IACnC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,EAAE;IACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC3B,CAAC,CAAC;AATU,QAAA,mBAAmB,uBAS7B"}
package/dist-cjs/index.js CHANGED
@@ -139,5 +139,8 @@ __exportStar(require("./ui-test/flow-lint.js"), exports);
139
139
  __exportStar(require("./scenario-runner/index.js"), exports);
140
140
  __exportStar(require("./host/index.js"), exports);
141
141
  __exportStar(require("./loadtest/index.js"), exports);
142
+ // Pipeline pass criteria (threshold + critical requests) and the collection
143
+ // snapshot diff — shared by the backend, `callme`, the MCP server and the desktop.
144
+ __exportStar(require("./pipeline/index.js"), exports);
142
145
  __exportStar(require("./types/index.js"), exports);
143
146
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ // Pipeline pass criteria — when a CI collection run counts as passed.
3
+ //
4
+ // On-prem "pipeline" collections store this on the server (it is reviewed and
5
+ // versioned with the collection); everywhere else `callme run` builds it from
6
+ // `--pass-threshold` / `--critical-request`. Absent config = today's rule:
7
+ // every executed request must pass.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.applyPassPercentFloor = exports.normalizePipelineCollectionConfig = exports.normalizePipelinePassCriteria = exports.passCriteriaThreshold = exports.MAX_PIPELINE_REQUIRED_REQUESTS = exports.DEFAULT_PIPELINE_COLLECTION_CONFIG = exports.DEFAULT_PIPELINE_PASS_CRITERIA = void 0;
10
+ exports.DEFAULT_PIPELINE_PASS_CRITERIA = Object.freeze({
11
+ mode: "all",
12
+ minPassPercent: 100,
13
+ requiredRequestIds: [],
14
+ minExecuted: 1,
15
+ });
16
+ exports.DEFAULT_PIPELINE_COLLECTION_CONFIG = Object.freeze({
17
+ passCriteria: exports.DEFAULT_PIPELINE_PASS_CRITERIA,
18
+ bail: false,
19
+ allowFolderRuns: false,
20
+ });
21
+ /** Stored config carries at most this many critical requests. */
22
+ exports.MAX_PIPELINE_REQUIRED_REQUESTS = 200;
23
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
24
+ const clampInt = (value, min, max, fallback) => {
25
+ const parsed = typeof value === "string" ? Number(value) : value;
26
+ if (typeof parsed !== "number" || !Number.isFinite(parsed))
27
+ return fallback;
28
+ return Math.min(max, Math.max(min, Math.floor(parsed)));
29
+ };
30
+ /** The percentage a criteria demands: 100 in "all" mode. */
31
+ const passCriteriaThreshold = (criteria) => criteria.mode === "percentage" ? criteria.minPassPercent : 100;
32
+ exports.passCriteriaThreshold = passCriteriaThreshold;
33
+ /**
34
+ * Tolerant reader for stored / bundled / user-supplied criteria: unknown keys
35
+ * are dropped, bad values fall back to the defaults, numbers are clamped and
36
+ * duplicate ids removed. Never throws.
37
+ */
38
+ const normalizePipelinePassCriteria = (value) => {
39
+ if (!isRecord(value))
40
+ return { ...exports.DEFAULT_PIPELINE_PASS_CRITERIA, requiredRequestIds: [] };
41
+ const mode = value.mode === "percentage" ? "percentage" : "all";
42
+ const ids = Array.isArray(value.requiredRequestIds) ? value.requiredRequestIds : [];
43
+ const requiredRequestIds = [
44
+ ...new Set(ids
45
+ .filter((id) => typeof id === "string")
46
+ .map((id) => id.trim())
47
+ .filter(Boolean)),
48
+ ].slice(0, exports.MAX_PIPELINE_REQUIRED_REQUESTS);
49
+ return {
50
+ mode,
51
+ minPassPercent: mode === "percentage" ? clampInt(value.minPassPercent, 1, 100, 100) : 100,
52
+ requiredRequestIds,
53
+ minExecuted: clampInt(value.minExecuted, 1, 100_000, 1),
54
+ };
55
+ };
56
+ exports.normalizePipelinePassCriteria = normalizePipelinePassCriteria;
57
+ const normalizePipelineCollectionConfig = (value) => {
58
+ const source = isRecord(value) ? value : {};
59
+ const passCriteria = (0, exports.normalizePipelinePassCriteria)(source.passCriteria);
60
+ return {
61
+ passCriteria,
62
+ bail: passCriteria.mode === "percentage" ? false : source.bail === true,
63
+ allowFolderRuns: source.allowFolderRuns === true,
64
+ };
65
+ };
66
+ exports.normalizePipelineCollectionConfig = normalizePipelineCollectionConfig;
67
+ /**
68
+ * Raise a criteria to an admin-set minimum percentage (on-prem policy). A
69
+ * floor of 0/absent changes nothing; "all" mode is already the strictest.
70
+ */
71
+ const applyPassPercentFloor = (criteria, floor) => {
72
+ const min = clampInt(floor, 0, 100, 0);
73
+ if (criteria.mode !== "percentage" || criteria.minPassPercent >= min)
74
+ return criteria;
75
+ return { ...criteria, minPassPercent: min };
76
+ };
77
+ exports.applyPassPercentFloor = applyPassPercentFloor;
78
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/pipeline/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./config.js"), exports);
18
+ __exportStar(require("./passCriteria.js"), exports);
19
+ __exportStar(require("./snapshotDiff.js"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC;AAClC,oDAAkC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluatePassCriteria = void 0;
4
+ const config_js_1 = require("./config.js");
5
+ /**
6
+ * Decide a run's verdict from per-request outcomes. The comparison is exact
7
+ * (`passed * 100 >= threshold * executed`), so 79.9% does not reach 80%.
8
+ * Order of failure reasons: too few requests, a critical request, the
9
+ * percentage.
10
+ */
11
+ const evaluatePassCriteria = (outcomes, criteria, options = {}) => {
12
+ const byRequest = new Map();
13
+ for (const outcome of outcomes) {
14
+ const skipped = outcome.skipped === true;
15
+ const current = byRequest.get(outcome.requestId);
16
+ if (!current) {
17
+ byRequest.set(outcome.requestId, { passed: skipped || outcome.passed, skipped });
18
+ continue;
19
+ }
20
+ if (skipped)
21
+ continue;
22
+ current.passed = (current.skipped || current.passed) && outcome.passed;
23
+ current.skipped = false;
24
+ }
25
+ let executed = 0;
26
+ let passedCount = 0;
27
+ for (const entry of byRequest.values()) {
28
+ if (entry.skipped)
29
+ continue;
30
+ executed += 1;
31
+ if (entry.passed)
32
+ passedCount += 1;
33
+ }
34
+ const failedCount = executed - passedCount;
35
+ const scope = options.scopeRequestIds ? new Set(options.scopeRequestIds) : null;
36
+ const requiredFailed = [];
37
+ const requiredMissing = [];
38
+ for (const id of criteria.requiredRequestIds) {
39
+ if (scope && !scope.has(id))
40
+ continue;
41
+ const entry = byRequest.get(id);
42
+ if (!entry || entry.skipped)
43
+ requiredMissing.push(id);
44
+ else if (!entry.passed)
45
+ requiredFailed.push(id);
46
+ }
47
+ const threshold = (0, config_js_1.passCriteriaThreshold)(criteria);
48
+ const passRate = executed === 0 ? null : Math.round((passedCount / executed) * 1000) / 10;
49
+ const base = {
50
+ mode: criteria.mode,
51
+ threshold,
52
+ executed,
53
+ passedCount,
54
+ failedCount,
55
+ passRate,
56
+ requiredFailed,
57
+ requiredMissing,
58
+ };
59
+ if (executed < Math.max(1, criteria.minExecuted)) {
60
+ return { ...base, passed: false, reason: "below_min_executed" };
61
+ }
62
+ if (requiredFailed.length > 0 || requiredMissing.length > 0) {
63
+ return { ...base, passed: false, reason: "required_failed" };
64
+ }
65
+ if (passedCount * 100 < threshold * executed) {
66
+ return { ...base, passed: false, reason: "below_threshold" };
67
+ }
68
+ return { ...base, passed: true, reason: failedCount === 0 ? "all_passed" : "threshold_met" };
69
+ };
70
+ exports.evaluatePassCriteria = evaluatePassCriteria;
71
+ //# sourceMappingURL=passCriteria.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passCriteria.js","sourceRoot":"","sources":["../../src/pipeline/passCriteria.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ // What changed between two versions of a collection — the snapshot a pipeline
3
+ // collection is reviewed and published as (the backend's internal export plus
4
+ // `pipelineConfig`). The backend stores the counts with each review request;
5
+ // the desktop review screen uses the per-item lists for its change markers.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.canonicalCollectionSnapshot = exports.diffCollectionSnapshots = exports.canonicalJson = void 0;
8
+ const config_js_1 = require("./config.js");
9
+ // Bookkeeping that changes without the content changing. Stripped only at
10
+ // the item's top level — a request body may legitimately hold "createdAt".
11
+ const VOLATILE_ITEM_KEYS = new Set(["createdAt", "updatedAt", "collectionId"]);
12
+ const VOLATILE_COLLECTION_KEYS = new Set([
13
+ "id",
14
+ "createdAt",
15
+ "updatedAt",
16
+ "ownerId",
17
+ "members",
18
+ "docs",
19
+ "pipelineConfig",
20
+ ]);
21
+ const SCRIPT_KEYS = new Set(["preRequestScript", "postResponseScript", "testsScript", "scripts"]);
22
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
23
+ /** Deterministic JSON: object keys sorted at every depth. */
24
+ const canonicalJson = (value) => {
25
+ if (value instanceof Date)
26
+ return JSON.stringify(value.toISOString());
27
+ if (Array.isArray(value))
28
+ return `[${value.map(exports.canonicalJson).join(",")}]`;
29
+ if (isRecord(value)) {
30
+ const keys = Object.keys(value)
31
+ .filter((key) => value[key] !== undefined)
32
+ .sort();
33
+ return `{${keys.map((key) => `${JSON.stringify(key)}:${(0, exports.canonicalJson)(value[key])}`).join(",")}}`;
34
+ }
35
+ return JSON.stringify(value ?? null);
36
+ };
37
+ exports.canonicalJson = canonicalJson;
38
+ const comparableItem = (item) => {
39
+ const out = {};
40
+ for (const [key, value] of Object.entries(item)) {
41
+ if (VOLATILE_ITEM_KEYS.has(key))
42
+ continue;
43
+ // Contract rules carry their own timestamps.
44
+ out[key] =
45
+ key === "contractRules" && Array.isArray(value)
46
+ ? value.map((rule) => (isRecord(rule) ? comparableItem(rule) : rule))
47
+ : value;
48
+ }
49
+ return out;
50
+ };
51
+ const comparableCollection = (collection) => {
52
+ const out = {};
53
+ for (const [key, value] of Object.entries(collection)) {
54
+ if (!VOLATILE_COLLECTION_KEYS.has(key))
55
+ out[key] = value;
56
+ }
57
+ return out;
58
+ };
59
+ const changedKeys = (before, after) => {
60
+ const keys = new Set([...Object.keys(before), ...Object.keys(after)]);
61
+ return [...keys]
62
+ .filter((key) => (0, exports.canonicalJson)(before[key]) !== (0, exports.canonicalJson)(after[key]))
63
+ .sort();
64
+ };
65
+ const itemName = (item) => typeof item.name === "string" ? item.name : String(item.id ?? "");
66
+ const diffItems = (before, after) => {
67
+ const beforeById = new Map(before.map((item) => [item.id, item]));
68
+ const afterIds = new Set(after.map((item) => item.id));
69
+ const changes = [];
70
+ for (const item of after) {
71
+ const previous = beforeById.get(item.id);
72
+ if (!previous) {
73
+ changes.push({ id: item.id, name: itemName(item), change: "added", fields: [] });
74
+ continue;
75
+ }
76
+ const fields = changedKeys(comparableItem(previous), comparableItem(item));
77
+ if (fields.length > 0) {
78
+ changes.push({ id: item.id, name: itemName(item), change: "modified", fields });
79
+ }
80
+ }
81
+ for (const item of before) {
82
+ if (!afterIds.has(item.id)) {
83
+ changes.push({ id: item.id, name: itemName(item), change: "removed", fields: [] });
84
+ }
85
+ }
86
+ return changes;
87
+ };
88
+ const diffPipelineConfig = (before, after) => {
89
+ if (before && (0, exports.canonicalJson)(before) === (0, exports.canonicalJson)(after))
90
+ return null;
91
+ const thresholdBefore = before ? (0, config_js_1.passCriteriaThreshold)(before.passCriteria) : null;
92
+ const thresholdAfter = (0, config_js_1.passCriteriaThreshold)(after.passCriteria);
93
+ const beforeIds = new Set(before?.passCriteria.requiredRequestIds ?? []);
94
+ const afterIds = new Set(after.passCriteria.requiredRequestIds);
95
+ return {
96
+ thresholdBefore,
97
+ thresholdAfter,
98
+ thresholdLowered: thresholdBefore !== null && thresholdAfter < thresholdBefore,
99
+ criticalAdded: [...afterIds].filter((id) => !beforeIds.has(id)),
100
+ criticalRemoved: [...beforeIds].filter((id) => !afterIds.has(id)),
101
+ minExecutedLowered: before !== null && after.passCriteria.minExecuted < before.passCriteria.minExecuted,
102
+ bailChanged: before !== null && before.bail !== after.bail,
103
+ folderRunsEnabled: after.allowFolderRuns && !(before?.allowFolderRuns ?? false),
104
+ };
105
+ };
106
+ /**
107
+ * Compare a proposed snapshot with the active one (`base` null = the first
108
+ * version, so everything is "added"). Items are matched by id.
109
+ */
110
+ const diffCollectionSnapshots = (base, next) => {
111
+ const requests = diffItems(base?.requests ?? [], next.requests);
112
+ const folders = diffItems(base?.folders ?? [], next.folders);
113
+ const collectionFields = base
114
+ ? changedKeys(comparableCollection(base.collection), comparableCollection(next.collection))
115
+ : [];
116
+ const pipelineConfig = diffPipelineConfig(base ? (0, config_js_1.normalizePipelineCollectionConfig)(base.collection.pipelineConfig) : null, (0, config_js_1.normalizePipelineCollectionConfig)(next.collection.pipelineConfig));
117
+ const scriptsChanged = requests.filter((item) => item.fields.some((field) => SCRIPT_KEYS.has(field))).length +
118
+ folders.filter((item) => item.fields.includes("scripts")).length +
119
+ (collectionFields.includes("scripts") ? 1 : 0);
120
+ return {
121
+ stats: {
122
+ requestsAdded: requests.filter((item) => item.change === "added").length,
123
+ requestsModified: requests.filter((item) => item.change === "modified").length,
124
+ requestsRemoved: requests.filter((item) => item.change === "removed").length,
125
+ foldersChanged: folders.length,
126
+ collectionSettingsChanged: collectionFields.length > 0,
127
+ scriptsChanged,
128
+ pipelineConfigChanged: base !== null && pipelineConfig !== null,
129
+ thresholdLowered: pipelineConfig?.thresholdLowered ?? false,
130
+ criticalRemoved: pipelineConfig?.criticalRemoved.length ?? 0,
131
+ },
132
+ requests,
133
+ folders,
134
+ collectionFields,
135
+ pipelineConfig,
136
+ };
137
+ };
138
+ exports.diffCollectionSnapshots = diffCollectionSnapshots;
139
+ /** Canonical text of a snapshot without bookkeeping — hash it to tell
140
+ * whether two snapshots hold the same content. */
141
+ const canonicalCollectionSnapshot = (snapshot) => (0, exports.canonicalJson)({
142
+ collection: {
143
+ ...comparableCollection(snapshot.collection),
144
+ pipelineConfig: (0, config_js_1.normalizePipelineCollectionConfig)(snapshot.collection.pipelineConfig),
145
+ },
146
+ folders: [...snapshot.folders]
147
+ .map(comparableItem)
148
+ .sort((a, b) => String(a.id).localeCompare(String(b.id))),
149
+ requests: [...snapshot.requests]
150
+ .map(comparableItem)
151
+ .sort((a, b) => String(a.id).localeCompare(String(b.id))),
152
+ });
153
+ exports.canonicalCollectionSnapshot = canonicalCollectionSnapshot;
154
+ //# sourceMappingURL=snapshotDiff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshotDiff.js","sourceRoot":"","sources":["../../src/pipeline/snapshotDiff.ts"],"names":[],"mappings":"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"}