@hatiolab/things-scene 10.0.0-beta.99 → 10.0.1

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 (278) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +56 -53
  3. package/dist-types/clock/frame-clock.d.ts.map +1 -1
  4. package/dist-types/command/command-migrate.d.ts.map +1 -1
  5. package/dist-types/command/snapshot-commander.d.ts.map +1 -1
  6. package/dist-types/components/audio.d.ts +12 -9
  7. package/dist-types/components/audio.d.ts.map +1 -1
  8. package/dist-types/components/component-drawing.d.ts.map +1 -1
  9. package/dist-types/components/component-geometry.d.ts.map +1 -1
  10. package/dist-types/components/component-hierarchy.d.ts +1 -1
  11. package/dist-types/components/component-hierarchy.d.ts.map +1 -1
  12. package/dist-types/components/component.d.ts +109 -13
  13. package/dist-types/components/component.d.ts.map +1 -1
  14. package/dist-types/components/container-abstract.d.ts +26 -22
  15. package/dist-types/components/container-abstract.d.ts.map +1 -1
  16. package/dist-types/components/container.d.ts +13 -9
  17. package/dist-types/components/container.d.ts.map +1 -1
  18. package/dist-types/components/data/data.d.ts.map +1 -1
  19. package/dist-types/components/data/evaluator.d.ts +27 -0
  20. package/dist-types/components/data/evaluator.d.ts.map +1 -1
  21. package/dist-types/components/donut.d.ts.map +1 -1
  22. package/dist-types/components/ellipse.d.ts +12 -9
  23. package/dist-types/components/ellipse.d.ts.map +1 -1
  24. package/dist-types/components/generic-placeholders.d.ts +12 -9
  25. package/dist-types/components/generic-placeholders.d.ts.map +1 -1
  26. package/dist-types/components/group.d.ts +1 -0
  27. package/dist-types/components/group.d.ts.map +1 -1
  28. package/dist-types/components/html/reposition.d.ts.map +1 -1
  29. package/dist-types/components/html-overlay-container.d.ts +13 -9
  30. package/dist-types/components/html-overlay-container.d.ts.map +1 -1
  31. package/dist-types/components/html-overlay-element.d.ts +25 -18
  32. package/dist-types/components/html-overlay-element.d.ts.map +1 -1
  33. package/dist-types/components/image-view.d.ts +12 -9
  34. package/dist-types/components/image-view.d.ts.map +1 -1
  35. package/dist-types/components/index.d.ts +1 -0
  36. package/dist-types/components/index.d.ts.map +1 -1
  37. package/dist-types/components/info-window.d.ts +12 -9
  38. package/dist-types/components/info-window.d.ts.map +1 -1
  39. package/dist-types/components/line.d.ts.map +1 -1
  40. package/dist-types/components/local-ref.d.ts +12 -9
  41. package/dist-types/components/local-ref.d.ts.map +1 -1
  42. package/dist-types/components/mixins/connectable.d.ts +12 -9
  43. package/dist-types/components/mixins/connectable.d.ts.map +1 -1
  44. package/dist-types/components/mixins/data-source.d.ts +12 -9
  45. package/dist-types/components/mixins/data-source.d.ts.map +1 -1
  46. package/dist-types/components/mixins/gltf-component.d.ts +13 -11
  47. package/dist-types/components/mixins/gltf-component.d.ts.map +1 -1
  48. package/dist-types/components/mixins/holdable.d.ts +12 -0
  49. package/dist-types/components/mixins/holdable.d.ts.map +1 -0
  50. package/dist-types/components/mixins/html-element.d.ts +22 -9
  51. package/dist-types/components/mixins/html-element.d.ts.map +1 -1
  52. package/dist-types/components/mixins/move-handle.d.ts +21 -13
  53. package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
  54. package/dist-types/components/mixins/rect-path.d.ts +12 -9
  55. package/dist-types/components/mixins/rect-path.d.ts.map +1 -1
  56. package/dist-types/components/mixins/three-d-only.d.ts +18 -9
  57. package/dist-types/components/mixins/three-d-only.d.ts.map +1 -1
  58. package/dist-types/components/mixins/value-holder.d.ts +12 -9
  59. package/dist-types/components/mixins/value-holder.d.ts.map +1 -1
  60. package/dist-types/components/modeling-faint.d.ts +14 -0
  61. package/dist-types/components/modeling-faint.d.ts.map +1 -0
  62. package/dist-types/components/mutater/path.d.ts.map +1 -1
  63. package/dist-types/components/node.d.ts +12 -9
  64. package/dist-types/components/node.d.ts.map +1 -1
  65. package/dist-types/components/polygon-container.d.ts +61 -0
  66. package/dist-types/components/polygon-container.d.ts.map +1 -0
  67. package/dist-types/components/polygon.d.ts.map +1 -1
  68. package/dist-types/components/polyline.d.ts +6 -0
  69. package/dist-types/components/polyline.d.ts.map +1 -1
  70. package/dist-types/components/popup.d.ts +12 -9
  71. package/dist-types/components/popup.d.ts.map +1 -1
  72. package/dist-types/components/rect.d.ts +24 -18
  73. package/dist-types/components/rect.d.ts.map +1 -1
  74. package/dist-types/components/retention/retention-manager.d.ts +9 -1
  75. package/dist-types/components/retention/retention-manager.d.ts.map +1 -1
  76. package/dist-types/components/root-container.d.ts +7 -0
  77. package/dist-types/components/root-container.d.ts.map +1 -1
  78. package/dist-types/components/ruler.d.ts +12 -9
  79. package/dist-types/components/ruler.d.ts.map +1 -1
  80. package/dist-types/components/service-component.d.ts +12 -9
  81. package/dist-types/components/service-component.d.ts.map +1 -1
  82. package/dist-types/components/star.d.ts.map +1 -1
  83. package/dist-types/components/text.d.ts +12 -9
  84. package/dist-types/components/text.d.ts.map +1 -1
  85. package/dist-types/core/dom-to-image.d.ts.map +1 -1
  86. package/dist-types/core/logger.d.ts.map +1 -1
  87. package/dist-types/core/memoize.d.ts.map +1 -1
  88. package/dist-types/decorator/decorator-registry.d.ts +10 -1
  89. package/dist-types/decorator/decorator-registry.d.ts.map +1 -1
  90. package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts +0 -4
  91. package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts.map +1 -1
  92. package/dist-types/decorator/decorators/bouncing-arrow-decorator.d.ts +0 -3
  93. package/dist-types/decorator/decorators/bouncing-arrow-decorator.d.ts.map +1 -1
  94. package/dist-types/diagnostics/contract-inspector.d.ts +9 -2
  95. package/dist-types/diagnostics/contract-inspector.d.ts.map +1 -1
  96. package/dist-types/diagnostics/data-lag-tracker.d.ts +31 -25
  97. package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -1
  98. package/dist-types/diagnostics/inspector.d.ts +136 -3
  99. package/dist-types/diagnostics/inspector.d.ts.map +1 -1
  100. package/dist-types/diagnostics/loading-overlay.d.ts +67 -10
  101. package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -1
  102. package/dist-types/diagnostics/metrics.d.ts +10 -0
  103. package/dist-types/diagnostics/metrics.d.ts.map +1 -1
  104. package/dist-types/flow/auto-route.d.ts +36 -0
  105. package/dist-types/flow/auto-route.d.ts.map +1 -0
  106. package/dist-types/flow/capability-inference.d.ts +19 -0
  107. package/dist-types/flow/capability-inference.d.ts.map +1 -0
  108. package/dist-types/flow/face-anchors.d.ts +26 -0
  109. package/dist-types/flow/face-anchors.d.ts.map +1 -0
  110. package/dist-types/flow/flow-engine.d.ts +122 -0
  111. package/dist-types/flow/flow-engine.d.ts.map +1 -0
  112. package/dist-types/flow/flow-graph-coordinator.d.ts +80 -0
  113. package/dist-types/flow/flow-graph-coordinator.d.ts.map +1 -0
  114. package/dist-types/flow/flow-graph-validator.d.ts +33 -0
  115. package/dist-types/flow/flow-graph-validator.d.ts.map +1 -0
  116. package/dist-types/flow/flow-graph.d.ts +76 -0
  117. package/dist-types/flow/flow-graph.d.ts.map +1 -0
  118. package/dist-types/flow/flow-introspection.d.ts +36 -0
  119. package/dist-types/flow/flow-introspection.d.ts.map +1 -0
  120. package/dist-types/flow/flow-node.d.ts +69 -0
  121. package/dist-types/flow/flow-node.d.ts.map +1 -0
  122. package/dist-types/flow/flow-orientation-coordinator.d.ts +13 -0
  123. package/dist-types/flow/flow-orientation-coordinator.d.ts.map +1 -0
  124. package/dist-types/flow/flow-orientation.d.ts +42 -0
  125. package/dist-types/flow/flow-orientation.d.ts.map +1 -0
  126. package/dist-types/flow/flow-trace.d.ts +5 -0
  127. package/dist-types/flow/flow-trace.d.ts.map +1 -0
  128. package/dist-types/flow/index.d.ts +16 -0
  129. package/dist-types/flow/index.d.ts.map +1 -0
  130. package/dist-types/flow/segment-topology.d.ts +225 -0
  131. package/dist-types/flow/segment-topology.d.ts.map +1 -0
  132. package/dist-types/interfaces/event-handler.d.ts +40 -0
  133. package/dist-types/interfaces/event-handler.d.ts.map +1 -0
  134. package/dist-types/interfaces/index.d.ts +2 -0
  135. package/dist-types/interfaces/index.d.ts.map +1 -1
  136. package/dist-types/interfaces/providers.d.ts +7 -0
  137. package/dist-types/interfaces/providers.d.ts.map +1 -1
  138. package/dist-types/items/arrangement/centering-queue-strategy.d.ts +10 -0
  139. package/dist-types/items/arrangement/centering-queue-strategy.d.ts.map +1 -0
  140. package/dist-types/items/arrangement/index.d.ts +2 -0
  141. package/dist-types/items/arrangement/index.d.ts.map +1 -0
  142. package/dist-types/{transfer/container-capacity.d.ts → items/capacity-mixin.d.ts} +39 -78
  143. package/dist-types/items/capacity-mixin.d.ts.map +1 -0
  144. package/dist-types/items/capacity.d.ts +53 -0
  145. package/dist-types/items/capacity.d.ts.map +1 -0
  146. package/dist-types/items/index.d.ts +7 -0
  147. package/dist-types/items/index.d.ts.map +1 -0
  148. package/dist-types/items/items-data-binding.d.ts +103 -0
  149. package/dist-types/items/items-data-binding.d.ts.map +1 -0
  150. package/dist-types/items/slot-record.d.ts +23 -0
  151. package/dist-types/items/slot-record.d.ts.map +1 -0
  152. package/dist-types/items/stacking/index.d.ts +3 -0
  153. package/dist-types/items/stacking/index.d.ts.map +1 -0
  154. package/dist-types/items/stacking/stack-layout.d.ts +33 -0
  155. package/dist-types/items/stacking/stack-layout.d.ts.map +1 -0
  156. package/dist-types/items/stacking/stacking-strategy.d.ts +114 -0
  157. package/dist-types/items/stacking/stacking-strategy.d.ts.map +1 -0
  158. package/dist-types/layer/layer.d.ts +1 -0
  159. package/dist-types/layer/layer.d.ts.map +1 -1
  160. package/dist-types/layer/model-layer.d.ts +25 -2
  161. package/dist-types/layer/model-layer.d.ts.map +1 -1
  162. package/dist-types/layer/modeler/index.d.ts +1 -0
  163. package/dist-types/layer/modeler/index.d.ts.map +1 -1
  164. package/dist-types/layer/modeler/move-handle-icon.d.ts +2 -0
  165. package/dist-types/layer/modeler/move-handle-icon.d.ts.map +1 -0
  166. package/dist-types/layer/modeler/move-handle-modeler.d.ts +18 -0
  167. package/dist-types/layer/modeler/move-handle-modeler.d.ts.map +1 -0
  168. package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
  169. package/dist-types/layer/modeler/rotator.d.ts.map +1 -1
  170. package/dist-types/layer/modeling-layer.d.ts +19 -0
  171. package/dist-types/layer/modeling-layer.d.ts.map +1 -1
  172. package/dist-types/layer/selection-layer.d.ts +7 -0
  173. package/dist-types/layer/selection-layer.d.ts.map +1 -1
  174. package/dist-types/layer/snap-guide-layer.d.ts.map +1 -1
  175. package/dist-types/license/license.d.ts.map +1 -1
  176. package/dist-types/search/scene-search-engine.d.ts +0 -1
  177. package/dist-types/search/scene-search-engine.d.ts.map +1 -1
  178. package/dist-types/search/search-overlay.d.ts +0 -1
  179. package/dist-types/search/search-overlay.d.ts.map +1 -1
  180. package/dist-types/things-scene/api/clipboard.d.ts +1 -1
  181. package/dist-types/things-scene/api/clipboard.d.ts.map +1 -1
  182. package/dist-types/things-scene/api/listener.d.ts +1 -1
  183. package/dist-types/things-scene/api/listener.d.ts.map +1 -1
  184. package/dist-types/things-scene/api/to-data-url.d.ts +1 -1
  185. package/dist-types/things-scene/api/to-data-url.d.ts.map +1 -1
  186. package/dist-types/things-scene/api/zorder.d.ts +1 -1
  187. package/dist-types/things-scene/api/zorder.d.ts.map +1 -1
  188. package/dist-types/things-scene/application-context.d.ts +15 -2
  189. package/dist-types/things-scene/application-context.d.ts.map +1 -1
  190. package/dist-types/things-scene/create.d.ts +24 -0
  191. package/dist-types/things-scene/create.d.ts.map +1 -1
  192. package/dist-types/things-scene/index.d.ts +11 -5
  193. package/dist-types/things-scene/index.d.ts.map +1 -1
  194. package/dist-types/things-scene/scene.d.ts +89 -20
  195. package/dist-types/things-scene/scene.d.ts.map +1 -1
  196. package/dist-types/threed/common.d.ts +6 -1
  197. package/dist-types/threed/common.d.ts.map +1 -1
  198. package/dist-types/threed/factories/backdrop.d.ts +25 -18
  199. package/dist-types/threed/factories/backdrop.d.ts.map +1 -1
  200. package/dist-types/threed/factories/banner.d.ts +14 -9
  201. package/dist-types/threed/factories/banner.d.ts.map +1 -1
  202. package/dist-types/threed/factories/camera.d.ts +13 -9
  203. package/dist-types/threed/factories/camera.d.ts.map +1 -1
  204. package/dist-types/threed/factories/cube.d.ts +12 -9
  205. package/dist-types/threed/factories/cube.d.ts.map +1 -1
  206. package/dist-types/threed/factories/decal.d.ts +25 -20
  207. package/dist-types/threed/factories/decal.d.ts.map +1 -1
  208. package/dist-types/threed/factories/floor-plate.d.ts +1 -0
  209. package/dist-types/threed/factories/floor-plate.d.ts.map +1 -1
  210. package/dist-types/threed/factories/gltf-object.d.ts +24 -18
  211. package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
  212. package/dist-types/threed/factories/polygon.d.ts.map +1 -1
  213. package/dist-types/threed/factories/sprite.d.ts +12 -9
  214. package/dist-types/threed/factories/sprite.d.ts.map +1 -1
  215. package/dist-types/threed/factories/wall.d.ts +12 -9
  216. package/dist-types/threed/factories/wall.d.ts.map +1 -1
  217. package/dist-types/threed/handle-3d.d.ts.map +1 -1
  218. package/dist-types/threed/index.d.ts +6 -0
  219. package/dist-types/threed/index.d.ts.map +1 -1
  220. package/dist-types/threed/managers/event-manager3d.d.ts +6 -0
  221. package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
  222. package/dist-types/threed/managers/gizmo-operation-manager.d.ts +0 -1
  223. package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
  224. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +0 -1
  225. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -1
  226. package/dist-types/threed/material-bank.d.ts +42 -0
  227. package/dist-types/threed/material-bank.d.ts.map +1 -0
  228. package/dist-types/threed/material-variant.d.ts +43 -0
  229. package/dist-types/threed/material-variant.d.ts.map +1 -0
  230. package/dist-types/threed/real-object-dom-element.d.ts +8 -0
  231. package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
  232. package/dist-types/threed/real-object-dom-texture.d.ts +0 -1
  233. package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
  234. package/dist-types/threed/real-object-mesh.d.ts +0 -1
  235. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  236. package/dist-types/threed/real-object-plane-2d.d.ts +0 -1
  237. package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
  238. package/dist-types/threed/real-object-sprite.d.ts +0 -1
  239. package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
  240. package/dist-types/threed/real-object-text.d.ts.map +1 -1
  241. package/dist-types/threed/real-object.d.ts +104 -3
  242. package/dist-types/threed/real-object.d.ts.map +1 -1
  243. package/dist-types/threed/texture/fillstyle-texture.d.ts +13 -2
  244. package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -1
  245. package/dist-types/threed/three-capability.d.ts +2 -0
  246. package/dist-types/threed/three-capability.d.ts.map +1 -1
  247. package/dist-types/threed/threed-enabled.d.ts +5 -0
  248. package/dist-types/threed/threed-enabled.d.ts.map +1 -0
  249. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  250. package/dist-types/threed/utils/polygon-shape.d.ts +21 -0
  251. package/dist-types/threed/utils/polygon-shape.d.ts.map +1 -0
  252. package/dist-types/transfer/carrier-line-capability.d.ts +95 -0
  253. package/dist-types/transfer/carrier-line-capability.d.ts.map +1 -0
  254. package/dist-types/transfer/index.d.ts +13 -3
  255. package/dist-types/transfer/index.d.ts.map +1 -1
  256. package/dist-types/transfer/pickup-helpers.d.ts +11 -1
  257. package/dist-types/transfer/pickup-helpers.d.ts.map +1 -1
  258. package/dist-types/transfer/tracer.d.ts +35 -0
  259. package/dist-types/transfer/tracer.d.ts.map +1 -0
  260. package/dist-types/transfer/transfer-helpers.d.ts +18 -0
  261. package/dist-types/transfer/transfer-helpers.d.ts.map +1 -0
  262. package/dist-types/transfer/transfer.d.ts +132 -43
  263. package/dist-types/transfer/transfer.d.ts.map +1 -1
  264. package/dist-types/transfer/transferable-mixin.d.ts +275 -0
  265. package/dist-types/transfer/transferable-mixin.d.ts.map +1 -0
  266. package/dist-types/transfer/types.d.ts +75 -2
  267. package/dist-types/transfer/types.d.ts.map +1 -1
  268. package/dist-types/transition/transition-effect.d.ts +21 -1
  269. package/dist-types/transition/transition-effect.d.ts.map +1 -1
  270. package/dist-types/types/capability.d.ts +65 -0
  271. package/dist-types/types/capability.d.ts.map +1 -0
  272. package/package.json +5 -3
  273. package/things-scene-min.js +11 -11
  274. package/things-scene-min.js.map +1 -1
  275. package/things-scene-transfer.mjs +3 -2
  276. package/things-scene.mjs +3 -3
  277. package/things-scene.mjs.map +1 -1
  278. package/dist-types/transfer/container-capacity.d.ts.map +0 -1
@@ -0,0 +1,122 @@
1
+ import { sinksForDestination, componentForNode, nodeIdOf, isRoutingTarget, type BalancingPolicy, allDestinations } from './flow-graph-coordinator.js';
2
+ import { type FlowGraph } from './flow-graph.js';
3
+ import { type FlowGraphIssue } from './flow-graph-validator.js';
4
+ export interface RoutingResult {
5
+ /** 다음 노드 id (graph node id — state.id ?? refid). */
6
+ targetId: string;
7
+ /** 다음 노드 컴포넌트 (이미 resolved). */
8
+ component: any;
9
+ /**
10
+ * 결정 origin — Phase 7 (graph overlay) 에서 색 구분.
11
+ * - explicit: 명시 RoutingLinks edge
12
+ * - inferred: capability 기반 자동 추론
13
+ * 현재는 구분 미확정 — Phase 7 에서 coordinator 가 metadata 부착 후 정확화.
14
+ */
15
+ origin: 'explicit' | 'inferred';
16
+ }
17
+ /**
18
+ * 분기점이 carrier 를 어느 하류로 보낼지 — 단일 진입점.
19
+ *
20
+ * @param fromComp 결정 주체 (joint / sorter / chute 등)
21
+ * @param carrier 결정 대상 — `carrier.state.meta.destination` 으로 목적지 매칭
22
+ * @param options Phase B2 — balancing policy 명시 override. 미명시 시 host/root state 의
23
+ * balancingPolicy / routingBalancingPolicy → default 'round-robin'.
24
+ * @returns 다음 노드 — 미상 / 도달 불가 시 null (호출부가 fallback)
25
+ */
26
+ export declare function next(fromComp: any, carrier?: any, options?: {
27
+ policy?: BalancingPolicy;
28
+ }): RoutingResult | null;
29
+ /**
30
+ * fromComp 의 직속 outbound[0] — chute 의 flush target 같은 단순 하류 1순위.
31
+ * resolveNextHop 과 다른 점: destination 매칭·tie-break 없이 *_그래프 첫 outbound_* 만.
32
+ */
33
+ export declare function downstream(fromComp: any): {
34
+ id: string;
35
+ component: any;
36
+ } | null;
37
+ /**
38
+ * fromComp 에서 도달 가능한 *_RoutingTarget value_* 목록 — generator 의 destination 후보 등.
39
+ */
40
+ export declare function reachableDestinations(fromComp: any): string[];
41
+ /**
42
+ * startId 기반 reachableDestinations — startId 가 graph node id (= componentForNode 의 key).
43
+ * generator 처럼 *_자기 컴포넌트가 startId 가 아닌_* 경우 (별도 시작점) 에 사용.
44
+ */
45
+ export declare function reachableDestinationsFrom(root: any, startId: string): string[];
46
+ /** destination + 그 destination 의 sink 들의 가중치 합. */
47
+ export interface WeightedDestination {
48
+ /** destination value (예: "서울"). */
49
+ value: string;
50
+ /**
51
+ * 가중치 합. 각 sink 의 측정:
52
+ * - routingWeight() 명시 시 → 그 값 (사용자 override)
53
+ * - 미명시 시 → 그 sink 의 *_incoming edge 수_* (경로 갯수 = 자연 capacity)
54
+ * - incoming 0 fallback = 1
55
+ */
56
+ weight: number;
57
+ }
58
+ /**
59
+ * reachableDestinationsFrom 의 *_가중치 버전_*. item-generator 의 _pickDestination 이 가중치
60
+ * 비례 random pick 에 사용.
61
+ *
62
+ * # 가중치 측정의 의미 (2026-06-17 사용자 통찰)
63
+ *
64
+ * 처음 (B3) 은 sink 수 비례 (각 sink weight 1). 그러나 사용자 통찰:
65
+ * "실제 생성 밸런스는 *_경로의 갯수_* 에 따라야 한다"
66
+ *
67
+ * 즉 destination 의 처리 capacity = *_그 destination 의 sink 들이 받을 수 있는 path 수_*.
68
+ * 사용자가 board 만들 때 경로 갯수를 의도적으로 설계 — 그 자체가 의도 표현.
69
+ *
70
+ * # 예
71
+ * 부산: 1 stockpile, *_3 chute_* 가 도달 → weight 3
72
+ * 제주: 2 stockpile, 각 1 chute 도달 → weight 2
73
+ * → 부산 60% / 제주 40% 자연 생성
74
+ *
75
+ * # 명시 override (routingWeight) 의 역할
76
+ * 사용자가 `state.weight = N` 명시했다면 *_그래프 구조 무관 강제로 N_*. 드문 시나리오 —
77
+ * 자연 capacity 측정과 다른 비중을 부여하고 싶을 때만.
78
+ *
79
+ * # 결정론 / 비용
80
+ * incoming edge 수 = 그래프의 in-degree (한 번 walk). graph cache 의 root 당 1 회 측정.
81
+ */
82
+ export declare function reachableDestinationsWeightedFrom(root: any, startId: string): WeightedDestination[];
83
+ /**
84
+ * FlowGraph 자체 — diagnostics / overlay 용. hot path 는 next() / downstream() 사용 권장.
85
+ */
86
+ export declare function graphFor(root: any): FlowGraph | null;
87
+ /**
88
+ * Phase 3 — FlowGraph invariant 검증. board load / topology change 후 호출 권장.
89
+ * orphan / dead-end / cycle / unreachable-target 의 4 종 issue 신고.
90
+ *
91
+ * - error 가 있으면 시뮬 시작 차단 권장 (호출부 결정)
92
+ * - warning 은 사용자 안내 (UI overlay)
93
+ * - 의도 cycle (LoopSorter 등) 은 capability-based loopCapableIds 로 skip
94
+ *
95
+ * @returns issues — 빈 array 면 통과
96
+ */
97
+ export declare function validate(root: any): FlowGraphIssue[];
98
+ export { componentForNode, nodeIdOf, isRoutingTarget, sinksForDestination, allDestinations };
99
+ /**
100
+ * FlowEngine namespace — call site 가 `FlowEngine.next(this, carrier)` 형태로 사용.
101
+ * (개별 함수 export 와 동일 — 호출 스타일 옵션.)
102
+ */
103
+ /**
104
+ * WeightedDestination[] 에서 가중치 비례 random pick. item-generator 의 _pickDestination
105
+ * 본문 로직 — helper 로 분리하여 단위 테스트 가능 (사용자 의문, 2026-06-17 — E2E 검증).
106
+ *
107
+ * 결정론 아님 (Math.random 사용). 통계적 분산만 보장.
108
+ */
109
+ export declare function pickWeightedDestination(weighted: WeightedDestination[]): string | undefined;
110
+ export declare const FlowEngine: {
111
+ next: typeof next;
112
+ downstream: typeof downstream;
113
+ reachableDestinations: typeof reachableDestinations;
114
+ reachableDestinationsFrom: typeof reachableDestinationsFrom;
115
+ reachableDestinationsWeightedFrom: typeof reachableDestinationsWeightedFrom;
116
+ pickWeightedDestination: typeof pickWeightedDestination;
117
+ graphFor: typeof graphFor;
118
+ validate: typeof validate;
119
+ };
120
+ export type { FlowGraphIssue } from './flow-graph-validator.js';
121
+ export type { BalancingPolicy } from './flow-graph-coordinator.js';
122
+ //# sourceMappingURL=flow-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-engine.d.ts","sourceRoot":"","sources":["../../src/flow/flow-engine.ts"],"names":[],"mappings":"AA0BA,OAAO,EAEL,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,eAAe,EAEf,KAAK,eAAe,EACpB,eAAe,EAChB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1F,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,gCAAgC;IAChC,SAAS,EAAE,GAAG,CAAA;IACd;;;;;OAKG;IACH,MAAM,EAAE,UAAU,GAAG,UAAU,CAAA;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,aAAa,GAAG,IAAI,CAO/G;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAS/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,CAI7D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAa9E;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAmCnG;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CAEpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE,CAsBpD;AAID,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAA;AAE5F;;;GAGG;AACH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,MAAM,GAAG,SAAS,CAa3F;AAED,eAAO,MAAM,UAAU;;;;;;;;;CAStB,CAAA;AAGD,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG/D,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,80 @@
1
+ import { type FlowGraph, type NextHopCandidate } from './flow-graph.js';
2
+ import { type FlowGraphIssue } from './flow-graph-validator.js';
3
+ /** RoutingTarget capability — sink 가 자기 담당 행선지 값을 자가선언. */
4
+ export interface RoutingTarget {
5
+ /** 담당 행선지 값 (매칭 전용 — findById 대상 아님). */
6
+ routingDestination(): string;
7
+ /** (optional, Phase B1) 같은 destination N sink 분산 가중치. 미구현 = 1. */
8
+ routingWeight?(): number;
9
+ }
10
+ export declare function isRoutingTarget(c: any): c is RoutingTarget;
11
+ /**
12
+ * board load 시점 검출된 validate issues — UI overlay / 사용자 안내 진입점.
13
+ * 빈 array = 통과. error 가 있으면 호출부가 시뮬 시작 차단 권장.
14
+ */
15
+ export declare function flowGraphIssues(root: any): FlowGraphIssue[];
16
+ /** root 의 방향 그래프 (캐시). 노드 0 이면 null. */
17
+ export declare function flowGraphFor(root: any): FlowGraph | null;
18
+ /** 행선지 값 → 담당 sink 노드 id 들. */
19
+ export declare function sinksForDestination(root: any, destination: string): string[];
20
+ /** 노드 id → 컴포넌트. */
21
+ export declare function componentForNode(root: any, id: string): any;
22
+ /** root 전체의 행선지 값 목록 (중복 제거). generator 가 후보로 사용. */
23
+ export declare function allDestinations(root: any): string[];
24
+ /** 컴포넌트의 그래프 노드 id (id ?? refid). 분기점이 자기 노드 식별에. */
25
+ export declare function nodeIdOf(c: any): string | undefined;
26
+ /**
27
+ * Phase B2 — balancing 정책.
28
+ * - index : outbound index 순 첫 후보 (= legacy 동작)
29
+ * - round-robin : 같은 hops 동률 후보 사이 순환 (default)
30
+ * - weight : 동률 후보의 target sink 의 routingWeight 비례 weighted-round-robin
31
+ * (random 회피 — 결정론 보장)
32
+ * - utilization : 동률 후보의 target sink 의 점유율 (inventoryCount / capacity) 가장 낮은
33
+ */
34
+ export type BalancingPolicy = 'index' | 'round-robin' | 'weight' | 'utilization';
35
+ /** per-root balancing state — round-robin counter. root 가 새로 생기면 자동 초기화 (cache 와 동일). */
36
+ export interface BalancingState {
37
+ /** hostId → counter. round-robin / weight 정책이 사용. */
38
+ counters: Map<string, number>;
39
+ }
40
+ /**
41
+ * Phase B2 balancing — 동률 후보 중 정책으로 선택. *_Internal helper, exported for unit test_*.
42
+ */
43
+ export declare function applyPolicy(policy: BalancingPolicy, hostId: string, state: BalancingState, tied: NextHopCandidate[], components: Map<string, any>): NextHopCandidate;
44
+ /**
45
+ * 분기점(joint/sorter)이 carrier 를 어느 하류로 보낼지 — 목적지 지향 next-hop.
46
+ * 반환 = 고른 *하류 이웃 노드 id* (= 그 OUT 의 연결 대상). 없으면 null (목적지
47
+ * 미상/도달 불가/그래프 없음 → 호출부가 기존 로직 fallback). 호출부는 이 id 로
48
+ * 자기 port/opening(targetRef/neighborId) 을 매칭 — index 정렬 불일치 회피.
49
+ *
50
+ * # 절차
51
+ * 1. carrier.meta.destination(행선지 값) → 그 값을 담당하는 sink 노드들
52
+ * (없으면 dest 자체를 노드 id 로 — 단일 sink fallback).
53
+ * 2. nextHopsToAnyDetailed — 각 outbound 의 가까운 sink + hops 측정. 도달 불가
54
+ * outbound 는 자연 제외.
55
+ * 3. canReceive=true 후보만 필터 (capacity-reactive). 전부 막힘 → 최단으로 대기.
56
+ * 4. *_도달 가능한 모든 outbound_* 에 balancing policy 적용 (hops 동률 제약 없음).
57
+ *
58
+ * # 왜 hops 동률 제약을 두지 않는가 (Phase B6 의 본질 결정, 2026-06-17)
59
+ * "효율 (최단 hops)" 과 "분산 (throughput / capacity)" 의 두 가치가 충돌하면, 시스템
60
+ * 이 자동 선택할 수 없다 — 사용자 의도가 어느 쪽인지 *_시스템은 모름_*. 추측은
61
+ * 마술적이지만 잘못됐을 때 제어 불가.
62
+ *
63
+ * 그러나 *_사용자가 같은 destination 의 N sink 를 board 에 만든 사실 자체_* 가
64
+ * 이미 의도의 표현이다. 효율만 원했다면 1 개만 만들었을 것 — N 개 만든 것은:
65
+ * - "이 destination 의 capacity 를 N 배로" (예: chute 막힘 회피)
66
+ * - "후속 처리 N 라인 동시 부하" (throughput)
67
+ * 어느 쪽이든 *_분산 우선_* 의 표현.
68
+ *
69
+ * 따라서 default = *_모든 도달 가능 sink 사이 분산_* (hops 무관). 효율 우선 시나리오
70
+ * (드물게 있다면) 는 향후 `'shortest'` 같은 opt-in 정책으로 *_명시_* 표현하면 됨.
71
+ *
72
+ * # Phase B2 — 정책 enum
73
+ * policy 결정 우선순위: options.policy → per-host (self.state.balancingPolicy)
74
+ * → root (root.state.routingBalancingPolicy) → default 'round-robin'.
75
+ * 모든 정책은 *_도달 가능한 receivable 전체_* 에 적용 (= Phase B6 의 원칙).
76
+ */
77
+ export declare function resolveNextHop(self: any, carrier: any, options?: {
78
+ policy?: BalancingPolicy;
79
+ }): string | null;
80
+ //# sourceMappingURL=flow-graph-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-graph-coordinator.d.ts","sourceRoot":"","sources":["../../src/flow/flow-graph-coordinator.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAyC,KAAK,SAAS,EAAsB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElI,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1F,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,kBAAkB,IAAI,MAAM,CAAA;IAC5B,kEAAkE;IAClE,aAAa,CAAC,IAAI,MAAM,CAAA;CACzB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,aAAa,CAE1D;AA+MD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE,CAE3D;AAED,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CAGxD;AAED,+BAA+B;AAC/B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5E;AAED,oBAAoB;AACpB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,CAE3D;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,EAAE,CAGnD;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAEnD;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,CAAA;AAEhF,yFAAyF;AACzF,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AAiCD;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,gBAAgB,EAAE,EACxB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,gBAAgB,CAsClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAqC7G"}
@@ -0,0 +1,33 @@
1
+ import type { FlowGraph } from './flow-graph.js';
2
+ export type IssueSeverity = 'error' | 'warning';
3
+ export type IssueCode = 'orphan-source' | 'dead-end' | 'cycle' | 'unreachable-target' | 'invalid-weight';
4
+ export interface FlowGraphIssue {
5
+ severity: IssueSeverity;
6
+ code: IssueCode;
7
+ nodeId?: string;
8
+ /** cycle 의 경우 노드 체인 (정렬: 시작 = lexically min id, 결정론). */
9
+ cycle?: string[];
10
+ message: string;
11
+ }
12
+ export interface ValidateOptions {
13
+ /**
14
+ * 의도 cycle 자격 — 해당 노드 id 의 cycle 은 skip (예: LoopSorter / LoopConveyor).
15
+ * 호출자가 root walk 로 isLoop capability 식별 후 전달. validator 자체는 순수.
16
+ */
17
+ loopCapableIds?: ReadonlySet<string>;
18
+ /**
19
+ * RoutingTarget 자격 노드 id 목록 — sink (dead-end 자격 면제) 판단 + unreachable 검사.
20
+ * coordinator 의 destToSinks 키로 도출 가능.
21
+ */
22
+ routingTargetIds?: ReadonlySet<string>;
23
+ /**
24
+ * (Phase B1) routingWeight 추출 결과 — nodeId → weight. 미선언/default 1 인 노드는
25
+ * 생략 가능. validator 가 weight ≤ 0 의 invalid-weight warning 검출.
26
+ */
27
+ routingWeights?: ReadonlyMap<string, number>;
28
+ }
29
+ /**
30
+ * graph 의 invariants 검증. 같은 입력 → 같은 결과 (결정론).
31
+ */
32
+ export declare function validate(graph: FlowGraph, opts?: ValidateOptions): FlowGraphIssue[];
33
+ //# sourceMappingURL=flow-graph-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-graph-validator.d.ts","sourceRoot":"","sources":["../../src/flow/flow-graph-validator.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAA;AAC/C,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,oBAAoB,GAAG,gBAAgB,CAAA;AAExG,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAEpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAEtC;;;OAGG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,GAAE,eAAoB,GAAG,cAAc,EAAE,CA8FvF"}
@@ -0,0 +1,76 @@
1
+ import { type SegmentTopology, type SegmentBounds, type MatchTolerance } from './segment-topology.js';
2
+ /** 그래프 노드 입력 — collectAdjacentSegments 출력과 동일 shape. */
3
+ export interface FlowGraphNode {
4
+ id: string;
5
+ topology: SegmentTopology;
6
+ bounds?: SegmentBounds;
7
+ /**
8
+ * 명시 링크 — 사용자가 *명시 id* 로 지정한 그래프 엣지. 인접(기하) 자동연결로는
9
+ * 못 잇는 *떨어진 타겟*(예: 슈트 → 멀리 있는 StockPile)을 연결. 인접 엣지에 *추가*
10
+ * (대체 아님). coordinator 가 RoutingLinks capability 에서 채운다. refid 아님(시스템
11
+ * auto-link 와 별개) — 사용자 명시 id.
12
+ */
13
+ links?: {
14
+ /** 이 노드 → target 노드 id(들). */
15
+ downstream?: string[];
16
+ /** source 노드 id(들) → 이 노드. */
17
+ upstream?: string[];
18
+ };
19
+ }
20
+ /** 산출된 방향 그래프. */
21
+ export interface FlowGraph {
22
+ /** id → 노드. */
23
+ nodes: Map<string, FlowGraphNode>;
24
+ /** id → outbound 별 연결 대상 id (없으면 null). index = outbound 순서. */
25
+ out: Map<string, Array<string | null>>;
26
+ /** 말단(outbound 연결 0) — 목적지 후보. */
27
+ sinks: Set<string>;
28
+ /** 진입원(inbound 연결 0). */
29
+ sources: Set<string>;
30
+ }
31
+ /**
32
+ * 노드 목록 → 방향 그래프. 간선은 matchOutbounds(anchor 정밀 + footprint 배달)
33
+ * 재사용 — 컨베이어 자동연결과 *동일 판정*이라 그래프가 실제 흐름과 일치.
34
+ */
35
+ export declare function buildFlowGraph(nodes: ReadonlyArray<FlowGraphNode>, tolerance?: MatchTolerance): FlowGraph;
36
+ /**
37
+ * fromId 의 *각 outbound* 에서 도달 가능한 노드 집합. 반환 index = outbound 순서.
38
+ * 연결 없는 outbound = 빈 집합. 분기점 next-hop 선택의 1차 재료.
39
+ */
40
+ export declare function reachableByOutbound(graph: FlowGraph, fromId: string): Set<string>[];
41
+ /**
42
+ * fromId 에서 destId 로 가까워지는 *outbound index 목록*, **최단 hop 우선 정렬**.
43
+ * 동률은 index 순(결정적). 여러 개면 상위(resolver)가 capacity 등으로 tie-break.
44
+ * 빈 배열 = 도달 불가(이 노드에선 막힘).
45
+ */
46
+ export declare function nextHops(graph: FlowGraph, fromId: string, destId: string): number[];
47
+ /**
48
+ * fromId 에서 destId 로 가는 *최단 outbound index 1개* (없으면 -1). resolver 가
49
+ * capacity 무관할 때의 기본 선택. capacity-reactive 는 nextHops 전체를 받아 거른다.
50
+ */
51
+ export declare function nextHop(graph: FlowGraph, fromId: string, destId: string): number;
52
+ /** fromId 가 destId 에 도달 가능한가 (어느 outbound 로든). dispatcher canReach 의 망 판정. */
53
+ export declare function canReach(graph: FlowGraph, fromId: string, destId: string): boolean;
54
+ /** fromId 에서 도달 가능한 *말단(sink) 노드 집합*. generator 가 보낼 수 있는 목적지 후보. */
55
+ export declare function reachableSinks(graph: FlowGraph, fromId: string): Set<string>;
56
+ /**
57
+ * fromId 에서 *목적지 값을 담당하는 여러 sink 중 아무거나* 로 가까워지는 outbound
58
+ * index 목록 (최단 hop 우선). 논리 목적지를 담당하는 물리 sink 가 여럿일 때
59
+ * (= 부하분산 여지). destIds = 그 목적지를 담당하는 sink 노드 id 들.
60
+ */
61
+ export declare function nextHopsToAny(graph: FlowGraph, fromId: string, destIds: Iterable<string>): number[];
62
+ /** Outbound 후보 — Phase B2 balancing 정책에서 hops 동률 그룹 + target sink id 사용. */
63
+ export interface NextHopCandidate {
64
+ /** outbound port index (FlowGraphNode.topology.outbounds 의 index, = graph.out 의 index). */
65
+ index: number;
66
+ /** 이 outbound 의 *_가까운 sink_* 까지의 최단 hop 수 (자기 포함 = 1). */
67
+ hops: number;
68
+ /** 그 hop 의 *_가까운 sink id_* (동률 시 lexical first — 결정론). */
69
+ target: string;
70
+ }
71
+ /**
72
+ * nextHopsToAny 의 *_상세 버전_* — index + hops + target sink id. balancing 정책이
73
+ * *_같은 hops 동률 그룹화_* + *_target sink 의 routingWeight 조회_* 등에 사용 (Phase B2).
74
+ */
75
+ export declare function nextHopsToAnyDetailed(graph: FlowGraph, fromId: string, destIds: Iterable<string>): NextHopCandidate[];
76
+ //# sourceMappingURL=flow-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-graph.d.ts","sourceRoot":"","sources":["../../src/flow/flow-graph.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAkB,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAErH,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QACN,8BAA8B;QAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,8BAA8B;QAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;CACF;AAED,kBAAkB;AAClB,MAAM,WAAW,SAAS;IACxB,eAAe;IACf,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACjC,gEAAgE;IAChE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IACtC,kCAAkC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,yBAAyB;IACzB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,SAAS,CAwCzG;AA6BD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CASnF;AA8BD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAanF;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhF;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlF;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAM5E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAEnG;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GACxB,gBAAgB,EAAE,CAwBpB"}
@@ -0,0 +1,36 @@
1
+ export interface DataScenario {
2
+ /** 이 시나리오의 carrier data — 경로의 모든 constraint AND merge. */
3
+ data: Record<string, any>;
4
+ /** sampling weight — default 1 (= 균등). 향후 demand-driven 등 확장. */
5
+ weight: number;
6
+ /** debug — 경로의 segment id 들. */
7
+ pathIds?: string[];
8
+ /**
9
+ * 경로의 *종착 sink id* (= carrier 의 최종 목적지). generator 가 carrier.meta.
10
+ * destination 에 주입 → 분기점이 목적지 지향 next-hop 라우팅(flow-graph.canReach)
11
+ * 으로 분기하게 될 토대. 미상이면 undefined (= 목적지 없는 carrier).
12
+ */
13
+ destination?: string;
14
+ }
15
+ interface SegmentLike {
16
+ state?: {
17
+ id?: string;
18
+ };
19
+ parent?: any;
20
+ rootModel?: any;
21
+ root?: any;
22
+ getSegmentTopology?: () => any;
23
+ }
24
+ /**
25
+ * 생성기 (= source) 부터 BFS — RoutingCapability 의 constraints 누적 + sink 도달
26
+ * 시 시나리오 추가. 결과: 가능 data 시나리오 list.
27
+ *
28
+ * @returns 데이터 시나리오 list (균등 weight). 빈 list = downstream 추론 실패.
29
+ */
30
+ export declare function enumerateDataScenarios(source: SegmentLike, maxDepth?: number): DataScenario[];
31
+ /**
32
+ * AND merge — 두 constraint 의 key-value 합치기. key 충돌 (= 다른 value) 시 null.
33
+ */
34
+ export declare function mergeConstraints(base: Record<string, any>, add: Record<string, any>): Record<string, any> | null;
35
+ export {};
36
+ //# sourceMappingURL=flow-introspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-introspection.d.ts","sourceRoot":"","sources":["../../src/flow/flow-introspection.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,kBAAkB,CAAC,EAAE,MAAM,GAAG,CAAA;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,QAAQ,SAAK,GACZ,YAAY,EAAE,CAmGhB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAO5B"}
@@ -0,0 +1,69 @@
1
+ import type Component from '../components/component.js';
2
+ type Constructor<T = {}> = new (...args: any[]) => T;
3
+ /** 3D position. */
4
+ export type Vec3 = {
5
+ x: number;
6
+ y: number;
7
+ z: number;
8
+ };
9
+ /**
10
+ * Port — flow graph 의 edge endpoint (inbound / outbound).
11
+ * 그래프 측 routing / FlowEngine 이 활용.
12
+ */
13
+ export interface Port {
14
+ /** Port id (node 안 유일). */
15
+ id: string;
16
+ /** 위치 (node-local). 도메인 측 routing / 시각화 활용. */
17
+ position?: Vec3;
18
+ /** 진행 방향 (node-local). 그래프 측 tangent. */
19
+ direction?: Vec3;
20
+ /** 도메인 메타데이터 (label / capability tag 등). */
21
+ meta?: Record<string, any>;
22
+ }
23
+ /**
24
+ * SlotInfo — node 안 세분 위치 (slot / cell 등).
25
+ *
26
+ * 3 capability 가 query 로 활용:
27
+ * - Dwellable.attachPointFor(item, { slotId }) — slot.attach 활용
28
+ * - Transferable.receive(item, { slotId }) — slot 별 receive
29
+ * - Operable.transform(inputs, outputs, { slotId }) — slot 별 변화
30
+ */
31
+ export interface SlotInfo {
32
+ /** node-local 위치. */
33
+ position: Vec3;
34
+ /** node-local size (옵션). */
35
+ size?: {
36
+ width: number;
37
+ height: number;
38
+ depth: number;
39
+ };
40
+ /** 3D scene-graph attach point (옵션). holder 의 _realObject 자손 object3d. */
41
+ attach?: any;
42
+ /** 도메인 메타데이터. */
43
+ meta?: Record<string, any>;
44
+ }
45
+ /**
46
+ * FlowNode capability — flow graph 의 노드 (구조 + flow). 보유는 Holdable 위임.
47
+ *
48
+ * 모든 자식 (Transferable / Dwellable / Operable) 의 base. Dwellable 적용 안 한 node
49
+ * 도 Holdable 로 _items 사용 가능 — 정책 (capacity 등) 만 추가 layer.
50
+ *
51
+ * Phase D-4 (2026-06-20): ItemsDataBinding 자동 합류 — 모든 FlowNode 자손이
52
+ * `holder.data` 표준 entry 자동 보유.
53
+ */
54
+ export default function FlowNode<T extends Constructor<Component>>(superclass: T): any;
55
+ /** Type guard. */
56
+ export declare function isFlowNode(c: any): c is {
57
+ isFlowNode: true;
58
+ inboundPorts(): Port[];
59
+ outboundPorts(): Port[];
60
+ slotIds?(): string[];
61
+ slotAt?(slotId: string): SlotInfo | null;
62
+ _items: any[];
63
+ addItem: (h: any, o?: any) => void;
64
+ removeItem: (h: any, silent?: boolean) => void;
65
+ handoverIn: (c: any, o?: any) => void;
66
+ handoverOut: (c: any) => void;
67
+ };
68
+ export {};
69
+ //# sourceMappingURL=flow-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-node.d.ts","sourceRoot":"","sources":["../../src/flow/flow-node.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AA6BvD,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAEpD,mBAAmB;AACnB,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,IAAI;IACnB,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,yCAAyC;IACzC,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,QAAQ,EAAE,IAAI,CAAA;IACd,4BAA4B;IAC5B,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,0EAA0E;IAC1E,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC3B;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,GAAG,CAsIrF;AAED,kBAAkB;AAClB,wBAAgB,UAAU,CACxB,CAAC,EAAE,GAAG,GACL,CAAC,IAAI;IACN,UAAU,EAAE,IAAI,CAAA;IAChB,YAAY,IAAI,IAAI,EAAE,CAAA;IACtB,aAAa,IAAI,IAAI,EAAE,CAAA;IACvB,OAAO,CAAC,IAAI,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAA;IACxC,MAAM,EAAE,GAAG,EAAE,CAAA;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IAClC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IACrC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CAC9B,CAEA"}
@@ -0,0 +1,13 @@
1
+ import { type FlowDir } from './flow-orientation.js';
2
+ /** 트리에서 segment/anchor/hub 수집 → 흐름 방향 map. */
3
+ export declare function computeFlowMap(root: any): Map<string, FlowDir>;
4
+ /**
5
+ * 컨베이어가 자기 흐름 방향(reverse 여부)을 조회 — getSegmentTopology 에서 호출.
6
+ * true=reverse, false=forward, undefined=미결정(override 안 함, 수동값 유지).
7
+ *
8
+ * 흐름 방향은 *정적 레이아웃의 함수*라 시뮬 중엔 안 바뀐다 → root 당 *1회*만 computeFlowMap
9
+ * 하고 캐시 (per-call 전체 트리 스캔 제거 = 성능 핵심). 첫 조회는 모델 빌드 완료 후 발생하고,
10
+ * 모델 재로드 시 root(model_layer)가 새로 생겨 캐시도 자연히 비므로 별도 무효화 불필요.
11
+ */
12
+ export declare function flowReverseFor(self: any): boolean | undefined;
13
+ //# sourceMappingURL=flow-orientation-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-orientation-coordinator.d.ts","sourceRoot":"","sources":["../../src/flow/flow-orientation-coordinator.ts"],"names":[],"mappings":"AAoBA,OAAO,EAA+D,KAAK,OAAO,EAAa,MAAM,uBAAuB,CAAA;AAuC5H,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAkF9D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,GAAG,SAAS,CAkB7D"}
@@ -0,0 +1,42 @@
1
+ export interface Vec2 {
2
+ x: number;
3
+ z: number;
4
+ }
5
+ /** 방향 추론 대상 segment — start→end 가 intrinsic forward. */
6
+ export interface FlowSegmentInput {
7
+ id: string;
8
+ start: Vec2;
9
+ end: Vec2;
10
+ }
11
+ /** 방향 기준점 — 연결 지점(세그먼트 끝점과 매칭)에서의 소스/싱크. */
12
+ export interface FlowAnchor {
13
+ pos: Vec2;
14
+ /** 'source' = 여기서 흘려보냄(연결 세그먼트의 진입), 'sink' = 여기로 빨아들임(진출). */
15
+ kind: 'source' | 'sink';
16
+ }
17
+ /** forward = start→end, reverse = end→start, unknown = 미결정(anchor 미도달). */
18
+ export type FlowDir = 'forward' | 'reverse' | 'unknown';
19
+ export interface FlowResult {
20
+ /** segment id → 흐름 방향. */
21
+ directions: Map<string, FlowDir>;
22
+ /** anchor 불일치로 충돌한 segment id 들. */
23
+ conflicts: string[];
24
+ }
25
+ /**
26
+ * 연결된 segment 들의 흐름 방향을 anchor 에서 전파해 추론.
27
+ * @param tolerance 끝점 일치(연결) 판정 거리 (scene unit). default 5.
28
+ * @param hubs joint 처럼 *여러 컨베이어를 잇는 허브* — 한 그룹의 위치들은 단일
29
+ * 연결점으로 병합돼 그 사이로 흐름이 전파/보존된다 (2-way joint=통과, 3+=분기).
30
+ * @param anchorTolerance anchor(소스/싱크)→세그먼트 끝점 매칭 거리. 소스(generator)는
31
+ * 컨베이어와 *면 overlap*(~halfSpan) 으로 연결돼 점거리가 클 수 있어 endpoint
32
+ * 클러스터(tolerance)보다 넉넉해야 한다. default = tolerance.
33
+ */
34
+ /** hub 입력 — 위치 그룹(기존) 또는 source/sink 성격을 가진 hub.
35
+ * kind 'sink' = drain(연결 세그먼트 모두 hub 로 흘러듦), 'source' = spring(모두 나감).
36
+ * joint 가 chute(sink)/generator(source) 를 footprint 에 품으면 그 kind 로 표시. */
37
+ export type FlowHub = ReadonlyArray<Vec2> | {
38
+ positions: ReadonlyArray<Vec2>;
39
+ kind?: 'source' | 'sink';
40
+ };
41
+ export declare function inferFlowDirections(segments: ReadonlyArray<FlowSegmentInput>, anchors: ReadonlyArray<FlowAnchor>, tolerance?: number, hubs?: ReadonlyArray<FlowHub>, anchorTolerance?: number): FlowResult;
42
+ //# sourceMappingURL=flow-orientation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-orientation.d.ts","sourceRoot":"","sources":["../../src/flow/flow-orientation.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,IAAI,CAAA;IACX,GAAG,EAAE,IAAI,CAAA;CACV;AAED,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,IAAI,CAAA;IACT,+DAA+D;IAC/D,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;CACxB;AAED,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,oCAAoC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAMD;;;;;;;;GAQG;AACH;;2EAE2E;AAC3E,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG;IAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,CAAA;AAExG,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,EAClC,SAAS,SAAI,EACb,IAAI,GAAE,aAAa,CAAC,OAAO,CAAM,EACjC,eAAe,SAAY,GAC1B,UAAU,CAyPZ"}
@@ -0,0 +1,5 @@
1
+ export declare const FLOW_TRACE = false;
2
+ export declare function ftrace(...args: unknown[]): void;
3
+ /** 컴포넌트 식별자 — state.id 우선, refid fallback. */
4
+ export declare function ftId(c: any): string;
5
+ //# sourceMappingURL=flow-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-trace.d.ts","sourceRoot":"","sources":["../../src/flow/flow-trace.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,UAAU,QAAQ,CAAA;AAK/B,wBAAgB,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAM/C;AAED,8CAA8C;AAC9C,wBAAgB,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAEnC"}
@@ -0,0 +1,16 @@
1
+ export { anchorsConnect, deliversInto, matchOutbounds, pointInRotatedRect, rayAbsDistanceToRect, straightSegmentTopology, straightSegmentEndpoints, arcSegmentTopology, straightSegmentMultiInbound, type Anchor2D, type SegmentTopology, type SegmentBounds, type MatchTolerance } from './segment-topology.js';
2
+ export { rectFaceAnchors, type FaceAnchor } from './face-anchors.js';
3
+ export { buildFlowGraph, nextHops, nextHop, nextHopsToAny, nextHopsToAnyDetailed, canReach, reachableSinks, reachableByOutbound, type FlowGraph, type FlowGraphNode, type NextHopCandidate } from './flow-graph.js';
4
+ export { validate as validateFlowGraph } from './flow-graph-validator.js';
5
+ export type { IssueSeverity, IssueCode, ValidateOptions, FlowGraphIssue } from './flow-graph-validator.js';
6
+ export { inferDownstreamId, collectAdjacentSegments } from './auto-route.js';
7
+ export { enumerateDataScenarios, type DataScenario } from './flow-introspection.js';
8
+ export { inferFlowDirections, type FlowAnchor, type FlowSegmentInput, type FlowDir, type Vec2 } from './flow-orientation.js';
9
+ export { computeFlowMap, flowReverseFor } from './flow-orientation-coordinator.js';
10
+ export { ftrace, ftId } from './flow-trace.js';
11
+ export { next, downstream, reachableDestinations, reachableDestinationsFrom, reachableDestinationsWeightedFrom, pickWeightedDestination, graphFor, validate, FlowEngine, type RoutingResult, type WeightedDestination } from './flow-engine.js';
12
+ export { flowGraphFor, resolveNextHop, flowGraphIssues, sinksForDestination, componentForNode, nodeIdOf, allDestinations, applyPolicy, isRoutingTarget, type RoutingTarget, type BalancingPolicy, type BalancingState } from './flow-graph-coordinator.js';
13
+ export { findNearestWithCapability, isGeometricHost, type CapabilityMatch } from './capability-inference.js';
14
+ export { default as FlowNode, isFlowNode } from './flow-node.js';
15
+ export type { Port, SlotInfo, Vec3 } from './flow-node.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGpE,OAAO,EACL,cAAc,EACd,QAAQ,EACR,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACzE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1G,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5H,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAI9C,OAAO,EACL,IAAI,EACJ,UAAU,EACV,qBAAqB,EACrB,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAI5G,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA"}