@nac3/forge-cli 1.2.11 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"board_artifacts.d.ts","sourceRoot":"","sources":["../../src/chat/board_artifacts.ts"],"names":[],"mappings":"AAyBA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASpE;AAQD,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIlD;AAgCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4G5D;AAmBD,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE;AAErE;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAChE,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB"}
1
+ {"version":3,"file":"board_artifacts.d.ts","sourceRoot":"","sources":["../../src/chat/board_artifacts.ts"],"names":[],"mappings":"AAwBA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASpE;AAQD,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIlD;AAsGD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAqND,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE;AAErE;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAChE,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB"}
@@ -19,7 +19,6 @@
19
19
  */
20
20
  import { mkdir, writeFile } from 'node:fs/promises';
21
21
  import { join, dirname } from 'node:path';
22
- import { layoutFlowModel, wrapLabel, FL } from './flow_layout.js';
23
22
  /* ---------- helpers ---------- */
24
23
  export function slugifyTitle(title, fallback) {
25
24
  const base = String(title || '')
@@ -42,46 +41,109 @@ export function looksLikeHtml(src) {
42
41
  return /^\s*<(?:!doctype|html|head|body|section|article|main|div|h[1-6]|p|ul|ol|table|header|figure|blockquote)\b/i.test(s)
43
42
  || /<\/(?:h[1-6]|section|article|main|div|p|ul|ol|li|table|thead|tbody|tr|td|th|header|figure|blockquote)\s*>/i.test(s);
44
43
  }
45
- function bpmnWrap(s, maxChars, maxLines) {
46
- const words = String(s == null ? '' : s).split(/\s+/);
44
+ const FLP = {
45
+ bg: '#f5f0e6', laneStroke: '#b8ad95', laneLabel: '#4f5b87', laneAlt: 'rgba(0,0,0,0.025)',
46
+ edge: '#1a1a1a', loop: '#8a6d3b', taskFill: '#ece6d8', taskStroke: '#4f5b87',
47
+ startStroke: '#6f8b5e', endStroke: '#c8472e', gwStroke: '#c8a04d', text: '#1a1a1a',
48
+ };
49
+ const FC = {
50
+ NODE_W: 150, NODE_MIN_H: 56, LINE_H: 14, FONT_SIZE: 11.5, CHARS_PER_LINE: 20, MAX_LINES: 5,
51
+ EVENT_R: 20, GW_HALF: 25, COL_GAP: 210, ROW_GAP: 28, LEFT_MARGIN: 26, LANE_LABEL_W: 40,
52
+ RIGHT_MARGIN: 40, TOP_MARGIN: 10, BOTTOM_MARGIN: 14, LOOP_EXTRA: 50,
53
+ };
54
+ const FICONS = { serviceTask: '⚙', userTask: '☺', sendTask: '➤', receiveTask: '✉', scriptTask: '≡' };
55
+ function flowWrapLabel(label, maxChars = FC.CHARS_PER_LINE, maxLines = FC.MAX_LINES) {
56
+ const words = String(label == null ? '' : label).split(/\s+/).filter(Boolean);
47
57
  const lines = [];
48
58
  let cur = '';
49
59
  for (const w of words) {
50
- if (!cur) {
60
+ const test = cur ? cur + ' ' + w : w;
61
+ if (test.length > maxChars && cur) {
62
+ lines.push(cur);
51
63
  cur = w;
52
64
  }
53
- else if ((cur + ' ' + w).length <= maxChars) {
54
- cur += ' ' + w;
55
- }
56
65
  else {
57
- lines.push(cur);
58
- cur = w;
59
- if (lines.length === maxLines - 1)
60
- break;
66
+ cur = test;
61
67
  }
62
68
  }
63
- if (cur && lines.length < maxLines)
69
+ if (cur)
64
70
  lines.push(cur);
65
- if (lines.length === maxLines && (cur || words.length > 0)) {
66
- const last = lines[maxLines - 1];
67
- if (last && last.length > maxChars)
68
- lines[maxLines - 1] = last.slice(0, maxChars - 1) + '…';
71
+ if (lines.length > maxLines) {
72
+ const kept = lines.slice(0, maxLines - 1);
73
+ const rest = lines.slice(maxLines - 1).join(' ');
74
+ kept.push(rest.length > maxChars ? rest.slice(0, maxChars - 1) + '.' : rest);
75
+ return kept;
76
+ }
77
+ return lines.length ? lines : [''];
78
+ }
79
+ /** DFS: edges pointing back to a node still on the recursion stack are loop-backs
80
+ * (rework). They are kept out of the column/longest-path calc and routed apart. */
81
+ function flowFindBackEdges(nodeIds, adj) {
82
+ const state = new Map(nodeIds.map((id) => [id, 0])); // 0 unvisited 1 in-stack 2 done
83
+ const back = new Set();
84
+ const dfs = (u) => {
85
+ state.set(u, 1);
86
+ for (const v of adj.get(u) || []) {
87
+ if (!state.has(v))
88
+ continue;
89
+ if (state.get(v) === 1)
90
+ back.add(u + '->' + v);
91
+ else if (state.get(v) === 0)
92
+ dfs(v);
93
+ }
94
+ state.set(u, 2);
95
+ };
96
+ for (const id of nodeIds)
97
+ if (state.get(id) === 0)
98
+ dfs(id);
99
+ return back;
100
+ }
101
+ /** Longest-path columns via Kahn over the forward-only DAG (col = max(pred)+1). */
102
+ function flowLayerize(nodeIds, fwdAdj, fwdIndeg) {
103
+ const col = new Map(nodeIds.map((id) => [id, 0]));
104
+ const indeg = new Map(fwdIndeg);
105
+ const queue = nodeIds.filter((id) => (indeg.get(id) || 0) === 0);
106
+ const seen = new Set(queue);
107
+ let head = 0;
108
+ while (head < queue.length) {
109
+ const u = queue[head++];
110
+ for (const v of fwdAdj.get(u) || []) {
111
+ col.set(v, Math.max(col.get(v) || 0, (col.get(u) || 0) + 1));
112
+ indeg.set(v, (indeg.get(v) || 0) - 1);
113
+ if ((indeg.get(v) || 0) === 0 && !seen.has(v)) {
114
+ seen.add(v);
115
+ queue.push(v);
116
+ }
117
+ }
69
118
  }
70
- return lines;
119
+ /* any node never dequeued (part of a pure cycle with no forward entry) keeps
120
+ * col 0 -- harmless; it still gets a position. */
121
+ return col;
71
122
  }
72
- function bpmnHalf(n) {
73
- const type = String(n.type || 'task');
74
- if (/start|^event$|end|intermediate/.test(type))
75
- return 18;
76
- if (/gateway|decision|fork|join|merge/.test(type))
77
- return 23;
78
- return 59;
123
+ function flowNodeGeom(node) {
124
+ const lines = flowWrapLabel(node.label ?? node.id);
125
+ const t = String(node.type || 'task');
126
+ if (/^start/.test(t) || /^end/.test(t) || /^intermediate/.test(t) || t === 'event') {
127
+ const shape = /^end/.test(t) ? 'endEvent' : 'startEvent';
128
+ return { shape, hasIcon: false, connHalfW: FC.EVENT_R, topExtent: FC.EVENT_R + 6, bottomExtent: FC.EVENT_R + 10 + lines.length * FC.LINE_H, lines };
129
+ }
130
+ if (/^(gateway|decision|fork|join|merge)/.test(t)) {
131
+ return { shape: 'gateway', hasIcon: false, connHalfW: FC.GW_HALF, topExtent: FC.GW_HALF + 6, bottomExtent: FC.GW_HALF + 10 + lines.length * FC.LINE_H, lines };
132
+ }
133
+ const hasIcon = Boolean(FICONS[t]);
134
+ const halfH = Math.max(FC.NODE_MIN_H, lines.length * FC.LINE_H + (hasIcon ? 26 : 18)) / 2;
135
+ return { shape: 'task', hasIcon, connHalfW: FC.NODE_W / 2, topExtent: halfH, bottomExtent: halfH, lines };
79
136
  }
80
137
  /**
81
138
  * Render a flow model to a STANDALONE svg string (with xml prolog + intrinsic
82
139
  * width/height). Returns null when the content is not a parseable flow.
83
140
  */
84
141
  export function renderFlowSvg(content) {
142
+ return renderFlowSvgPorted(content);
143
+ }
144
+ /* Legacy simple renderer kept for reference/rollback under a flag-less name is
145
+ * intentionally removed; the ported layout below is the sole path. */
146
+ function renderFlowSvgPorted(content) {
85
147
  let m;
86
148
  try {
87
149
  m = JSON.parse(content);
@@ -91,135 +153,300 @@ export function renderFlowSvg(content) {
91
153
  }
92
154
  if (!m || !Array.isArray(m.nodes) || m.nodes.length === 0)
93
155
  return null;
94
- const nodes = m.nodes.filter((n) => n && n.id);
95
- const flows = Array.isArray(m.flows) ? m.flows.filter((f) => f && f.from && f.to) : [];
96
- const lanes = Array.isArray(m.lanes) ? m.lanes.filter((l) => l && l.id) : [];
97
- if (nodes.length === 0)
156
+ const allNodes = m.nodes.filter((n) => n && n.id);
157
+ if (!allNodes.length)
98
158
  return null;
99
- /* Positions + geometry come from the shared layered layout: crossing-reduced
100
- * column ordering and collision-free, auto-sized lane bands (flow_layout.ts).
101
- * The old inline "fixed-height bands + naive stacking" overlapped nodes when a
102
- * (lane, column) cell held more than one. */
103
- const { W, H, laneBands } = layoutFlowModel(nodes, flows, lanes);
104
- const hasLanes = laneBands.length > 0;
105
- const byId = {};
106
- nodes.forEach((n) => { byId[n.id] = n; });
107
- const P = { ink: '#1a1a1a', indigo: '#4f5b87', amber: '#c8a04d', tea: '#6f8b5e', vermilion: '#c8472e', line: '#b8ad95', washi: '#f5f0e6', bg2: '#ece6d8' };
108
- let svg = '<?xml version="1.0" encoding="UTF-8"?>\n'
109
- + '<svg viewBox="0 0 ' + Math.round(W) + ' ' + Math.round(H) + '" width="' + Math.round(W) + '" height="' + Math.round(H) + '"'
110
- + ' preserveAspectRatio="xMinYMin meet" xmlns="http://www.w3.org/2000/svg">';
111
- svg += '<rect x="0" y="0" width="' + Math.round(W) + '" height="' + Math.round(H) + '" fill="' + P.washi + '"/>';
112
- svg += '<defs><marker id="bpmn-arrow" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto" markerUnits="strokeWidth">'
113
- + '<path d="M0,0 L7,3 L0,6 z" fill="' + P.ink + '"/></marker></defs>';
114
- if (hasLanes) {
115
- for (let li2 = 0; li2 < laneBands.length; li2++) {
116
- const band = laneBands[li2];
117
- if (!band)
118
- continue;
119
- const ly = band.y;
120
- svg += '<rect x="' + FL.PAD + '" y="' + ly + '" width="' + (W - 2 * FL.PAD) + '" height="' + band.h + '" fill="' + (li2 % 2 ? 'rgba(0,0,0,0.025)' : 'transparent') + '" stroke="' + P.line + '" stroke-width="1"/>';
121
- svg += '<text x="' + (FL.PAD + 14) + '" y="' + (ly + band.h / 2) + '" transform="rotate(-90 ' + (FL.PAD + 14) + ' ' + (ly + band.h / 2) + ')" text-anchor="middle" font-size="11" fill="' + P.indigo + '" font-weight="600">' + escXml(String(band.label)) + '</text>';
159
+ const flows0 = Array.isArray(m.flows) ? m.flows.filter((f) => f && f.from && f.to) : [];
160
+ /* prune declared-but-empty lanes; synthesize a single lane when none. */
161
+ const usedLaneIds = new Set();
162
+ for (const n of allNodes)
163
+ if (n.lane != null && String(n.lane))
164
+ usedLaneIds.add(String(n.lane));
165
+ let lanesArr = (Array.isArray(m.lanes) ? m.lanes.filter((l) => l && l.id) : []).filter((l) => usedLaneIds.has(l.id));
166
+ const hasLanes = lanesArr.length > 0;
167
+ if (!hasLanes)
168
+ lanesArr = [{ id: '__main', label: '' }];
169
+ const laneOrder = lanesArr.map((l) => l.id);
170
+ const laneSet = new Set(laneOrder);
171
+ const laneLabel = new Map(lanesArr.map((l) => [l.id, String(l.label ?? l.id)]));
172
+ const LANE_LBL_W = hasLanes ? FC.LANE_LABEL_W : 0;
173
+ /* every node gets a valid lane (unknown/absent -> first lane). */
174
+ const nodeById = new Map();
175
+ for (const n of allNodes) {
176
+ const lane = (n.lane != null && laneSet.has(String(n.lane))) ? String(n.lane) : laneOrder[0];
177
+ nodeById.set(n.id, { ...n, lane });
178
+ }
179
+ const nodeIds = allNodes.map((n) => n.id);
180
+ const flows = flows0.filter((f) => nodeById.has(f.from) && nodeById.has(f.to));
181
+ const adj = new Map(nodeIds.map((id) => [id, []]));
182
+ for (const f of flows)
183
+ adj.get(f.from).push(f.to);
184
+ const backEdges = flowFindBackEdges(nodeIds, adj);
185
+ const fwdAdj = new Map(nodeIds.map((id) => [id, []]));
186
+ const fwdIndeg = new Map(nodeIds.map((id) => [id, 0]));
187
+ const forwardFlows = [];
188
+ const loopFlows = [];
189
+ for (const f of flows) {
190
+ if (backEdges.has(f.from + '->' + f.to)) {
191
+ loopFlows.push(f);
192
+ }
193
+ else {
194
+ forwardFlows.push(f);
195
+ fwdAdj.get(f.from).push(f.to);
196
+ fwdIndeg.set(f.to, (fwdIndeg.get(f.to) || 0) + 1);
197
+ }
198
+ }
199
+ const col = flowLayerize(nodeIds, fwdAdj, fwdIndeg);
200
+ const geom = new Map(nodeIds.map((id) => [id, flowNodeGeom(nodeById.get(id))]));
201
+ /* bucket nodes per (lane, column). */
202
+ const laneBuckets = new Map(laneOrder.map((l) => [l, new Map()]));
203
+ for (const id of nodeIds) {
204
+ const n = nodeById.get(id);
205
+ const c = col.get(id) || 0;
206
+ const buckets = laneBuckets.get(n.lane);
207
+ if (!buckets.has(c))
208
+ buckets.set(c, []);
209
+ buckets.get(c).push(id);
210
+ }
211
+ const bucketHeight = (ids) => {
212
+ let h = 0;
213
+ ids.forEach((id, i) => { const g = geom.get(id); h += g.topExtent + g.bottomExtent; if (i < ids.length - 1)
214
+ h += FC.ROW_GAP; });
215
+ return h;
216
+ };
217
+ const laneHeight = new Map();
218
+ for (const lane of laneOrder) {
219
+ let mx = 0;
220
+ for (const ids of laneBuckets.get(lane).values())
221
+ mx = Math.max(mx, bucketHeight(ids));
222
+ laneHeight.set(lane, Math.max(mx, FC.NODE_MIN_H) + 2 * FC.ROW_GAP);
223
+ }
224
+ const laneTop = new Map();
225
+ let cursorY = FC.TOP_MARGIN;
226
+ for (const lane of laneOrder) {
227
+ laneTop.set(lane, cursorY);
228
+ cursorY += laneHeight.get(lane);
229
+ }
230
+ const pos = new Map();
231
+ for (const lane of laneOrder) {
232
+ const buckets = laneBuckets.get(lane);
233
+ const top = laneTop.get(lane);
234
+ const total = laneHeight.get(lane) - 2 * FC.ROW_GAP;
235
+ for (const [c, ids] of buckets.entries()) {
236
+ const bh = bucketHeight(ids);
237
+ const offset = (total - bh) / 2;
238
+ let y = top + FC.ROW_GAP + offset;
239
+ const cx = FC.LEFT_MARGIN + LANE_LBL_W + FC.NODE_W / 2 + c * FC.COL_GAP;
240
+ for (const id of ids) {
241
+ const g = geom.get(id);
242
+ pos.set(id, { cx, cy: y + g.topExtent, col: c });
243
+ y += g.topExtent + g.bottomExtent + FC.ROW_GAP;
244
+ }
122
245
  }
123
246
  }
124
- /* Branch separation (Pablo 2026-09-08): several sequence flows leaving a
125
- * decision gateway (or converging on a merge) shared the same elbow x, so the
126
- * vertical segments and their Si/No labels overlapped. Give each sibling that
127
- * shares a source (fan-out) or a target (merge) a distinct elbow x, spread
128
- * around the midpoint by its index. Forward edges only (back-edges route
129
- * below). */
130
- const fOutN = {}, fInN = {};
131
- const outSeen = {}, inSeen = {};
132
- const outIdx = [], inIdx = [];
133
- const isFwd = (f) => { const a = byId[f.from], b = byId[f.to]; return !!a && !!b && (b._x || 0) >= (a._x || 0); };
134
- flows.forEach((f) => { if (!isFwd(f))
135
- return; fOutN[f.from] = (fOutN[f.from] || 0) + 1; fInN[f.to] = (fInN[f.to] || 0) + 1; });
136
- flows.forEach((f, i) => { if (!isFwd(f)) {
137
- outIdx[i] = 0;
138
- inIdx[i] = 0;
139
- return;
140
- } outIdx[i] = (outSeen[f.from] = (outSeen[f.from] ?? -1) + 1); inIdx[i] = (inSeen[f.to] = (inSeen[f.to] ?? -1) + 1); });
141
- const SEPX = 16, SEPY = 11;
142
- flows.forEach((f, i) => {
143
- const a = byId[f.from], b = byId[f.to];
144
- if (!a || !b)
145
- return;
146
- const ar = bpmnHalf(a), br = bpmnHalf(b);
147
- const ax = a._x || 0, ay = a._y || 0, bx = b._x || 0, by = b._y || 0;
148
- const forward = (bx >= ax);
149
- /* Sibling separation: branches that share a source (gateway fan-out) or a
150
- * target (merge) leave/arrive at DISTINCT y and turn at DISTINCT x, so they
151
- * read as separate lines and only meet at the node -- no overlapping "double
152
- * line" (Pablo 2026-09-08). */
153
- const oN = fOutN[f.from] || 1, iN = fInN[f.to] || 1;
154
- const outO = oN > 1 ? ((outIdx[i] ?? 0) - (oN - 1) / 2) : 0;
155
- const inO = iN > 1 ? ((inIdx[i] ?? 0) - (iN - 1) / 2) : 0;
156
- const sx = ax + (forward ? ar : -ar), tx = bx - (forward ? br : -br);
157
- const sy = ay + outO * SEPY, ty = by + inO * SEPY;
158
- const midx = Math.max(sx + 10, Math.min(tx - 10, (sx + tx) / 2 + outO * SEPX + inO * (SEPX * 0.6)));
159
- let d;
160
- if (Math.abs(sy - ty) < 2) {
161
- d = 'M' + sx + ',' + sy + ' L' + tx + ',' + ty;
247
+ const maxCol = Math.max(0, ...nodeIds.map((id) => col.get(id) || 0));
248
+ const width = FC.LEFT_MARGIN + LANE_LBL_W + FC.NODE_W / 2 + maxCol * FC.COL_GAP + FC.NODE_W / 2 + FC.RIGHT_MARGIN;
249
+ const height = cursorY - FC.ROW_GAP + FC.BOTTOM_MARGIN + (loopFlows.length ? FC.LOOP_EXTRA : 0);
250
+ /* validation (non-throwing in the live path): a broken layout is logged, not
251
+ * hidden, but we still return the SVG (persistBoardArtifact is best-effort). */
252
+ const problems = [];
253
+ for (const id of nodeIds) {
254
+ const n = nodeById.get(id);
255
+ const p = pos.get(id);
256
+ const g = geom.get(id);
257
+ const top = laneTop.get(n.lane);
258
+ const laneH = laneHeight.get(n.lane);
259
+ if (p.cy - g.topExtent < top - 0.01 || p.cy + g.bottomExtent > top + laneH + 0.01)
260
+ problems.push('node ' + id + ' escapes lane ' + n.lane);
261
+ }
262
+ const nodeBox = (id) => {
263
+ const p = pos.get(id);
264
+ const g = geom.get(id);
265
+ const halfW = g.shape === 'task' ? FC.NODE_W / 2 : g.connHalfW;
266
+ return { x0: p.cx - halfW, x1: p.cx + halfW, y0: p.cy - g.topExtent, y1: p.cy + g.bottomExtent };
267
+ };
268
+ const EPS = 0.5;
269
+ const segmentHits = (points, exclude) => {
270
+ const hits = [];
271
+ for (let i = 0; i < points.length - 1; i++) {
272
+ const [x1, y1] = points[i];
273
+ const [x2, y2] = points[i + 1];
274
+ const horizontal = Math.abs(y1 - y2) < EPS;
275
+ for (const id of nodeIds) {
276
+ if (exclude.has(id))
277
+ continue;
278
+ const box = nodeBox(id);
279
+ if (horizontal) {
280
+ const y = y1;
281
+ const xLo = Math.min(x1, x2) + EPS;
282
+ const xHi = Math.max(x1, x2) - EPS;
283
+ if (y > box.y0 + EPS && y < box.y1 - EPS && xHi > box.x0 && xLo < box.x1)
284
+ hits.push({ segIndex: i, id, box, horizontal: true });
285
+ }
286
+ else {
287
+ const x = x1;
288
+ const yLo = Math.min(y1, y2) + EPS;
289
+ const yHi = Math.max(y1, y2) - EPS;
290
+ if (x > box.x0 + EPS && x < box.x1 - EPS && yHi > box.y0 && yLo < box.y1)
291
+ hits.push({ segIndex: i, id, box, horizontal: false });
292
+ }
293
+ }
294
+ }
295
+ return hits;
296
+ };
297
+ const bumpSegment = (points, hit) => {
298
+ const i = hit.segIndex;
299
+ const [x1, y1] = points[i];
300
+ const [x2, y2] = points[i + 1];
301
+ const GAP = 14;
302
+ if (hit.horizontal) {
303
+ const above = hit.box.y0 - GAP;
304
+ const below = hit.box.y1 + GAP;
305
+ const newY = Math.abs(above - y1) <= Math.abs(below - y1) ? above : below;
306
+ const dir = x2 >= x1 ? 1 : -1;
307
+ const enterX = dir === 1 ? Math.max(x1, hit.box.x0 - GAP) : Math.min(x1, hit.box.x1 + GAP);
308
+ const exitX = dir === 1 ? Math.min(x2, hit.box.x1 + GAP) : Math.max(x2, hit.box.x0 - GAP);
309
+ return [...points.slice(0, i + 1), [enterX, y1], [enterX, newY], [exitX, newY], [exitX, y2], ...points.slice(i + 1)];
162
310
  }
163
- else if (forward) {
164
- d = 'M' + sx + ',' + sy + ' L' + midx + ',' + sy + ' L' + midx + ',' + ty + ' L' + tx + ',' + ty;
311
+ const left = hit.box.x0 - GAP;
312
+ const right = hit.box.x1 + GAP;
313
+ const newX = Math.abs(left - x1) <= Math.abs(right - x1) ? left : right;
314
+ const dir = y2 >= y1 ? 1 : -1;
315
+ const enterY = dir === 1 ? Math.max(y1, hit.box.y0 - GAP) : Math.min(y1, hit.box.y1 + GAP);
316
+ const exitY = dir === 1 ? Math.min(y2, hit.box.y1 + GAP) : Math.max(y2, hit.box.y0 - GAP);
317
+ return [...points.slice(0, i + 1), [x1, enterY], [newX, enterY], [newX, exitY], [x2, exitY], ...points.slice(i + 1)];
318
+ };
319
+ const routeAvoiding = (initial, exclude) => {
320
+ let points = initial;
321
+ for (let iter = 0; iter < 8; iter++) {
322
+ const hits = segmentHits(points, exclude);
323
+ if (!hits.length)
324
+ return points;
325
+ points = bumpSegment(points, hits[0]);
326
+ }
327
+ return points;
328
+ };
329
+ const pathFromPoints = (points) => points.map((p, i) => (i === 0 ? 'M' : 'L') + p[0].toFixed(1) + ',' + p[1].toFixed(1)).join(' ');
330
+ const connPoint = (id, side) => { const p = pos.get(id); const g = geom.get(id); return { x: side === 'out' ? p.cx + g.connHalfW : p.cx - g.connHalfW, y: p.cy }; };
331
+ const parts = [];
332
+ parts.push('<?xml version="1.0" encoding="UTF-8"?>');
333
+ parts.push('<svg viewBox="0 0 ' + width.toFixed(0) + ' ' + height.toFixed(0) + '" width="' + width.toFixed(0) + '" height="' + height.toFixed(0) + '" preserveAspectRatio="xMinYMin meet" xmlns="http://www.w3.org/2000/svg">');
334
+ parts.push('<rect x="0" y="0" width="' + width.toFixed(0) + '" height="' + height.toFixed(0) + '" fill="' + FLP.bg + '"/>');
335
+ parts.push('<defs><marker id="bpmn-arrow" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto" markerUnits="strokeWidth"><path d="M0,0 L7,3 L0,6 z" fill="' + FLP.edge + '"/></marker>'
336
+ + '<marker id="bpmn-arrow-loop" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto" markerUnits="strokeWidth"><path d="M0,0 L7,3 L0,6 z" fill="' + FLP.loop + '"/></marker></defs>');
337
+ if (hasLanes) {
338
+ laneOrder.forEach((lane, i) => {
339
+ const top = laneTop.get(lane);
340
+ const h = laneHeight.get(lane);
341
+ const fill = i % 2 === 1 ? FLP.laneAlt : 'transparent';
342
+ parts.push('<rect x="' + FC.LEFT_MARGIN + '" y="' + top.toFixed(1) + '" width="' + (width - FC.LEFT_MARGIN - FC.RIGHT_MARGIN).toFixed(1) + '" height="' + h.toFixed(1) + '" fill="' + fill + '" stroke="' + FLP.laneStroke + '" stroke-width="1"/>');
343
+ const midY = top + h / 2;
344
+ parts.push('<text x="' + (FC.LEFT_MARGIN + 14).toFixed(1) + '" y="' + midY.toFixed(1) + '" transform="rotate(-90 ' + (FC.LEFT_MARGIN + 14).toFixed(1) + ' ' + midY.toFixed(1) + ')" text-anchor="middle" font-size="11" fill="' + FLP.laneLabel + '" font-weight="600">' + escXml(laneLabel.get(lane) || lane) + '</text>');
345
+ });
346
+ }
347
+ const edgeChecks = [];
348
+ for (const f of forwardFlows) {
349
+ const a = connPoint(f.from, 'out');
350
+ const b = connPoint(f.to, 'in');
351
+ let points;
352
+ if (Math.abs(a.y - b.y) < 0.5) {
353
+ points = [[a.x, a.y], [b.x, b.y]];
165
354
  }
166
355
  else {
167
- const down = Math.max(ay, by) + 46;
168
- d = 'M' + ax + ',' + (ay + ar) + ' L' + ax + ',' + down + ' L' + bx + ',' + down + ' L' + bx + ',' + (by + br);
356
+ const srcColX = FC.LEFT_MARGIN + LANE_LBL_W + FC.NODE_W / 2 + (pos.get(f.from).col) * FC.COL_GAP;
357
+ const midX = srcColX + FC.COL_GAP / 2;
358
+ points = [[a.x, a.y], [midX, a.y], [midX, b.y], [b.x, b.y]];
169
359
  }
170
- svg += '<path d="' + d + '" fill="none" stroke="' + P.ink + '" stroke-width="1.4" marker-end="url(#bpmn-arrow)" opacity="0.8"/>';
360
+ points = routeAvoiding(points, new Set([f.from, f.to]));
361
+ edgeChecks.push({ points, from: f.from, to: f.to });
362
+ parts.push('<path d="' + pathFromPoints(points) + '" fill="none" stroke="' + FLP.edge + '" stroke-width="1.4" marker-end="url(#bpmn-arrow)" opacity="0.85"/>');
171
363
  if (f.label) {
172
- /* place the label on the branch's own vertical segment (distinct per
173
- * sibling now) so Si/No never stack on top of each other. */
174
- const lx = forward ? midx : ((ax + bx) / 2), lyy = forward ? (sy + ty) / 2 - 4 : (Math.max(ay, by) + 42);
175
- svg += '<rect x="' + (lx - String(f.label).length * 3.1 - 3) + '" y="' + (lyy - 9) + '" width="' + (String(f.label).length * 6.2 + 6) + '" height="13" fill="' + P.washi + '" opacity="0.9"/>';
176
- svg += '<text x="' + lx + '" y="' + (lyy + 1) + '" text-anchor="middle" font-size="10" fill="' + P.ink + '">' + escXml(String(f.label)) + '</text>';
364
+ const lx = (a.x + b.x) / 2;
365
+ const ly = Math.abs(a.y - b.y) < 0.5 ? a.y - 6 : (a.y + b.y) / 2;
366
+ const lw = String(f.label).length * 6.2 + 6;
367
+ parts.push('<rect x="' + (lx - lw / 2).toFixed(1) + '" y="' + (ly - 9.5).toFixed(1) + '" width="' + lw.toFixed(1) + '" height="13" fill="' + FLP.bg + '" opacity="0.9"/>');
368
+ parts.push('<text x="' + lx.toFixed(1) + '" y="' + (ly + 0.5).toFixed(1) + '" text-anchor="middle" font-size="10" fill="' + FLP.text + '">' + escXml(String(f.label)) + '</text>');
369
+ }
370
+ }
371
+ const laneBottom = cursorY - FC.ROW_GAP;
372
+ loopFlows.forEach((f, i) => {
373
+ const a = pos.get(f.from);
374
+ const ag = geom.get(f.from);
375
+ const b = pos.get(f.to);
376
+ const bg = geom.get(f.to);
377
+ const loopY = laneBottom + 22 + i * 14;
378
+ const offset = 8;
379
+ const goesLeft = b.col <= a.col;
380
+ const srcGutterX = goesLeft ? Math.max(FC.LEFT_MARGIN + LANE_LBL_W + 12, a.cx - FC.COL_GAP / 2) : a.cx + FC.COL_GAP / 2;
381
+ const dstGutterX = goesLeft ? b.cx + FC.COL_GAP / 2 : Math.max(FC.LEFT_MARGIN + LANE_LBL_W + 12, b.cx - FC.COL_GAP / 2);
382
+ const srcSideX = goesLeft ? a.cx - ag.connHalfW : a.cx + ag.connHalfW;
383
+ const dstSideX = goesLeft ? b.cx + bg.connHalfW : b.cx - bg.connHalfW;
384
+ const srcY = a.cy + offset;
385
+ const dstY = b.cy + offset;
386
+ let points = [[srcSideX, srcY], [srcGutterX, srcY], [srcGutterX, loopY], [dstGutterX, loopY], [dstGutterX, dstY], [dstSideX, dstY]];
387
+ points = routeAvoiding(points, new Set([f.from, f.to]));
388
+ edgeChecks.push({ points, from: f.from, to: f.to });
389
+ parts.push('<path d="' + pathFromPoints(points) + '" fill="none" stroke="' + FLP.loop + '" stroke-width="1.4" stroke-dasharray="5 3" marker-end="url(#bpmn-arrow-loop)" opacity="0.9"/>');
390
+ if (f.label) {
391
+ const lx = (srcGutterX + dstGutterX) / 2;
392
+ const lw = String(f.label).length * 6.2 + 6;
393
+ parts.push('<rect x="' + (lx - lw / 2).toFixed(1) + '" y="' + (loopY - 9.5).toFixed(1) + '" width="' + lw.toFixed(1) + '" height="13" fill="' + FLP.bg + '" opacity="0.9"/>');
394
+ parts.push('<text x="' + lx.toFixed(1) + '" y="' + (loopY + 0.5).toFixed(1) + '" text-anchor="middle" font-size="10" fill="' + FLP.loop + '">' + escXml(String(f.label)) + '</text>');
177
395
  }
178
396
  });
179
- nodes.forEach((n) => {
180
- const x = n._x || 0, y = n._y || 0, type = String(n.type || 'task');
181
- /* Event shapes match by PREFIX so "sendTask" is not mis-detected as an end
182
- * event (the old /end/ substring matched "sEND"Task -> red circle). */
183
- const isEnd = /^end/.test(type), isStart = /^start/.test(type);
184
- if (isStart || isEnd || /^intermediate/.test(type) || type === 'event') {
185
- const r = 18, sw = isEnd ? 3.4 : 1.6;
186
- const stroke = isStart ? P.tea : (isEnd ? P.vermilion : P.indigo);
187
- svg += '<circle cx="' + x + '" cy="' + y + '" r="' + r + '" fill="' + P.washi + '" stroke="' + stroke + '" stroke-width="' + sw + '"/>';
188
- if (type.indexOf('intermediate') >= 0)
189
- svg += '<circle cx="' + x + '" cy="' + y + '" r="' + (r - 3.5) + '" fill="none" stroke="' + stroke + '" stroke-width="1.2"/>';
190
- /* label WRAPS below the circle (no more 22-char truncation). */
191
- if (n.label) {
192
- const els = wrapLabel(String(n.label), FL.LABEL_WRAP_CHARS, FL.LABEL_WRAP_LINES);
193
- for (let li5 = 0; li5 < els.length; li5++)
194
- svg += '<text x="' + x + '" y="' + (y + r + FL.LABEL_GAP + li5 * FL.LABEL_LH) + '" text-anchor="middle" font-size="10.5" fill="' + P.ink + '">' + escXml(els[li5] || '') + '</text>';
397
+ for (const id of nodeIds) {
398
+ const n = nodeById.get(id);
399
+ const p = pos.get(id);
400
+ const g = geom.get(id);
401
+ if (g.shape === 'startEvent' || g.shape === 'endEvent') {
402
+ const stroke = g.shape === 'startEvent' ? FLP.startStroke : FLP.endStroke;
403
+ const sw = g.shape === 'startEvent' ? 1.6 : 3.4;
404
+ parts.push('<circle cx="' + p.cx.toFixed(1) + '" cy="' + p.cy.toFixed(1) + '" r="' + FC.EVENT_R + '" fill="' + FLP.bg + '" stroke="' + stroke + '" stroke-width="' + sw + '"/>');
405
+ let ly = p.cy + FC.EVENT_R + 12;
406
+ for (const line of g.lines) {
407
+ parts.push('<text x="' + p.cx.toFixed(1) + '" y="' + ly.toFixed(1) + '" text-anchor="middle" font-size="10.5" fill="' + FLP.text + '">' + escXml(line) + '</text>');
408
+ ly += FC.LINE_H;
195
409
  }
196
410
  }
197
- else if (/gateway|decision|fork|join|merge/.test(type)) {
198
- const g = 23, gk = String(n.gateway || (/parallel|fork|join/.test(type) ? 'parallel' : 'exclusive'));
199
- svg += '<path d="M' + x + ',' + (y - g) + ' L' + (x + g) + ',' + y + ' L' + x + ',' + (y + g) + ' L' + (x - g) + ',' + y + ' z" fill="' + P.washi + '" stroke="' + P.amber + '" stroke-width="1.8"/>';
200
- const sym = gk.charAt(0) === 'p' ? '+' : (gk.charAt(0) === 'i' ? 'O' : '×');
201
- svg += '<text x="' + x + '" y="' + (y + 5) + '" text-anchor="middle" font-size="16" fill="' + P.amber + '" font-weight="700">' + sym + '</text>';
202
- /* label WRAPS below the diamond. */
203
- if (n.label) {
204
- const gls = wrapLabel(String(n.label), FL.LABEL_WRAP_CHARS, FL.LABEL_WRAP_LINES);
205
- for (let li6 = 0; li6 < gls.length; li6++)
206
- svg += '<text x="' + x + '" y="' + (y + g + FL.LABEL_GAP + li6 * FL.LABEL_LH) + '" text-anchor="middle" font-size="10.5" fill="' + P.ink + '">' + escXml(gls[li6] || '') + '</text>';
411
+ else if (g.shape === 'gateway') {
412
+ const x0 = p.cx - FC.GW_HALF, x1 = p.cx + FC.GW_HALF, y0 = p.cy - FC.GW_HALF, y1 = p.cy + FC.GW_HALF;
413
+ parts.push('<path d="M' + p.cx.toFixed(1) + ',' + y0.toFixed(1) + ' L' + x1.toFixed(1) + ',' + p.cy.toFixed(1) + ' L' + p.cx.toFixed(1) + ',' + y1.toFixed(1) + ' L' + x0.toFixed(1) + ',' + p.cy.toFixed(1) + ' z" fill="' + FLP.bg + '" stroke="' + FLP.gwStroke + '" stroke-width="1.8"/>');
414
+ const mark = n.gateway === 'parallel' ? '+' : n.gateway === 'inclusive' ? 'O' : '×';
415
+ parts.push('<text x="' + p.cx.toFixed(1) + '" y="' + (p.cy + 5).toFixed(1) + '" text-anchor="middle" font-size="16" fill="' + FLP.gwStroke + '" font-weight="700">' + mark + '</text>');
416
+ let ly = p.cy + FC.GW_HALF + 15;
417
+ for (const line of g.lines) {
418
+ parts.push('<text x="' + p.cx.toFixed(1) + '" y="' + ly.toFixed(1) + '" text-anchor="middle" font-size="10.5" fill="' + FLP.text + '">' + escXml(line) + '</text>');
419
+ ly += FC.LINE_H;
207
420
  }
208
421
  }
209
422
  else {
210
- const tw = 118, th = 54;
211
- svg += '<rect x="' + (x - tw / 2) + '" y="' + (y - th / 2) + '" width="' + tw + '" height="' + th + '" rx="9" fill="' + P.bg2 + '" stroke="' + P.indigo + '" stroke-width="1.4"/>';
212
- const ic = { userTask: '☺', serviceTask: '⚙', scriptTask: '▸', manualTask: '✋', sendTask: '✉', receiveTask: '✉' }[type];
213
- if (ic)
214
- svg += '<text x="' + (x - tw / 2 + 9) + '" y="' + (y - th / 2 + 14) + '" font-size="11" fill="' + P.indigo + '">' + ic + '</text>';
215
- const ls = bpmnWrap(n.label || n.id, 17, 3);
216
- const ty0 = y - (ls.length - 1) * 7;
217
- for (let li3 = 0; li3 < ls.length; li3++)
218
- svg += '<text x="' + x + '" y="' + (ty0 + li3 * 14 + 4) + '" text-anchor="middle" font-size="11.5" fill="' + P.ink + '">' + escXml(ls[li3] || '') + '</text>';
423
+ const w = FC.NODE_W;
424
+ const h = g.topExtent + g.bottomExtent;
425
+ const x = p.cx - w / 2;
426
+ const y = p.cy - h / 2;
427
+ parts.push('<rect x="' + x.toFixed(1) + '" y="' + y.toFixed(1) + '" width="' + w + '" height="' + h.toFixed(1) + '" rx="9" fill="' + FLP.taskFill + '" stroke="' + FLP.taskStroke + '" stroke-width="1.4"/>');
428
+ const icon = FICONS[String(n.type || '')];
429
+ if (icon)
430
+ parts.push('<text x="' + (x + 9).toFixed(1) + '" y="' + (y + 15).toFixed(1) + '" font-size="11" fill="' + FLP.taskStroke + '">' + icon + '</text>');
431
+ let ty = y + (icon ? 26 : 16);
432
+ for (const line of g.lines) {
433
+ parts.push('<text x="' + p.cx.toFixed(1) + '" y="' + ty.toFixed(1) + '" text-anchor="middle" font-size="' + FC.FONT_SIZE + '" fill="' + FLP.text + '">' + escXml(line) + '</text>');
434
+ ty += FC.LINE_H;
435
+ }
219
436
  }
220
- });
221
- svg += '</svg>\n';
222
- return svg;
437
+ }
438
+ for (const { points, from, to } of edgeChecks) {
439
+ for (const h of segmentHits(points, new Set([from, to])))
440
+ problems.push('edge ' + from + '->' + to + ' crosses node ' + h.id);
441
+ }
442
+ if (problems.length) {
443
+ try {
444
+ console.warn('[flow-svg] layout issues: ' + problems.join('; '));
445
+ }
446
+ catch { /* */ }
447
+ }
448
+ parts.push('</svg>');
449
+ return parts.join('');
223
450
  }
224
451
  /* ---------- doc HTML wrapper ---------- */
225
452
  function htmlDocPage(title, bodyHtml) {
@@ -1 +1 @@
1
- {"version":3,"file":"board_artifacts.js","sourceRoot":"","sources":["../../src/chat/board_artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board_artifacts.js","sourceRoot":"","sources":["../../src/chat/board_artifacts.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -2,5 +2,5 @@
2
2
  * Yujin Forge CLI version. Kept in sync with package.json by the npm
3
3
  * "version" lifecycle (scripts/sync_version.mjs) so the two never drift.
4
4
  */
5
- export declare const VERSION = "1.2.11";
5
+ export declare const VERSION = "1.3.0";
6
6
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,OAAO,WAAW,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/dist/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  * Yujin Forge CLI version. Kept in sync with package.json by the npm
3
3
  * "version" lifecycle (scripts/sync_version.mjs) so the two never drift.
4
4
  */
5
- export const VERSION = '1.2.11';
5
+ export const VERSION = '1.3.0';
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nac3/forge-cli",
3
- "version": "1.2.11",
3
+ "version": "1.3.0",
4
4
  "description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Pablo Kuschnirof <pablo@rpaforce.com>",