wechen-agent-editor-v1 1.1.8 → 1.2.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.
package/README.md CHANGED
@@ -79,7 +79,18 @@ export function AgentPage() {
79
79
  - **`exportBackendWorkflowJson(snapshot | flow, meta)`** → **`WechenBackendWorkflowJson`**(根字段 **`schemaVersion`** 当前为 **`"1"`**,与业务字段 **`version`** 区分)
80
80
  - **`importBackendWorkflowToFlow(dto)`** → **`WechenAgentFlowJson`**,再作为 **`initialFlow`** 或 **`ref.replaceFlow`** 回显
81
81
 
82
- **有损字段**:导出会去掉 RF 运行期字段与部分边样式;导入会按边 `id` 重新分配 `sourceHandle`/`targetHandle`。详见类型 **`WechenBackendWorkflowJson`** 的 JSDoc。
82
+ **边 `id`(删边 / 命令式 API)**:
83
+
84
+ - **`onSave` / `getSnapshot` / `flowJson`**:`edges[].id` 为画布稳定 id,**`ref.deleteEdge(edgeId)`** / **`getSelectedEdgeId()`** 应使用该 id。
85
+ - **后端 DTO**:`exportBackendWorkflowJson` **会写出** `edges[].id`(与画布一致);`importBackendWorkflowToFlow` **优先** 使用 DTO 中的 `id`,省略时按 `e-${source}-${target}-${index}` 合成。仅持久化 DTO 时,回灌后删边请用 **回灌后的** `flow.edges[].id`,勿沿用导出前的 id(除非 DTO 已含 `id` 且已往返)。
86
+ - 推荐:需要完整画布状态时优先存 **`snapshot.flow`** 或 **`flowJson`**;仅存 DTO 时务必带上 **`edges[].id`** 字段。
87
+
88
+ **有损字段**:导出会去掉 RF 运行期字段与部分边样式;导入会按边 `id` 分配 `sourceHandle`/`targetHandle`。详见类型 **`WechenBackendWorkflowJson`** 的 JSDoc。
89
+
90
+ **连线布局**:
91
+
92
+ - **`flowJson` / `getSnapshot`**:在 `edge.data` 中持久化 **`wechenSourceAttachSide` / `wechenTargetAttachSide`** 与 **`wechenPathOptions`**(`offset`、`borderRadius`),回显时 **优先使用存盘布局**,与编辑态一致。
93
+ - **后端 DTO**:`edges[].layout` 可选携带上述字段(`exportBackendWorkflowJson` / `importBackendWorkflowToFlow`);若需 **完整** 画布状态(含全部 `edge.data`),请优先持久化 **`flowJson`** 而非仅 DTO 拓扑。
83
94
 
84
95
  **节点类型映射**(画布 ↔ DTO):
85
96
 
@@ -139,8 +150,8 @@ WechenAgentEditor(编排) → onSave / exportBackendWorkflowJson → 宿主
139
150
 
140
151
  - **`onTestRun` / `ref.testRun()`**:仅触发宿主回调,具体执行由宿主实现。
141
152
  - **`validateWechenAgentFlow(flow)`**:纯函数图校验(默认不阻断保存);可在 `onBeforeSave` 内返回 `false` 拦截。
142
- - **ref 增删改查**:`getSnapshot` / `patchNodeData` / `removeNode` / `addNode` / `addNodeFromLibrary` / `addEdge` / `connect` / `replaceFlow` / `relayoutEdges`(见 `WechenAgentEditorRef`)。
143
- - **回显后连线布局**:`initialFlow` `replaceFlow` **自动** 按当前节点几何重算感应锚边(`wechenSourceAttachSide` / `wechenTargetAttachSide`)并刷新 Handle;**不** 持久化路径折角/偏移。存盘锚边若与几何不一致会被覆盖。高级场景可调用 `ref.relayoutEdges()`(`readOnly` / `readingMode` 下 no-op)。
153
+ - **ref 增删改查**:`getSnapshot` / **`getFlow` / `getInitialFlow`**(与 **`initialFlow` 同形**)/ **`replaceFlow` / `setInitialFlow`** / `patchNodeData` / `removeNode` / **`removeEdge` / `deleteEdge`** / `addNode` / `addNodeFromLibrary` / `addEdge` / `connect` / `relayoutEdges`(见 `WechenAgentEditorRef`)。
154
+ - **回显后连线布局**:`getSnapshot` / `flowJson` 会保存 **`wechenSourceAttachSide` / `wechenTargetAttachSide` / `wechenPathOptions`**;`initialFlow` `replaceFlow` **优先恢复** 存盘布局。无快照的旧数据仍会自动推导;`ref.relayoutEdges()` 可按当前几何 **强制重算并写回**(`readOnly` / `readingMode` 下 no-op)。
144
155
 
145
156
  ```tsx
146
157
  import { validateWechenAgentFlow } from "wechen-agent-editor-v1";
@@ -185,11 +196,25 @@ npm 7+ 会校验整棵依赖树的 peer。冲突常来自宿主已有包,未
185
196
  {
186
197
  "dependencies": {
187
198
  "@monaco-editor/react": "^4.6.0",
188
- "wechen-agent-editor-v1": "^1.1.0"
199
+ "wechen-agent-editor-v1": "^1.1.9"
189
200
  }
190
201
  }
191
202
  ```
192
203
 
204
+ ### 集成排错
205
+
206
+ | 现象 | 可能原因 | 处理 |
207
+ |------|----------|------|
208
+ | 代码编辑区空白 / 控制台 Monaco worker 报错 | 未配置 **Monaco worker** | 按 README「Monaco Worker」在应用入口引导 worker |
209
+ | 画布不可见或高度为 0 | 父级无 **定高** 或 flex 链缺 `minHeight: 0` | 使用「嵌入 flex 布局」示例;或传编辑器 **`minHeight`** |
210
+ | 连线异常、Handle 无响应、样式错乱 | **`@xyflow/react` 双实例** | `npm ls @xyflow/react`;保证宿主与编辑器共用 **单实例**(见上文 peer 说明) |
211
+ | `ref.deleteEdge(id)` 无效 | 持久化载体无稳定 **`edges[].id`** | 优先存 **`snapshot.flow` / `flowJson`**;仅存 DTO 时导出须含 **`edges[].id`**,回灌后用 **新** id |
212
+ | 存库后连线形状与编辑时不一致 | 仅存拓扑 DTO、缺 **layout** | 使用 **`flowJson`** 或 DTO **`edges[].layout`**(见「连线布局」) |
213
+
214
+ Playground **`?tab=overview`** 提供术语表与持久化对比;工程清单见 **`docs/ENGINEERING-BASELINE.md`**。
215
+
216
+ > **`package.json` 的 `repository` / `homepage` / `bugs`** 若为占位 URL,表示尚未绑定公开仓库;私有 fork 可忽略,发版前请改为真实地址。
217
+
193
218
  ---
194
219
 
195
220
  ## 使用
@@ -254,6 +279,11 @@ antd 5 为 CSS-in-JS,请用 **`ConfigProvider`** 包裹应用(与官方用
254
279
  | `--wechen-node-border-color` | `#d9d9d9` | 未选中节点边框 |
255
280
  | `--wechen-edge-stroke` | `#b1b1b7` | 未选中边描边 |
256
281
  | `--wechen-edge-stroke-selected-width` | `2` | 选中边线宽 |
282
+ | `--wechen-zone-strip-border-color` | `rgba(22, 119, 255, 0.55)` | 四边感应条 hover 描边色 |
283
+ | `--wechen-zone-strip-background` | `rgba(22, 119, 255, 0.06)` | 四边感应条 hover 背景色 |
284
+ | `--wechen-zone-strip-border-width` | `2px` | 感应条 hover 描边宽度 |
285
+
286
+ 四边感应条稳定类名:`wechen-agent-zone-strip`(基类)、`wechen-agent-zone-strip--top` / `--right` / `--bottom` / `--left`(边向)、`wechen-agent-zone-strip--active`(当前边 hover)。宿主可直接写选择器覆盖,或与上表变量一并设置在 `.wechen-agent-editor` 上。
257
287
 
258
288
  ```css
259
289
  /* 例:自定义顶栏背景 */
@@ -265,6 +295,12 @@ antd 5 为 CSS-in-JS,请用 **`ConfigProvider`** 包裹应用(与官方用
265
295
  .my-app .wechen-agent-editor {
266
296
  --wechen-selection-color: #1677ff;
267
297
  }
298
+
299
+ /* 例:四边感应条 hover 色 */
300
+ .my-app .wechen-agent-editor {
301
+ --wechen-zone-strip-border-color: #1677ff;
302
+ --wechen-zone-strip-background: rgba(22, 119, 255, 0.12);
303
+ }
268
304
  ```
269
305
 
270
306
  ### 国际化(壳层 vs 宿主自定义)
@@ -390,7 +426,7 @@ const libraryGroups = [
390
426
 
391
427
  非内置 **`type`** 使用与 **`card`** 相同的通用节点外壳与四边感应区;缺 **`item.type`** 时拖放会提示且不会创建节点。宿主可在加载配置后调用 **`validateComponentLibraryGroups(libraryGroups)`** 预检缺 `type` 的条目。
392
428
 
393
- **`renderFlowNode(props, context)`**:**`props.type`** = 落盘 **`item.type`**(**不是** `item.key`);**`context`** 含 **`selected`**、可选 **`libraryGroupKey`** / **`libraryItemKey`**。四边感应与接线桩仍由包渲染,**勿** 在返回值内放置 **`Handle`**。类型见 **`WechenAgentRenderFlowNodeContext`**、**`resolveLibraryItemNodeType`**、**`findComponentLibraryItem`** 等导出。
429
+ **`renderFlowNode(props, context)`**:**`props.type`** = 落盘 **`item.type`**(**不是** `item.key`);**`context`** 含 **`selected`**、可选 **`libraryGroupKey`** / **`libraryItemKey`**、**`editorRef`**(编辑器内部命令式 API;**不依赖** 宿主是否写 `<WechenAgentEditor ref={...} />`,在点击等事件内读 `current`)。宿主侧自动化/保存等 **仍建议** 挂 `ref`。四边感应与接线桩仍由包渲染,**勿** 在返回值内放置 **`Handle`**。类型见 **`WechenAgentRenderFlowNodeContext`**、**`resolveLibraryItemNodeType`**、**`findComponentLibraryItem`** 等导出。
394
430
 
395
431
  ### Monaco Worker
396
432
 
@@ -413,6 +449,7 @@ const libraryGroups = [
413
449
  | API | 签名 | 使用场景 |
414
450
  |-----|------|----------|
415
451
  | **`ctx.patchNode`** | `(patch) => void` | **`renderConfigPanel`** 选中节点时;**勿传 `node.id`**,当前节点已固定 |
452
+ | **`ctx.editorRef`** | `RefObject<WechenAgentEditorRef \| null>` | **`renderConfigPanel`** 节点/边共有;内部 API,**无需** 宿主挂 `ref`,在事件内读 `current` |
416
453
  | **`ref.patchNodeData`** | `(nodeId, patch) => void` | 命令式改任意节点(按钮、自动化、跨节点批量) |
417
454
 
418
455
  **`patch` 的顶层键 = `node.data` 的键**,不是整颗 React Flow `Node`(不含 `id` / `type` / `position` / `measured` 等)。
@@ -594,6 +631,7 @@ npm install
594
631
  npm install --prefix playground
595
632
  npm run dev # Playground 文档站(分 Tab 演示;ref 全表见 ?tab=ref-api,见 playground/README.md)
596
633
  npm run dev:minimal # 仅最小宿主集成(对照 README「快速开始」)
634
+ npm run baseline # 工程基线:测试数、最大 LOC、dist 体积(见 docs/ENGINEERING-BASELINE.md)
597
635
  ```
598
636
 
599
637
  浏览器地址以终端输出为准(默认 `http://localhost:5173`)。
@@ -611,8 +649,8 @@ npm run dev:minimal # 仅最小宿主集成(对照 README「快速开始
611
649
 
612
650
  ### 发版清单
613
651
 
614
- 1. 确认 `package.json` **`version`** 已 bump(当前 **1.1.0**)。
615
- 2. 执行 **`npm install`**(同步 lock)→ **`npm run release:prep`**(`test` + `build` + `pack:check` + playground build),或分步执行。
652
+ 1. 确认 `package.json` **`version`** 已 bump(**以 `package.json` 为准**,当前 **1.1.9**)。
653
+ 2. 执行 **`npm install`**(同步 lock)→ **`npm run release:prep`**(`test` + `build` + `pack:check` + playground build + **基线摘要**),或分步执行;可单独运行 **`npm run baseline`** 查看 LOC/体积指标。
616
654
  3. **`npm whoami`** 确认已登录 **registry.npmjs.org**;scoped 包首次发布需 **`--access public`**(`publishConfig` 已配置)。
617
655
  4. 执行 **`npm run release`**(或 `npm publish`),发后验证:
618
656
 
@@ -621,6 +659,6 @@ npm view wechen-agent-editor-v1 version
621
659
  npm pack --dry-run # 确认 tarball 仅含 dist、LICENSE
622
660
  ```
623
661
 
624
- 5. 在空目录烟测:`npm install wechen-agent-editor-v1@1.1.0`,`import { WechenAgentEditor } from "wechen-agent-editor-v1"`。
662
+ 5. 在空目录烟测:`npm install wechen-agent-editor-v1@<version>`(`<version>` 与 `package.json` 一致),`import { WechenAgentEditor } from "wechen-agent-editor-v1"`。
625
663
 
626
- 发版前可将 `repository` / `bugs` / `homepage` 中的占位 URL 换成真实仓库地址。
664
+ 发版前可将 `repository` / `bugs` / `homepage` 中的占位 URL 换成真实仓库地址(私有仓库可仅在内部文档记录,见「集成排错」说明)。
@@ -1 +1 @@
1
- {"version":3,"file":"WechenAgentEditor.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditor.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAa,SAAS,EAAa,MAAM,OAAO,CAAC;AAc5E,OAAO,KAAK,EACV,qBAAqB,EACrB,+BAA+B,EAChC,MAAM,iCAAiC,CAAC;AA6BzC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qCAAqC,EACrC,qCAAqC,EACrC,mBAAmB,EAEnB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAK/E,OAAO,KAAK,EACV,+BAA+B,EAC/B,kCAAkC,EACnC,MAAM,8BAA8B,CAAC;AAMtC,iEAAiE;AAEjE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,6BAA6B,KAAK,MAAM,CAAC;AAEtF,MAAM,WAAW,sBAAsB;IACrC,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,6EAA6E;IAC7E,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CACxB,IAAI,EAAE,+BAA+B,KAClC,+BAA+B,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,8BAA8B,CAAC;IACnD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,qCAAqC,KAAK,SAAS,CAAC;IAChF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,qCAAqC,KAAK,SAAS,CAAC;IAChF,iEAAiE;IACjE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpD;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,+BAA+B,CAAC;IACjD,kEAAkE;IAClE,eAAe,CAAC,EAAE,kCAAkC,CAAC;IACrD,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAAC;CACtD;AAED,YAAY,EACV,+BAA+B,EAC/B,kCAAkC,GACnC,MAAM,8BAA8B,CAAC;AA8zBtC,eAAO,MAAM,iBAAiB,yHA2F7B,CAAC"}
1
+ {"version":3,"file":"WechenAgentEditor.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditor.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAcjE,OAAO,KAAK,EACV,qBAAqB,EACrB,+BAA+B,EAChC,MAAM,iCAAiC,CAAC;AA6BzC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qCAAqC,EACrC,qCAAqC,EACrC,mBAAmB,EAEnB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAK/E,OAAO,KAAK,EACV,+BAA+B,EAC/B,kCAAkC,EACnC,MAAM,8BAA8B,CAAC;AAMtC,iEAAiE;AAEjE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,6BAA6B,KAAK,MAAM,CAAC;AAEtF,MAAM,WAAW,sBAAsB;IACrC,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,6EAA6E;IAC7E,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CACxB,IAAI,EAAE,+BAA+B,KAClC,+BAA+B,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,8BAA8B,CAAC;IACnD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,qCAAqC,KAAK,SAAS,CAAC;IAChF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,qCAAqC,KAAK,SAAS,CAAC;IAChF,iEAAiE;IACjE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpD;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,+BAA+B,CAAC;IACjD,kEAAkE;IAClE,eAAe,CAAC,EAAE,kCAAkC,CAAC;IACrD,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAAC;CACtD;AAED,YAAY,EACV,+BAA+B,EAC/B,kCAAkC,GACnC,MAAM,8BAA8B,CAAC;AAq2BtC,eAAO,MAAM,iBAAiB,yHA2F7B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { NodeProps } from '@xyflow/react';
2
- import { ReactNode } from 'react';
2
+ import { ReactNode, RefObject } from 'react';
3
+ import { WechenAgentEditorRef } from './flowTypes';
3
4
  export type WechenAgentRenderFlowNodeContext = {
4
5
  /** 当前节点是否被画布选中(与 NodeProps.selected 一致) */
5
6
  selected: boolean;
@@ -7,6 +8,10 @@ export type WechenAgentRenderFlowNodeContext = {
7
8
  libraryGroupKey?: string;
8
9
  /** 拖入时库项 `item.key`(非 `props.type`) */
9
10
  libraryItemKey?: string;
11
+ /**
12
+ * 与 `<WechenAgentEditor ref={...} />` 为同一 ref 对象;在点击等事件内使用 `current`。
13
+ */
14
+ editorRef: RefObject<WechenAgentEditorRef | null>;
10
15
  };
11
16
  /**
12
17
  * 自定义画布节点 **内容区**(字段展示、样式与选中/激活视觉)。
@@ -18,6 +23,8 @@ export type WechenAgentRenderFlowNodeFn = (props: NodeProps, context: WechenAgen
18
23
  export interface WechenAgentEditorRenderContextValue {
19
24
  /** 自定义节点内容区;未设置时使用内置默认字段块 */
20
25
  renderFlowNode?: WechenAgentRenderFlowNodeFn;
26
+ /** 编辑器命令式 ref,供默认节点调用宿主 `renderFlowNode` 时传入 context */
27
+ editorRef: RefObject<WechenAgentEditorRef | null>;
21
28
  }
22
29
  export declare const WechenAgentEditorRenderContext: import('react').Context<WechenAgentEditorRenderContextValue | null>;
23
30
  export declare function useWechenAgentEditorRender(): WechenAgentEditorRenderContextValue;
@@ -1 +1 @@
1
- {"version":3,"file":"WechenAgentEditorContext.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditorContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,gCAAgC,GAAG;IAC7C,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,+DAA+D;AAC/D,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,gCAAgC,KACtC,SAAS,CAAC;AAEf,MAAM,WAAW,mCAAmC;IAClD,6BAA6B;IAC7B,cAAc,CAAC,EAAE,2BAA2B,CAAC;CAC9C;AAED,eAAO,MAAM,8BAA8B,qEACsB,CAAC;AAElE,wBAAgB,0BAA0B,IAAI,mCAAmC,CAEhF"}
1
+ {"version":3,"file":"WechenAgentEditorContext.d.ts","sourceRoot":"","sources":["../src/WechenAgentEditorContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACnD,CAAC;AAEF;;;;GAIG;AACH,+DAA+D;AAC/D,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,gCAAgC,KACtC,SAAS,CAAC;AAEf,MAAM,WAAW,mCAAmC;IAClD,6BAA6B;IAC7B,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C,wDAAwD;IACxD,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACnD;AAED,eAAO,MAAM,8BAA8B,qEACsB,CAAC;AAIlE,wBAAgB,0BAA0B,IAAI,mCAAmC,CAEhF"}
@@ -14,11 +14,25 @@ export interface WechenBackendWorkflowNode {
14
14
  /** 执行侧参数;由导出映射写入,导入时再映射回 `node.data` */
15
15
  config: Record<string, unknown>;
16
16
  }
17
+ /** 感应连线布局快照(与 `edge.data` 中 `wechen*` 字段对应) */
18
+ export interface WechenBackendWorkflowEdgeLayout {
19
+ sourceAttach?: "right" | "bottom";
20
+ targetAttach?: "left" | "top";
21
+ pathOptions?: {
22
+ offset: number;
23
+ borderRadius: number;
24
+ };
25
+ layoutVersion?: number;
26
+ }
17
27
  export interface WechenBackendWorkflowEdge {
18
28
  source: string;
19
29
  target: string;
30
+ /** 画布边稳定 id;省略时导入按 source/target/index 合成。`ref.deleteEdge` 需使用当前画布 id。 */
31
+ id?: string;
20
32
  /** 未给出时导出为 `"default"` */
21
33
  condition?: string;
34
+ /** 可选:完整布局请优先使用 `flowJson`;DTO 往返可携带锚边与 pathOptions */
35
+ layout?: WechenBackendWorkflowEdgeLayout;
22
36
  }
23
37
  /**
24
38
  * 建议持久化 / POST 给后端的 JSON 形状(与内部 `WechenAgentFlowJson` 解耦)。
@@ -44,6 +58,8 @@ export interface BackendWorkflowExportMeta {
44
58
  workflowVersion?: string;
45
59
  createTime?: string;
46
60
  }
61
+ /** 为 DTO 边解析唯一画布 id(导出测试与导入共用语义) */
62
+ export declare function resolveBackendWorkflowEdgeId(e: WechenBackendWorkflowEdge, index: number, usedIds: Set<string>): string;
47
63
  /**
48
64
  * 将编辑器当前快照(或 `WechenAgentFlowJson`)导出为后端 DTO。
49
65
  */
@@ -1 +1 @@
1
- {"version":3,"file":"backendWorkflowJson.d.ts","sourceRoot":"","sources":["../src/backendWorkflowJson.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAI/G;;GAEG;AACH,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAE1D,2CAA2C;AAC3C,MAAM,MAAM,6BAA6B,GACrC,OAAO,GACP,OAAO,GACP,MAAM,GACN,WAAW,GACX,KAAK,GACL,QAAQ,CAAC;AA6Gb,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,6BAA6B,CAAC;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAsJD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,EAChD,IAAI,EAAE,yBAAyB,GAC9B,yBAAyB,CAY3B;AA+FD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,yBAAyB,GAAG,mBAAmB,CAgB/F;AAED,sCAAsC;AACtC,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAyC9F"}
1
+ {"version":3,"file":"backendWorkflowJson.d.ts","sourceRoot":"","sources":["../src/backendWorkflowJson.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAI/G;;GAEG;AACH,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAE1D,2CAA2C;AAC3C,MAAM,MAAM,6BAA6B,GACrC,OAAO,GACP,OAAO,GACP,MAAM,GACN,WAAW,GACX,KAAK,GACL,QAAQ,CAAC;AA6Gb,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,6BAA6B,CAAC;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,+CAA+C;AAC/C,MAAM,WAAW,+BAA+B;IAC9C,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,WAAW,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,MAAM,CAAC,EAAE,+BAA+B,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyMD,oCAAoC;AACpC,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,yBAAyB,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GACnB,MAAM,CAcR;AAmCD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,EAChD,IAAI,EAAE,yBAAyB,GAC9B,yBAAyB,CAY3B;AAmFD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,yBAAyB,GAAG,mBAAmB,CAgB/F;AAED,sCAAsC;AACtC,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAyC9F"}
@@ -0,0 +1,29 @@
1
+ import { Position, Edge, Node } from '@xyflow/react';
2
+ import { WechenAgentEdgeData, WechenAttachSideIn, WechenAttachSideOut, WechenEdgePathOptions } from './wechenAgentEdgeTypes';
3
+ import { SmoothStepPathOptions } from './edgePathLayout';
4
+ /** 布局快照算法版本;升级算法时可递增并选择性重算旧图 */
5
+ export declare const WECHEN_EDGE_LAYOUT_VERSION = 1;
6
+ export declare function isValidWechenPathOptions(v: unknown): v is WechenEdgePathOptions;
7
+ export declare function isValidAttachSideOut(v: unknown): v is WechenAttachSideOut;
8
+ export declare function isValidAttachSideIn(v: unknown): v is WechenAttachSideIn;
9
+ /** 锚边 + pathOptions 均有效,回显时可跳过几何覆盖 */
10
+ export declare function isCompleteEdgeLayoutSnapshot(data: WechenAgentEdgeData | undefined): boolean;
11
+ export interface EdgeHandleEndpoints {
12
+ sourceX: number;
13
+ sourceY: number;
14
+ targetX: number;
15
+ targetY: number;
16
+ sourcePosition: Position;
17
+ targetPosition: Position;
18
+ }
19
+ /** 由节点包围盒与锚边估算 Handle 端点(用于离屏写回 pathOptions) */
20
+ export declare function computeEdgeHandleEndpoints(sourceNode: Node, targetNode: Node, attach: Pick<WechenAgentEdgeData, "wechenSourceAttachSide" | "wechenTargetAttachSide">): EdgeHandleEndpoints | null;
21
+ export declare function resolvePathOptionsForEdge(edge: Edge, getNode: (id: string) => Node | undefined, nodes: Node[]): SmoothStepPathOptions | null;
22
+ export declare function mergeEdgeLayoutSnapshot(edge: Edge, snapshot: Partial<WechenAgentEdgeData>): Edge;
23
+ /** 将当前几何下的锚边 + pathOptions 写入 `edge.data` */
24
+ export declare function persistEdgeLayoutSnapshot(edge: Edge, getNode: (id: string) => Node | undefined, nodes: Node[]): Edge;
25
+ export declare function patchEdgesRespectingSnapshots(edges: Edge[], getNode: (id: string) => Node | undefined, forceRelayout: boolean): Edge[];
26
+ export declare function enrichEdgesWithLayoutSnapshots(edges: Edge[], getNode: (id: string) => Node | undefined, nodes: Node[], options: {
27
+ forceRelayout: boolean;
28
+ }): Edge[];
29
+ //# sourceMappingURL=edgeLayoutSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edgeLayoutSnapshot.d.ts","sourceRoot":"","sources":["../../src/flow/edgeLayoutSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAO1B,gCAAgC;AAChC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAK5C,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,qBAAqB,CAa5B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAEzE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,kBAAkB,CAEvE;AAED,sCAAsC;AACtC,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,mBAAmB,GAAG,SAAS,GACpC,OAAO,CAST;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,QAAQ,CAAC;IACzB,cAAc,EAAE,QAAQ,CAAC;CAC1B;AAED,gDAAgD;AAChD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,IAAI,CACV,mBAAmB,EACnB,wBAAwB,GAAG,wBAAwB,CACpD,GACA,mBAAmB,GAAG,IAAI,CAqC5B;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,IAAI,EAAE,GACZ,qBAAqB,GAAG,IAAI,CAkC9B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,IAAI,CAUN;AAED,6CAA6C;AAC7C,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,IAAI,EAAE,GACZ,IAAI,CAsBN;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,aAAa,EAAE,OAAO,GACrB,IAAI,EAAE,CAWR;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,GAClC,IAAI,EAAE,CAUR"}
@@ -1,4 +1,4 @@
1
- /** 感应带宽度;与左右 / 上下Inset 一致用于切角 */
1
+ /** 感应带宽度;与左右 / 上下 inset 一致用于角区留白 */
2
2
  export declare const ZONE_STRIP_PX = 11;
3
3
  /**
4
4
  * 四边感应区:左/上为输入池(target),右/下为输出池(source)。
@@ -1 +1 @@
1
- {"version":3,"file":"ZoneHandles.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/ZoneHandles.tsx"],"names":[],"mappings":"AAyBA,iCAAiC;AACjC,eAAO,MAAM,aAAa,KAAK,CAAC;AAchC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,2CAoPzD"}
1
+ {"version":3,"file":"ZoneHandles.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/ZoneHandles.tsx"],"names":[],"mappings":"AA0BA,oCAAoC;AACpC,eAAO,MAAM,aAAa,KAAK,CAAC;AAuBhC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,2CAyNzD"}
@@ -1,3 +1,5 @@
1
+ import { RefObject } from 'react';
1
2
  import { WechenAgentRenderFlowNodeContext } from '../../WechenAgentEditorContext';
2
- export declare function buildRenderFlowNodeContext(data: Record<string, unknown> | undefined, selected: boolean): WechenAgentRenderFlowNodeContext;
3
+ import { WechenAgentEditorRef } from '../../flowTypes';
4
+ export declare function buildRenderFlowNodeContext(data: Record<string, unknown> | undefined, selected: boolean, editorRef: RefObject<WechenAgentEditorRef | null>): WechenAgentRenderFlowNodeContext;
3
5
  //# sourceMappingURL=flowNodeLibraryContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowNodeLibraryContext.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/flowNodeLibraryContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAEvF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,QAAQ,EAAE,OAAO,GAChB,gCAAgC,CAWlC"}
1
+ {"version":3,"file":"flowNodeLibraryContext.d.ts","sourceRoot":"","sources":["../../../src/flow/nodes/flowNodeLibraryContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAChD,gCAAgC,CAYlC"}
@@ -1,11 +1,18 @@
1
1
  import { Edge, Node } from '@xyflow/react';
2
+ export interface ApplyEdgeLayoutOptions {
3
+ /** 为 false 时保留完整布局快照的边(用于 replaceFlow / initialFlow 回显) */
4
+ forceRelayout?: boolean;
5
+ /** 用于 pathOptions 障碍避让计算 */
6
+ nodes?: Node[];
7
+ }
8
+ export declare function collectNodesFromEdges(edges: Edge[], getNode: (id: string) => Node | undefined): Node[];
2
9
  export declare function collectIncidentNodeIds(edges: Edge[]): string[];
3
- export declare function syncEdgeLayoutFromGraph(edges: Edge[], getNode: (id: string) => Node | undefined): {
10
+ export declare function syncEdgeLayoutFromGraph(edges: Edge[], getNode: (id: string) => Node | undefined, options?: ApplyEdgeLayoutOptions): {
4
11
  edges: Edge[];
5
12
  nodeIds: string[];
6
13
  };
7
14
  export declare function scheduleUpdateNodeInternals(nodeIds: Iterable<string>, updateNodeInternals: (id: string) => void): void;
8
15
  /** 用给定节点表构造 getNode(`replaceFlow` 在 state 提交前重算锚边) */
9
16
  export declare function nodeLookupFromList(nodes: Node[]): (id: string) => Node | undefined;
10
- export declare function applyEdgeLayoutSync(edges: Edge[], getNode: (id: string) => Node | undefined, updateNodeInternals: (id: string) => void): Edge[];
17
+ export declare function applyEdgeLayoutSync(edges: Edge[], getNode: (id: string) => Node | undefined, updateNodeInternals: (id: string) => void, options?: ApplyEdgeLayoutOptions): Edge[];
11
18
  //# sourceMappingURL=syncEdgeLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncEdgeLayout.d.ts","sourceRoot":"","sources":["../../src/flow/syncEdgeLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGhD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAW9D;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,GACxC;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAGtC;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EACzB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GACxC,IAAI,CAUN;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAGlF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GACxC,IAAI,EAAE,CAIR"}
1
+ {"version":3,"file":"syncEdgeLayout.d.ts","sourceRoot":"","sources":["../../src/flow/syncEdgeLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMhD,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,GACxC,IAAI,EAAE,CAcR;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAW9D;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,OAAO,CAAC,EAAE,sBAAsB,GAC/B;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAYtC;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EACzB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GACxC,IAAI,CAUN;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAGlF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EACzC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EACzC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,IAAI,EAAE,CAIR"}
@@ -8,12 +8,21 @@ export type WechenAgentEdgeFlowDirection = "forward" | "reverse";
8
8
  export type WechenAttachSideIn = "left" | "top";
9
9
  /** 四边感应:源端落在输出池的哪一侧(右 / 下) */
10
10
  export type WechenAttachSideOut = "right" | "bottom";
11
+ /** 与 `WechenAgentDefaultEdge` / SmoothStep 一致的运行时路径参数 */
12
+ export interface WechenEdgePathOptions {
13
+ offset: number;
14
+ borderRadius: number;
15
+ }
11
16
  /** 连线在边对象 `data` 上的可选字段(感应边偏好等) */
12
17
  export interface WechenAgentEdgeData {
13
18
  /** @deprecated 新图请通过交换 `source`/`target` 表达执行反向;遗留值由 normalize 迁移 */
14
19
  wechenFlowDirection?: WechenAgentEdgeFlowDirection;
15
20
  wechenTargetAttachSide?: WechenAttachSideIn;
16
21
  wechenSourceAttachSide?: WechenAttachSideOut;
22
+ /** 持久化布局快照:回显时优先用于渲染 */
23
+ wechenPathOptions?: WechenEdgePathOptions;
24
+ /** 生成快照时的布局算法版本 */
25
+ wechenLayoutVersion?: number;
17
26
  }
18
27
  /**
19
28
  * 默认边:平滑阶梯线;箭头在 **几何 target 端**(执行进入下游节点)。
@@ -1 +1 @@
1
- {"version":3,"file":"wechenAgentEdgeTypes.d.ts","sourceRoot":"","sources":["../../src/flow/wechenAgentEdgeTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAkB,MAAM,eAAe,CAAC;AAK7F;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,+BAA+B;AAC/B,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,8BAA8B;AAC9B,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;IACnD,sBAAsB,CAAC,EAAE,kBAAkB,CAAC;IAC5C,sBAAsB,CAAC,EAAE,mBAAmB,CAAC;CAC9C;AAoCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,2CAgCtD;AAED,eAAO,MAAM,oBAAoB;;CAEZ,CAAC"}
1
+ {"version":3,"file":"wechenAgentEdgeTypes.d.ts","sourceRoot":"","sources":["../../src/flow/wechenAgentEdgeTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAkB,MAAM,eAAe,CAAC;AAM7F;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,+BAA+B;AAC/B,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,8BAA8B;AAC9B,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;IACnD,sBAAsB,CAAC,EAAE,kBAAkB,CAAC;IAC5C,sBAAsB,CAAC,EAAE,mBAAmB,CAAC;IAC7C,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,mBAAmB;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAoCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,2CAmCtD;AAED,eAAO,MAAM,oBAAoB;;CAEZ,CAAC"}
@@ -121,8 +121,12 @@ export interface WechenAgentEditorRef {
121
121
  /** 解析后的顶栏/持久化标题(`title` prop → `replaceFlow` 写入的 title → `initialFlow.title` → 默认) */
122
122
  getTitle(): string;
123
123
  getSnapshot(): WechenAgentSnapshot;
124
- /** 规范化后的完整画布(无 React Flow 运行期字段) */
124
+ /**
125
+ * 规范化后的完整画布(无 React Flow 运行期字段),与 **`initialFlow` prop** 同形(`title?` + `nodes` + `edges`)。
126
+ */
125
127
  getFlow(): WechenAgentFlowJson;
128
+ /** 与 **`getFlow()`** 相同;命名对齐 **`initialFlow` prop**。 */
129
+ getInitialFlow(): WechenAgentFlowJson;
126
130
  getNodes(): Node[];
127
131
  getEdges(): Edge[];
128
132
  /** 等同点击「保存」:调用 `onSave`(若已传入) */
@@ -143,8 +147,13 @@ export interface WechenAgentEditorRef {
143
147
  * 若 `patch` 含 **`data`**,则与现有 **`edge.data` 合并**:对 **`patch.data` 中值为 `undefined` 的键** 从结果中 **删除**;其余键 **覆盖写入**。颠倒执行顺序请用 **`swapWechenFlowEdgeEndpoints`** 生成补丁(交换 `source`/`target` 等),**不要**再持久化 **`wechenFlowDirection: 'reverse'`**。
144
148
  */
145
149
  patchEdge(edgeId: string, patch: Partial<Edge>): void;
146
- /** 用完整 flow 替换画布(深拷贝 + 规范化);会记录 `flow.title` 供后续 `getSnapshot` 使用 */
150
+ /**
151
+ * 用完整 flow 替换画布(深拷贝 + 规范化);会记录 `flow.title` 供后续 `getSnapshot` 使用。
152
+ * 入参形状与 **`initialFlow` prop** 相同。
153
+ */
147
154
  replaceFlow(flow: WechenAgentFlowJson): void;
155
+ /** 与 **`replaceFlow(flow)`** 相同;命名对齐 **`initialFlow` prop**。 */
156
+ setInitialFlow(flow: WechenAgentFlowJson): void;
148
157
  /**
149
158
  * 按当前节点几何重算全部边的锚边偏好并刷新感应区 Handle(与 `replaceFlow` / 回显后自动逻辑相同)。
150
159
  * `readOnly` / `readingMode` 下为 no-op。
@@ -180,6 +189,8 @@ export interface WechenAgentEditorRef {
180
189
  * 若传入 **`onBeforeRemoveEdge`** 且回调返回 `false`,则 **不修改** 图状态。
181
190
  */
182
191
  removeEdge(edgeId: string): void;
192
+ /** 与 **`removeEdge(edgeId)`** 相同。 */
193
+ deleteEdge(edgeId: string): void;
183
194
  /** 与 `getSnapshot().flowJson` 相同,便于仅要字符串时使用 */
184
195
  getFlowJson(): string;
185
196
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"flowTypes.d.ts","sourceRoot":"","sources":["../src/flowTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowTypes.d.ts","sourceRoot":"","sources":["../src/flowTypes.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -20,7 +20,7 @@ export { expandFlowHandlesConfig } from './config/flowHandleTypes';
20
20
  export { COMPONENT_LIBRARY_GROUP_APP, COMPONENT_LIBRARY_GROUP_MAIN, defaultAppAgentComponentItems, defaultMainAgentComponentItems, findComponentLibraryGroup, findComponentLibraryItem, fromWechenAgentComponentLibraryList, getDefaultComponentLibraryGroups, resolveLibraryItemNodeType, validateComponentLibraryGroups, isLibraryIconSet, isLibraryIconString, toWechenAgentComponentLibraryList, } from './config/componentLibraryConfig';
21
21
  export { appendComponentToLibrary, removeComponentFromLibrary, } from './config/componentLibraryDynamic';
22
22
  export { exportBackendWorkflowJson, importBackendWorkflowToFlow, isWechenBackendWorkflowJson, WECHEN_BACKEND_WORKFLOW_SCHEMA_VERSION, } from './backendWorkflowJson';
23
- export type { BackendWorkflowExportMeta, WechenBackendWorkflowEdge, WechenBackendWorkflowJson, WechenBackendWorkflowNode, WechenBackendWorkflowNodeType, } from './backendWorkflowJson';
23
+ export type { BackendWorkflowExportMeta, WechenBackendWorkflowEdge, WechenBackendWorkflowEdgeLayout, WechenBackendWorkflowJson, WechenBackendWorkflowNode, WechenBackendWorkflowNodeType, } from './backendWorkflowJson';
24
24
  export type { MainAgentNodeData, SimpleNodeData, WechenAddNodeFromLibraryOptions, WechenAgentEditorRef, WechenAgentFlowJson, WechenAgentHeaderActionsRenderContext, WechenAgentHeaderLeadingRenderContext, WechenAgentSnapshot, WechenBeforeRemoveEdgeFn, WechenBeforeRemoveNodeFn, WechenBeforeSaveFn, WechenConnectOptions, WechenDeleteGuardResult, } from './flowTypes';
25
25
  export { defaultInitialEdges, defaultInitialFlow, defaultInitialNodes, emptyInitialFlow, } from './flow/initialFlow';
26
26
  export { cloneWechenAgentFlow, normalizeWechenAgentFlowJson, parseWechenAgentFlowJson, } from './flow/flowJsonUtils';
@@ -36,7 +36,8 @@ export { buildWechenAgentNodeTypes, collectItemTypesFromLibraryGroups, collectNo
36
36
  export { createDroppedHostTypeNode } from './flow/dropNodes';
37
37
  export { validateWechenAgentFlow } from './flow/flowValidation';
38
38
  export type { ValidateWechenAgentFlowOptions, WechenFlowValidationIssue, WechenFlowValidationResult, WechenFlowValidationSeverity, } from './flow/flowValidation';
39
- export type { WechenAgentEdgeData, WechenAgentEdgeFlowDirection, WechenAttachSideIn, WechenAttachSideOut, } from './flow/wechenAgentEdgeTypes';
39
+ export type { WechenAgentEdgeData, WechenAgentEdgeFlowDirection, WechenAttachSideIn, WechenAttachSideOut, WechenEdgePathOptions, } from './flow/wechenAgentEdgeTypes';
40
+ export { WECHEN_EDGE_LAYOUT_VERSION, isCompleteEdgeLayoutSnapshot, } from './flow/edgeLayoutSnapshot';
40
41
  export { attachDataFromNewConnection, attachDataFromNodeGeometry, attachSidesFromStubHandles, defaultNewEdgeAttachData, getFlowNodeCenter, mergeEdgeDataAfterReconnect, patchEdgesAttachSidesFromGeometry, } from './flow/zoneConnectionAttach';
41
42
  export { WECHEN_AGENT_FLOW_DRAG_MIME, decodePaletteDragPayload, encodePaletteDragPayload, } from './flow/dragPayload';
42
43
  export type { PaletteDragPayload } from './flow/dragPayload';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}