@almadar/shell-web 0.0.0-stage → 1.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 (266) hide show
  1. package/bundling.d.mts +18 -0
  2. package/bundling.mjs +28 -0
  3. package/dist/ArbitraryClassCompiler-CO_iASBn.d.ts +195 -0
  4. package/dist/AvlGlyph-EPJKFEO3.js +6 -0
  5. package/dist/AvlStateMachine-RKZIKNGC.js +9 -0
  6. package/dist/AvlTransitionDetail-63SD6GZF.js +11 -0
  7. package/dist/AvlTransitionExplainer-ZBTLOM3T.js +12 -0
  8. package/dist/BehaviorView-YS5G4GNB.js +11 -0
  9. package/dist/Canvas3DHost-BkZQB5l2.d.ts +552 -0
  10. package/dist/EventBusProvider-BFFHfN4O.d.ts +296 -0
  11. package/dist/FileTree-BCFnBEuQ.d.ts +254 -0
  12. package/dist/FlowCanvas-3JRMNJLV.css +1756 -0
  13. package/dist/FlowCanvas-AUMTWMNG.js +26 -0
  14. package/dist/GameAudioProvider-ceM_n0ey.d.ts +90 -0
  15. package/dist/KaTeX_AMS-Regular-CYEKBG2K.woff +0 -0
  16. package/dist/KaTeX_AMS-Regular-JKX5W2C4.ttf +0 -0
  17. package/dist/KaTeX_AMS-Regular-U6PRYMIZ.woff2 +0 -0
  18. package/dist/KaTeX_Caligraphic-Bold-5QL5CMTE.woff2 +0 -0
  19. package/dist/KaTeX_Caligraphic-Bold-WZ3QSGD3.woff +0 -0
  20. package/dist/KaTeX_Caligraphic-Bold-ZTS3R3HK.ttf +0 -0
  21. package/dist/KaTeX_Caligraphic-Regular-3LKEU76G.woff +0 -0
  22. package/dist/KaTeX_Caligraphic-Regular-A7XRTZ5Q.ttf +0 -0
  23. package/dist/KaTeX_Caligraphic-Regular-KX5MEWCF.woff2 +0 -0
  24. package/dist/KaTeX_Fraktur-Bold-2QVFK6NQ.woff2 +0 -0
  25. package/dist/KaTeX_Fraktur-Bold-T4SWXBMT.woff +0 -0
  26. package/dist/KaTeX_Fraktur-Bold-WGHVTYOR.ttf +0 -0
  27. package/dist/KaTeX_Fraktur-Regular-2PEIFJSJ.woff2 +0 -0
  28. package/dist/KaTeX_Fraktur-Regular-5U4OPH2X.ttf +0 -0
  29. package/dist/KaTeX_Fraktur-Regular-PQMHCIK6.woff +0 -0
  30. package/dist/KaTeX_Main-Bold-2GA4IZIN.woff +0 -0
  31. package/dist/KaTeX_Main-Bold-W5FBVCZM.ttf +0 -0
  32. package/dist/KaTeX_Main-Bold-YP5VVQRP.woff2 +0 -0
  33. package/dist/KaTeX_Main-BoldItalic-4P4C7HJH.woff +0 -0
  34. package/dist/KaTeX_Main-BoldItalic-N4V3DX7S.woff2 +0 -0
  35. package/dist/KaTeX_Main-BoldItalic-ODMLBJJQ.ttf +0 -0
  36. package/dist/KaTeX_Main-Italic-I43T2HSR.ttf +0 -0
  37. package/dist/KaTeX_Main-Italic-RELBIK7M.woff2 +0 -0
  38. package/dist/KaTeX_Main-Italic-SASNQFN2.woff +0 -0
  39. package/dist/KaTeX_Main-Regular-ARRPAO67.woff2 +0 -0
  40. package/dist/KaTeX_Main-Regular-P5I74A2A.woff +0 -0
  41. package/dist/KaTeX_Main-Regular-W74P5G27.ttf +0 -0
  42. package/dist/KaTeX_Math-BoldItalic-6EBV3DK5.woff +0 -0
  43. package/dist/KaTeX_Math-BoldItalic-K4WTGH3J.woff2 +0 -0
  44. package/dist/KaTeX_Math-BoldItalic-VB447A4D.ttf +0 -0
  45. package/dist/KaTeX_Math-Italic-6KGCHLFN.woff2 +0 -0
  46. package/dist/KaTeX_Math-Italic-KKK3USB2.woff +0 -0
  47. package/dist/KaTeX_Math-Italic-SON4MRCA.ttf +0 -0
  48. package/dist/KaTeX_SansSerif-Bold-RRNVJFFW.woff2 +0 -0
  49. package/dist/KaTeX_SansSerif-Bold-STQ6RXC7.ttf +0 -0
  50. package/dist/KaTeX_SansSerif-Bold-X5M5EMOD.woff +0 -0
  51. package/dist/KaTeX_SansSerif-Italic-HMPFTM52.woff2 +0 -0
  52. package/dist/KaTeX_SansSerif-Italic-PSN4QKYX.woff +0 -0
  53. package/dist/KaTeX_SansSerif-Italic-WTBAZBGY.ttf +0 -0
  54. package/dist/KaTeX_SansSerif-Regular-2TL3USAE.ttf +0 -0
  55. package/dist/KaTeX_SansSerif-Regular-OQCII6EP.woff +0 -0
  56. package/dist/KaTeX_SansSerif-Regular-XIQ62X4E.woff2 +0 -0
  57. package/dist/KaTeX_Script-Regular-72OLXYNA.ttf +0 -0
  58. package/dist/KaTeX_Script-Regular-A5IFOEBS.woff +0 -0
  59. package/dist/KaTeX_Script-Regular-APUWIHLP.woff2 +0 -0
  60. package/dist/KaTeX_Size1-Regular-4HRHTS65.woff +0 -0
  61. package/dist/KaTeX_Size1-Regular-5LRUTBFT.woff2 +0 -0
  62. package/dist/KaTeX_Size1-Regular-7K6AASVL.ttf +0 -0
  63. package/dist/KaTeX_Size2-Regular-222HN3GT.ttf +0 -0
  64. package/dist/KaTeX_Size2-Regular-K5ZHAIS6.woff +0 -0
  65. package/dist/KaTeX_Size2-Regular-LELKET5D.woff2 +0 -0
  66. package/dist/KaTeX_Size3-Regular-TLFPAHDE.woff +0 -0
  67. package/dist/KaTeX_Size3-Regular-UFCO6WCA.ttf +0 -0
  68. package/dist/KaTeX_Size3-Regular-WQRQ47UD.woff2 +0 -0
  69. package/dist/KaTeX_Size4-Regular-7PGNVPQK.ttf +0 -0
  70. package/dist/KaTeX_Size4-Regular-CDMV7U5C.woff2 +0 -0
  71. package/dist/KaTeX_Size4-Regular-PKMWZHNC.woff +0 -0
  72. package/dist/KaTeX_Typewriter-Regular-3F5K6SQ6.ttf +0 -0
  73. package/dist/KaTeX_Typewriter-Regular-MJMFSK64.woff +0 -0
  74. package/dist/KaTeX_Typewriter-Regular-VBYJ4NRC.woff2 +0 -0
  75. package/dist/KernelEngineContext-CcxGYtlr.d.ts +33 -0
  76. package/dist/LayersPanel-M2LHWUFF.js +6 -0
  77. package/dist/ModuleCard-QHDGK5XK.js +7 -0
  78. package/dist/OrbInspector-MHLJ6OEE.css +1756 -0
  79. package/dist/OrbInspector-QCPEPUPH.js +26 -0
  80. package/dist/Select-B-iDdnvE.d.ts +185 -0
  81. package/dist/ServerBridge-Bqsj-lOU.d.ts +124 -0
  82. package/dist/ThemeContext-DJmO59xd.d.ts +147 -0
  83. package/dist/UISlotContext-Dl_ewwCI.d.ts +79 -0
  84. package/dist/UISlotRenderer-C7WWOK43.js +26 -0
  85. package/dist/UISlotRenderer-KVFO6J7R.css +1756 -0
  86. package/dist/auth/browser/index.d.ts +2 -0
  87. package/dist/auth/browser/index.js +2 -0
  88. package/dist/auth/react/index.d.ts +56 -0
  89. package/dist/auth/react/index.js +157 -0
  90. package/dist/avl/index.css +1756 -0
  91. package/dist/avl/index.d.ts +2248 -0
  92. package/dist/avl/index.js +2693 -0
  93. package/dist/avl-3d-context-BycmO6tG.d.ts +201 -0
  94. package/dist/avl-schema-parser-CtJxJ9KU.d.ts +132 -0
  95. package/dist/avl-zoom-state-CKMVuBFg.d.ts +17 -0
  96. package/dist/chunk-3BBUBJFF.js +339 -0
  97. package/dist/chunk-3S54FWRC.js +131 -0
  98. package/dist/chunk-3VZ36ZKO.js +775 -0
  99. package/dist/chunk-4T3P43NS.js +1133 -0
  100. package/dist/chunk-4YXBKHHM.js +11488 -0
  101. package/dist/chunk-57DC34LY.js +525 -0
  102. package/dist/chunk-5QTYQTPS.js +15 -0
  103. package/dist/chunk-A2LR6VQQ.js +349 -0
  104. package/dist/chunk-AB3X7QTE.js +505 -0
  105. package/dist/chunk-AE7VCQB6.js +561 -0
  106. package/dist/chunk-AGXD77SL.js +98 -0
  107. package/dist/chunk-AU7O65OX.js +66 -0
  108. package/dist/chunk-CPLN6NBQ.js +701 -0
  109. package/dist/chunk-DZBQA2OW.js +176 -0
  110. package/dist/chunk-E6KA4J6N.js +227 -0
  111. package/dist/chunk-EOWMARUB.js +16 -0
  112. package/dist/chunk-G7DCAZ22.js +19 -0
  113. package/dist/chunk-GFXCPUMX.js +1334 -0
  114. package/dist/chunk-HH5KSMH5.js +311 -0
  115. package/dist/chunk-ILQXJ2AR.js +280 -0
  116. package/dist/chunk-ILZ7ORX7.js +432 -0
  117. package/dist/chunk-K4MOPSEL.js +674 -0
  118. package/dist/chunk-LHP2TK7O.js +47587 -0
  119. package/dist/chunk-P4ZFUQFF.js +93 -0
  120. package/dist/chunk-PCR37T3U.js +296 -0
  121. package/dist/chunk-PRXQGGCO.js +580 -0
  122. package/dist/chunk-REXYVBUO.js +191 -0
  123. package/dist/chunk-ROICKAU7.js +24 -0
  124. package/dist/chunk-SP5CDJ6K.js +338 -0
  125. package/dist/chunk-TUPZWTRE.js +1051 -0
  126. package/dist/chunk-TXAUOLWZ.js +490 -0
  127. package/dist/chunk-TZZBINQY.js +82 -0
  128. package/dist/chunk-UTDC2NEA.js +14 -0
  129. package/dist/chunk-UU57VNS2.js +1053 -0
  130. package/dist/chunk-UXLE3IPR.js +421 -0
  131. package/dist/chunk-VO2TTLS5.js +94 -0
  132. package/dist/chunk-X3DMMX27.js +11 -0
  133. package/dist/chunk-YHMRX6YA.js +455 -0
  134. package/dist/components/index.css +1756 -0
  135. package/dist/components/index.d.ts +11299 -0
  136. package/dist/components/index.js +1110 -0
  137. package/dist/context/index.d.ts +8 -0
  138. package/dist/context/index.js +8 -0
  139. package/dist/core.d.ts +2599 -0
  140. package/dist/core.js +3 -0
  141. package/dist/design-classes/index.cjs +431 -0
  142. package/dist/design-classes/index.d.cts +165 -0
  143. package/dist/design-classes/index.d.ts +165 -0
  144. package/dist/design-classes/index.js +399 -0
  145. package/dist/emojiItems-QGSNAABW.js +20 -0
  146. package/dist/fx-CmQjnHmT.d.ts +371 -0
  147. package/dist/hooks/index.d.ts +971 -0
  148. package/dist/hooks/index.js +8 -0
  149. package/dist/index.d.ts +408 -0
  150. package/dist/index.js +178 -0
  151. package/dist/katexPlugin-FA7NX4PE.css +1161 -0
  152. package/dist/katexPlugin-NCDKOOQY.js +2 -0
  153. package/dist/kernel-client-TZKGHJRY.js +516 -0
  154. package/dist/kernel-wire-wNdAPfhJ.d.ts +88 -0
  155. package/dist/lib/index.d.ts +602 -0
  156. package/dist/lib/index.js +1289 -0
  157. package/dist/paintDispatch-CuJLsr9Y.d.ts +688 -0
  158. package/dist/parseLessonSegments-GpCeMrb2.d.ts +334 -0
  159. package/dist/perf-CKiBKbkw.d.ts +22 -0
  160. package/dist/perf-Dr28-AgT.d.ts +57 -0
  161. package/dist/prism-X5YWKXO5.js +136 -0
  162. package/dist/providers/index.css +1756 -0
  163. package/dist/providers/index.d.ts +355 -0
  164. package/dist/providers/index.js +29 -0
  165. package/dist/renderer/index.d.ts +465 -0
  166. package/dist/renderer/index.js +4 -0
  167. package/dist/runtime/index.css +1756 -0
  168. package/dist/runtime/index.d.ts +239 -0
  169. package/dist/runtime/index.js +28 -0
  170. package/dist/slot-host-CPzrxLo9.d.ts +48 -0
  171. package/dist/ssr/index.cjs +9739 -0
  172. package/dist/ssr/index.d.cts +464 -0
  173. package/dist/ssr/index.d.ts +464 -0
  174. package/dist/ssr/index.js +9703 -0
  175. package/dist/storage/browser/index.d.ts +1 -0
  176. package/dist/storage/browser/index.js +2 -0
  177. package/dist/test-support.d.ts +42 -0
  178. package/dist/test-support.js +181 -0
  179. package/dist/themeTokens-CRd8AEDF.d.ts +125 -0
  180. package/dist/three/index.css +503 -0
  181. package/dist/three/index.d.ts +1185 -0
  182. package/dist/three/index.js +3908 -0
  183. package/dist/useUISlots-CiobNFGb.d.ts +211 -0
  184. package/dist/verification-C5pTeMJv.d.ts +66 -0
  185. package/dist/verificationRegistry-CVrcxG1s.d.ts +122 -0
  186. package/dist/wrapCallbackForEvent-B9QLbhxX.d.ts +19 -0
  187. package/index.css +199 -0
  188. package/package.json +273 -3
  189. package/src/core/lib/band-shapes.json +7 -0
  190. package/src/core/locales/ar.json +1276 -0
  191. package/src/core/locales/en.json +1276 -0
  192. package/src/core/locales/index.ts +54 -0
  193. package/src/core/locales/sl.json +1276 -0
  194. package/src/core/tokens/native-tokens.json +369 -0
  195. package/tailwind-compile.cjs +29 -0
  196. package/tailwind-preset.cjs +1020 -0
  197. package/themes/_base.css +451 -0
  198. package/themes/_contract.md +307 -0
  199. package/themes/_fonts-kenney.css +11 -0
  200. package/themes/_fonts.css +12 -0
  201. package/themes/_foundation.css +105 -0
  202. package/themes/_head.css +22 -0
  203. package/themes/_presets.css +67 -0
  204. package/themes/almadar-heritage.css +455 -0
  205. package/themes/almadar-website.css +269 -0
  206. package/themes/almadar.css +269 -0
  207. package/themes/aqua.css +455 -0
  208. package/themes/arabesque.css +459 -0
  209. package/themes/art-deco.css +457 -0
  210. package/themes/art-nouveau.css +459 -0
  211. package/themes/atelier.css +463 -0
  212. package/themes/bauhaus.css +461 -0
  213. package/themes/bloomberg-dense.css +463 -0
  214. package/themes/blueprint.css +457 -0
  215. package/themes/clay.css +449 -0
  216. package/themes/comic.css +453 -0
  217. package/themes/constructivist.css +457 -0
  218. package/themes/corporate.css +449 -0
  219. package/themes/cyberpunk.css +453 -0
  220. package/themes/frutiger-aero.css +458 -0
  221. package/themes/game-adventure.css +201 -0
  222. package/themes/game-rpg.css +203 -0
  223. package/themes/game-sci-fi.css +201 -0
  224. package/themes/game-ui-pack.css +200 -0
  225. package/themes/gazette.css +449 -0
  226. package/themes/glass.css +457 -0
  227. package/themes/gothic.css +453 -0
  228. package/themes/index.css +21 -0
  229. package/themes/ink-wash.css +459 -0
  230. package/themes/kawaii.css +459 -0
  231. package/themes/kflow.css +310 -0
  232. package/themes/kiosk.css +449 -0
  233. package/themes/linear-clean.css +463 -0
  234. package/themes/luxury.css +451 -0
  235. package/themes/mac-classic.css +455 -0
  236. package/themes/material.css +463 -0
  237. package/themes/memphis.css +453 -0
  238. package/themes/mid-century.css +455 -0
  239. package/themes/minimalist.css +449 -0
  240. package/themes/mudcloth.css +459 -0
  241. package/themes/nata.css +310 -0
  242. package/themes/neon.css +453 -0
  243. package/themes/neumorphic.css +451 -0
  244. package/themes/newsprint.css +455 -0
  245. package/themes/notion-editorial.css +463 -0
  246. package/themes/orb.css +465 -0
  247. package/themes/pixel.css +449 -0
  248. package/themes/prism.css +309 -0
  249. package/themes/rawi.css +310 -0
  250. package/themes/retro.css +452 -0
  251. package/themes/risograph.css +463 -0
  252. package/themes/scandi.css +469 -0
  253. package/themes/sketch.css +455 -0
  254. package/themes/solarpunk.css +469 -0
  255. package/themes/steampunk.css +451 -0
  256. package/themes/swiss.css +455 -0
  257. package/themes/terminal.css +466 -0
  258. package/themes/trait-wars.css +487 -0
  259. package/themes/ukiyo-e.css +459 -0
  260. package/themes/vaporwave.css +455 -0
  261. package/themes/victorian.css +453 -0
  262. package/themes/wabi-sabi.css +459 -0
  263. package/themes/win95.css +455 -0
  264. package/themes/wireframe.css +439 -0
  265. package/themes/zine.css +455 -0
  266. package/README.md +0 -3
@@ -0,0 +1,2248 @@
1
+ import { OperatorCategory } from '@almadar/std';
2
+ import * as React$1 from 'react';
3
+ import React__default from 'react';
4
+ import { FieldType, FieldTag, EntityPersistence, SExpr, EvalTrace, A11yProps, EventEmit, Expression, OrbitalSchema, EntityData, EditFocus, EventPayload, AriaRole, DomainQuestion, DomainQuestionAnswer, ThemeDefinition, DependencyGraph, DependencyLayer, EventKey, CircuitStepResult, GuardEvaluation, EffectTrace, EventPayloadValue } from '@almadar/core';
5
+ export { DependencyLayer } from '@almadar/core';
6
+ import { A as AvlAnnotations, a as AvlNodeData, b as AvlNote } from '../FileTree-BCFnBEuQ.js';
7
+ import { FileTreeItem } from '../components/index.js';
8
+ export { c as AvlEdgeData, d as AvlStateMachine, e as AvlStateMachineProps, B as BehaviorView, M as ModuleCard, s as schemaToFlowGraph } from '../FileTree-BCFnBEuQ.js';
9
+ import { T as TraitLevelData, d as TraitTransitionInfo, c as TransitionLevelData, S as SerializedEffect } from '../avl-schema-parser-CtJxJ9KU.js';
10
+ export { A as ApplicationLevelData, C as CrossLink, b as OrbitalLevelData, p as parseApplicationLevel, e as parseOrbitalLevel, f as parseTraitLevel, g as parseTransitionLevel, t as traitLevelFromTrait } from '../avl-schema-parser-CtJxJ9KU.js';
11
+ import { NodeProps, EdgeProps, Edge, Node, NodeTypes, ReactFlowProps } from '@xyflow/react';
12
+ import { AnyPatternConfig } from '@almadar/core/patterns';
13
+ import { useDraggable } from '@dnd-kit/core';
14
+ import { Z as ZoomLevel } from '../avl-zoom-state-CKMVuBFg.js';
15
+
16
+ /**
17
+ * AVL theme roles — every AVL color is a theme token or a `color-mix` of one,
18
+ * so a diagram repaints with the active `data-theme`. Structure stays neutral;
19
+ * saturated color is reserved for meaning (the focused/active element).
20
+ */
21
+
22
+ /** Every AVL atom renders a `<g>` placed inside a parent svg. */
23
+ interface AvlBaseProps {
24
+ x?: number;
25
+ y?: number;
26
+ color?: string;
27
+ opacity?: number;
28
+ className?: string;
29
+ }
30
+ type StateRole = 'initial' | 'terminal' | 'hub' | 'default';
31
+ declare const STATE_COLORS: Record<StateRole, {
32
+ fill: string;
33
+ border: string;
34
+ }>;
35
+ declare function getStateRole(isInitial?: boolean, isTerminal?: boolean, transitionCount?: number, maxTransitionCount?: number): StateRole;
36
+ declare const CONNECTION_COLORS: {
37
+ readonly forward: {
38
+ readonly color: "var(--color-muted-foreground)";
39
+ readonly width: 1.5;
40
+ readonly dash: "none";
41
+ };
42
+ readonly backward: {
43
+ readonly color: "var(--color-muted-foreground)";
44
+ readonly width: 1.5;
45
+ readonly dash: "5 4";
46
+ };
47
+ readonly selfLoop: {
48
+ readonly color: "var(--color-muted-foreground)";
49
+ readonly width: 1;
50
+ readonly dash: "3 2";
51
+ };
52
+ readonly emitListen: {
53
+ readonly color: "var(--color-warning)";
54
+ readonly width: 1.5;
55
+ readonly dash: "4 3";
56
+ };
57
+ };
58
+ type EffectCategory = 'ui' | 'data' | 'communication' | 'lifecycle' | 'control' | 'async' | 'compute' | 'system';
59
+ declare const EFFECT_CATEGORY_COLORS: Record<EffectCategory, {
60
+ color: string;
61
+ bg: string;
62
+ }>;
63
+ /** Category of an effect head as it appears in a program; null when @almadar/core declares no such effect. */
64
+ declare function effectCategoryOf(head: string): EffectCategory | null;
65
+ declare const OPERATOR_CATEGORY_COLORS: Record<OperatorCategory, string>;
66
+
67
+ interface AvlFieldTypeProps extends AvlBaseProps {
68
+ kind: FieldType;
69
+ size?: number;
70
+ label?: string;
71
+ }
72
+ type FieldTypeShape = 'circle' | 'triangle' | 'square' | 'diamond' | 'ring' | 'hexagon' | 'bars' | 'link' | 'variable';
73
+ /** Every @almadar/core field type drawn as the shape of its data family. */
74
+ declare const FIELD_TYPE_SHAPES: Record<FieldTag, FieldTypeShape>;
75
+ declare const AvlFieldType: React__default.FC<AvlFieldTypeProps>;
76
+
77
+ interface AvlOrbitalProps {
78
+ cx?: number;
79
+ cy?: number;
80
+ r?: number;
81
+ label?: string;
82
+ color?: string;
83
+ opacity?: number;
84
+ className?: string;
85
+ }
86
+ declare const AvlOrbital: React__default.FC<AvlOrbitalProps>;
87
+
88
+ interface AvlEntityProps extends AvlBaseProps {
89
+ r?: number;
90
+ fieldCount?: number;
91
+ persistence?: EntityPersistence;
92
+ label?: string;
93
+ }
94
+ declare const AvlEntity: React__default.FC<AvlEntityProps>;
95
+
96
+ interface AvlTraitProps {
97
+ cx?: number;
98
+ cy?: number;
99
+ rx?: number;
100
+ ry?: number;
101
+ rotation?: number;
102
+ label?: string;
103
+ color?: string;
104
+ opacity?: number;
105
+ className?: string;
106
+ }
107
+ declare const AvlTrait: React__default.FC<AvlTraitProps>;
108
+
109
+ interface AvlPageProps extends AvlBaseProps {
110
+ size?: number;
111
+ label?: string;
112
+ }
113
+ declare const AvlPage: React__default.FC<AvlPageProps>;
114
+
115
+ interface AvlApplicationProps extends AvlBaseProps {
116
+ width?: number;
117
+ height?: number;
118
+ label?: string;
119
+ }
120
+ declare const AvlApplication: React__default.FC<AvlApplicationProps>;
121
+
122
+ interface AvlStateProps extends AvlBaseProps {
123
+ name?: string;
124
+ isInitial?: boolean;
125
+ isTerminal?: boolean;
126
+ width?: number;
127
+ height?: number;
128
+ /** V2: Role-based fill color. When set, overrides monochrome rendering. */
129
+ role?: StateRole;
130
+ /** V2: Number of transitions touching this state. Drives proportional width. */
131
+ transitionCount?: number;
132
+ }
133
+ declare const AvlState: React__default.FC<AvlStateProps>;
134
+
135
+ interface AvlTransitionProps {
136
+ x1: number;
137
+ y1: number;
138
+ x2: number;
139
+ y2: number;
140
+ curved?: boolean;
141
+ /** Center point to curve away from (curves outward if provided). */
142
+ curveAwayFrom?: {
143
+ x: number;
144
+ y: number;
145
+ };
146
+ label?: string;
147
+ color?: string;
148
+ opacity?: number;
149
+ className?: string;
150
+ }
151
+ declare const AvlTransition: React__default.FC<AvlTransitionProps>;
152
+
153
+ interface AvlEventProps extends AvlBaseProps {
154
+ size?: number;
155
+ label?: string;
156
+ }
157
+ declare const AvlEvent: React__default.FC<AvlEventProps>;
158
+
159
+ interface AvlGuardProps extends AvlBaseProps {
160
+ size?: number;
161
+ label?: string;
162
+ }
163
+ declare const AvlGuard: React__default.FC<AvlGuardProps>;
164
+
165
+ interface AvlEffectProps extends AvlBaseProps {
166
+ /** Effect operator as it appears in the program (`set`, `emit`, `llm/generate`, …). */
167
+ effectType: string;
168
+ size?: number;
169
+ label?: string;
170
+ /** V2: Render a category-colored background circle behind the icon. */
171
+ showBackground?: boolean;
172
+ }
173
+ declare const AvlEffect: React__default.FC<AvlEffectProps>;
174
+
175
+ interface AvlFieldProps extends AvlBaseProps {
176
+ /** Angle in radians from entity center. */
177
+ angle?: number;
178
+ length?: number;
179
+ required?: boolean;
180
+ label?: string;
181
+ }
182
+ declare const AvlField: React__default.FC<AvlFieldProps>;
183
+
184
+ interface AvlBindingProps {
185
+ x1: number;
186
+ y1: number;
187
+ x2: number;
188
+ y2: number;
189
+ label?: string;
190
+ color?: string;
191
+ opacity?: number;
192
+ className?: string;
193
+ }
194
+ declare const AvlBinding: React__default.FC<AvlBindingProps>;
195
+
196
+ interface AvlPersistenceProps extends AvlBaseProps {
197
+ kind: EntityPersistence;
198
+ size?: number;
199
+ label?: string;
200
+ }
201
+ declare const AvlPersistence: React__default.FC<AvlPersistenceProps>;
202
+
203
+ interface AvlOperatorProps extends AvlBaseProps {
204
+ name: string;
205
+ namespace?: OperatorCategory;
206
+ size?: number;
207
+ }
208
+ declare const AvlOperator: React__default.FC<AvlOperatorProps>;
209
+
210
+ interface AvlSExprProps extends AvlBaseProps {
211
+ width?: number;
212
+ height?: number;
213
+ label?: string;
214
+ }
215
+ declare const AvlSExpr: React__default.FC<AvlSExprProps>;
216
+
217
+ interface AvlLiteralProps extends AvlBaseProps {
218
+ value: string;
219
+ size?: number;
220
+ }
221
+ declare const AvlLiteral: React__default.FC<AvlLiteralProps>;
222
+
223
+ interface AvlBindingRefProps extends AvlBaseProps {
224
+ path: string;
225
+ size?: number;
226
+ }
227
+ declare const AvlBindingRef: React__default.FC<AvlBindingRefProps>;
228
+
229
+ /**
230
+ * AVL ELK Layout
231
+ *
232
+ * Shared ELK-based layout engine for state machines. Extracted from
233
+ * AvlTraitScene so both the V2 scene renderer and the V3 BehaviorView
234
+ * can share the same layout computation.
235
+ */
236
+
237
+ interface LayoutNode {
238
+ id: string;
239
+ x: number;
240
+ y: number;
241
+ width: number;
242
+ height: number;
243
+ isInitial?: boolean;
244
+ isTerminal?: boolean;
245
+ role: StateRole;
246
+ transitionCount: number;
247
+ }
248
+ interface LayoutEdge {
249
+ id: string;
250
+ from: string;
251
+ to: string;
252
+ event: string;
253
+ effects: Array<{
254
+ type: string;
255
+ }>;
256
+ guard: boolean;
257
+ guardExpr?: string;
258
+ index: number;
259
+ labelX: number;
260
+ labelY: number;
261
+ labelW: number;
262
+ labelH: number;
263
+ points: Array<{
264
+ x: number;
265
+ y: number;
266
+ }>;
267
+ isSelf: boolean;
268
+ isBackward: boolean;
269
+ }
270
+ interface ElkLayout {
271
+ nodes: LayoutNode[];
272
+ edges: LayoutEdge[];
273
+ width: number;
274
+ height: number;
275
+ }
276
+ /** Measured sizes for a renderer that draws real nodes and label pills. */
277
+ interface TraitLayoutMetrics {
278
+ nodeSize: (stateName: string) => {
279
+ width: number;
280
+ height: number;
281
+ };
282
+ labelSize: (transition: TraitLevelData['transitions'][number]) => {
283
+ width: number;
284
+ height: number;
285
+ };
286
+ nodeSpacing: number;
287
+ layerSpacing: number;
288
+ orthogonal: boolean;
289
+ direction: 'ltr' | 'rtl';
290
+ }
291
+ declare function computeTraitLayout(data: TraitLevelData, metrics?: TraitLayoutMetrics): Promise<ElkLayout>;
292
+ declare function edgePath(points: Array<{
293
+ x: number;
294
+ y: number;
295
+ }>): string;
296
+
297
+ /**
298
+ * AvlCircuit — a Lisp S-expression drawn as a circuit and, given a trace,
299
+ * shown executing: values ride the wires, `and`/`or` are switch chains that
300
+ * break where a condition fails, `if` throws a track switch, lambdas run items
301
+ * down a conveyor, effects light rungs of a ladder.
302
+ */
303
+
304
+ interface AvlCircuitProps {
305
+ /** The Lisp code to draw (an `.orb` S-expression). */
306
+ expr: SExpr;
307
+ /** Evaluation trace of `expr` (see `evaluateTraced`). */
308
+ trace?: EvalTrace;
309
+ /** Last trace step to show. Defaults to the end of the trace. */
310
+ cursor?: number;
311
+ /** Caption over the board (e.g. "guard of SAVE"). */
312
+ title?: string;
313
+ /** Show the code line under the title. @default true */
314
+ showCode?: boolean;
315
+ className?: string;
316
+ }
317
+ declare const AvlCircuit: React__default.FC<AvlCircuitProps>;
318
+
319
+ /**
320
+ * AvlGlyph — one AVL notation symbol, standalone: the atom drawn in its own
321
+ * svg, framed to its measured bounds, with a caption. The single render-ui
322
+ * surface for every AVL atom (a symbol legend, a docs callout, a key).
323
+ */
324
+
325
+ declare const AVL_GLYPH_KINDS: readonly ["application", "orbital", "entity", "trait", "page", "state", "transition", "event", "guard", "effect", "field", "fieldType", "binding", "bindingRef", "persistence", "operator", "sexpr", "literal"];
326
+ type AvlGlyphKind = (typeof AVL_GLYPH_KINDS)[number];
327
+ interface AvlGlyphProps extends Omit<React__default.AriaAttributes, keyof A11yProps>, A11yProps {
328
+ /** Which notation symbol to draw.
329
+ * @example "state"
330
+ */
331
+ kind: AvlGlyphKind;
332
+ /** Caption, and the drawn text for operator / literal / bindingRef symbols. */
333
+ label?: string;
334
+ /** Effect symbol variant. @default 'set' */
335
+ effectType?: string;
336
+ /** Field-type symbol variant. @default 'string' */
337
+ fieldType?: FieldType;
338
+ /** Persistence symbol variant (also the entity's ring). @default 'persistent' */
339
+ persistence?: EntityPersistence;
340
+ /** Operator category tint. @default 'arithmetic' */
341
+ namespace?: OperatorCategory;
342
+ /** Symbol height; `xs` sits inline with a line of text. @default 'md' */
343
+ size?: 'xs' | 'sm' | 'md' | 'lg';
344
+ /** Show the caption under the symbol. @default true */
345
+ showCaption?: boolean;
346
+ className?: string;
347
+ }
348
+ declare const AvlGlyph: React__default.FC<AvlGlyphProps>;
349
+
350
+ interface AvlOrbitalUnitTrait {
351
+ name: string;
352
+ color?: string;
353
+ }
354
+ interface AvlOrbitalUnitPage {
355
+ name: string;
356
+ }
357
+ interface AvlOrbitalUnitProps {
358
+ entityName: string;
359
+ fields?: number;
360
+ persistence?: EntityPersistence;
361
+ traits: AvlOrbitalUnitTrait[];
362
+ pages: AvlOrbitalUnitPage[];
363
+ className?: string;
364
+ color?: string;
365
+ animated?: boolean;
366
+ }
367
+ declare const AvlOrbitalUnit: React__default.FC<AvlOrbitalUnitProps>;
368
+
369
+ interface AvlClosedCircuitState {
370
+ name: string;
371
+ }
372
+ interface AvlClosedCircuitTransition {
373
+ from: string;
374
+ to: string;
375
+ event?: string;
376
+ guard?: string;
377
+ effects?: string[];
378
+ }
379
+ interface AvlClosedCircuitProps {
380
+ states: AvlClosedCircuitState[];
381
+ transitions: AvlClosedCircuitTransition[];
382
+ className?: string;
383
+ color?: string;
384
+ animated?: boolean;
385
+ }
386
+ declare const AvlClosedCircuit: React__default.FC<AvlClosedCircuitProps>;
387
+
388
+ interface AvlEmitListenProps {
389
+ emitter: {
390
+ name: string;
391
+ fields?: number;
392
+ };
393
+ listener: {
394
+ name: string;
395
+ fields?: number;
396
+ };
397
+ eventName?: string;
398
+ className?: string;
399
+ color?: string;
400
+ animated?: boolean;
401
+ }
402
+ declare const AvlEmitListen: React__default.FC<AvlEmitListenProps>;
403
+
404
+ interface AvlSlotMapSlot {
405
+ name: string;
406
+ /** Manual position overrides. Omit for auto-layout. */
407
+ x?: number;
408
+ y?: number;
409
+ width?: number;
410
+ height?: number;
411
+ }
412
+ interface AvlSlotMapProps {
413
+ slots: AvlSlotMapSlot[];
414
+ pageWidth?: number;
415
+ pageHeight?: number;
416
+ className?: string;
417
+ color?: string;
418
+ animated?: boolean;
419
+ }
420
+ declare const AvlSlotMap: React__default.FC<AvlSlotMapProps>;
421
+
422
+ interface AvlExprTreeNode {
423
+ label: string;
424
+ type: 'operator' | 'literal' | 'binding';
425
+ children?: AvlExprTreeNode[];
426
+ }
427
+ interface AvlExprTreeProps {
428
+ expression: AvlExprTreeNode;
429
+ className?: string;
430
+ color?: string;
431
+ animated?: boolean;
432
+ }
433
+ declare const AvlExprTree: React__default.FC<AvlExprTreeProps>;
434
+
435
+ interface AvlTransitionLaneEffect {
436
+ type: string | string;
437
+ }
438
+ interface AvlTransitionLaneProps {
439
+ event: string;
440
+ guard?: string;
441
+ effects: AvlTransitionLaneEffect[];
442
+ width: number;
443
+ x?: number;
444
+ y?: number;
445
+ isBackward?: boolean;
446
+ isSelfLoop?: boolean;
447
+ color?: string;
448
+ onTransitionClick?: () => void;
449
+ }
450
+ declare const AvlTransitionLane: React__default.FC<AvlTransitionLaneProps>;
451
+
452
+ interface AvlSwimLaneProps {
453
+ listenedEvents: string[];
454
+ emittedEvents: string[];
455
+ centerWidth: number;
456
+ height: number;
457
+ color?: string;
458
+ children: React__default.ReactNode;
459
+ }
460
+ declare const AvlSwimLane: React__default.FC<AvlSwimLaneProps>;
461
+
462
+ /**
463
+ * AvlBehaviorGlyph - Visual identity for a behavior.
464
+ *
465
+ * Generates a unique glyph from behavior properties:
466
+ * - Core shape = persistence type
467
+ * - Spokes = field count
468
+ * - Rings = state count
469
+ * - Markers = effect types used
470
+ * - Color = domain hue
471
+ * - Composition = child glyphs + event wiring (molecule/organism)
472
+ */
473
+
474
+ declare const DOMAIN_COLORS: Record<string, string>;
475
+ type BehaviorLevel = 'atom' | 'molecule' | 'organism';
476
+ type GlyphSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
477
+ interface BehaviorGlyphChild {
478
+ name: string;
479
+ fieldCount?: number;
480
+ stateCount?: number;
481
+ persistence?: EntityPersistence;
482
+ effectTypes?: string[];
483
+ }
484
+ interface BehaviorGlyphConnection {
485
+ from: string;
486
+ to: string;
487
+ event: string;
488
+ }
489
+ interface AvlBehaviorGlyphProps {
490
+ /** Behavior name */
491
+ name: string;
492
+ /** Composition level */
493
+ level?: BehaviorLevel;
494
+ /** Domain for color coding */
495
+ domain?: string;
496
+ /** Override color (otherwise derived from domain) */
497
+ color?: string;
498
+ /** Entity field count (drives spoke count) */
499
+ fieldCount?: number;
500
+ /** State count (drives ring count) */
501
+ stateCount?: number;
502
+ /** Persistence type (drives core shape) */
503
+ persistence?: EntityPersistence;
504
+ /** Effect types used (drives markers on rings) */
505
+ effectTypes?: string[];
506
+ /** Child behaviors for molecule/organism composition */
507
+ children?: BehaviorGlyphChild[];
508
+ /** Event connections between children (organism level) */
509
+ connections?: BehaviorGlyphConnection[];
510
+ /** Size preset */
511
+ size?: GlyphSize;
512
+ /** Show text labels */
513
+ showLabels?: boolean;
514
+ /** Animate orbital rings */
515
+ animated?: boolean;
516
+ /** Additional className */
517
+ className?: string;
518
+ /** Click handler */
519
+ onClick?: () => void;
520
+ }
521
+ declare const AvlBehaviorGlyph: React__default.FC<AvlBehaviorGlyphProps>;
522
+
523
+ /**
524
+ * AVL layout utilities for positioning atoms in composed diagrams.
525
+ */
526
+ /** Distribute N points evenly around a ring.
527
+ * Handles edge cases: 1 state (centered), 2 states (horizontal). */
528
+ declare function ringPositions(cx: number, cy: number, r: number, count: number, startAngle?: number): Array<{
529
+ x: number;
530
+ y: number;
531
+ angle: number;
532
+ }>;
533
+ /** Create an SVG arc path between two angles on a circle. */
534
+ declare function arcPath(cx: number, cy: number, r: number, startAngle: number, endAngle: number): string;
535
+ /** Distribute N points radially from a center. */
536
+ declare function radialPositions(cx: number, cy: number, innerR: number, outerR: number, count: number, startAngle?: number): Array<{
537
+ x1: number;
538
+ y1: number;
539
+ x2: number;
540
+ y2: number;
541
+ angle: number;
542
+ }>;
543
+ /** Simple grid layout: position items in columns and rows. */
544
+ declare function gridPositions(startX: number, startY: number, cols: number, cellWidth: number, cellHeight: number, count: number): Array<{
545
+ x: number;
546
+ y: number;
547
+ col: number;
548
+ row: number;
549
+ }>;
550
+ /** Compute a quadratic bezier control point offset perpendicular to the line. */
551
+ declare function curveControlPoint(x1: number, y1: number, x2: number, y2: number, offset: number): {
552
+ cpx: number;
553
+ cpy: number;
554
+ };
555
+
556
+ /**
557
+ * AVL Zoom Band
558
+ *
559
+ * Continuous semantic zoom for the unified AVL canvas.
560
+ * React Flow nodes read the current zoom band from context
561
+ * and switch their rendering accordingly.
562
+ */
563
+ /** The four zoom bands of the unified AVL canvas. */
564
+ type ZoomBand = 'system' | 'module' | 'behavior' | 'detail';
565
+ /** Thresholds for zoom band transitions (React Flow viewport zoom). */
566
+ declare const ZOOM_BAND_THRESHOLDS: {
567
+ readonly system: readonly [0.1, 0.4];
568
+ readonly module: readonly [0.4, 1];
569
+ readonly behavior: readonly [1, 2.5];
570
+ readonly detail: readonly [2.5, 5];
571
+ };
572
+ /** Determine which zoom band the current viewport zoom falls into. */
573
+ declare function computeZoomBand(zoom: number): ZoomBand;
574
+ /**
575
+ * Compute progress (0..1) within a zoom band.
576
+ * Useful for crossfade transitions between bands.
577
+ */
578
+ declare function zoomProgress(zoom: number, band: ZoomBand): number;
579
+ /** Context providing the current zoom band to all node components. */
580
+ declare const ZoomBandContext: React$1.Context<ZoomBand>;
581
+ /** Hook to read the current zoom band. */
582
+ declare function useZoomBand(): ZoomBand;
583
+
584
+ /**
585
+ * SystemNode — one orbital on the system map (cosmic L1): name, entity and
586
+ * its size (traits · pages · fields). Hovering shows what the host renders
587
+ * for the orbital (its live screen), with Open traits (drill in), Open code
588
+ * and Preview. `SystemBandNode` heads the connected / standalone bands.
589
+ */
590
+
591
+ interface SystemMapContextValue {
592
+ /** React hosts: drill into the orbital's traits. */
593
+ openTraits?: (orbital: string) => void;
594
+ /** Emits UI:{openTraitsEvent} with { orbital } to drill into the orbital's traits (set from FlowCanvas's own `openTraitsEvent`). */
595
+ openTraitsEvent?: EventEmit<{
596
+ orbital: string;
597
+ }>;
598
+ /** Show each orbital's live screen in its hover card (the canvas renders it). */
599
+ preview?: boolean;
600
+ /** React hosts: what the hover shows for an orbital; no hover card without it (or `preview`). */
601
+ renderPreview?: (orbital: string) => React__default.ReactNode;
602
+ /** Emits UI:{openCodeEvent} with { orbital }. */
603
+ openCodeEvent?: EventEmit<{
604
+ orbital: string;
605
+ }>;
606
+ /** Emits UI:{previewEvent} with { orbital }. */
607
+ previewEvent?: EventEmit<{
608
+ orbital: string;
609
+ }>;
610
+ /** The orbital to ring (the one the user came from). */
611
+ highlighted?: string;
612
+ /** Dependencies lens: a node was clicked (its id; clicking the selected one clears). */
613
+ selectDependency?: (id: string) => void;
614
+ }
615
+ declare const SystemMapContext: React__default.Context<SystemMapContextValue>;
616
+ declare const SystemNode: React__default.NamedExoticComponent<NodeProps>;
617
+ declare const SystemBandNode: React__default.NamedExoticComponent<NodeProps>;
618
+ declare const DependencyNode: React__default.NamedExoticComponent<NodeProps>;
619
+ declare const DependencyColumnNode: React__default.NamedExoticComponent<NodeProps>;
620
+
621
+ /**
622
+ * MiniStateMachine — Inline simplified state machine for the ModuleCard.
623
+ *
624
+ * Renders a compact left-to-right flow of AvlState nodes connected
625
+ * by AvlTransition arrows, with AvlEffect icons below.
626
+ * No ELK layout needed — uses simple horizontal positioning.
627
+ */
628
+
629
+ interface MiniStateMachineProps {
630
+ data: TraitLevelData;
631
+ /** Author notes, shown in a popover on hover of a state or an effect. */
632
+ annotations?: AvlAnnotations;
633
+ className?: string;
634
+ }
635
+ declare const MiniStateMachine: React__default.FC<MiniStateMachineProps>;
636
+
637
+ /**
638
+ * DetailView — Transition specification card for the detail zoom band (2.5x-5.0x).
639
+ *
640
+ * Renders a spec card with: from/to AvlState nodes, AvlEvent trigger,
641
+ * AvlGuard diamond, numbered AvlEffect icons with binding paths,
642
+ * and AvlFieldType shapes.
643
+ */
644
+
645
+ interface DetailViewProps {
646
+ data: AvlNodeData;
647
+ }
648
+ declare const DetailView: React__default.FC<DetailViewProps>;
649
+
650
+ /**
651
+ * AvlTransitionEdge — React Flow edge for state machine transitions.
652
+ *
653
+ * Bezier path with event label at midpoint. Guard diamond and effect
654
+ * dot indicators shown inline. Forward transitions are solid dark,
655
+ * backward transitions are dashed lighter.
656
+ */
657
+
658
+ interface AvlTransitionEdgeData {
659
+ [key: string]: string | boolean | undefined;
660
+ event: string;
661
+ hasGuard?: boolean;
662
+ hasEffects?: boolean;
663
+ }
664
+ type AvlTransitionFlowEdge = Edge<AvlTransitionEdgeData, 'transition'>;
665
+ declare const AvlTransitionEdge: React__default.FC<EdgeProps<AvlTransitionFlowEdge>>;
666
+
667
+ /**
668
+ * AvlEventWireEdge — React Flow edge for emit/listen event wiring.
669
+ *
670
+ * Dashed orange Bezier path with event name label at midpoint.
671
+ * Uses AVL CONNECTION_COLORS.emitListen styling.
672
+ */
673
+
674
+ interface AvlEventWireEdgeData {
675
+ [key: string]: string | boolean | undefined;
676
+ event: string;
677
+ compatible?: boolean;
678
+ }
679
+ type AvlEventWireFlowEdge = Edge<AvlEventWireEdgeData, 'eventWire'>;
680
+ declare const AvlEventWireEdge: React__default.FC<EdgeProps<AvlEventWireFlowEdge>>;
681
+
682
+ /**
683
+ * AvlBackwardEdge — Dashed backward/retry transition edge.
684
+ *
685
+ * Uses CONNECTION_COLORS.backward styling: dashed, lighter color.
686
+ */
687
+
688
+ declare const AvlBackwardEdge: React__default.FC<EdgeProps>;
689
+
690
+ /**
691
+ * AvlPageEdge — Thin solid page-reference edge.
692
+ *
693
+ * Slate colored, 1px, used for page-to-trait references.
694
+ */
695
+
696
+ declare const AvlPageEdge: React__default.FC<EdgeProps>;
697
+
698
+ /**
699
+ * AvlBindingEdge — Dotted violet binding edge with @ marker.
700
+ *
701
+ * Used for data binding connections. Dotted line at 1px with
702
+ * a small @ label at the midpoint.
703
+ */
704
+
705
+ declare const AvlBindingEdge: React__default.FC<EdgeProps>;
706
+
707
+ /**
708
+ * AVL Preview Converter
709
+ *
710
+ * Extracts render-ui pattern configs from OrbitalSchema transitions
711
+ * and builds the FlowCanvas graph: one card per orbital (all of them, or
712
+ * only the focused one), each showing the live orbital or a state picked
713
+ * from its dropdown (`stateOptionsOf`).
714
+ *
715
+ * Key feature: detects interactive elements (buttons, links) inside
716
+ * patterns that fire events. These become per-element source handles
717
+ * so edges connect from the specific trigger element to the target screen.
718
+ *
719
+ * Uses @almadar/core types for schema-level constructs.
720
+ */
721
+
722
+ /**
723
+ * What a FlowCanvas lays out: `overview` — orbital cards (the focused one, or
724
+ * all of them); `trait-expanded` — one card per trait of a single orbital,
725
+ * wired by intra-orbital `emits → listens` edges (the cosmic tab's circuit).
726
+ */
727
+ type ViewLevel = 'overview' | 'trait-expanded' | 'system';
728
+ /**
729
+ * Screen size preset for OrbPreview rendering inside nodes.
730
+ *
731
+ * Aligned with the four-breakpoint responsiveness audit:
732
+ * mobile — phone portrait (≤640px)
733
+ * tablet — iPad / small landscape (641–1024px)
734
+ * laptop — 13–15" notebook (1025–1440px)
735
+ * wide — desktop / monitor (≥1441px)
736
+ *
737
+ * Preset widths are representative viewport widths within each range; the
738
+ * preview renders at exactly this width so the embedded UI experiences
739
+ * the same media-query / container-query behavior it would at the real
740
+ * viewport. `minHeight` only floors the preview frame; vertical sizing is
741
+ * content-driven (OrbPreview height="auto").
742
+ */
743
+ type ScreenSize = 'mobile' | 'tablet' | 'laptop' | 'wide';
744
+ /**
745
+ * An interactive element inside a render-ui pattern that fires an event.
746
+ * For example, a button with `event: "CHECKOUT"` is an event source.
747
+ * These are used to draw edges from the specific trigger element to the
748
+ * target screen, making the prototype flow concrete.
749
+ */
750
+ interface PatternEventSource {
751
+ /** The event name fired by this element (e.g., "CHECKOUT"). */
752
+ event: string;
753
+ /** The pattern type of the trigger element (e.g., "button", "link", "icon-button"). */
754
+ patternType: string;
755
+ /** Human label if available (e.g., "Checkout", "Submit"). */
756
+ label?: string;
757
+ /**
758
+ * Path within the pattern tree (e.g., "children.2" means third child).
759
+ * Used to position the handle near the trigger element.
760
+ */
761
+ path: string;
762
+ /** Vertical position hint (0..1) for handle placement on the node. */
763
+ positionHint: number;
764
+ /** Typed payload fields if this event carries data. */
765
+ payloadFields?: Array<{
766
+ name: string;
767
+ type: string;
768
+ required?: boolean;
769
+ }>;
770
+ }
771
+ /** A slot + pattern config pair extracted from a render-ui effect. */
772
+ interface RenderUIEntry {
773
+ slot: string;
774
+ pattern: AnyPatternConfig;
775
+ }
776
+ /**
777
+ * Data for a preview node (used at both overview and expanded levels). A closed
778
+ * type alias, not an index-signature interface: it stays assignable to React
779
+ * Flow's `Record<string, unknown>` node-data bound while every field is declared.
780
+ */
781
+ type PreviewNodeData = {
782
+ /** Orbital this node belongs to. */
783
+ orbitalName: string;
784
+ /** Trait name (a card showing a picked state). */
785
+ traitName?: string;
786
+ /** State name after this transition fires (a card showing a picked state). */
787
+ stateName?: string;
788
+ /** Event that triggers this transition (a card showing a picked state). */
789
+ transitionEvent?: string;
790
+ /** From state (a card showing a picked state). */
791
+ fromState?: string;
792
+ /** To state (a card showing a picked state). */
793
+ toState?: string;
794
+ /** The card frame's width set by the designer; the screen-size preset otherwise. */
795
+ cardWidth?: number;
796
+ /** `'screen'`: a designer card standing for every transition that paints this same render. */
797
+ cardLabel?: 'screen';
798
+ /** Screen cards: every event that shows this render, in declaration order. */
799
+ enteredBy?: string[];
800
+ /** The screen its trait shows when the app opens: entered by INIT fired from the trait's initial state. */
801
+ opensApp?: boolean;
802
+ /**
803
+ * Render-ui patterns extracted from the transition's effects.
804
+ * Each entry is a slot + pattern config pair.
805
+ */
806
+ patterns: RenderUIEntry[];
807
+ /**
808
+ * Interactive elements within the patterns that fire events.
809
+ * Each one becomes a source handle on the node, allowing edges
810
+ * to connect from the specific button/link to the target screen.
811
+ */
812
+ eventSources: PatternEventSource[];
813
+ /** Behavior layer for visual indicator (color band). */
814
+ layer?: string;
815
+ /** State role for visual indicator. */
816
+ stateRole?: StateRole;
817
+ /** All effect types on this transition (for overlay). */
818
+ effectTypes?: string[];
819
+ /** Guard expression (for overlay). */
820
+ guard?: Expression | null;
821
+ entityName?: string;
822
+ persistence?: string;
823
+ fieldCount?: number;
824
+ traitCount?: number;
825
+ pageRoutes?: string[];
826
+ /**
827
+ * Generation status for this orbital. When `'running'`, the overview node
828
+ * renders a spinner overlay + accent border so the user can see which
829
+ * orbital the coordinator is currently dispatching to. Other states are
830
+ * available so consumers can also paint success/error treatments
831
+ * (e.g. green border on completion, red on failure). Default is `'idle'`.
832
+ *
833
+ * Set by FlowCanvasProps.orbitalStatus and threaded through the converter.
834
+ * Future expansion: hover over a `'running'` node to surface the subagent
835
+ * trace inline.
836
+ */
837
+ status?: 'idle' | 'running' | 'success' | 'error';
838
+ /**
839
+ * The `OrbitalSchema.name` this node was derived from. The reserved value
840
+ * `'__design_system__'` identifies nodes belonging to the Design System
841
+ * tab's synthesized catalog schema, so downstream event handlers can route
842
+ * mutation events to the project theme manifest instead of the project's
843
+ * orbital schema. Unset for project orbitals — handlers treat absence as
844
+ * "project schema".
845
+ */
846
+ sourceSchemaName?: string;
847
+ /** World view: this card is the focused orbital. */
848
+ focused?: boolean;
849
+ /**
850
+ * Discriminator for the node variant. Absent on orbital cards (a card
851
+ * showing a picked state carries `transitionEvent`). Set to `'trait-card'` for nodes
852
+ * produced by `orbitalToTraitGraph` so renderers can branch cleanly.
853
+ */
854
+ kind?: 'trait-card' | 'system-orbital' | 'system-band' | 'dependency' | 'dependency-column';
855
+ /** `dependency` / `dependency-column`: the column the node sits in (the app, or the layer it is imported from). */
856
+ dependencyColumn?: 'app' | 'own' | 'io' | 'std' | 'primitive' | 'unknown' | 'client' | 'host' | 'service' | 'store' | 'external';
857
+ /** `dependency`: its part in the current selection (`both`: on each side of it). */
858
+ dependencyRole?: 'selected' | 'upstream' | 'downstream' | 'both' | 'dim';
859
+ /** Trait flow: a composed unit's traits and embedded render pieces. */
860
+ flowTraits?: number;
861
+ flowRenderPieces?: number;
862
+ /** `dependency`: a live unit's health (the infrastructure view), and one metric to show beside it. */
863
+ unitStatus?: 'ok' | 'degraded' | 'down' | 'idle';
864
+ unitMetric?: string;
865
+ /** `system-band`: which band the label heads, and how many orbitals it holds. */
866
+ bandKind?: 'connected' | 'standalone';
867
+ bandCount?: number;
868
+ /** `system-orbital`: the events this orbital exchanges with others (in and out), for search. */
869
+ wireEvents?: string[];
870
+ /**
871
+ * Trait-card transitions (`kind === 'trait-card'` only). One row per
872
+ * transition; each row is clickable and drills to L4 transition detail
873
+ * in cosmic. `event` is the trigger; `fromState` / `toState` mirror the
874
+ * underlying state-machine edge.
875
+ */
876
+ transitions?: Array<{
877
+ event: string;
878
+ fromState: string;
879
+ toState: string;
880
+ }>;
881
+ /**
882
+ * Trait-card `emits` event names (`kind === 'trait-card'` only). One
883
+ * source handle per entry on the right edge of the card. Drives the
884
+ * outgoing wire endpoints in `orbitalToTraitGraph`.
885
+ */
886
+ emits?: string[];
887
+ /**
888
+ * Trait-card `listens` event names (`kind === 'trait-card'` only). One
889
+ * target handle per entry on the left edge of the card. Drives the
890
+ * incoming wire endpoints in `orbitalToTraitGraph`.
891
+ */
892
+ listens?: string[];
893
+ /**
894
+ * Trait-card `linkedEntity` (`kind === 'trait-card'` only). Surfaced as a
895
+ * subtitle/badge next to the trait name so users can see what entity the
896
+ * trait operates on. Mirrors `Trait.linkedEntity` from the resolved schema.
897
+ */
898
+ linkedEntity?: string;
899
+ /** Full parsed schema threaded to node renderers (e.g. TraitCardNode). */
900
+ _fullSchema?: OrbitalSchema;
901
+ /** Mock entity data for the orbital preview. */
902
+ _mockData?: EntityData;
903
+ };
904
+ /** Data for event flow edges. */
905
+ interface EventEdgeData {
906
+ [key: string]: string | boolean | undefined;
907
+ /** The event name displayed on the edge. */
908
+ event: string;
909
+ /** Source state name (expanded level). */
910
+ fromState?: string;
911
+ /** Target state name (expanded level). */
912
+ toState?: string;
913
+ /** Whether this is a backward/retry transition. */
914
+ isBackward?: boolean;
915
+ /** Whether this is a cross-orbital event wire (overview level). */
916
+ isCrossOrbital?: boolean;
917
+ /** Source trait (for cross-orbital wires). */
918
+ fromTrait?: string;
919
+ /** Target trait (for cross-orbital wires). */
920
+ toTrait?: string;
921
+ /**
922
+ * The pattern type that triggers this event (e.g., "button").
923
+ * Displayed on the edge label for context.
924
+ */
925
+ triggerPatternType?: string;
926
+ /** The trigger element's label (e.g., "Checkout"). */
927
+ triggerLabel?: string;
928
+ }
929
+ /**
930
+ * Build a React Flow graph for the overview level.
931
+ * Each orbital gets one node showing its INIT transition's UI.
932
+ */
933
+ declare function schemaToOverviewGraph(schema: OrbitalSchema, mockData?: EntityData, behaviorMeta?: Record<string, {
934
+ layer: string;
935
+ }>, layoutHint?: 'pipeline' | 'grid', orbitalStatus?: Record<string, PreviewNodeData['status']>, screenSize?: ScreenSize): {
936
+ nodes: Node<PreviewNodeData>[];
937
+ edges: Edge<EventEdgeData>[];
938
+ };
939
+ /** How a card's states are listed: one per render-ui transition, or one per distinct render (designer). */
940
+ type CanvasStateView = 'transitions' | 'screens';
941
+ /** The state-dropdown entry that shows the whole orbital running from its initial state. */
942
+ declare const LIVE_STATE = "live";
943
+ interface CanvasStateOption {
944
+ id: string;
945
+ label: string;
946
+ hint: string;
947
+ data: PreviewNodeData;
948
+ }
949
+ interface CanvasStateGroup {
950
+ alias: string;
951
+ behaviorName: string;
952
+ options: CanvasStateOption[];
953
+ }
954
+ interface CanvasStateOptions {
955
+ own: CanvasStateOption[];
956
+ groups: CanvasStateGroup[];
957
+ }
958
+ /**
959
+ * The states a card can show: the orbital's own render-ui transitions, plus
960
+ * one group per imported behavior (`sourceBehavior.alias`). A trait embedded
961
+ * in another trait's render (`@trait.X`) draws inside that screen, so it is
962
+ * not a state of its own.
963
+ */
964
+ declare function stateOptionsOf(schema: OrbitalSchema, orbitalName: string, view: CanvasStateView, mockData?: EntityData): CanvasStateOptions;
965
+ /**
966
+ * The state a card opens on: an INIT render (own, then an imported behavior's)
967
+ * — the screen the app actually opens on — else its first state, else the
968
+ * live orbital.
969
+ */
970
+ declare function initialStateOf(options: CanvasStateOptions): string;
971
+ /** One transition a verification run played on a card's trait. */
972
+ interface PlayedStep {
973
+ trait: string;
974
+ event: string;
975
+ from: string;
976
+ to: string;
977
+ }
978
+ /**
979
+ * The card option showing where a played step landed: the option for exactly that transition,
980
+ * else the trait's first screen of the state it reached. `undefined` when the state has no
981
+ * screen of its own (the card then stays as it is).
982
+ */
983
+ declare function optionForPlayedStep(options: CanvasStateOptions, step: PlayedStep): string | undefined;
984
+ interface CanvasViewOptions {
985
+ /** `local`: the focused orbital's card only; `world`: every orbital's card. */
986
+ scope: 'local' | 'world';
987
+ focusedOrbital?: string;
988
+ /** Each card's dropdown choice (a `CanvasStateOption.id`); its `initialStateOf` when absent or gone. */
989
+ stateByOrbital?: Record<string, string>;
990
+ view: CanvasStateView;
991
+ mockData?: EntityData;
992
+ behaviorMeta?: Record<string, {
993
+ layer: string;
994
+ }>;
995
+ layoutHint?: 'pipeline' | 'grid';
996
+ orbitalStatus?: Record<string, PreviewNodeData['status']>;
997
+ screenSize?: ScreenSize;
998
+ }
999
+ /** The canvas's cards and edges for a scope, each card showing its chosen state. */
1000
+ declare function canvasViewGraph(schema: OrbitalSchema, opts: CanvasViewOptions): {
1001
+ nodes: Node<PreviewNodeData>[];
1002
+ edges: Edge<EventEdgeData>[];
1003
+ focusedOrbital: string | undefined;
1004
+ /** Every card's world-view layout position (the local view draws its one card at the origin). */
1005
+ worldPositions: Record<string, {
1006
+ x: number;
1007
+ y: number;
1008
+ }>;
1009
+ };
1010
+
1011
+ /**
1012
+ * Where the design-selection overlay draws its spacing handles, from the
1013
+ * selected container's box and its direct children's boxes (all in the
1014
+ * card's content coordinates).
1015
+ */
1016
+
1017
+ /** An element's distances from its parent's four sides (negative where it sticks out), and the parent's size. */
1018
+ interface OffsetInParent {
1019
+ left: number;
1020
+ top: number;
1021
+ right: number;
1022
+ bottom: number;
1023
+ parentWidth: number;
1024
+ parentHeight: number;
1025
+ }
1026
+
1027
+ /**
1028
+ * OrbPreviewNode
1029
+ *
1030
+ * React Flow node that renders a real OrbPreview inside it.
1031
+ * The canvas is always live and editable (like Figma). Clicking any
1032
+ * rendered UI element selects its pattern and shows props in the
1033
+ * TransitionPanel. No edit mode toggle needed.
1034
+ *
1035
+ * The header is the drag handle for React Flow. The content area
1036
+ * passes clicks through to the pattern elements.
1037
+ */
1038
+
1039
+ /** Selected pattern info, emitted when user clicks a UI element in the node. */
1040
+ interface SelectedPattern {
1041
+ /** The pattern type (e.g., "button", "input", "stack"). */
1042
+ patternType: string;
1043
+ /** The DOM element's data-pattern-id if available. */
1044
+ patternId?: string;
1045
+ /** The node this pattern belongs to. */
1046
+ nodeData: PreviewNodeData;
1047
+ /** The source trait for this slot content. */
1048
+ sourceTrait?: string;
1049
+ /** Bounding rect relative to the node for floating inspector positioning. */
1050
+ rect?: {
1051
+ top: number;
1052
+ left: number;
1053
+ width: number;
1054
+ height: number;
1055
+ };
1056
+ /** Every selected pattern path in this node (multi-select), this one — the primary — last. */
1057
+ selection?: string[];
1058
+ /** Its distances from its parent's four sides and the parent's size (card px), when it has a parent pattern. */
1059
+ offsetInParent?: OffsetInParent;
1060
+ /** The element's own address — the trait that drew it (an embedded trait's, not the card's), transition, slot, path. */
1061
+ focus?: EditFocus;
1062
+ /** Every selected element's own address (multi-select), the primary last — `selection` repeats paths across embedded traits. */
1063
+ elements?: EditFocus[];
1064
+ }
1065
+ /** A trait's latest verification verdict, as the host keeps it. */
1066
+ interface CardVerdict {
1067
+ status: 'pass' | 'fail' | 'stale' | 'running';
1068
+ detail?: string;
1069
+ }
1070
+ /**
1071
+ * A host that verifies from the canvas (Studio's Designer): each card shows controls to verify
1072
+ * the transition it shows (`UI:CARD_VERIFY_STEP`) or its trait's whole walk
1073
+ * (`UI:CARD_VERIFY_TRAIT`, paused and stopped with `UI:CARD_VERIFY_PAUSE` / `_STOP`), and the
1074
+ * trait's verdict. Absent: no verify controls.
1075
+ */
1076
+ interface CanvasVerify {
1077
+ verdictOf: (orbital: string, trait: string) => CardVerdict | undefined;
1078
+ playing: (orbital: string) => boolean;
1079
+ /** Subscribe to the states a run reaches; a card with a screen for the step flips to it. Returns the unsubscribe. */
1080
+ follow: (onStep: (step: CanvasStepReached) => void) => () => void;
1081
+ }
1082
+ /** A transition a verification run just took, on the trait of `orbital`. */
1083
+ interface CanvasStepReached {
1084
+ orbital: string;
1085
+ trait: string;
1086
+ event: string;
1087
+ from: string;
1088
+ to: string;
1089
+ }
1090
+ declare const CanvasVerifyContext: React__default.Context<CanvasVerify | null>;
1091
+ declare const OrbPreviewNode: React__default.NamedExoticComponent<NodeProps>;
1092
+
1093
+ /**
1094
+ * EventFlowEdge
1095
+ *
1096
+ * React Flow edge for the V3 FlowCanvas. Shows the event name and
1097
+ * optionally the trigger element (button label) that fires it.
1098
+ *
1099
+ * When the edge originates from a specific event source handle,
1100
+ * the label shows "Button Label \u2192 EVENT" to make the connection
1101
+ * between UI element and transition clear.
1102
+ */
1103
+
1104
+ declare const EventFlowEdge: React__default.NamedExoticComponent<EdgeProps>;
1105
+
1106
+ declare function deriveEditFocusFromElement(el: HTMLElement): EditFocus | null;
1107
+
1108
+ interface InlineTextEditOptions {
1109
+ /** The schema being rendered — the literal-or-bound check reads the prop from it. */
1110
+ schema: OrbitalSchema | null | undefined;
1111
+ enabled: boolean;
1112
+ /** The card's own trait + transition, when the host knows them better than the DOM (a canvas card). */
1113
+ node?: {
1114
+ traitName?: string;
1115
+ transitionEvent?: string;
1116
+ };
1117
+ }
1118
+ /** A `onDoubleClickCapture` handler for the element that contains the rendered content. */
1119
+ declare function useInlineTextEdit({ schema, enabled, node }: InlineTextEditOptions): (e: React.MouseEvent) => void;
1120
+
1121
+ /**
1122
+ * useCanvasDnd — drag/drop primitives for the AVL canvas surface.
1123
+ *
1124
+ * Shares the sensor stack + collision waterfall with `useDataDnd` (both
1125
+ * import from `hooks/useAlmadarDndCollision`); diverges on drop semantics
1126
+ * because palette → canvas is a cursor-resolved tree insert, not a
1127
+ * sortable-list reorder.
1128
+ *
1129
+ * Pointer-sensor based so it works inside React Flow nodes (the native
1130
+ * HTML5 DnD path was swallowed by React Flow's pan/zoom handlers).
1131
+ *
1132
+ * The kind being dragged is React context (`useCanvasDragKind`), not a bus event.
1133
+ *
1134
+ * Event contract (defaults — overridable via `CanvasDndProvider.onDrop`):
1135
+ * - On 'pattern' drop: emits `UI:PATTERN_DROP` { patternType, containerNode, parentPath?, index? }
1136
+ * - On 'behavior' drop: emits `UI:BEHAVIOR_DROP` { behaviorName, containerNode }
1137
+ * - On 'pattern-instance' drop: emits `UI:PATTERN_MOVE` { fromPath, loc, toParentPath?, toIndex? } —
1138
+ * reorder of an already-placed pattern; `loc` is the source's own
1139
+ * containerNode (orbitalName/traitName/transitionEvent), `toParentPath`/
1140
+ * `toIndex` come from `target.resolvePath` same as an insert drop.
1141
+ *
1142
+ * The `onDrop` callback lets consumers route ANY payload kind (including
1143
+ * the defaults above) to their own bus events or schema mutations instead —
1144
+ * e.g. the builder app bypasses ALL default emits (see UIEditor.tsx) because
1145
+ * `useEventBus()` resolves to a different chunk's context inside this
1146
+ * provider. Return `true` from `onDrop` to suppress the default emit.
1147
+ */
1148
+
1149
+ /**
1150
+ * Drag kinds the canvas understands. Open-ended `string` so consumers can
1151
+ * introduce further kinds without touching this file — the provider's
1152
+ * defaults cover `'pattern'`, `'behavior'` and `'pattern-instance'`
1153
+ * (in-canvas reorder of an existing pattern, source: `OrbPreviewNode`'s L2
1154
+ * content); anything else routes through the consumer's `onDrop`.
1155
+ */
1156
+ type CanvasDragKind = 'pattern' | 'behavior' | 'pattern-instance' | (string & {});
1157
+ /**
1158
+ * Payload carried by a draggable. For `'pattern'` tiles `data` is
1159
+ * `{ type: string }`, for `'behavior'` tiles `{ name: string }`, for
1160
+ * `'pattern-instance'` (reorder) `{ fromPath: string, loc: CanvasContainerNode }`.
1161
+ * For any other consumer-defined kind, the shape is whatever the consumer
1162
+ * agrees on with its own `onDrop`.
1163
+ */
1164
+ interface CanvasDragPayload {
1165
+ kind: CanvasDragKind;
1166
+ data: EventPayload;
1167
+ }
1168
+ /**
1169
+ * Orbital/trait/transition context a drop will mutate.
1170
+ *
1171
+ * A type alias (not an interface) so it is assignable to `EventPayload` — we pass the whole
1172
+ * object as a field on the `UI:PATTERN_DROP` payload.
1173
+ */
1174
+ type CanvasContainerNode = {
1175
+ orbitalName?: string;
1176
+ traitName?: string;
1177
+ transitionEvent?: string;
1178
+ };
1179
+ /** Drop-target metadata stored on each droppable's `data` field. */
1180
+ /** Where a drop lands: the card path + index, and the container element's own address when the card knows it. */
1181
+ interface CanvasResolvedDrop {
1182
+ parentPath: string;
1183
+ index: number;
1184
+ /** The container's own address (the trait that drew it — paths restart in each embedded behavior). */
1185
+ container?: {
1186
+ orbital: string;
1187
+ trait: string;
1188
+ transition: string;
1189
+ slot: string;
1190
+ path: string;
1191
+ };
1192
+ }
1193
+ interface CanvasDropTarget {
1194
+ /**
1195
+ * `l1` = outer orbital frame (overview level).
1196
+ * `l2` = render-ui slot inside an expanded orbital.
1197
+ * `wrapper` = page-level catch-all fired when nothing inner caught the drop.
1198
+ */
1199
+ level: 'l1' | 'l2' | 'wrapper' | (string & {});
1200
+ /** Full or partial container context this drop will mutate. */
1201
+ containerNode: CanvasContainerNode;
1202
+ /**
1203
+ * Optional resolver called at drop time to derive `parentPath` + `index`
1204
+ * from the pointer's final client position. L2 slots use this to walk the
1205
+ * DOM under their `contentRef` and find the nearest `data-accepts-children`
1206
+ * container plus the cursor-relative insertion index.
1207
+ */
1208
+ resolvePath?: (cursor: {
1209
+ x: number;
1210
+ y: number;
1211
+ }) => CanvasResolvedDrop | null;
1212
+ }
1213
+ interface CanvasDropEvent {
1214
+ payload: CanvasDragPayload;
1215
+ target: CanvasDropTarget;
1216
+ /** Final pointer client position, when dnd-kit could compute it. */
1217
+ cursor: {
1218
+ x: number;
1219
+ y: number;
1220
+ } | null;
1221
+ /**
1222
+ * Resolved insertion path/index from `target.resolvePath(cursor)`. Null
1223
+ * when the target has no resolver or the cursor was unavailable.
1224
+ */
1225
+ resolved: CanvasResolvedDrop | null;
1226
+ }
1227
+ interface UseCanvasDraggableArgs {
1228
+ /** Unique id (per-tile). dnd-kit uses this to track the active drag. */
1229
+ id: string;
1230
+ payload: CanvasDragPayload;
1231
+ disabled?: boolean;
1232
+ }
1233
+ interface UseCanvasDraggableResult {
1234
+ setNodeRef: (node: HTMLElement | null) => void;
1235
+ /** dnd-kit's attributes, with `role` narrowed to a declared ARIA role so they spread onto a core `Box`. */
1236
+ attributes: Omit<ReturnType<typeof useDraggable>['attributes'], 'role'> & {
1237
+ role?: AriaRole;
1238
+ };
1239
+ listeners: ReturnType<typeof useDraggable>['listeners'];
1240
+ isDragging: boolean;
1241
+ /** Spread on the tile — live transform + grab cursor + touch-action. */
1242
+ style: React__default.CSSProperties;
1243
+ }
1244
+ declare function useCanvasDraggable({ id, payload, disabled, }: UseCanvasDraggableArgs): UseCanvasDraggableResult;
1245
+ interface UseCanvasDroppableArgs {
1246
+ id: string;
1247
+ target: CanvasDropTarget;
1248
+ /** Which drag kinds this zone accepts. Defaults to ['pattern','behavior']. */
1249
+ accepts?: readonly CanvasDragKind[];
1250
+ disabled?: boolean;
1251
+ }
1252
+ interface UseCanvasDroppableResult {
1253
+ setNodeRef: (node: HTMLElement | null) => void;
1254
+ isOver: boolean;
1255
+ }
1256
+ declare function useCanvasDroppable({ id, target, accepts, disabled, }: UseCanvasDroppableArgs): UseCanvasDroppableResult;
1257
+ interface CanvasDndProviderProps {
1258
+ children: React__default.ReactNode;
1259
+ /**
1260
+ * Override the default drop behavior. The default emits `UI:PATTERN_DROP`
1261
+ * / `UI:BEHAVIOR_DROP` based on payload kind. Pass an `onDrop` to route
1262
+ * additional kinds (e.g. `'pattern-instance'` reorder) elsewhere, or to
1263
+ * mutate schema directly without going through the bus.
1264
+ *
1265
+ * Return `true` from `onDrop` to suppress the default emit; return
1266
+ * `false`/`undefined` to fall through to defaults after running your code.
1267
+ */
1268
+ onDrop?: (drop: CanvasDropEvent) => boolean | void;
1269
+ /**
1270
+ * Renders the floating preview that follows the cursor during a drag.
1271
+ * @dnd-kit moves the source DOM node via CSS transform, which gets clipped
1272
+ * by any ancestor with `overflow: hidden|auto|scroll` (e.g. a scrollable
1273
+ * palette column). Returning a node here mounts a portal-attached overlay
1274
+ * outside the clip so the user always sees what they're dragging.
1275
+ *
1276
+ * Receives the active payload (or null between drags) and returns the
1277
+ * preview element — typically the same JSX the tile renders inline.
1278
+ */
1279
+ renderOverlay?: (payload: CanvasDragPayload | null) => React__default.ReactNode;
1280
+ }
1281
+ /**
1282
+ * The bus event a canvas drop becomes — one shaping for every emitter (the
1283
+ * provider's default emit, and a host bridge emitting on its own bus):
1284
+ * a palette pattern → `UI:PATTERN_DROP`, a behavior → `UI:BEHAVIOR_DROP`
1285
+ * (both with the resolved position and the container's own address), an
1286
+ * already-placed pattern → `UI:PATTERN_MOVE`. Null for anything else.
1287
+ */
1288
+ declare function dropBusEvent(drop: CanvasDropEvent): {
1289
+ event: 'UI:PATTERN_DROP' | 'UI:BEHAVIOR_DROP' | 'UI:PATTERN_MOVE';
1290
+ payload: EventPayload;
1291
+ } | null;
1292
+ /**
1293
+ * Wraps a canvas subtree in one DndContext + sensors + collision waterfall.
1294
+ * Every `useCanvasDraggable` / `useCanvasDroppable` inside this provider
1295
+ * participates in the same drag session.
1296
+ */
1297
+ declare function CanvasDndProvider({ children, onDrop, renderOverlay, }: CanvasDndProviderProps): React__default.ReactElement;
1298
+
1299
+ type ElementPropAccess =
1300
+ /** `knob`: the prop is that knob of the element's call site (edited in Settings). */
1301
+ {
1302
+ editable: true;
1303
+ knob?: string;
1304
+ } | {
1305
+ editable: false;
1306
+ reason: 'bound' | 'fixed' | 'loading';
1307
+ detail: string;
1308
+ };
1309
+ /** One knob of the behavior an element belongs to, as its editor asks it. */
1310
+ interface ElementKnob {
1311
+ key: string;
1312
+ question: DomainQuestion;
1313
+ value: DomainQuestionAnswer | undefined;
1314
+ }
1315
+ /** The knobs the element's call site (`trait`) sets on its behavior. */
1316
+ interface ElementSettings {
1317
+ trait: string;
1318
+ knobs: ReadonlyArray<ElementKnob>;
1319
+ }
1320
+ interface ElementEditAccess {
1321
+ prop: (name: string) => ElementPropAccess;
1322
+ /** The behavior an embedded element belongs to — shown as "Part of <behavior>". */
1323
+ partOf?: string;
1324
+ /** Its behavior's knobs, for the inspector's Settings. */
1325
+ settings?: ElementSettings;
1326
+ }
1327
+ type ElementEditAccessResolver = (focus: EditFocus) => ElementEditAccess;
1328
+ declare const EDITABLE: ElementPropAccess;
1329
+ declare const ElementEditAccessContext: React$1.Context<ElementEditAccessResolver | null>;
1330
+ /** A prop's access at the element, editable when the host gives no answer. */
1331
+ declare function propAccessAt(resolver: ElementEditAccessResolver | null, focus: EditFocus | null | undefined, prop: string): ElementPropAccess;
1332
+
1333
+ /**
1334
+ * OrbInspector
1335
+ *
1336
+ * Universal contextual inspector for .orb programs. Built into FlowCanvas.
1337
+ * Two tabs: Inspector (contextual sections) and Code (.orb syntax view).
1338
+ *
1339
+ * Inspector shows different sections based on what was clicked:
1340
+ * - Orbital header → entity fields, traits, pages
1341
+ * - Pattern element → pattern props, entity (if entity-aware), transition (if fires event)
1342
+ * - Transition node → state diagram, guard, effects, render-ui source
1343
+ *
1344
+ * Code tab shows the .orb representation of the selected context.
1345
+ *
1346
+ * When `editable` is true, inspector fields become inputs.
1347
+ */
1348
+
1349
+ interface OrbInspectorProps {
1350
+ node: PreviewNodeData;
1351
+ schema: OrbitalSchema;
1352
+ editable?: boolean;
1353
+ /**
1354
+ * Studio persona viewing the inspector. Controls tab visibility (Code is
1355
+ * architect-only, Styles is universal) and section visibility (Entity,
1356
+ * raw guard, raw effects are architect-only). Default `'builder'` matches
1357
+ * pre-Phase-2 behavior except for the new Styles tab, which every persona
1358
+ * gets.
1359
+ */
1360
+ userType?: 'builder' | 'designer' | 'architect';
1361
+ /**
1362
+ * Project theme tokens. The Styles tab reads them for Global edits (and, on
1363
+ * the synthesized `__design_system__` schema, lists them all); those edits
1364
+ * emit `UI:PROP_CHANGE` with `scope: 'global'` + `tokenGroup`/`tokenKey`.
1365
+ */
1366
+ themeManifest?: ThemeDefinition;
1367
+ /**
1368
+ * Initial tab on mount. Local state still owns the active tab after
1369
+ * that — this does not make the component controlled. Enables
1370
+ * deep-linking into a specific tab (e.g. from a LayersPanel selection).
1371
+ */
1372
+ defaultTab?: InspectorTab;
1373
+ /** Fires whenever the tab-bar selection changes. */
1374
+ onTabChange?: (tab: InspectorTab) => void;
1375
+ onSchemaChange?: (schema: OrbitalSchema) => void;
1376
+ onClose: () => void;
1377
+ /**
1378
+ * In-node pattern selection, when this inspector is rendered OUTSIDE
1379
+ * `FlowCanvas` (see `FlowCanvas`'s `externalInspector` +
1380
+ * `onSelectedPatternChange`). `PatternSelectionContext` only reaches
1381
+ * descendants of `FlowCanvas`'s own render tree, so a standalone
1382
+ * consumer has no other way to feed pattern-level selection in — pass
1383
+ * `FlowCanvas`'s `onSelectedPatternChange` payload straight through here.
1384
+ * When omitted (the inline, built-in-inspector usage), falls back to
1385
+ * `PatternSelectionContext`, unchanged.
1386
+ */
1387
+ selectedPattern?: SelectedPattern | null;
1388
+ /** What the selected element lets the user change; `ElementEditAccessContext` (inside a canvas) when omitted. */
1389
+ elementAccess?: ElementEditAccessResolver;
1390
+ }
1391
+ type InspectorTab = 'inspector' | 'design' | 'prototype' | 'code';
1392
+ declare function OrbInspector({ node, schema, editable, userType, themeManifest, defaultTab, onTabChange, onSchemaChange, onClose, selectedPattern: selectedPatternProp, elementAccess: elementAccessProp }: OrbInspectorProps): React__default.ReactElement;
1393
+ declare namespace OrbInspector {
1394
+ var displayName: string;
1395
+ }
1396
+
1397
+ /**
1398
+ * LayersPanel
1399
+ *
1400
+ * Figma-style layers tree for an OrbitalSchema. Thin adapter over FileTree's
1401
+ * generic `items` mode — all it does is flatten the schema into
1402
+ * `FileTreeItem[]` via `schemaToLayerItems` and render `<FileTree look="nav" />`.
1403
+ * No tree/panel logic of its own.
1404
+ *
1405
+ * ---------------------------------------------------------------------------
1406
+ * ID scheme (stable, parseable, '/'-joined path of typed segments)
1407
+ * ---------------------------------------------------------------------------
1408
+ * orbital:<orbitalName>
1409
+ * orbital:<orbitalName>/page:<pageName>
1410
+ * orbital:<orbitalName>/trait:<traitName>
1411
+ * orbital:<orbitalName>/trait:<traitName>/transition:<index>
1412
+ * orbital:<orbitalName>/trait:<traitName>/transition:<index>/slot:<slotName>
1413
+ * orbital:<orbitalName>/trait:<traitName>/transition:<index>/slot:<slotName>/pattern:<slotIndex>:<patternPath>
1414
+ *
1415
+ * The transition segment uses the transition's array INDEX (not its event
1416
+ * name) because two transitions in the same trait can share an event name
1417
+ * (same event fired from different `from` states) — the index is the only
1418
+ * value `parseTraitLevel`/`parseTransitionLevel` guarantee is unique. The
1419
+ * slot segment uses the slot's NAME (render-ui slots are conventionally
1420
+ * distinct within one transition); the `pattern:<slotIndex>` part of the
1421
+ * final leaf's key disambiguates the rare case of two render-ui effects
1422
+ * targeting the same slot name within one transition by falling back to
1423
+ * their position among that transition's render-ui effects.
1424
+ *
1425
+ * `<patternPath>` is the same schema-compatible address `UISlotRenderer`
1426
+ * stamps as `data-pattern-path` and `useSchemaEditor`'s `navigatePatternPath`
1427
+ * / `splitPatternChildPath` consume: `root` for the render-ui root, then
1428
+ * `root.children.<i>`, `root.children.<i>.children.<j>`, … recursing into
1429
+ * every nested pattern's `children` (an array, or a single bare pattern
1430
+ * object — both normalized the same way `UISlotRenderer.renderPatternChildren`
1431
+ * does). Non-object children (`@entity.X` / `@trait.X` string bindings,
1432
+ * literals) are bindings, not nested patterns, and never get a row. Every
1433
+ * pattern node in the render-ui tree — root and nested alike — gets its own
1434
+ * `pattern:<slotIndex>:<patternPath>` leaf, parented to its containing
1435
+ * pattern's row (or the slot row, for `root`), so a consumer can walk the
1436
+ * exact tree `schemaEditor.movePattern`/`removePattern`/`updatePatternProp`
1437
+ * address.
1438
+ *
1439
+ * This is backward-compatible one level up: every non-pattern segment
1440
+ * (`orbital:` / `page:` / `trait:` / `transition:` / `slot:`) is unchanged,
1441
+ * so a consumer parsing only those levels (e.g. to resolve which orbital a
1442
+ * click belongs to) needs no changes. Only the trailing pattern leaf's key
1443
+ * gained the `:<patternPath>` suffix — use the exported `parseLayerId` to
1444
+ * read it instead of re-deriving the regex.
1445
+ *
1446
+ * Hierarchy choice: orbitals are the roots, with each orbital's `pages` and
1447
+ * `traits` as sibling children (an OrbitalDefinition owns both directly).
1448
+ * A schema has no cross-orbital "Page" entity and no data linking a
1449
+ * render-ui slot back to a specific page route, so a page-rooted tree
1450
+ * (pages containing the orbitals that render on them) is not derivable
1451
+ * without guessing — forbidden by the no-heuristics rule. See the Wave D3
1452
+ * report for this deviation from the literal "pages → orbitals → ..." spec
1453
+ * line.
1454
+ *
1455
+ * @packageDocumentation
1456
+ */
1457
+
1458
+ /**
1459
+ * Flattens an OrbitalSchema into FileTree's `items` shape. See the ID scheme
1460
+ * doc comment above the file header for the exact id grammar.
1461
+ */
1462
+ declare function schemaToLayerItems(schema: OrbitalSchema): FileTreeItem[];
1463
+ /** Every field a LayersPanel id can carry, populated up to whatever depth the id reaches. `orbitalName` is the only field guaranteed present. */
1464
+ interface LayerIdParts {
1465
+ orbitalName: string;
1466
+ pageName?: string;
1467
+ traitName?: string;
1468
+ /** The transition's array INDEX (see the id-scheme doc comment — not its event name). */
1469
+ transitionIndex?: number;
1470
+ slotName?: string;
1471
+ /** Position among the slot's render-ui effects (disambiguates two effects targeting the same slot name). */
1472
+ patternSlotIndex?: number;
1473
+ /** Schema-compatible address into the render-ui tree (`root`, `root.children.0`, …) — the exact `patternPath` `schemaEditor.movePattern`/`removePattern`/`updatePatternProp` expect. */
1474
+ patternPath?: string;
1475
+ }
1476
+ /**
1477
+ * Parses any id `schemaToLayerItems` produces back into its typed segments.
1478
+ * Returns `null` for a malformed id (missing/garbled `orbital:` root, or an
1479
+ * unrecognized segment). Segments below the deepest one present in `id` are
1480
+ * left `undefined` — e.g. a trait-level id has no `slotName`/`patternPath`.
1481
+ */
1482
+ declare function parseLayerId(id: string): LayerIdParts | null;
1483
+ interface LayersPanelProps {
1484
+ schema: OrbitalSchema;
1485
+ /** Currently selected node id (any level of the ID scheme above). */
1486
+ selectedId?: string;
1487
+ onSelect?: (id: string) => void;
1488
+ /**
1489
+ * Reorder a node within the tree. Threaded to FileTree's `onNodeReorder`
1490
+ * seam — presence-gated there, so omitting it just means no dragging.
1491
+ */
1492
+ onReorder?: (id: string, newParentId: string | null, index: number) => void;
1493
+ }
1494
+ declare const LayersPanel: React__default.FC<LayersPanelProps>;
1495
+
1496
+ /**
1497
+ * Canvas editing tools a studio host can turn on for its canvas (a persona's
1498
+ * shell manifest declares its list; the canvas never branches on persona).
1499
+ */
1500
+ declare const CANVAS_TOOLS: readonly ["multiSelect", "clipboard", "inlineText", "zoomToSelection", "designHandles", "autoLayout", "sizeLimits", "absolute", "guides", "measure"];
1501
+ type CanvasTool = (typeof CANVAS_TOOLS)[number];
1502
+ declare function hasCanvasTool(tools: readonly CanvasTool[], tool: CanvasTool): boolean;
1503
+
1504
+ /**
1505
+ * AVL dependency graph — the app over what it is built from (the cosmic
1506
+ * Dependencies lens): orbitals, then the io realizations, std behaviors and
1507
+ * std UI primitives they import, left to right, one edge per `uses` import.
1508
+ * The host supplies the graph (orbitals' imports and each behavior's own).
1509
+ */
1510
+
1511
+ type SystemDependencies = DependencyGraph;
1512
+ declare function schemaToDependencyGraph(deps: SystemDependencies): {
1513
+ nodes: Node<PreviewNodeData>[];
1514
+ edges: Edge[];
1515
+ };
1516
+ /** What `selected` is built from (upstream, through every import) and what reaches it (downstream). */
1517
+ declare function dependencyReach(deps: SystemDependencies, selected: string): {
1518
+ upstream: Set<string>;
1519
+ downstream: Set<string>;
1520
+ };
1521
+
1522
+ /**
1523
+ * AVL trait flow — one orbital as the units its traits come from (cosmic L2
1524
+ * "Flow"): each own trait on its own, each composed behavior as one unit
1525
+ * (its traits, plus the render pieces other traits embed), and the event
1526
+ * wires between units, rolled up from the trait wires the runtime delivers.
1527
+ */
1528
+
1529
+ type FlowColumn = 'own' | DependencyLayer;
1530
+ interface TraitFlowUnit {
1531
+ id: string;
1532
+ name: string;
1533
+ column: FlowColumn;
1534
+ /** Traits that do their own work. */
1535
+ traits: string[];
1536
+ /** Traits other traits embed to render a piece of their screen. */
1537
+ renderPieces: string[];
1538
+ }
1539
+ interface TraitFlowEdge {
1540
+ source: string;
1541
+ target: string;
1542
+ events: string[];
1543
+ }
1544
+ declare function traitFlowGraph(schema: OrbitalSchema, orbital: string, layers?: Readonly<Record<string, DependencyLayer>>): {
1545
+ units: TraitFlowUnit[];
1546
+ edges: TraitFlowEdge[];
1547
+ };
1548
+ /** One hop each way: the units that trigger `selected`, and the units it triggers. */
1549
+ declare function flowNeighbors(edges: readonly TraitFlowEdge[], selected: string): {
1550
+ triggeredBy: Set<string>;
1551
+ triggers: Set<string>;
1552
+ };
1553
+
1554
+ /**
1555
+ * AVL play — maps played circuit steps (`CircuitStepResult`, produced by
1556
+ * `@almadar-io/verify`'s `playCircuitStep`) onto what the AVL views draw.
1557
+ * Pure mapping; the host plays.
1558
+ */
1559
+
1560
+ /** One played step of a scene, as the host recorded it. */
1561
+ interface AvlPlayStep {
1562
+ orbital: string;
1563
+ trait: string;
1564
+ from: string;
1565
+ /** The event the step fired. */
1566
+ event: EventKey;
1567
+ /** The fired event's payload.
1568
+ * @payloadFor event */
1569
+ payload: EventPayload;
1570
+ result: CircuitStepResult;
1571
+ }
1572
+ /** What a Step control asks the host to play. */
1573
+ type AvlStepRequest = {
1574
+ orbital: string;
1575
+ trait: string;
1576
+ from: string;
1577
+ /** The event to fire. */
1578
+ event: EventKey;
1579
+ /** The event's payload.
1580
+ * @payloadFor event */
1581
+ payload: EventPayload;
1582
+ };
1583
+ /** The trait's `from --event-->` arms in declaration order — the order `firedArm` / `GuardEvaluation.arm` index. */
1584
+ declare function armsOf(trait: TraitLevelData, from: string, event: string): TraitTransitionInfo[];
1585
+ /** Position of `transition` among its own `from --event-->` arms. */
1586
+ declare function armPosition(trait: TraitLevelData, transition: TraitTransitionInfo): number;
1587
+ /** The trait transition a step fired, or undefined when no arm fired. */
1588
+ declare function firedTransition(trait: TraitLevelData, step: AvlPlayStep): TraitTransitionInfo | undefined;
1589
+ interface AvlStateMachinePlayback {
1590
+ activeState?: string;
1591
+ activeTransition?: number;
1592
+ visitedStates: string[];
1593
+ }
1594
+ /** State-machine highlights after steps `0..cursor` of the scene, for one trait. */
1595
+ declare function stateMachinePlayback(trait: TraitLevelData, orbital: string, steps: readonly AvlPlayStep[], cursor: number): AvlStateMachinePlayback;
1596
+ interface AvlTransitionPlayback {
1597
+ step: AvlPlayStep;
1598
+ /** Whether this transition is the arm that fired. */
1599
+ fired: boolean;
1600
+ guard?: GuardEvaluation;
1601
+ /** Per declared effect, in order; empty when the arm did not fire. */
1602
+ effects: ReadonlyArray<EffectTrace>;
1603
+ }
1604
+ /** The latest step within `0..cursor` that evaluated `transition` (its guard ran, or it fired). */
1605
+ declare function transitionPlayback(trait: TraitLevelData, orbital: string, transition: TraitTransitionInfo, steps: readonly AvlPlayStep[], cursor: number): AvlTransitionPlayback | undefined;
1606
+
1607
+ /**
1608
+ * FlowCanvas — V3 UI Projection Canvas
1609
+ *
1610
+ * The canvas IS the app. Nodes show rendered UI thumbnails from
1611
+ * render-ui effects. Edges show events connecting screens.
1612
+ *
1613
+ * Local view (default): one orbital card, Tab / Shift+Tab to move between
1614
+ * orbitals. World view: every orbital card. Each card picks the state it
1615
+ * shows from a dropdown in its header.
1616
+ */
1617
+
1618
+ /** The trait level's lens, and the unit whose traits the Traits lens is narrowed to. */
1619
+ interface TraitView {
1620
+ lens: 'flow' | 'traits';
1621
+ filter: {
1622
+ unit: string;
1623
+ traits: readonly string[];
1624
+ } | null;
1625
+ }
1626
+ /** `local`: only the focused orbital's card; `world`: every orbital's card. */
1627
+ type CanvasScope = 'local' | 'world';
1628
+ interface CanvasFocusChange {
1629
+ orbital: string;
1630
+ scope: CanvasScope;
1631
+ /** The focused card's chosen state (`LIVE_STATE` for the live orbital). */
1632
+ state: string;
1633
+ }
1634
+ /** Where a card sits on the canvas, and its frame width when the designer resized it. */
1635
+ interface CanvasNodePlacement {
1636
+ x: number;
1637
+ y: number;
1638
+ width?: number;
1639
+ }
1640
+ interface FlowCanvasProps {
1641
+ schema: OrbitalSchema | string;
1642
+ mockData?: EntityData;
1643
+ className?: string;
1644
+ width?: number | string;
1645
+ height?: number | string;
1646
+ onNodeClick?: (context: {
1647
+ level: ViewLevel | 'code' | 'transition';
1648
+ orbital: string;
1649
+ trait?: string;
1650
+ transition?: string;
1651
+ /** With `level: 'transition'`: the clicked transition's index in the trait's state machine. */
1652
+ transitionIndex?: number;
1653
+ }) => void;
1654
+ /** With `initialLevel="system"`: what an orbital chip does (drill in, hover preview, open code, preview). */
1655
+ systemMap?: Omit<SystemMapContextValue, 'openTraitsEvent' | 'selectDependency'>;
1656
+ /** Emits UI:{openTraitsEvent} with { orbital } when an orbital on the system map is opened (drilled into). */
1657
+ openTraitsEvent?: EventEmit<{
1658
+ orbital: string;
1659
+ }>;
1660
+ /** With `initialLevel="system"`: the app's imports, for the Dependencies lens (absent: Events only). */
1661
+ systemDependencies?: SystemDependencies;
1662
+ /** Trait level: which lens (and trait filter) shows — pass with `onTraitViewChange` to keep it across remounts. */
1663
+ traitView?: TraitView;
1664
+ /** @notification */
1665
+ onTraitViewChange?: (view: TraitView) => void;
1666
+ /** The top bar (lenses, scope, screen size); an embedding host that drives the canvas itself can leave it out. */
1667
+ toolbar?: boolean;
1668
+ /** Refit whenever the frame resizes (a host column that grows on hover); off, a user's pan and zoom survive. */
1669
+ fitOnResize?: boolean;
1670
+ /** Flow lens: the unit the host lights (`null`: none); absent, the user's own clicks select. */
1671
+ flowSelection?: string | null;
1672
+ /**
1673
+ * Flow lens: the unit the user clicked.
1674
+ * @notification
1675
+ */
1676
+ onFlowSelect?: (unit: TraitFlowUnit) => void;
1677
+ /** Flow lens: emits UI:{flowSelectEvent} with the selected unit. */
1678
+ flowSelectEvent?: EventEmit<TraitFlowUnit>;
1679
+ /** Dependencies lens: emits UI:{openBehaviorEvent} with { name } to open a selected behavior's source. */
1680
+ openBehaviorEvent?: EventEmit<{
1681
+ name: string;
1682
+ }>;
1683
+ /** Maps a keydown `e.code` — optionally prefixed `Mod+` (⌘/Ctrl), `Shift+`, `Alt+` in that order — to an event, emitted as `UI:{event}`; keystrokes inside inputs/textareas never route. */
1684
+ keyMap?: Record<string, EventKey>;
1685
+ /** With `initialLevel="trait-expanded"`: played steps lighting each trait card's state machine. */
1686
+ scene?: {
1687
+ steps: readonly AvlPlayStep[];
1688
+ cursor: number;
1689
+ };
1690
+ /**
1691
+ * Fired when the focused orbital, the scope, or the focused card's state changes.
1692
+ * @notification
1693
+ */
1694
+ onFocusChange?: (focus: CanvasFocusChange) => void;
1695
+ /** The orbital cards open on (local view) — or, with `initialLevel="trait-expanded"`, the orbital whose traits are shown. */
1696
+ initialOrbital?: string;
1697
+ /** `trait-expanded`: one card per trait of `initialOrbital` (cosmic). Default: orbital cards. */
1698
+ initialLevel?: ViewLevel;
1699
+ /** Focus this orbital (e.g. picked in a Layers panel); changing it moves the focus without remounting. */
1700
+ focusedOrbital?: string;
1701
+ /** Pre-select a node on mount (opens OrbInspector). */
1702
+ initialSelectedNode?: PreviewNodeData;
1703
+ /** Enable editing in the inspector. When true, fields become inputs. */
1704
+ editable?: boolean;
1705
+ /** Called when the user edits the schema via the inspector. */
1706
+ onSchemaChange?: (schema: OrbitalSchema) => void;
1707
+ /** Called when the user presses Delete/Backspace with patterns selected (all of a multi-select). */
1708
+ onPatternDelete?: (context: {
1709
+ patternIds: string[];
1710
+ nodeData: PreviewNodeData;
1711
+ elements?: EditFocus[];
1712
+ }) => void;
1713
+ /** Editing tools the canvas turns on (a persona's shell manifest declares them); all by default. */
1714
+ tools?: readonly CanvasTool[];
1715
+ /** What each element lets the user change (knob, data-bound, fixed by a behavior); every prop is editable without it. */
1716
+ elementAccess?: ElementEditAccessResolver;
1717
+ /** Called when the user drags from a source handle to a target handle (event wiring). */
1718
+ onEventWire?: (wire: {
1719
+ eventName: string;
1720
+ sourceOrbital: string;
1721
+ targetOrbital: string;
1722
+ sourceTraitName?: string;
1723
+ targetTraitName?: string;
1724
+ }) => void;
1725
+ /** Behavior layer metadata for node styling (layer color bands). */
1726
+ behaviorMeta?: Record<string, {
1727
+ layer: string;
1728
+ }>;
1729
+ /**
1730
+ * Per-orbital generation status. Keyed by orbital name. Drives the spinner
1731
+ * + accent border treatment on the overview node and (future) the hover
1732
+ * trace surface. Defaults to `'idle'` for missing entries. Consumers
1733
+ * derive this from agent subagent_start/complete SSE events.
1734
+ */
1735
+ orbitalStatus?: Record<string, PreviewNodeData['status']>;
1736
+ /**
1737
+ * Hover handler for overview-level orbital nodes. Fires with the orbital
1738
+ * name on enter and `null` on leave. Reserved for the upcoming trace
1739
+ * tooltip: consumers will use it to anchor a popover that shows the
1740
+ * subagent's live trace + reasoning for the hovered orbital.
1741
+ * @notification
1742
+ */
1743
+ onOrbitalHover?: (orbitalName: string | null) => void;
1744
+ /** Layout hint: 'pipeline' renders nodes left-to-right, 'grid' (default) uses sqrt-based grid. */
1745
+ layoutHint?: 'pipeline' | 'grid';
1746
+ /** Called when the user clicks a node in overview level (for composition hints). */
1747
+ onNodeSelect?: (orbitalName: string) => void;
1748
+ /**
1749
+ * @deprecated Use onNodeClick instead. Kept for AvlCosmicZoom compat.
1750
+ * @notification
1751
+ */
1752
+ onZoomChange?: (level: string, context: Record<string, string | undefined>) => void;
1753
+ /** @deprecated Not used in V3. */
1754
+ focusTarget?: {
1755
+ type: string;
1756
+ name: string;
1757
+ };
1758
+ /** @deprecated Not used in V3. */
1759
+ color?: string;
1760
+ /** @deprecated Not used in V3. */
1761
+ animated?: boolean;
1762
+ /** @deprecated Not used in V3. */
1763
+ initialTrait?: string;
1764
+ /** @deprecated Not used in V3. */
1765
+ stateCoverage?: Record<string, string>;
1766
+ /**
1767
+ * Studio persona viewing the canvas. Drives `OrbInspector` tab/section
1768
+ * visibility — designers and builders hide the raw `code` tab and the
1769
+ * architect-only Entity / raw-guard / raw-effects sections; architects see
1770
+ * everything. Default `'builder'` preserves pre-Phase-2 behavior.
1771
+ */
1772
+ userType?: 'builder' | 'designer' | 'architect';
1773
+ /**
1774
+ * Project theme tokens (Design System tab only). Forwarded to `OrbInspector`
1775
+ * so the Styles tab can render an editable token list when the selection
1776
+ * originates from the synthesized `__design_system__` schema.
1777
+ */
1778
+ themeManifest?: ThemeDefinition;
1779
+ /**
1780
+ * Persisted node positions keyed by node id. When the node set changes
1781
+ * (level/schema switch), any id present here overrides the computed layout
1782
+ * position, restoring a user's manual drag arrangement. Node ids are unique
1783
+ * per view level, so a single flat map covers overview + expanded. A saved
1784
+ * `width` restores a card frame the designer resized.
1785
+ */
1786
+ nodePositions?: Record<string, CanvasNodePlacement>;
1787
+ /**
1788
+ * Fired on node drag-stop and card resize with the full {id → placement}
1789
+ * map of the current node set, so the consumer can persist the arrangement.
1790
+ * @notification
1791
+ */
1792
+ onPositionsChange?: (positions: Record<string, CanvasNodePlacement>) => void;
1793
+ /**
1794
+ * Fired whenever the internal `selectedNode` changes — select, clear-on-
1795
+ * escape, clear-on-level-change, and pattern-selection sync all route
1796
+ * through this. Lets a consumer mirror selection into a persistent
1797
+ * properties panel rendered outside the canvas (see `externalInspector`).
1798
+ * @notification
1799
+ */
1800
+ onSelectedNodeChange?: (node: PreviewNodeData | null) => void;
1801
+ /**
1802
+ * Fired whenever the in-node pattern selection changes (a pattern click
1803
+ * inside `OrbPreviewNode`, cleared on background click / Escape / pattern
1804
+ * delete). `PatternSelectionContext` is internal to this component's own
1805
+ * render tree, so an externally-rendered `OrbInspector` (see
1806
+ * `externalInspector`) has no other way to learn which pattern the user
1807
+ * picked — pass this straight through to `OrbInspector`'s `selectedPattern`
1808
+ * prop to keep Design-tab prop editing working outside the canvas.
1809
+ * @notification
1810
+ */
1811
+ onSelectedPatternChange?: (pattern: SelectedPattern | null) => void;
1812
+ /**
1813
+ * When true, FlowCanvas does not render its inline `OrbInspector` — the
1814
+ * consumer is expected to render one externally, fed by
1815
+ * `onSelectedNodeChange` + `onSelectedPatternChange`. Selection
1816
+ * highlighting, keyboard delete, and every other behavior is unchanged.
1817
+ * Default `false` preserves the built-in inline panel.
1818
+ */
1819
+ externalInspector?: boolean;
1820
+ /** A host that verifies from the canvas: cards show verify controls and the trait's verdict,
1821
+ * and follow the states a run reaches (`verify.follow`). */
1822
+ verify?: CanvasVerify;
1823
+ }
1824
+ declare const FlowCanvas: React__default.FC<FlowCanvasProps>;
1825
+
1826
+ /**
1827
+ * AvlGraphCanvas — the chrome every AVL graph shares: the zoom range, fitting the graph with
1828
+ * a lens's padding, the dotted background, and zoom controls (hidden on compact screens,
1829
+ * which pinch-zoom). A lens supplies its nodes, node types and handlers. Must sit inside a
1830
+ * `ReactFlowProvider`.
1831
+ */
1832
+
1833
+ /** Node types for a layered graph (`layeredGraph`): pills and their column headers. */
1834
+ declare const AVL_GRAPH_NODE_TYPES: NodeTypes;
1835
+ type AvlGraphCanvasProps<N extends Node = Node, E extends Edge = Edge> = ReactFlowProps<N, E> & {
1836
+ /** Space around the fitted graph, as a fraction of the viewport. */
1837
+ fitPadding: number;
1838
+ /** Compact screens pinch-zoom, so the zoom controls are hidden. */
1839
+ compact?: boolean;
1840
+ };
1841
+ declare function AvlGraphCanvas<N extends Node = Node, E extends Edge = Edge>({ fitPadding, compact, children, ...flow }: AvlGraphCanvasProps<N, E>): React__default.ReactElement;
1842
+
1843
+ /**
1844
+ * ZoomBreadcrumb — HTML overlay showing current zoom band context.
1845
+ *
1846
+ * Positioned absolute top-left of the FlowCanvas.
1847
+ * Shows AVL primitive icons inline with breadcrumb segments.
1848
+ */
1849
+
1850
+ interface ZoomBreadcrumbProps {
1851
+ band: ZoomBand;
1852
+ applicationName?: string;
1853
+ orbitalName?: string;
1854
+ traitName?: string;
1855
+ eventName?: string;
1856
+ }
1857
+ declare const ZoomBreadcrumb: React__default.FC<ZoomBreadcrumbProps>;
1858
+
1859
+ /**
1860
+ * ZoomLegend — Collapsible HTML overlay showing AVL primitives
1861
+ * relevant to the current zoom band.
1862
+ */
1863
+
1864
+ interface ZoomLegendProps {
1865
+ band: ZoomBand;
1866
+ }
1867
+ declare const ZoomLegend: React__default.FC<ZoomLegendProps>;
1868
+
1869
+ /**
1870
+ * AvlCosmicZoom — Interactive Orbital Visualization
1871
+ *
1872
+ * V3: Delegates to FlowCanvas. Nodes are live OrbPreview renders
1873
+ * of each orbital/transition. Two-level navigation (overview + expanded).
1874
+ * Props interface preserved for backward compatibility with callers.
1875
+ */
1876
+
1877
+ interface AvlCosmicZoomProps {
1878
+ /** The orbital schema (parsed object or JSON string) */
1879
+ schema: OrbitalSchema | string;
1880
+ /** CSS class for the outer container */
1881
+ className?: string;
1882
+ /** Primary color for the visualization */
1883
+ color?: string;
1884
+ /** Enable animations (default: true) */
1885
+ animated?: boolean;
1886
+ /** Pre-select an orbital on mount */
1887
+ initialOrbital?: string;
1888
+ /** Pre-select a trait on mount */
1889
+ initialTrait?: string;
1890
+ /** Callback when zoom level changes */
1891
+ onZoomChange?: (level: ZoomLevel, context: {
1892
+ orbital?: string;
1893
+ trait?: string;
1894
+ }) => void;
1895
+ /** Container width */
1896
+ width?: number | string;
1897
+ /** Container height */
1898
+ height?: number | string;
1899
+ /** Coverage data for verification overlay */
1900
+ stateCoverage?: Record<string, 'covered' | 'uncovered' | 'partial'>;
1901
+ /** Dynamic focus target. Changes animate the zoom to the specified orbital/trait. */
1902
+ focusTarget?: {
1903
+ type: 'orbital' | 'trait';
1904
+ name: string;
1905
+ };
1906
+ }
1907
+ declare const AvlCosmicZoom: React__default.FC<AvlCosmicZoomProps>;
1908
+
1909
+ /**
1910
+ * AvlOrbitalsCosmicZoom — the whole app, drillable: L1 the system map
1911
+ * (`FlowCanvas` at `system`: one chip per orbital, the event wires the runtime
1912
+ * delivers between them), L3 an orbital's traits as state machines, L4 one
1913
+ * transition as circuits that a host can play (`scene`, `stepEvent`, …).
1914
+ * Every level is the same canvas, so pan, scroll-wheel zoom and fit behave
1915
+ * as on the design canvas.
1916
+ */
1917
+
1918
+ interface AvlOrbitalsCosmicZoomProps {
1919
+ /** The orbital schema (parsed object or JSON string) */
1920
+ schema: OrbitalSchema | string;
1921
+ /** CSS class for the outer container */
1922
+ className?: string;
1923
+ /** Accent for the breadcrumb */
1924
+ color?: string;
1925
+ /** Container width */
1926
+ width?: number | string;
1927
+ /** Container height */
1928
+ height?: number | string;
1929
+ /** Orbital ringed on the system map (e.g. the one the user came from). */
1930
+ highlightedOrbital?: string;
1931
+ /** Fired when the user opens an orbital's traits. */
1932
+ onOrbitalSelect?: (orbital: string) => void;
1933
+ /** What hovering an orbital on the system map shows (e.g. its live screen). */
1934
+ renderOrbitalPreview?: (orbital: string) => React__default.ReactNode;
1935
+ /** Emits UI:{openCodeEvent} with { orbital } from an orbital's hover card. */
1936
+ openCodeEvent?: EventEmit<{
1937
+ orbital: string;
1938
+ }>;
1939
+ /** The app's imports (each orbital's, and each behavior's own), for the Dependencies lens on the system map. */
1940
+ dependencies?: SystemDependencies;
1941
+ /** Emits UI:{openBehaviorEvent} with { name } to open a behavior selected in the Dependencies lens. */
1942
+ openBehaviorEvent?: EventEmit<{
1943
+ name: string;
1944
+ }>;
1945
+ /** Emits UI:{previewEvent} with { orbital } from an orbital's hover card. */
1946
+ previewEvent?: EventEmit<{
1947
+ orbital: string;
1948
+ }>;
1949
+ /** Played steps, in order; they light the L3 state machines and the L4 circuits. A scrubber picks the step shown. */
1950
+ scene?: readonly AvlPlayStep[];
1951
+ /** Emits UI:{stepEvent} from L4's Step button — the host plays the transition and appends the result to `scene`. */
1952
+ stepEvent?: EventEmit<AvlStepRequest>;
1953
+ /** Emits UI:{playEvent} with the drilled trait; the host keeps stepping it until paused or stopped. */
1954
+ playEvent?: EventEmit<{
1955
+ orbital: string;
1956
+ trait: string;
1957
+ }>;
1958
+ /** Emits UI:{pauseEvent} while `playing`. */
1959
+ pauseEvent?: EventEmit<{
1960
+ orbital: string;
1961
+ trait: string;
1962
+ }>;
1963
+ /** Emits UI:{stopEvent}; the host ends the run and clears the scene. */
1964
+ stopEvent?: EventEmit<{
1965
+ orbital: string;
1966
+ trait: string;
1967
+ }>;
1968
+ /** Whether the host is continuously playing. */
1969
+ playing?: boolean;
1970
+ }
1971
+ declare const AvlOrbitalsCosmicZoom: React__default.FC<AvlOrbitalsCosmicZoomProps>;
1972
+
1973
+ /**
1974
+ * AvlTraitScene V2 - Zoom Level 3
1975
+ *
1976
+ * Left-to-right horizontal flow with color-coded states,
1977
+ * transition lanes, and swim lanes for emit/listen events.
1978
+ */
1979
+
1980
+ interface AvlTraitSceneProps {
1981
+ data: TraitLevelData;
1982
+ color?: string;
1983
+ onTransitionClick?: (transitionIndex: number, position: {
1984
+ x: number;
1985
+ y: number;
1986
+ }) => void;
1987
+ }
1988
+ declare const AvlTraitScene: React__default.FC<AvlTraitSceneProps>;
1989
+
1990
+ /**
1991
+ * AvlTransitionScene V2 - Zoom Level 4
1992
+ *
1993
+ * Card layout replacing vertical waterfall.
1994
+ * Reads like a spec card: from → to, trigger, guard, effects.
1995
+ */
1996
+
1997
+ interface AvlTransitionSceneProps {
1998
+ data: TransitionLevelData;
1999
+ color?: string;
2000
+ }
2001
+ declare const AvlTransitionScene: React__default.FC<AvlTransitionSceneProps>;
2002
+
2003
+ /**
2004
+ * AvlClickTarget
2005
+ *
2006
+ * Transparent SVG rect overlay that makes AVL atoms clickable.
2007
+ * AVL atoms render <g> elements which don't natively support
2008
+ * bounding-box click events. This wrapper adds an invisible
2009
+ * rect with pointer events and optional hover glow.
2010
+ *
2011
+ * @packageDocumentation
2012
+ */
2013
+
2014
+ interface AvlClickTargetProps {
2015
+ /** Bounding box position */
2016
+ x: number;
2017
+ y: number;
2018
+ width: number;
2019
+ height: number;
2020
+ /** Click handler */
2021
+ onClick: () => void;
2022
+ /** Hover callback */
2023
+ onHover?: (hovering: boolean) => void;
2024
+ /** Cursor style (default: pointer) */
2025
+ cursor?: string;
2026
+ /** Glow color on hover */
2027
+ glowColor?: string;
2028
+ /** Accessible label */
2029
+ label?: string;
2030
+ /** Children (the AVL atoms to render on top) */
2031
+ children: React__default.ReactNode;
2032
+ }
2033
+ declare const AvlClickTarget: React__default.FC<AvlClickTargetProps>;
2034
+
2035
+ /**
2036
+ * AvlTransitionDetail — cosmic L4: one transition as circuits. The guard is
2037
+ * a board of its own; each effect is a board in an accordion. Given a
2038
+ * played step the boards show that run's values; `stepEvent` adds a
2039
+ * payload editor and a Step button that asks the host to play this
2040
+ * transition.
2041
+ */
2042
+
2043
+ /**
2044
+ * One transition explained: from-state, event and to-state, the guard that
2045
+ * must hold, and each effect it runs in order, drawn as circuit boards.
2046
+ *
2047
+ * @capabilities transition explainer, event guard effects walkthrough, state machine step detail
2048
+ */
2049
+ interface AvlTransitionDetailProps {
2050
+ /** Orbital the transition belongs to. */
2051
+ orbital: string;
2052
+ /** Trait the transition belongs to. */
2053
+ trait: string;
2054
+ /** The transition to explain.
2055
+ * @example {"from":"pending","to":"paid","event":"PAY","effects":[{"type":"set","args":[]},{"type":"persist","args":[]}],"index":0}
2056
+ */
2057
+ transition?: TraitTransitionInfo;
2058
+ /** The program the transition belongs to (object or JSON text), when it is given by position instead of `transition`. */
2059
+ schema?: OrbitalSchema | string;
2060
+ /** The transition's position among the trait's transitions, read from `schema`. */
2061
+ transitionIndex?: number;
2062
+ /** Played steps; the one at `cursor` that ran this transition lights the boards (with `schema`). */
2063
+ scene?: readonly AvlPlayStep[];
2064
+ /** The scene step shown. Default: the last. */
2065
+ cursor?: number;
2066
+ /** Author explanations shown in a popover on hover: the transition's event note and per-effect-type notes.
2067
+ * @example {"transitions":{"PAY":{"title":"Paying","body":"The customer pays the order total."}},"effects":{"persist":{"body":"Saves the order."}}}
2068
+ */
2069
+ annotations?: AvlAnnotations;
2070
+ /** The latest played run of this transition (see `transitionPlayback`). */
2071
+ playback?: AvlTransitionPlayback;
2072
+ /** Emits UI:{stepEvent} with an {@link AvlStepRequest} when Step is pressed. */
2073
+ stepEvent?: EventEmit<AvlStepRequest>;
2074
+ className?: string;
2075
+ }
2076
+ declare const AvlTransitionDetail: React__default.FC<AvlTransitionDetailProps>;
2077
+
2078
+ /**
2079
+ * AvlTransitionExplainer — the render-ui face of {@link AvlTransitionDetail}:
2080
+ * one transition explained (from, event, to, the guard that must hold, each
2081
+ * effect in order) with optional author notes. Playing a transition is a host
2082
+ * capability and stays on AvlTransitionDetail.
2083
+ */
2084
+
2085
+ /** A transition as `.lolo` data hands it over: `guard` is omitted when there is none. */
2086
+ interface ExplainedTransition {
2087
+ from: string;
2088
+ to: string;
2089
+ event: string;
2090
+ guard?: SExpr;
2091
+ effects: SerializedEffect[];
2092
+ index: number;
2093
+ }
2094
+ /**
2095
+ * One transition explained step by step: from-state, event and to-state, the
2096
+ * guard that must hold, and each effect it runs in order.
2097
+ *
2098
+ * @capabilities transition explainer, event guard effects walkthrough, what happens when an event fires
2099
+ */
2100
+ interface AvlTransitionExplainerProps extends A11yProps {
2101
+ /** Orbital the transition belongs to. */
2102
+ orbitalName: string;
2103
+ /** Trait the transition belongs to. */
2104
+ traitName: string;
2105
+ /** The transition to explain.
2106
+ * @example {"from":"pending","to":"paid","event":"PAY","effects":[{"type":"set","args":[]},{"type":"persist","args":[]}],"index":0}
2107
+ */
2108
+ transition: ExplainedTransition;
2109
+ /** Author explanations shown in a popover on hover: the event's note and per-effect-type notes.
2110
+ * @example {"transitions":{"PAY":{"title":"Paying","body":"The customer pays the order total."}},"effects":{"persist":{"body":"Saves the order."}}}
2111
+ */
2112
+ annotations?: AvlAnnotations;
2113
+ className?: string;
2114
+ }
2115
+ declare const AvlTransitionExplainer: React__default.FC<AvlTransitionExplainerProps>;
2116
+
2117
+ /**
2118
+ * AvlEffectChip — one effect glyph that names itself: its operator, the
2119
+ * plain-language category, and the std registry description, on hover/focus.
2120
+ */
2121
+
2122
+ interface AvlEffectChipProps {
2123
+ effectType: string;
2124
+ /** Glyph box in px. @default 16 */
2125
+ size?: number;
2126
+ note?: AvlNote;
2127
+ /** The effect's code (`(set @entity.status "paid")`), shown under its explanation. */
2128
+ code?: string;
2129
+ }
2130
+ declare const AvlEffectChip: React__default.FC<AvlEffectChipProps>;
2131
+
2132
+ /**
2133
+ * AVL layered graph: labelled columns of pills, left to right, with edges between pills.
2134
+ * The one layout behind the app's dependencies, one orbital's trait flow and a deployment's
2135
+ * infrastructure (clients, host, services, stores). Callers choose the columns, their widths
2136
+ * and spacing, and whether edges attach on the side facing the other end.
2137
+ */
2138
+
2139
+ type LayeredColumnId = NonNullable<PreviewNodeData['dependencyColumn']>;
2140
+ interface LayeredColumn {
2141
+ id: LayeredColumnId;
2142
+ width: number;
2143
+ }
2144
+ interface LayeredUnit {
2145
+ id: string;
2146
+ column: LayeredColumnId;
2147
+ label: string;
2148
+ status?: PreviewNodeData['unitStatus'];
2149
+ metric?: string;
2150
+ /** Trait flow: a composed unit's traits and embedded render pieces. */
2151
+ flowTraits?: number;
2152
+ flowRenderPieces?: number;
2153
+ }
2154
+ interface LayeredEdge {
2155
+ id: string;
2156
+ source: string;
2157
+ target: string;
2158
+ /** Drawn on the wire, e.g. a deployment's call count, errors and p50. */
2159
+ label?: string;
2160
+ /** Health of the wire; a `down` or `degraded` one draws in the error / warning colour. */
2161
+ status?: PreviewNodeData['unitStatus'];
2162
+ }
2163
+ interface LayeredRow {
2164
+ height: number;
2165
+ gap: number;
2166
+ columnGap: number;
2167
+ headerHeight: number;
2168
+ }
2169
+ interface LayeredGraphInput {
2170
+ columns: readonly LayeredColumn[];
2171
+ units: readonly LayeredUnit[];
2172
+ edges: readonly LayeredEdge[];
2173
+ row: LayeredRow;
2174
+ /** `facing`: each wire leaves and arrives on the side facing the other end (looping out on
2175
+ * the right within one column); `default`: the renderer's default sides. */
2176
+ handles: 'facing' | 'default';
2177
+ }
2178
+ declare function layeredGraph(input: LayeredGraphInput): {
2179
+ nodes: Node<PreviewNodeData>[];
2180
+ edges: Edge[];
2181
+ };
2182
+
2183
+ /**
2184
+ * The deployment lens: a published app's infrastructure as layered columns, visitors → host →
2185
+ * services → stores → external services, each unit with its health and one metric, each wire
2186
+ * with its call count and health.
2187
+ */
2188
+
2189
+ declare const DEPLOYMENT_ROW: {
2190
+ height: number;
2191
+ gap: number;
2192
+ columnGap: number;
2193
+ headerHeight: number;
2194
+ };
2195
+ declare function deploymentGraph(input: {
2196
+ units: readonly LayeredUnit[];
2197
+ edges: readonly LayeredEdge[];
2198
+ }): {
2199
+ nodes: Node<PreviewNodeData>[];
2200
+ edges: Edge[];
2201
+ };
2202
+
2203
+ /**
2204
+ * KnobField — the editor for one factory knob (`DomainQuestion`, derived by
2205
+ * `@almadar/core` from the knob's declared type). One editor for every place a
2206
+ * behavior's config is set: the build questionnaire and the inspector's
2207
+ * Settings. Structured knobs (`listOfObjects`, `objectForm`, `tagList`,
2208
+ * `fieldList`) emit native array/object values.
2209
+ */
2210
+
2211
+ interface KnobFieldProps {
2212
+ question: DomainQuestion;
2213
+ value: DomainQuestionAnswer | undefined;
2214
+ onChange: (next: DomainQuestionAnswer) => void;
2215
+ }
2216
+ declare function KnobField({ question, value, onChange, }: KnobFieldProps): React__default.ReactElement;
2217
+
2218
+ /**
2219
+ * KnobSettingRow — one knob of a call site, edited with its questionnaire field and set on the
2220
+ * call site through the knob's own question (core `answerToMutations` →
2221
+ * `UI:TRAIT_CONFIG_CHANGE`). A click-to-choose knob commits at once; a typed one when its
2222
+ * field loses focus. The inspector's Settings list and the studio's knob search share it.
2223
+ */
2224
+
2225
+ interface KnobSettingRowProps {
2226
+ knob: ElementKnob;
2227
+ editable: boolean;
2228
+ }
2229
+ declare function KnobSettingRow({ knob, editable }: KnobSettingRowProps): React__default.ReactElement;
2230
+ declare namespace KnobSettingRow {
2231
+ var displayName: string;
2232
+ }
2233
+
2234
+ /**
2235
+ * Typed decoders for the AVL organisms' rich props (G-CROSS-131): a `.lolo` value arrives as an
2236
+ * `EventPayloadValue` and is validated into the component's declared type field by field, so the
2237
+ * compiled app needs no cast. Pattern configs go through core's `PatternObjectSchema`.
2238
+ */
2239
+
2240
+ /** Validates a node of the canvas preview (`OrbInspector node`). */
2241
+ declare function decodePreviewNodeData(value: EventPayloadValue): PreviewNodeData;
2242
+ /** Validates an in-node pattern selection (`OrbInspector selectedPattern`). */
2243
+ declare function decodeSelectedPattern(value: EventPayloadValue): SelectedPattern;
2244
+ /** Validates persisted canvas node positions (`FlowCanvas nodePositions`). */
2245
+ declare function decodeNodePlacements(value: EventPayloadValue): Record<string, CanvasNodePlacement>;
2246
+
2247
+ export { AVL_GLYPH_KINDS, AVL_GRAPH_NODE_TYPES, AvlAnnotations, AvlApplication, AvlBackwardEdge, AvlBehaviorGlyph, AvlBinding, AvlBindingEdge, AvlBindingRef, AvlCircuit, AvlClickTarget, AvlClosedCircuit, AvlCosmicZoom, AvlEffect, AvlEffectChip, AvlEmitListen, AvlEntity, AvlEvent, AvlEventWireEdge, AvlExprTree, AvlField, AvlFieldType, AvlGlyph, AvlGraphCanvas, AvlGuard, AvlLiteral, AvlNodeData, AvlNote, AvlOperator, AvlOrbital, AvlOrbitalUnit, AvlOrbitalsCosmicZoom, AvlPage, AvlPageEdge, AvlPersistence, AvlSExpr, AvlSlotMap, AvlState, AvlSwimLane, AvlTrait, AvlTraitScene, AvlTransition, AvlTransitionDetail, AvlTransitionEdge, AvlTransitionExplainer, AvlTransitionLane, AvlTransitionScene, CANVAS_TOOLS, CONNECTION_COLORS, CanvasDndProvider, CanvasVerifyContext, DEPLOYMENT_ROW, DOMAIN_COLORS, DependencyColumnNode, DependencyNode, DetailView, EDITABLE, EFFECT_CATEGORY_COLORS, ElementEditAccessContext, EventFlowEdge, FIELD_TYPE_SHAPES, FlowCanvas, KnobField, KnobSettingRow, LIVE_STATE, LayersPanel, MiniStateMachine, OPERATOR_CATEGORY_COLORS, OrbInspector, OrbPreviewNode, STATE_COLORS, SystemBandNode, SystemMapContext, SystemNode, TraitLevelData, TraitTransitionInfo, TransitionLevelData, ZOOM_BAND_THRESHOLDS, ZoomBandContext, ZoomBreadcrumb, ZoomLegend, ZoomLevel, arcPath, armPosition, armsOf, canvasViewGraph, computeTraitLayout, computeZoomBand, curveControlPoint, decodeNodePlacements, decodePreviewNodeData, decodeSelectedPattern, dependencyReach, deploymentGraph, deriveEditFocusFromElement, dropBusEvent, edgePath, effectCategoryOf, firedTransition, flowNeighbors, getStateRole, gridPositions, hasCanvasTool, initialStateOf, layeredGraph, optionForPlayedStep, parseLayerId, propAccessAt, radialPositions, ringPositions, schemaToDependencyGraph, schemaToLayerItems, schemaToOverviewGraph, stateMachinePlayback, stateOptionsOf, traitFlowGraph, transitionPlayback, useCanvasDraggable, useCanvasDroppable, useInlineTextEdit, useZoomBand, zoomProgress };
2248
+ export type { AvlApplicationProps, AvlBaseProps, AvlBehaviorGlyphProps, AvlBindingProps, AvlBindingRefProps, AvlCircuitProps, AvlClickTargetProps, AvlClosedCircuitProps, AvlClosedCircuitState, AvlClosedCircuitTransition, AvlCosmicZoomProps, AvlEffectChipProps, AvlEffectProps, AvlEmitListenProps, AvlEntityProps, AvlEventProps, AvlEventWireEdgeData, AvlExprTreeNode, AvlExprTreeProps, AvlFieldProps, AvlFieldTypeProps, AvlGlyphKind, AvlGlyphProps, AvlGraphCanvasProps, AvlGuardProps, AvlLiteralProps, AvlOperatorProps, AvlOrbitalProps, AvlOrbitalUnitPage, AvlOrbitalUnitProps, AvlOrbitalUnitTrait, AvlOrbitalsCosmicZoomProps, AvlPageProps, AvlPersistenceProps, AvlPlayStep, AvlSExprProps, AvlSlotMapProps, AvlSlotMapSlot, AvlStateMachinePlayback, AvlStateProps, AvlStepRequest, AvlSwimLaneProps, AvlTraitProps, AvlTraitSceneProps, AvlTransitionDetailProps, AvlTransitionEdgeData, AvlTransitionExplainerProps, AvlTransitionLaneProps, AvlTransitionPlayback, AvlTransitionProps, AvlTransitionSceneProps, BehaviorGlyphChild, BehaviorGlyphConnection, BehaviorLevel, CanvasContainerNode, CanvasDndProviderProps, CanvasDragKind, CanvasDragPayload, CanvasDropEvent, CanvasDropTarget, CanvasFocusChange, CanvasResolvedDrop, CanvasScope, CanvasStateGroup, CanvasStateOption, CanvasStateOptions, CanvasStateView, CanvasStepReached, CanvasTool, CanvasVerify, CanvasViewOptions, CardVerdict, EffectCategory, ElementEditAccess, ElementEditAccessResolver, ElementKnob, ElementPropAccess, ElementSettings, ElkLayout, EventEdgeData, FieldTypeShape, FlowCanvasProps, GlyphSize, InlineTextEditOptions, KnobFieldProps, KnobSettingRowProps, LayerIdParts, LayeredColumn, LayeredColumnId, LayeredEdge, LayeredGraphInput, LayeredRow, LayeredUnit, LayersPanelProps, LayoutEdge, LayoutNode, OrbInspectorProps, PatternEventSource, PlayedStep, PreviewNodeData, RenderUIEntry, SelectedPattern, StateRole, SystemDependencies, SystemMapContextValue, TraitFlowEdge, TraitFlowUnit, TraitView, UseCanvasDraggableArgs, UseCanvasDraggableResult, UseCanvasDroppableArgs, UseCanvasDroppableResult, ViewLevel, ZoomBand, ZoomBreadcrumbProps, ZoomLegendProps };