@hatiolab/things-scene 10.0.0-beta.98 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/CHANGELOG.md +65 -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 +39 -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 +26 -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 +13 -5
  193. package/dist-types/things-scene/index.d.ts.map +1 -1
  194. package/dist-types/things-scene/scene.d.ts +115 -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 +2 -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/renderer-manager.d.ts +6 -0
  225. package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
  226. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +0 -1
  227. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -1
  228. package/dist-types/threed/material-bank.d.ts +42 -0
  229. package/dist-types/threed/material-bank.d.ts.map +1 -0
  230. package/dist-types/threed/material-variant.d.ts +43 -0
  231. package/dist-types/threed/material-variant.d.ts.map +1 -0
  232. package/dist-types/threed/real-object-dom-element.d.ts +8 -0
  233. package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
  234. package/dist-types/threed/real-object-dom-texture.d.ts +0 -1
  235. package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
  236. package/dist-types/threed/real-object-mesh.d.ts +0 -1
  237. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  238. package/dist-types/threed/real-object-plane-2d.d.ts +0 -1
  239. package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
  240. package/dist-types/threed/real-object-sprite.d.ts +0 -1
  241. package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
  242. package/dist-types/threed/real-object-text.d.ts.map +1 -1
  243. package/dist-types/threed/real-object.d.ts +104 -3
  244. package/dist-types/threed/real-object.d.ts.map +1 -1
  245. package/dist-types/threed/texture/fillstyle-texture.d.ts +13 -2
  246. package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -1
  247. package/dist-types/threed/three-capability.d.ts +8 -0
  248. package/dist-types/threed/three-capability.d.ts.map +1 -1
  249. package/dist-types/threed/threed-enabled.d.ts +5 -0
  250. package/dist-types/threed/threed-enabled.d.ts.map +1 -0
  251. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  252. package/dist-types/threed/utils/polygon-shape.d.ts +21 -0
  253. package/dist-types/threed/utils/polygon-shape.d.ts.map +1 -0
  254. package/dist-types/tracker/tracker.d.ts +57 -0
  255. package/dist-types/tracker/tracker.d.ts.map +1 -0
  256. package/dist-types/transfer/carrier-line-capability.d.ts +95 -0
  257. package/dist-types/transfer/carrier-line-capability.d.ts.map +1 -0
  258. package/dist-types/transfer/index.d.ts +13 -3
  259. package/dist-types/transfer/index.d.ts.map +1 -1
  260. package/dist-types/transfer/pickup-helpers.d.ts +11 -1
  261. package/dist-types/transfer/pickup-helpers.d.ts.map +1 -1
  262. package/dist-types/transfer/tracer.d.ts +35 -0
  263. package/dist-types/transfer/tracer.d.ts.map +1 -0
  264. package/dist-types/transfer/transfer-helpers.d.ts +18 -0
  265. package/dist-types/transfer/transfer-helpers.d.ts.map +1 -0
  266. package/dist-types/transfer/transfer.d.ts +132 -43
  267. package/dist-types/transfer/transfer.d.ts.map +1 -1
  268. package/dist-types/transfer/transferable-mixin.d.ts +275 -0
  269. package/dist-types/transfer/transferable-mixin.d.ts.map +1 -0
  270. package/dist-types/transfer/types.d.ts +75 -2
  271. package/dist-types/transfer/types.d.ts.map +1 -1
  272. package/dist-types/transition/transition-effect.d.ts +21 -1
  273. package/dist-types/transition/transition-effect.d.ts.map +1 -1
  274. package/dist-types/types/capability.d.ts +65 -0
  275. package/dist-types/types/capability.d.ts.map +1 -0
  276. package/package.json +2 -2
  277. package/things-scene-min.js +11 -11
  278. package/things-scene-min.js.map +1 -1
  279. package/things-scene-transfer.mjs +3 -2
  280. package/things-scene.mjs +3 -3
  281. package/things-scene.mjs.map +1 -1
  282. package/dist-types/transfer/container-capacity.d.ts.map +0 -1
@@ -1,44 +1,50 @@
1
1
  export interface LagMonitorConfig {
2
- tag: string;
3
- timestampField: string;
4
2
  warnThreshold?: number;
5
3
  criticalThreshold?: number;
6
4
  }
7
- export type LagTrend = 'stable' | 'increasing' | 'decreasing' | 'spike';
8
5
  export type LagLevel = 'normal' | 'warn' | 'critical';
9
6
  export interface LagStats {
10
- tag: string;
11
- currentDelta: number;
7
+ current: number;
12
8
  baseline: number;
13
9
  drift: number;
14
- driftAvg: number;
15
- driftMax: number;
16
- trend: LagTrend;
10
+ min: number;
11
+ max: number;
17
12
  sampleCount: number;
18
13
  level: LagLevel;
19
14
  }
20
15
  export declare class DataLagTracker {
21
- private _monitors;
16
+ private _current;
17
+ private _min;
18
+ private _max;
19
+ private _count;
20
+ private _baseline;
21
+ private _baselineSet;
22
+ private _baselineSum;
23
+ private _baselineCount;
24
+ private _warn;
25
+ private _critical;
26
+ private _lastLevel;
22
27
  private _disposed;
23
- /** level 변경 시 콜백 (evaluateAll 호출 시 트리거) */
24
- onLevelChange?: (tag: string, level: LagLevel, stats: LagStats) => void;
25
- configure(config: LagMonitorConfig | LagMonitorConfig[]): void;
26
- isMonitored(tag: string): boolean;
28
+ /** level 변경 시 콜백 (evaluate() 호출 시 트리거). */
29
+ onLevelChange?: (level: LagLevel, stats: LagStats) => void;
30
+ /** 임계값 설정 (선택). */
31
+ configure(config?: LagMonitorConfig | LagMonitorConfig[]): void;
27
32
  /**
28
- * 패스 진입점.
29
- * 대상 태그가 아니면 Map.get() 1회로 즉시 리턴.
33
+ * 발행 시각(epoch-ms)을 받아 갭을 기록.
34
+ * `record(ts)` 또는 `record(tag, ts)` 허용 — tag 인자는 무시(단일 채널 집계).
30
35
  */
31
- recordIfMonitored(tag: string, data: any): void;
32
- getStats(tag: string): LagStats | null;
33
- getAllStats(): LagStats[];
34
- /**
35
- * UI 갱신 주기에 호출. threshold 판정 + onLevelChange 콜백 발생.
36
- */
37
- evaluateAll(): void;
36
+ record(a: any, b?: any): void;
37
+ getStats(): LagStats;
38
+ /** UI 갱신 주기 호출 — level 변경 시 콜백 발생. */
39
+ evaluate(): void;
40
+ reset(): void;
38
41
  dispose(): void;
39
- private _extractField;
40
- private _getRecentDrifts;
41
- private _calcTrend;
42
42
  private _calcLevel;
43
43
  }
44
+ /**
45
+ * 모듈 레벨 싱글톤 — frameClock 패턴. `globalThis.scene.dataLagTracker` 로 노출되어
46
+ * 모니터 익스텐션/오버레이/구독 핸들러가 동일 인스턴스를 공유한다.
47
+ * (app.lagTracker 도 이 싱글톤을 가리킨다.)
48
+ */
49
+ export declare const dataLagTracker: DataLagTracker;
44
50
  //# sourceMappingURL=data-lag-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-lag-tracker.d.ts","sourceRoot":"","sources":["../../src/diagnostics/data-lag-tracker.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAA;AACvE,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAErD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,QAAQ,CAAA;CAChB;AAkBD,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAQ;IAEzB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAEvE,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GAAG,IAAI;IAuB9D,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IA4B/C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA4CtC,WAAW,IAAI,QAAQ,EAAE;IASzB;;OAEG;IACH,WAAW,IAAI,IAAI;IAcnB,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,UAAU;IA8BlB,OAAO,CAAC,UAAU;CAKnB"}
1
+ {"version":3,"file":"data-lag-tracker.d.ts","sourceRoot":"","sources":["../../src/diagnostics/data-lag-tracker.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAErD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,QAAQ,CAAA;CAChB;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAQ;IAEzB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAE1D,mBAAmB;IACnB,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GAAG,IAAI;IAO/D;;;OAGG;IACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;IAsB7B,QAAQ,IAAI,QAAQ;IAuBpB,sCAAsC;IACtC,QAAQ,IAAI,IAAI;IAShB,KAAK,IAAI,IAAI;IAYb,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,UAAU;CAKnB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
@@ -22,6 +22,9 @@ interface ComponentTreeNode {
22
22
  name?: string;
23
23
  hidden?: boolean;
24
24
  clazz?: string;
25
+ /** 부모의 *_items (Holdable mixin)_* 자식 — _components 자식과 직교 (Phase 7.2,
26
+ * 2026-06-18). UI 가 별도 marker (icon / color) 로 구분 가능. */
27
+ isItem?: boolean;
25
28
  }
26
29
  interface ComponentInfo {
27
30
  model: object;
@@ -39,6 +42,17 @@ interface ComponentInfo {
39
42
  isContainer: boolean;
40
43
  is3dMode?: boolean;
41
44
  hidden?: boolean;
45
+ /** Holdable mixin 자손 holder 가 _items 보유 시 — runtime carrier 통합 발견.
46
+ * Container-Component 자식 트리 (_components) 와 직교한 별도 자식 시스템. */
47
+ items?: ComponentTreeNode[];
48
+ /** SlottedHolder duck (Phase 7.3, 2026-06-18) — slot 별 점유 상태.
49
+ * duck 자격 = slotIds + occupiedSlotIds + emptySlotIds + hasCarrierAt 의 4 메서드.
50
+ * panel UI 가 *_holder 의 slot 상태 시각화_* (occupied / empty / capacity ratio). */
51
+ slottedHolder?: {
52
+ slotIds: string[];
53
+ occupiedSlotIds: string[];
54
+ emptySlotIds: string[];
55
+ };
42
56
  }
43
57
  declare class SceneInspector {
44
58
  private _scenes;
@@ -91,8 +105,35 @@ declare class SceneInspector {
91
105
  /**
92
106
  * 특정 컴포넌트의 상세 정보를 반환한다.
93
107
  * componentId가 'root'/'__root__'이면 model_layer 정보를 반환.
108
+ *
109
+ * @param options.includeItems — true 시 _items 자식 시각화 포함 (Phase 7.2).
110
+ * default = false: 자식 tree 의 *_혼동 회피 + 성능 회피_* (carrier 다수 시 매
111
+ * query 마다 _items 자식 모두 traverse). carrier 통합 발견 필요 시 별도 query
112
+ * (`getItems`) 또는 옵션 활성.
94
113
  */
95
- getComponentInfo(componentId: string, sceneIndex?: number): ComponentInfo | null;
114
+ getComponentInfo(componentId: string, sceneIndex?: number, options?: {
115
+ includeItems?: boolean;
116
+ }): ComponentInfo | null;
117
+ /**
118
+ * 컴포넌트의 items list 별도 query — Inspector panel 의 carrier 통합 발견.
119
+ * 자식 트리 (`_components`) 와 직교한 자식 시스템. Holdable mixin 자손만 해당.
120
+ */
121
+ getItems(componentId: string, sceneIndex?: number): ComponentTreeNode[];
122
+ /**
123
+ * 컴포넌트의 records snapshot — `holder.data` 표준 entry (Phase D-7, 2026-06-20).
124
+ *
125
+ * 사용자 vision: *_FlowNode 의 items 는 결국 해당 컴포넌트의 data 로 import/export_*.
126
+ * FlowNode 자손은 ItemsDataBinding 통해 records[] 자동 export (`_items → SlotRecord[]`).
127
+ * RecordStorage 자손은 state.data 직접 반환 (records-only path).
128
+ *
129
+ * monitor-extension panel 측이 이 query 통해 holder 의 records 시각화 — DataSource
130
+ * bind / WMS export 와 같은 schema (`SlotRecord[]`).
131
+ *
132
+ * Inspector 측 carrier 트리 (`getItems` — 인스턴스 list) 와 직교:
133
+ * - getItems → carrier 인스턴스 list (시각 / 도메인)
134
+ * - getRecords → records list (데이터 / 외부 bind 어휘)
135
+ */
136
+ getRecords(componentId: string, sceneIndex?: number): any[];
96
137
  /**
97
138
  * 컴포넌트를 선택한다 (root.selected 설정).
98
139
  * 3D 모드에서 기즈모 attach, 2D 모드에서 selection-layer 연동.
@@ -151,8 +192,15 @@ declare class SceneInspector {
151
192
  private _safeBounds;
152
193
  private _safeClone;
153
194
  private _safeValue;
154
- /** TransferLog 의 entries + stats snapshot. */
195
+ /**
196
+ * TransferLog 의 aggregated snapshot — Step 1 정공 (2026-06-20).
197
+ *
198
+ * raw 보관 폐기 후 entries 는 항상 빈 array (deprecated, back-compat). 진정한 source =
199
+ * stats / flows / targetCounts / rejectReasonCounts (모두 aggregated O(1)). carrier 별
200
+ * raw timeline 이 필요한 도구는 extension/devtools 가 subscribe 로 자체 누적.
201
+ */
155
202
  transferLog(): {
203
+ /** @deprecated raw 보관 폐기. 항상 빈 array. */
156
204
  entries: any[];
157
205
  stats: {
158
206
  total: number;
@@ -162,6 +210,9 @@ declare class SceneInspector {
162
210
  avgTransferDurationMs: number;
163
211
  byPhase: Record<string, number>;
164
212
  };
213
+ flows: Record<string, number>;
214
+ targetCounts: Record<string, number>;
215
+ rejectReasonCounts: Record<string, number>;
165
216
  } | null;
166
217
  /** ReservationTable 의 active reservations + groupings. */
167
218
  reservations(): {
@@ -187,7 +238,7 @@ declare class SceneInspector {
187
238
  contractSummary(componentId: string, sceneIndex?: number): {
188
239
  type: string;
189
240
  id: string;
190
- isCarriable?: boolean;
241
+ isItem?: boolean;
191
242
  isPickable?: boolean;
192
243
  isMover?: boolean;
193
244
  isHolder?: boolean;
@@ -195,6 +246,88 @@ declare class SceneInspector {
195
246
  pickupFrames?: any[];
196
247
  slots?: any[];
197
248
  } | null;
249
+ /**
250
+ * Capability discovery — 컴포넌트 인스턴스의 class chain (constructor + 상위
251
+ * prototype) 을 따라가며 static `capabilities` 의 합집합 반환. 컴포넌트가 자기
252
+ * 입으로 선언한 capability 만 사용 (외부 duck-typing 아님).
253
+ *
254
+ * 사용:
255
+ * class Foo extends Component { static capabilities = [...Component.capabilities, 'Foo'] }
256
+ * inspector.getComponentCapabilities(componentId) → ['Foo']
257
+ */
258
+ getComponentCapabilities(componentId: string, sceneIndex?: number): string[];
259
+ /**
260
+ * 단일 컴포넌트의 capability 목록 + 각 capability 의 정적 metadata + 구현자
261
+ * self-description 의 결합 report. 도구가 "이 컴포넌트의 작동 방식 전모" 패널을
262
+ * 그리는 데이터.
263
+ *
264
+ * 각 항목:
265
+ * { name, description, methods, models, sourceFile, instance: { policies, config, ... } }
266
+ *
267
+ * - description/methods/models/sourceFile: capability 자체의 정적 metadata
268
+ * (registerCapabilityMeta 로 등록된 것)
269
+ * - instance: 컴포넌트가 describeCapability(name) 메서드 노출 시 그 결과 — 자기
270
+ * 특화 (정책 / 설정 / 통계)
271
+ */
272
+ componentCapabilityReports(componentId: string, sceneIndex?: number): Promise<any[]>;
273
+ /**
274
+ * System topology — 모든 컴포넌트 + capability-mediated 연결을 한 번에 반환.
275
+ * Monitor 의 Topology panel 이 그래프 한 장 그리는 데 사용.
276
+ *
277
+ * nodes: { id, type, bounds, capabilities }[]
278
+ * edges: { source, target, via }[]
279
+ * via = 'routing-capability' (명시 outbound) | 'data-binding' | 'parent-child'
280
+ */
281
+ systemTopology(sceneIndex?: number, options?: {
282
+ force?: boolean;
283
+ }): Promise<{
284
+ nodes: any[];
285
+ edges: any[];
286
+ issues?: any[];
287
+ }>;
288
+ /**
289
+ * Topology panel 의 *동적 layer* 데이터 — flow (transferLog 의 carrier 이동량) +
290
+ * utilization (각 컴포넌트의 점유율). 1초 polling 부담을 줄이려고 한번에 묶어 반환.
291
+ *
292
+ * flows: { "source>target": count }
293
+ * utilization: { id: { occupied, capacity, ratio } }
294
+ * conflicts: { id: count } // 최근 시간창 안 충돌 카운트
295
+ * distribution: { id: { count, destination?, share?, deviation? } }
296
+ * — Flow Balancing B5: target 별 carrier 도착 누적 + destination 그룹화.
297
+ * 같은 destination 그룹 내 sink 들의 균등성 시각화. share = 그룹 내 비율,
298
+ * deviation = 평균 대비 편차 (0 = 균등, 1 = 단독 점유).
299
+ */
300
+ topologyStats(sceneIndex?: number): Promise<{
301
+ flows: Record<string, number>;
302
+ utilization: Record<string, {
303
+ occupied: number;
304
+ capacity?: number;
305
+ ratio?: number;
306
+ }>;
307
+ conflicts: Record<string, number>;
308
+ distribution: Record<string, {
309
+ count: number;
310
+ destination?: string;
311
+ share?: number;
312
+ deviation?: number;
313
+ }>;
314
+ }>;
315
+ /**
316
+ * 단일 carrier 의 *transfer 여정* — transferLog 에서 그 carrierId 의 entries 를
317
+ * 시간순 정렬해 source → target sequence 반환. Topology 의 Journey 시각화 용.
318
+ *
319
+ * 응답:
320
+ * { carrierId, steps: [{ from, to, at, phase, slotId?, rejectReason? }] }
321
+ */
322
+ carrierJourney(carrierId: string, sceneIndex?: number): Promise<{
323
+ carrierId: string;
324
+ steps: any[];
325
+ }>;
326
+ /**
327
+ * 현재 active 한 carrier id 목록 — Topology UI 의 carrier picker 에 사용.
328
+ * transferLog 에서 *최근 시간창* 안의 unique carrier id 들.
329
+ */
330
+ activeCarrierIds(sceneIndex?: number, limit?: number): Promise<string[]>;
198
331
  }
199
332
  export declare const inspector: SceneInspector;
200
333
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/inspector.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE9E,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAG7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,GAAG,CAAA;IACT,KAAK,EAAE,GAAG,CAAA;IACV,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,cAAM,cAAc;IAClB,OAAO,CAAC,OAAO,CAAqB;IAEpC;;;OAGG;IACH,aAAa,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAO;IAO3D,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,eAAe,CAAmD;IAC1E;;;OAGG;IACH,wBAAwB,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAO;IAEhG;;;OAGG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,SAAI,GAAG,OAAO;IAwBxE,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAM1B;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAU5B;;OAEG;IACH,SAAS,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE;IAkBxF;;OAEG;IACH,gBAAgB,CAAC,UAAU,SAAI,GAAG,iBAAiB,EAAE;IAarD;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,iBAAiB,EAAE;IAmBtE;;;OAGG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,aAAa,GAAG,IAAI;IAsC3E;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO;IAmB7D;;OAEG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,SAAI,GAAG,OAAO;IAyB3F;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO;IAkBpD;;;OAGG;IACH,cAAc,CAAC,UAAU,SAAI,GAAG,GAAG;IAiBnC;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO;IAkB1D;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,GAAG;IAetD;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,GAAG;IAevD;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,iBAAiB,EAAE;IAgCpE;;;OAGG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,MAAM,EAAE;IAiB/D;;;OAGG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,UAAU,GAAG,IAAI;IAkDrE,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,UAAU;IAkBlB,8CAA8C;IAC9C,WAAW,IAAI;QACb,OAAO,EAAE,GAAG,EAAE,CAAA;QACd,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,qBAAqB,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAA;KACvJ,GAAG,IAAI;IAYR,0DAA0D;IAC1D,YAAY,IAAI;QACd,OAAO,EAAE,MAAM,CAAA;QACf,GAAG,EAAE,GAAG,EAAE,CAAA;QACV,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;KAClC,GAAG,IAAI;IA0BR,gCAAgC;IAChC,SAAS,IAAI;QACX,OAAO,EAAE,MAAM,CAAA;QACf,GAAG,EAAE,GAAG,EAAE,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACnC,GAAG,IAAI;IA8BR;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG;QACpD,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;QACpB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;KACd,GAAG,IAAI;CAiCT;AAED,eAAO,MAAM,SAAS,gBAAuB,CAAA"}
1
+ {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/inspector.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,52 @@
1
+ import type { LoadEntry, LoadStats, LoadPhase, PhaseRecord } from './load-tracker.js';
1
2
  import type { LoadTracker } from './load-tracker.js';
2
- import type { DataLagTracker } from './data-lag-tracker.js';
3
+ import type { DataLagTracker, LagStats } from './data-lag-tracker.js';
4
+ /** 매 tick 렌더러에 전달되는 데이터 스냅샷(코어가 tracker 에서 조립). */
5
+ export interface LoadingOverlayState {
6
+ phase: LoadPhase;
7
+ isComplete: boolean;
8
+ stats: LoadStats;
9
+ phaseHistory: PhaseRecord[];
10
+ pending: LoadEntry[];
11
+ entries: LoadEntry[];
12
+ /** 데이터 래깅 통계 — lagTracker 미제공 또는 표본 없으면 undefined. */
13
+ lag?: LagStats;
14
+ }
15
+ /** 렌더러가 오버레이 수명주기를 제어하는 훅(닫기/취소 버튼 등). */
16
+ export interface LoadingOverlayHost {
17
+ hide(): void;
18
+ cancel(): void;
19
+ }
20
+ /**
21
+ * 로딩 오버레이 렌더러 — DOM 표현을 전담. 코어(LoadingOverlay)가 build()로 1회 DOM 을 만들게 하고,
22
+ * 표시 중 매 tick update(state)로 갱신한다. 호스트는 이 인터페이스 구현체를 주입해 형태를 커스터마이즈.
23
+ */
24
+ export interface LoadingOverlayRenderer {
25
+ /** container(전체 크기 오버레이 레이어) 안에 DOM 을 1회 구성. host 로 닫기/취소 연결. */
26
+ build(container: HTMLElement, host: LoadingOverlayHost): void;
27
+ /** 현재 상태로 DOM 갱신(표시 중 500ms 주기). */
28
+ update(state: LoadingOverlayState): void;
29
+ /** 정리(선택). */
30
+ destroy?(): void;
31
+ }
3
32
  export declare class LoadingOverlay {
4
33
  private _tracker?;
5
34
  private _lagTracker?;
6
35
  private _container?;
36
+ private _built;
7
37
  private _targetElement?;
8
38
  private _updateTimer?;
9
39
  private _visible;
10
40
  private _manualOpen;
11
- private _headerEl?;
12
- private _progressFillEl?;
13
- private _progressTextEl?;
14
- private _phaseListEl?;
15
- private _phaseRenderedCount;
16
- private _pendingListEl?;
17
- private _lagSectionEl?;
18
- private _elapsedEl?;
41
+ private _renderer;
42
+ /**
43
+ * 로딩 취소 콜백. 호스트(앱)가 "무엇이 취소인지"를 정의한다.
44
+ * 미지정 시 window.history.back()(뒤로가기)으로 폴백한다.
45
+ */
46
+ onCancel?: () => void;
47
+ /** 표현 렌더러 — 교체 시 다음 표시에서 새 렌더러로 재구성. 기본은 DefaultLoadingOverlayRenderer. */
48
+ get renderer(): LoadingOverlayRenderer;
49
+ set renderer(r: LoadingOverlayRenderer);
19
50
  attach(targetElement: HTMLElement, tracker?: LoadTracker, lagTracker?: DataLagTracker): void;
20
51
  toggle(): void;
21
52
  show(): void;
@@ -23,19 +54,45 @@ export declare class LoadingOverlay {
23
54
  destroy(): void;
24
55
  get isVisible(): boolean;
25
56
  get isAttached(): boolean;
57
+ private _teardownContainer;
58
+ private get _host();
26
59
  private _show;
27
60
  private _hide;
28
61
  private _update;
62
+ /** tracker 들에서 렌더러가 소비할 상태 스냅샷을 조립(lagTracker 는 evaluate 부작용 포함). */
63
+ private _assembleState;
64
+ /** 로딩 취소 — 오버레이를 닫고, onCancel 지정 시 그것을, 아니면 브라우저 뒤로가기. */
65
+ private _cancel;
66
+ }
67
+ export declare class DefaultLoadingOverlayRenderer implements LoadingOverlayRenderer {
68
+ private _headerEl?;
69
+ private _progressFillEl?;
70
+ private _progressTextEl?;
71
+ private _phaseListEl?;
72
+ private _phaseRenderedCount;
73
+ private _pendingListEl?;
74
+ private _lagSectionEl?;
75
+ private _footerRowEl?;
76
+ build(container: HTMLElement, host: LoadingOverlayHost): void;
77
+ update(state: LoadingOverlayState): void;
78
+ destroy(): void;
29
79
  private _updateProgress;
30
80
  private _updatePhaseList;
31
81
  private _updateAssetList;
32
82
  private _updateLagDisplay;
33
83
  private _renderHistorySummary;
84
+ /**
85
+ * 게이지 좌표 계산 — baseline 은 항상 트랙 중심(50%), 좌우 대칭 스케일로 매핑.
86
+ * 반경 R = 중심에서 더 먼 극단까지 거리, 최소 ±1초 floor.
87
+ * cur<baseline→왼쪽(leading), cur>baseline→오른쪽(lagging).
88
+ */
89
+ private _lagGauge;
90
+ /** 중심(50%)→cur 채움 막대의 left/width CSS. */
91
+ private _lagFill;
34
92
  private _renderLagSection;
35
93
  private _createPendingRow;
36
94
  private _updatePendingRow;
37
95
  private _updateLagSection;
38
96
  private _shortUrl;
39
- private _buildDOM;
40
97
  }
41
98
  //# sourceMappingURL=loading-overlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loading-overlay.d.ts","sourceRoot":"","sources":["../../src/diagnostics/loading-overlay.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,uBAAuB,CAAA;AA6BrE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,WAAW,CAAQ;IAG3B,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,cAAc,GAAG,IAAI;IAsC5F,MAAM,IAAI,IAAI;IAUd,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAKZ,OAAO,IAAI,IAAI;IAYf,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAID,OAAO,CAAC,KAAK;IA4Bb,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,OAAO;IAkCf,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;CAsGlB"}
1
+ {"version":3,"file":"loading-overlay.d.ts","sourceRoot":"","sources":["../../src/diagnostics/loading-overlay.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,12 @@ interface ResidentData {
8
8
  }>;
9
9
  }
10
10
  declare class SceneMetrics {
11
+ /**
12
+ * Opt-in 게이트. 디폴트 OFF — Chrome 확장이 없을 때 hot path 측정 비용 0.
13
+ * 확장의 injected.js 가 scene 발견 시 enable() 호출.
14
+ * 확장 미설치 사용자는 카운터 증가 / performance.now() / FrameClock 측정 모두 건너뜀.
15
+ */
16
+ enabled: boolean;
11
17
  drawCount: number;
12
18
  drawTimeSum: number;
13
19
  drawTimeLast: number;
@@ -18,6 +24,10 @@ declare class SceneMetrics {
18
24
  private _lastSnapshotTime;
19
25
  private _frameCount;
20
26
  private _getResidents;
27
+ /** 측정 활성화 — 누적된 stale 카운터를 리셋하고 게이트를 켠다. */
28
+ enable(): void;
29
+ /** 측정 비활성화 — hot path 다시 0 비용. */
30
+ disable(): void;
21
31
  /**
22
32
  * Component/Scene/ReferenceMap에서 resident 데이터를 제공하는 함수를 등록한다.
23
33
  * things-scene/index.ts에서 모든 모듈 로드 후 1회 호출.
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/diagnostics/metrics.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACpB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,0BAA0B,EAAE,MAAM,CAAA;IAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7D;AAED,cAAM,YAAY;IAEhB,SAAS,SAAI;IACb,WAAW,SAAI;IACf,YAAY,SAAI;IAGhB,eAAe,SAAI;IAGnB,YAAY,SAAI;IAGhB,QAAQ,SAAI;IACZ,SAAS,SAAI;IAGb,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,WAAW,CAAI;IAGvB,OAAO,CAAC,aAAa,CAAoC;IAEzD;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,YAAY;IAI5C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACH,QAAQ;;;;;gBA/C6B,MAAM;kBAAQ,MAAM;;;;;;;;;;CAwF1D;AAED,eAAO,MAAM,OAAO,cAAqB,CAAA"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/diagnostics/metrics.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACpB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,0BAA0B,EAAE,MAAM,CAAA;IAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7D;AAED,cAAM,YAAY;IAChB;;;;OAIG;IACH,OAAO,UAAQ;IAGf,SAAS,SAAI;IACb,WAAW,SAAI;IACf,YAAY,SAAI;IAGhB,eAAe,SAAI;IAGnB,YAAY,SAAI;IAGhB,QAAQ,SAAI;IACZ,SAAS,SAAI;IAGb,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,WAAW,CAAI;IAGvB,OAAO,CAAC,aAAa,CAAoC;IAEzD,4CAA4C;IAC5C,MAAM,IAAI,IAAI;IAad,kCAAkC;IAClC,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,YAAY;IAI5C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACH,QAAQ;;;;;gBAzE6B,MAAM;kBAAQ,MAAM;;;;;;;;;;CAsH1D;AAED,eAAO,MAAM,OAAO,cAAqB,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { type SegmentTopology, type SegmentBounds, type MatchTolerance } from './segment-topology.js';
2
+ interface SegmentLike {
3
+ state?: {
4
+ id?: string;
5
+ };
6
+ parent?: any;
7
+ rootModel?: any;
8
+ root?: any;
9
+ getSegmentTopology(): SegmentTopology;
10
+ }
11
+ /**
12
+ * Component tree 의 *_getSegmentTopology 를 노출하는 component_* 모두 수집.
13
+ * 자기 자신 제외. id 없는 컴포넌트 제외 (= downstreamRef target 으로 사용 불가).
14
+ *
15
+ * traversal 시작점 — *_self.parent_* (= model-layer 등 sibling 영역). 만약
16
+ * sibling 만으로 부족하면 *_rootModel 또는 root 의 재귀 descend_* 까지. things-
17
+ * scene 의 root 는 RootContainer 라 *_.components 가 layer 들_*만 — 우리 segment
18
+ * 는 model-layer 자식 이므로 sibling 또는 재귀 필요.
19
+ */
20
+ export declare function collectAdjacentSegments(startRoot: any, exclude: any): Array<{
21
+ id: string;
22
+ topology: SegmentTopology;
23
+ bounds?: SegmentBounds;
24
+ }>;
25
+ /**
26
+ * 자기 outbound 의 *_가장 가까운 downstream segment id_*. inbound 가진 후보들
27
+ * 만 매칭. multi-outbound segment 의 경우 outbound[0] 만 — 분기 segment 는
28
+ * 자체 logic 으로 override 권장.
29
+ *
30
+ * traversal 시작점: self.parent (= 직접 sibling 영역) 우선, 부재 시 rootModel
31
+ * → root fallback. RootContainer 의 .components 가 layer 들이라 *_재귀 descend_*
32
+ * 까지 처리하는 collectAdjacentSegments 사용.
33
+ */
34
+ export declare function inferDownstreamId(self: SegmentLike, tolerance?: MatchTolerance): string | null;
35
+ export {};
36
+ //# sourceMappingURL=auto-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-route.d.ts","sourceRoot":"","sources":["../../src/flow/auto-route.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAkB,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAErH,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,IAAI,eAAe,CAAA;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,GAAG,GACX,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC,CAmC1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,SAAS,CAAC,EAAE,cAAc,GACzB,MAAM,GAAG,IAAI,CAwBf"}
@@ -0,0 +1,19 @@
1
+ export interface CapabilityMatch {
2
+ id: string;
3
+ component: any;
4
+ distance: number;
5
+ }
6
+ /**
7
+ * 기하 바인딩 대상 자격 — board 좌표 거리 측정(distanceToBoardPoint) 가능한 노드. capability 무관의
8
+ * *기하* 자격만 판정(그래프 노드 강제 수집 등에 사용). capability 한정은 findNearestWithCapability 가.
9
+ */
10
+ export declare function isGeometricHost(c: any): boolean;
11
+ /**
12
+ * root 트리에서 `capabilityName` 을 선언(@capability)한 가장 가까운 기하 host 를 찾는다.
13
+ * 거리 = host.distanceToBoardPoint(entry). 미발견 시 null. exclude 는 자기 자신 제외.
14
+ */
15
+ export declare function findNearestWithCapability(root: any, capabilityName: string, entry: {
16
+ x: number;
17
+ y: number;
18
+ }, exclude?: any): CapabilityMatch | null;
19
+ //# sourceMappingURL=capability-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-inference.d.ts","sourceRoot":"","sources":["../../src/flow/capability-inference.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,GAAG,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAE/C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,OAAO,CAAC,EAAE,GAAG,GACZ,eAAe,GAAG,IAAI,CAgBxB"}
@@ -0,0 +1,26 @@
1
+ /** XZ 평면 anchor (scene world 좌표; Y=floor-level 무시). */
2
+ export interface FaceAnchor {
3
+ worldPos: {
4
+ x: number;
5
+ z: number;
6
+ };
7
+ /** 진행 방향 단위 vector (carrier 속도 vector 와 일치). */
8
+ direction: {
9
+ x: number;
10
+ z: number;
11
+ };
12
+ /** 면 절반 길이 — segment 겹침 판정용. */
13
+ halfSpan?: number;
14
+ }
15
+ /**
16
+ * state(left/top/width/height/rotation) → 4면 anchor. kind='inbound' 면 inward(받는 면),
17
+ * 'outbound' 면 outward(내보내는 면). 회전 반영.
18
+ */
19
+ export declare function rectFaceAnchors(state: {
20
+ left?: number;
21
+ top?: number;
22
+ width?: number;
23
+ height?: number;
24
+ rotation?: number;
25
+ }, kind: 'inbound' | 'outbound'): FaceAnchor[];
26
+ //# sourceMappingURL=face-anchors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"face-anchors.d.ts","sourceRoot":"","sources":["../../src/flow/face-anchors.ts"],"names":[],"mappings":"AASA,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClC,gDAAgD;IAChD,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,IAAI,EAAE,SAAS,GAAG,UAAU,GAC3B,UAAU,EAAE,CAiCd"}