@g1cloud/bpmn-modeler-next 5.0.0-beta.4 → 5.0.0-beta.41

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 (34) hide show
  1. package/dist/adapter/annotationImportDocking.d.ts +28 -0
  2. package/dist/adapter/i18n.d.ts +38 -6
  3. package/dist/adapter/i18nBackfill.d.ts +64 -0
  4. package/dist/adapter/translationLocaleCopy.d.ts +11 -0
  5. package/dist/adapter/translationLocaleRestore.d.ts +86 -0
  6. package/dist/agent/agentBatch.d.ts +7 -1
  7. package/dist/agent/describeProcess.d.ts +29 -2
  8. package/dist/agent/geometryAudit.d.ts +14 -0
  9. package/dist/agent/resolver/documentIndex.d.ts +12 -0
  10. package/dist/agent/resolver/index.d.ts +25 -2
  11. package/dist/agent/resolver/issues.d.ts +53 -0
  12. package/dist/agent/resolver/localeTexts.d.ts +24 -0
  13. package/dist/agent/resolver/lower.d.ts +29 -4
  14. package/dist/agent/resolver/routeRepair.d.ts +64 -0
  15. package/dist/agent/resolver/validate.d.ts +10 -1
  16. package/dist/agent/symbolicOp.d.ts +20 -2
  17. package/dist/bpmn-modeler-next.css +1 -1
  18. package/dist/bpmn-modeler.js +15582 -13471
  19. package/dist/bpmn-modeler.umd.cjs +104 -104
  20. package/dist/command/commandSeam.d.ts +2 -1
  21. package/dist/command/setTranslations.d.ts +42 -0
  22. package/dist/command/translationCommands.d.ts +11 -0
  23. package/dist/command/updateTranslation.d.ts +31 -0
  24. package/dist/core/hints.d.ts +29 -0
  25. package/dist/core/ir.d.ts +48 -1
  26. package/dist/editor/controller.d.ts +33 -1
  27. package/dist/editor/editLock.d.ts +9 -0
  28. package/dist/headless/modeler.d.ts +16 -2
  29. package/dist/index.d.ts +7 -0
  30. package/dist/view/BpmnDisplayLocaleSwitcher.vue.d.ts +6 -0
  31. package/dist/view/BpmnModelerView.vue.d.ts +7 -0
  32. package/dist/view/i18nDisplay.d.ts +87 -0
  33. package/dist/view/minimap.d.ts +25 -0
  34. package/package.json +3 -2
@@ -54,6 +54,11 @@ export declare function forwardThreePointCandidates(edge: GeometryEdge, shapes:
54
54
  * 목표 열은 목표 중심에 도킹 편이 0/±25/±40 — 그 열에 다른 메시지가 이미 중심 도킹해 있으면(같은 방향·같은
55
55
  * 종류라 finding 은 아니지만 두 화살표가 한 선으로 합쳐 보인다 — 사용자도 -19 비껴 놓았다) 편이 후보가 피한다.
56
56
  * 채택은 호출자 몫: 관통 0 을 먼저, 그다음 다른 간선과의 공선 공유가 없는 후보를 고른다.
57
+ *
58
+ * 🔴 B-141. 목표 도킹 열이 **출발 도형 폭 안**이면(같은 열 메시지) 후보를 내지 않는다 — 되돌아오는 세로 구간이
59
+ * 출발 도형을 관통하고, 도킹 편이(최대 ±40)로는 반폭을 못 벗어난다. 그 관통은 호출자의 관통 셈과 판정이 둘 다
60
+ * **자기 끝점을 빼서** 보이지 않아 그대로 채택됐다(표본 93 갈고리 · 계보 102 재하강 = 8회차 10간선 · 전부 이 후보 ·
61
+ * 사람 문서 0/1040 · 사람은 6/7 을 고쳤다). 위 전례는 목표 열 ≠ 출발 열이었다 — 같은 열이면 ㄷ 우회(B-9 ②)로 넘긴다.
57
62
  */
58
63
  export declare function farSideChannelCandidates(edge: GeometryEdge, shapes: readonly GeometryShape[]): GeometryPoint[][];
59
64
  /**
@@ -99,16 +104,75 @@ only?: ReadonlySet<string>): Set<string>;
99
104
  * 읽을 수 없는 중첩이 늘지 않을 때만 채택(🔁 「채택 조건에 대가가 없다」 클래스를 미리 막는다).
100
105
  */
101
106
  export declare function repairIntroducedEdgeCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforePairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
107
+ /**
108
+ * 공유 노드 `node` 쪽 끝을 네 변 중심으로 옮긴 경로 후보(순수). 반대쪽 끝은 **지금 도킹점 · 그 변 그대로** 둔다 —
109
+ * 그 끝은 이 쌍의 교차와 무관하고, 옮기면 그쪽 이웃과의 관계가 새로 생긴다. 반대쪽 도킹점이 변 위가 아니면 후보 없음.
110
+ */
111
+ export declare function redockCandidates(edge: GeometryEdge, node: GeometryShape, shapesById: ReadonlyMap<string, GeometryShape>): GeometryPoint[][];
112
+ /**
113
+ * 🔴 **이 배치가 만든 「끝점을 공유하는」 시퀀스 플로우 교차를 공유 노드의 출입 변을 바꿔 없앤다**(B-146 ⓑ).
114
+ *
115
+ * 표본 98 의 사람 수정 형태 그대로다 — 실패 갈래(게이트웨이 → 오류 노드)가 오류 노드 왼쪽 면으로, 되돌아감(오류 노드 →
116
+ * 상류)이 윗면에서 나가 서로 가로질렀고, 사람은 **실패 갈래를 윗면으로 · 되돌아감을 왼쪽 면에서** 내도록 맞바꿨다
117
+ * (도형 무이동 · 간선 직접 2). 🔴 **한 간선만 옮겨서는 안 풀린다** — 어느 쪽만 옮겨도 다른 쪽과 공선으로 마주 달린다.
118
+ * 그래서 B-90 ⓑ(한 간선씩)와 달리 **쌍을 함께** 고른다.
119
+ *
120
+ * **범위**(B-146 수단 결정) — 시퀀스 × 시퀀스(노드 루프)만 · 블랙박스 풀을 함께 끝점으로 가진 메시지는 보류(사람 기저 0 ·
121
+ * 증언 없음) · 이 배치가 만든 쌍만(`beforeSharedPairs` 밖) · **이 배치가 만든 간선만 움직인다**(B-90 ⓑ 규약 — 기존 간선은
122
+ * 지금 경로 하나만 후보다). 도형은 옮기지 않는다 — 경로로 안 풀리는 형상(g39 = 새 게이트웨이가 기존 우회선 아래)은 남는다.
123
+ *
124
+ * **대가 판정**(B-90 ⓑ 와 같은 자세 — 계산이 곧 판별) — 이 쌍이 더는 교차하지 않고 · 둘이 공선으로 겹치지 않고 · 컨테이너
125
+ * 안이고 · 끝점 공유 교차 총수가 줄고 · **종전 교차 쌍이 새로 생기지 않고** · 문서 판정에 **새 키가 0** 일 때만. 통과한
126
+ * 조합 중 **길이 + 꺾임** 이 가장 작은 것을 고른다(사람 수정본은 도구 산출과 길이가 같고 꺾임만 달랐다).
127
+ */
128
+ export declare function repairIntroducedSharedEndpointCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeSharedPairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
129
+ /**
130
+ * 🔴 **이 배치가 만든 메시지 중 선재 블랙박스 풀로 가고 짝 열이 풀 가로 범위 밖인 것을 짝 쪽 가장자리에 다시 도킹한다**(B-150).
131
+ * `beforeEdgeIds` · `beforeShapeIds` = 하강 전 간선 · 도형 id(선재 풀 판별 · 새 메시지 판별).
132
+ */
133
+ export declare function redockIntroducedBlackboxMessages(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>, beforeShapeIds: ReadonlySet<string>): void;
102
134
  /**
103
135
  * 풀 횡단 메시지플로우의 6점 경로 계획(순수). `null` = 이 간선은 대상이 아니거나(중간 풀 없음 ·
104
136
  * 끝점 해소 불가) 더 나은 열이 없다.
105
137
  */
106
138
  export declare function planCrossPoolRoute(edge: GeometryEdge, scene: GeometryScene): GeometryPoint[] | null;
139
+ /**
140
+ * ── 승객 간선의 base 경로 평행이동 (B-133 ⓒ) ──
141
+ *
142
+ * 하강 전에 있던 간선 중 **양 끝 도형이 같은 델타로 움직였는데 경로는 다시 깔린 것**을 base 경로 + 델타로
143
+ * 되돌린다. 한 짝의 끝점이 **서로 다른 단계**에서 옮겨지면(밀기 `createSpace` 는 노드 쪽만 · B-75 추종은 풀
144
+ * 쪽만 · 짝 동반은 짝 쪽만) 단계마다 bpmn-js `connection.layout` 이 사람이 그린 경로를 버리고 다시 깐다. 순
145
+ * 변위가 같으므로 평행이동이면 사람 경로가 그대로 산다. 실측(표본 103 · 사람 문서 + 증언 *"선이 껶여있는
146
+ * 부분이 걸렸어"*) = 쌓인 송신 노드의 **옆면 출발 3점**이 위 노드를 관통하는 2점으로 다시 깔리고, 우회 보정이
147
+ * 그것을 **8점 지그재그**로 감싸 이웃 메시지와 130px 겹쳤다(`edge-overlap-unrelated`).
148
+ *
149
+ * 안전 성질 2(선재 경로 불가침)의 **복원판**이다 — 선재 경로를 이 배치가 이미 지운 자리에서, 사람이 그린 것을
150
+ * 되살린다. 자리 = 도형을 옮기는 패스(lower · 풀 · 그룹) **전부 뒤**, 경로 보정 **앞** — 되살린 경로도 뒤
151
+ * 보정의 입력이 된다.
152
+ *
153
+ * 조건(전부) — ① 하강 전에 있던 **시퀀스 · 메시지 흐름**(연관은 뺀다 — N20 에서 base 의 끊긴 주석 연관만 되살려
154
+ * 판정을 늘렸고 이득은 0 이었다) ② 이 배치가 끝점을 바꾸지 않았다(재배선 · 끝점 id) ③ 양 끝 도형 **크기 불변** ·
155
+ * 이동 델타가 **같고 0 이 아니다** ④ 지금 경로 ≠ base + 델타 ⑤ 지금 경로가 이미 **관통 없는 2점 축 직선이면
156
+ * 둔다**(N20 — 다시 깐 직선을 사람의 꺾인 경로로 되돌리면 2점 메시지만 잃었다) ⑥ base + 델타 경로가 도형을
157
+ * 관통하지 않는다(관통하면 뒤 우회 보정에 맡긴다).
158
+ *
159
+ * N20(합성 재고 = 풀 안 시퀀스 전량 끼우기 3 op · 사람 문서 183 → 3,884 · 저장본 109 → 4,466) — 사람: 배치가 만든
160
+ * 판정 **−50** · 새 판정 4(전부 교환) · 교차 −25 · 2점 메시지 무변 · 순악화 **0** / 저장본: **−58** · 교차 감소 ·
161
+ * 2점 메시지 무변 · 순악화 **0**(교차 +1 4건은 종류 다름 중첩 해소와 교환).
162
+ */
163
+ export declare function restorePassengerEdgeRoutes(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, sceneBefore: GeometryScene, reroutedEdgeIds: ReadonlySet<string>): void;
107
164
  /**
108
165
  * 이 배치가 **새로 만든** 메시지플로우 중 풀을 횡단하는 것을 재경로한다(하강 직후, undo 에피소드
109
166
  * 안). `beforeEdgeIds` = 하강 전 간선 id — 그 밖의 것만 대상(안전 성질 2: 선재 경로 불가침).
110
167
  */
111
168
  export declare function rerouteIntroducedCrossPoolEdges(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>): void;
169
+ /**
170
+ * 🔴 **이 배치가 만들었거나 경로를 바꾼 메시지가 관계없는 풀 안을 가로로 지나면 그 가로를 끝점의 풀 안으로 옮긴다**(B-151) — 끝점 풀 안이
171
+ * 막히면 풀 밖 채널(풀 사이 틈 · 더미 바깥)로(B-151 ⓐ) · 채택이 없던 메시지는 한 번 더 본다.
172
+ * 선재 메시지는 base 보다 그 길이가 `UNRELATED_POOL_RUN_MIN` 이상 **는** 것만 — base 의 가로는 사람이 둔 것이다.
173
+ * `beforeEdgeIds` = 하강 전 간선 id · `sceneBefore` = 하강 전 장면(선재 경로 · 풀).
174
+ */
175
+ export declare function repairIntroducedUnrelatedPoolRuns(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>, sceneBefore: GeometryScene): void;
112
176
  /** 안쪽 구간(첫·끝 도킹 구간 제외)이 컨테이너 경계선과 나란히 이 거리 안에서 달리면 "경계에 붙었다"고 본다. */
113
177
  export declare const BOUNDARY_CLEARANCE = 30;
114
178
  /** 웨이포인트의 **안쪽 구간**(도킹 구간 제외)이 어느 컨테이너의 경계선과 나란히 `BOUNDARY_CLEARANCE` 안에서 겹쳐 달리는가. */
@@ -1,4 +1,13 @@
1
+ import { BpmnDocumentLocales } from '../../adapter/i18n';
1
2
  import { SymbolicOp } from '../symbolicOp';
2
3
  import { DocumentIndex } from './documentIndex';
3
4
  import { ResolveIssue } from './issues';
4
- export declare function validateOps(ops: readonly SymbolicOp[], index: DocumentIndex): ResolveIssue[];
5
+ /** 검증 옵션 — 문서 밖에서만 알 수 있는 입력. */
6
+ export interface ValidateOpsOptions {
7
+ /**
8
+ * 그룹의 문서 언어 설정(B-4 ④) — 있으면 다국어 그룹이다(문구 = `names`/`texts` 로 문서 언어 전부 · 평문 거부).
9
+ * 없으면 기능이 꺼진 그룹이다(평문만 · 맵 거부). 그룹 설정은 문서에 없으므로 호스트가 공급한다.
10
+ */
11
+ i18n?: BpmnDocumentLocales;
12
+ }
13
+ export declare function validateOps(ops: readonly SymbolicOp[], index: DocumentIndex, options?: ValidateOpsOptions): ResolveIssue[];
@@ -1,5 +1,5 @@
1
1
  import { BwlAfterColumn, BwlBand, BwlPlacement, BwlPoolOrder } from '../core/hints';
2
- import { IrAssociation, IrDataAssociation, IrDataStore, AddableFlowNodeType, IrEventDefinition, IrFlowCondition, IrGroup, IrLane, IrMessageFlow, IrNode, IrParticipant, IrSequenceFlow, IrTextAnnotation } from '../core/ir';
2
+ import { IrLocaleTexts, IrAssociation, IrDataAssociation, IrDataStore, AddableFlowNodeType, IrEventDefinition, IrFlowCondition, IrGroup, IrLane, IrMessageFlow, IrNode, IrParticipant, IrSequenceFlow, IrTextAnnotation } from '../core/ir';
3
3
  /** LLM 이 산출하는 단일 심볼릭 op. `kind` 로 판별한다. */
4
4
  export type SymbolicOp =
5
5
  /** 풀 추가. `order` = 풀 세로 순서 힌트(생략 시 op 순서가 곧 배치 순서). */
@@ -57,6 +57,7 @@ export type SymbolicOp =
57
57
  kind: 'participant.update';
58
58
  id: string;
59
59
  name?: string | null;
60
+ names?: IrLocaleTexts;
60
61
  lanes?: IrLane[];
61
62
  }
62
63
  /** `lane` = 레인 재배정(이동). `type` = 태스크/이벤트 타입 전환(bpmn-js replace 하강 — 외래 확장 속성 유실 가능성은 불변식 2 가 완충). */
@@ -67,6 +68,7 @@ export type SymbolicOp =
67
68
  kind: 'node.update';
68
69
  id: string;
69
70
  name?: string | null;
71
+ names?: IrLocaleTexts;
70
72
  lane?: string;
71
73
  type?: AddableFlowNodeType;
72
74
  eventDefinition?: IrEventDefinition;
@@ -85,6 +87,7 @@ export type SymbolicOp =
85
87
  kind: 'sequenceFlow.update';
86
88
  id: string;
87
89
  name?: string | null;
90
+ names?: IrLocaleTexts;
88
91
  condition?: IrFlowCondition | null;
89
92
  source?: string;
90
93
  target?: string;
@@ -92,16 +95,19 @@ export type SymbolicOp =
92
95
  kind: 'messageFlow.update';
93
96
  id: string;
94
97
  name?: string | null;
98
+ names?: IrLocaleTexts;
95
99
  } | {
96
100
  kind: 'dataStore.update';
97
101
  id: string;
98
102
  name?: string | null;
103
+ names?: IrLocaleTexts;
99
104
  }
100
105
  /** `text` 는 주석의 본질이라 제거 불가(주석 삭제 = element.remove). `placement: null` = 힌트 제거(휴리스틱 복귀). */
101
106
  | {
102
107
  kind: 'annotation.update';
103
108
  id: string;
104
109
  text?: string;
110
+ texts?: IrLocaleTexts;
105
111
  placement?: BwlPlacement | null;
106
112
  }
107
113
  /** `members` 는 전체 재선언(생략 = 보존) — resolver 가 바운즈를 재산출한다. */
@@ -109,8 +115,20 @@ export type SymbolicOp =
109
115
  kind: 'group.update';
110
116
  id: string;
111
117
  name?: string | null;
118
+ names?: IrLocaleTexts;
112
119
  members?: string[];
113
120
  }
121
+ /**
122
+ * **확인만** — 그 요소의 `locale` 칸에 걸린 확인 요청(`bwl:reviewRequest`)을 문구를 바꾸지 않고 해소한다.
123
+ * 다른 언어가 고쳐졌지만 이 칸의 번역은 여전히 맞을 때(오타 수준 수정) 쓴다. 번역을 고쳐야 하면 이것이 아니라
124
+ * 그 요소의 `*.update` 에 `names`/`texts` 를 준다 — 문구가 **실제로 바뀐 칸**의 표식만 해소된다.
125
+ * 다국어 그룹에서만 받는다 · 그 칸에 표식이 없으면 거부한다(읽은 뒤 사람이 이미 정리했을 수 있다).
126
+ */
127
+ | {
128
+ kind: 'translation.confirm';
129
+ id: string;
130
+ locale: string;
131
+ }
114
132
  /** 요소 제거(카테고리 무관 — 도형·연결 균일, 부착 연결은 연쇄 제거). */
115
133
  | {
116
134
  kind: 'element.remove';
@@ -120,5 +138,5 @@ export type SymbolicOp =
120
138
  * 심볼릭 op 종류의 닫힌 집합(단일 출처). resolver·JSON Schema(`schema.ts`)가 공유한다.
121
139
  * 아래 컴파일타임 단언이 이 튜플과 `SymbolicOp['kind']` 의 일치를 강제 — 한쪽만 늘리면 타입 에러.
122
140
  */
123
- export declare const SYMBOLIC_OP_KINDS: readonly ["participant.add", "participant.update", "node.add", "node.update", "sequenceFlow.add", "sequenceFlow.update", "messageFlow.add", "messageFlow.update", "dataStore.add", "dataStore.update", "dataAssociation.add", "association.add", "annotation.add", "annotation.update", "group.add", "group.update", "element.remove"];
141
+ export declare const SYMBOLIC_OP_KINDS: readonly ["participant.add", "participant.update", "node.add", "node.update", "sequenceFlow.add", "sequenceFlow.update", "messageFlow.add", "messageFlow.update", "dataStore.add", "dataStore.update", "dataAssociation.add", "association.add", "annotation.add", "annotation.update", "group.add", "group.update", "translation.confirm", "element.remove"];
124
142
  export type SymbolicOpKind = (typeof SYMBOLIC_OP_KINDS)[number];