nudge-ui 0.2.4 → 0.2.6

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 (642) hide show
  1. package/dist/cli/agentCommand.d.ts +0 -1
  2. package/dist/cli/agentCommand.js +4 -29
  3. package/dist/client.mjs +987 -221
  4. package/dist/compiler/ast.d.ts +0 -6
  5. package/dist/compiler/ast.js +0 -5
  6. package/dist/compiler/componentContractTypes.d.ts +11 -5
  7. package/dist/compiler/componentContracts.js +3 -9
  8. package/dist/compiler/componentInstrumentation.d.ts +2 -13
  9. package/dist/compiler/componentInstrumentation.js +3 -12
  10. package/dist/compiler/componentPolicyResolution.d.ts +3 -22
  11. package/dist/compiler/componentPolicyResolution.js +6 -38
  12. package/dist/compiler/identityAttributes.d.ts +2 -0
  13. package/dist/compiler/identityAttributes.js +2 -0
  14. package/dist/compiler/index.d.ts +0 -1
  15. package/dist/compiler/index.js +0 -1
  16. package/dist/compiler/packageComponentContracts.d.ts +10 -19
  17. package/dist/compiler/packageComponentContracts.js +60 -43
  18. package/dist/compiler/reactComponentProtocols.d.ts +0 -7
  19. package/dist/compiler/reactComponentProtocols.js +0 -7
  20. package/dist/compiler/reactIdentity.d.ts +2 -2
  21. package/dist/compiler/reactIdentity.js +41 -43
  22. package/dist/compiler/sourcePaths.d.ts +4 -8
  23. package/dist/compiler/sourcePaths.js +6 -8
  24. package/dist/css/dialects/index.d.ts +2 -21
  25. package/dist/css/dialects/index.js +2 -9
  26. package/dist/css/dialects/tailwind.d.ts +2 -16
  27. package/dist/css/dialects/tailwind.js +2 -25
  28. package/dist/css/dialects/vanillaExtract.d.ts +1 -9
  29. package/dist/css/dialects/vanillaExtract.js +0 -1
  30. package/dist/css/index.d.ts +0 -8
  31. package/dist/css/index.js +0 -8
  32. package/dist/css/model/index.d.ts +6 -38
  33. package/dist/css/model/index.js +0 -9
  34. package/dist/css/token-inventory/index.d.ts +0 -23
  35. package/dist/css/token-inventory/index.js +0 -23
  36. package/dist/css/token-inventory/inventory.js +4 -16
  37. package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
  38. package/dist/css/token-inventory/parseStylesheet.js +5 -42
  39. package/dist/css/token-inventory/policy.d.ts +2 -39
  40. package/dist/css/token-inventory/policy.js +2 -39
  41. package/dist/css/token-inventory/types.d.ts +2 -15
  42. package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
  43. package/dist/css/value-semantics/borderSemantics.js +5 -23
  44. package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
  45. package/dist/css/value-semantics/boxSemantics.js +1 -7
  46. package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
  47. package/dist/css/value-semantics/colorSemantics.js +9 -40
  48. package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
  49. package/dist/css/value-semantics/cssSyntax.js +39 -11
  50. package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
  51. package/dist/css/value-semantics/fontSemantics.js +7 -25
  52. package/dist/css/value-semantics/index.d.ts +1 -12
  53. package/dist/css/value-semantics/index.js +1 -12
  54. package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
  55. package/dist/css/value-semantics/propertyPolicy.js +47 -59
  56. package/dist/css/value-semantics/stringMaps.d.ts +0 -1
  57. package/dist/css/value-semantics/structuredValues.d.ts +3 -37
  58. package/dist/css/value-semantics/structuredValues.js +6 -17
  59. package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
  60. package/dist/css/value-semantics/tokenInterpretation.js +7 -21
  61. package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
  62. package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
  63. package/dist/hosts/astro/clientAsset.d.ts +1 -5
  64. package/dist/hosts/astro/clientAsset.js +1 -5
  65. package/dist/hosts/astro/clientTransport.d.ts +0 -1
  66. package/dist/hosts/astro/clientTransport.js +4 -9
  67. package/dist/hosts/astro/integration.d.ts +2 -28
  68. package/dist/hosts/astro/integration.js +7 -36
  69. package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
  70. package/dist/hosts/astro/markdownIdentity.js +0 -3
  71. package/dist/hosts/astro/middleware.d.ts +1 -12
  72. package/dist/hosts/astro/middleware.js +1 -12
  73. package/dist/hosts/astro/projectContext.d.ts +1 -9
  74. package/dist/hosts/astro/projectContext.js +2 -11
  75. package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
  76. package/dist/hosts/astro/responseInstrumentation.js +5 -34
  77. package/dist/hosts/environment.d.ts +0 -8
  78. package/dist/hosts/environment.js +0 -1
  79. package/dist/hosts/next/index.js +1 -3
  80. package/dist/hosts/next/loader.d.ts +5 -44
  81. package/dist/hosts/next/loader.js +22 -103
  82. package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
  83. package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
  84. package/dist/hosts/next/manifest.d.ts +2 -16
  85. package/dist/hosts/next/manifest.js +18 -20
  86. package/dist/hosts/next/mount.d.ts +1 -11
  87. package/dist/hosts/next/mount.js +1 -11
  88. package/dist/hosts/next/repositoryScope.d.ts +2 -17
  89. package/dist/hosts/next/repositoryScope.js +2 -17
  90. package/dist/hosts/next/sidecar.d.ts +0 -13
  91. package/dist/hosts/next/sidecar.js +25 -110
  92. package/dist/hosts/next/wrapper.d.ts +0 -31
  93. package/dist/hosts/next/wrapper.js +14 -71
  94. package/dist/hosts/projectBridge.d.ts +0 -2
  95. package/dist/hosts/projectBridge.js +3 -19
  96. package/dist/hosts/reactRendererCapture.d.ts +2 -0
  97. package/dist/hosts/reactRendererCapture.js +12 -0
  98. package/dist/hosts/static/cli.d.ts +0 -4
  99. package/dist/hosts/static/cli.js +0 -3
  100. package/dist/hosts/static/html/bootstrap.d.ts +1 -18
  101. package/dist/hosts/static/html/bootstrap.js +2 -14
  102. package/dist/hosts/static/manifest.d.ts +2 -15
  103. package/dist/hosts/static/manifest.js +5 -18
  104. package/dist/hosts/static/server.d.ts +4 -38
  105. package/dist/hosts/static/server.js +17 -67
  106. package/dist/hosts/vite/index.d.ts +0 -10
  107. package/dist/hosts/vite/index.js +0 -10
  108. package/dist/hosts/vite/react.d.ts +4 -17
  109. package/dist/hosts/vite/react.js +18 -35
  110. package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
  111. package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
  112. package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
  113. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
  114. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
  115. package/dist/hosts/vite/vite.d.ts +5 -26
  116. package/dist/hosts/vite/vite.js +44 -80
  117. package/dist/html/dom.d.ts +0 -1
  118. package/dist/html/dom.js +0 -1
  119. package/dist/html/identity.d.ts +1 -15
  120. package/dist/html/identity.js +1 -8
  121. package/dist/html/insertions.d.ts +2 -8
  122. package/dist/html/insertions.js +1 -1
  123. package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
  124. package/dist/inspector/agent/McpConnectionDialog.js +8 -9
  125. package/dist/inspector/agent/activity.d.ts +2 -2
  126. package/dist/inspector/agent/activity.js +4 -3
  127. package/dist/inspector/agent/client.d.ts +3 -27
  128. package/dist/inspector/agent/client.js +43 -91
  129. package/dist/inspector/agent/connectionStatus.d.ts +3 -2
  130. package/dist/inspector/agent/connectionStatus.js +25 -1
  131. package/dist/inspector/agent/httpTransport.d.ts +0 -8
  132. package/dist/inspector/agent/httpTransport.js +42 -176
  133. package/dist/inspector/agent/protocol.d.ts +1 -10
  134. package/dist/inspector/agent/protocol.js +1 -9
  135. package/dist/inspector/agent/verification.d.ts +3 -20
  136. package/dist/inspector/agent/verification.js +10 -43
  137. package/dist/inspector/boot.d.ts +5 -0
  138. package/dist/inspector/boot.js +289 -0
  139. package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
  140. package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
  141. package/dist/inspector/canvas/CanvasCard.js +26 -24
  142. package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
  143. package/dist/inspector/canvas/CanvasToolbar.js +2 -1
  144. package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
  145. package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
  146. package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
  147. package/dist/inspector/canvas/PageCard.d.ts +9 -0
  148. package/dist/inspector/canvas/PageCard.js +50 -0
  149. package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
  150. package/dist/inspector/canvas/SketchToolOptions.js +80 -0
  151. package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
  152. package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
  153. package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
  154. package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
  155. package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
  156. package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
  157. package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
  158. package/dist/inspector/canvas/agentPresentation.js +3 -14
  159. package/dist/inspector/canvas/assets/eraser.svg +28 -0
  160. package/dist/inspector/canvas/assets/pen.svg +25 -0
  161. package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
  162. package/dist/inspector/canvas/canvasFrame.js +9 -0
  163. package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
  164. package/dist/inspector/canvas/canvasGestures.js +0 -6
  165. package/dist/inspector/canvas/canvasResize.d.ts +1 -6
  166. package/dist/inspector/canvas/canvasResize.js +1 -6
  167. package/dist/inspector/canvas/canvasStore.d.ts +5 -7
  168. package/dist/inspector/canvas/canvasStore.js +42 -21
  169. package/dist/inspector/canvas/frameConnection.d.ts +42 -0
  170. package/dist/inspector/canvas/frameConnection.js +73 -0
  171. package/dist/inspector/canvas/frameContent.d.ts +0 -1
  172. package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
  173. package/dist/inspector/canvas/frameLifecycle.js +11 -0
  174. package/dist/inspector/canvas/frameProtocol.d.ts +20 -38
  175. package/dist/inspector/canvas/frameProtocol.js +37 -24
  176. package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
  177. package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
  178. package/dist/inspector/canvas/layout.d.ts +10 -22
  179. package/dist/inspector/canvas/layout.js +0 -3
  180. package/dist/inspector/canvas/normalizeUrl.js +1 -8
  181. package/dist/inspector/canvas/pageSurface.d.ts +6 -0
  182. package/dist/inspector/canvas/pageSurface.js +29 -0
  183. package/dist/inspector/canvas/projection.d.ts +14 -25
  184. package/dist/inspector/canvas/projection.js +64 -87
  185. package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
  186. package/dist/inspector/canvas/rendererBootstrap.js +10 -15
  187. package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
  188. package/dist/inspector/canvas/rendererCidIndex.js +0 -5
  189. package/dist/inspector/canvas/rendererElementSelector.js +38 -28
  190. package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
  191. package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
  192. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
  193. package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
  194. package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
  195. package/dist/inspector/canvas/rendererStylesheet.js +23 -1
  196. package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
  197. package/dist/inspector/canvas/resizeHandleScale.js +1 -10
  198. package/dist/inspector/canvas/sessionStore.d.ts +3 -9
  199. package/dist/inspector/canvas/sessionStore.js +33 -43
  200. package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
  201. package/dist/inspector/canvas/staleChangeDetector.js +11 -26
  202. package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
  203. package/dist/inspector/canvas/toolbarScale.js +1 -4
  204. package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
  205. package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
  206. package/dist/inspector/canvas/viewStore.js +1 -1
  207. package/dist/inspector/canvas/wheelPan.d.ts +1 -1
  208. package/dist/inspector/canvas/wheelPan.js +1 -1
  209. package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
  210. package/dist/inspector/canvas/workspaceLease.js +1 -7
  211. package/dist/inspector/changes/codecs.d.ts +1 -0
  212. package/dist/inspector/changes/codecs.js +21 -5
  213. package/dist/inspector/changes/draftPreview.d.ts +7 -0
  214. package/dist/inspector/changes/draftPreview.js +118 -0
  215. package/dist/inspector/changes/editModel.d.ts +11 -13
  216. package/dist/inspector/changes/editModel.js +9 -4
  217. package/dist/inspector/changes/managedStyleProjection.js +6 -15
  218. package/dist/inspector/changes/model.d.ts +0 -5
  219. package/dist/inspector/changes/model.js +1 -8
  220. package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
  221. package/dist/inspector/changes/previewDiagnostics.js +5 -21
  222. package/dist/inspector/changes/previewVerification.d.ts +25 -0
  223. package/dist/inspector/changes/previewVerification.js +34 -0
  224. package/dist/inspector/changes/structuralTypes.d.ts +2 -4
  225. package/dist/inspector/changes/types.d.ts +11 -8
  226. package/dist/inspector/clientManifest.d.ts +17 -6
  227. package/dist/inspector/clientManifest.js +16 -3
  228. package/dist/inspector/comments/CommentsOverlay.js +66 -23
  229. package/dist/inspector/comments/element.d.ts +1 -2
  230. package/dist/inspector/comments/element.js +1 -2
  231. package/dist/inspector/comments/store.d.ts +1 -1
  232. package/dist/inspector/comments/store.js +4 -3
  233. package/dist/inspector/comments/verification.d.ts +8 -2
  234. package/dist/inspector/comments/verification.js +19 -11
  235. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
  236. package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
  237. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
  238. package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
  239. package/dist/inspector/componentSemantics/changeAction.js +1 -1
  240. package/dist/inspector/componentSemantics/changeModel.js +2 -4
  241. package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
  242. package/dist/inspector/componentSemantics/react/callsites.js +261 -0
  243. package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
  244. package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
  245. package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
  246. package/dist/inspector/componentSemantics/react/fibers.js +30 -0
  247. package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
  248. package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
  249. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
  250. package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
  251. package/dist/inspector/componentSemantics/textBinding.d.ts +2 -11
  252. package/dist/inspector/componentSemantics/textBinding.js +20 -87
  253. package/dist/inspector/componentSemantics/types.d.ts +8 -27
  254. package/dist/inspector/componentSemantics/types.js +0 -1
  255. package/dist/inspector/conformance/borderCases.d.ts +0 -5
  256. package/dist/inspector/conformance/borderCases.js +0 -5
  257. package/dist/inspector/conformance/colorCases.d.ts +0 -6
  258. package/dist/inspector/conformance/colorCases.js +0 -6
  259. package/dist/inspector/conformance/fixture.d.ts +1 -5
  260. package/dist/inspector/conformance/fixture.js +1 -5
  261. package/dist/inspector/conformance/spacingCases.d.ts +0 -4
  262. package/dist/inspector/conformance/spacingCases.js +0 -4
  263. package/dist/inspector/conformance/typographyCases.d.ts +0 -5
  264. package/dist/inspector/conformance/typographyCases.js +0 -5
  265. package/dist/inspector/drafts/draftStore.d.ts +95 -0
  266. package/dist/inspector/drafts/draftStore.js +461 -0
  267. package/dist/inspector/drafts/model.d.ts +14 -14
  268. package/dist/inspector/drafts/model.js +4 -2
  269. package/dist/inspector/drafts/store.d.ts +47 -16
  270. package/dist/inspector/drafts/store.js +137 -170
  271. package/dist/inspector/editScope.d.ts +0 -1
  272. package/dist/inspector/editScope.js +0 -1
  273. package/dist/inspector/index.d.ts +2 -4
  274. package/dist/inspector/index.js +2 -264
  275. package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
  276. package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
  277. package/dist/inspector/inline-text/inlineTextEditor.d.ts +3 -9
  278. package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
  279. package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
  280. package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
  281. package/dist/inspector/inspection/bridge.d.ts +3 -7
  282. package/dist/inspector/inspection/bridge.js +6 -13
  283. package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
  284. package/dist/inspector/inspection/browserCssInspection.js +32 -14
  285. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
  286. package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
  287. package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
  288. package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
  289. package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
  290. package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
  291. package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
  292. package/dist/inspector/inspection/selectionProperty.js +1 -5
  293. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
  294. package/dist/inspector/inspection/useBrowserCssInspection.js +22 -59
  295. package/dist/inspector/iterations/capture.d.ts +2 -2
  296. package/dist/inspector/iterations/capture.js +4 -9
  297. package/dist/inspector/iterations/client.d.ts +2 -2
  298. package/dist/inspector/iterations/client.js +0 -1
  299. package/dist/inspector/iterations/coordinator.d.ts +4 -4
  300. package/dist/inspector/iterations/coordinator.js +5 -4
  301. package/dist/inspector/iterations/prompt.d.ts +0 -1
  302. package/dist/inspector/iterations/prompt.js +9 -9
  303. package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
  304. package/dist/inspector/overlay/DomNavigator.js +39 -15
  305. package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
  306. package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
  307. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
  308. package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
  309. package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
  310. package/dist/inspector/overlay/clickPolicy.js +3 -14
  311. package/dist/inspector/overlay/dropGuide.d.ts +0 -3
  312. package/dist/inspector/overlay/dropGuide.js +0 -3
  313. package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
  314. package/dist/inspector/overlay/frameThrottle.js +0 -1
  315. package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
  316. package/dist/inspector/overlay/interactionStyles.js +19 -8
  317. package/dist/inspector/overlay/measurementGeometry.js +4 -12
  318. package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
  319. package/dist/inspector/overlay/selectedGeometry.js +1 -8
  320. package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
  321. package/dist/inspector/overlay/spacingGestures.js +151 -31
  322. package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
  323. package/dist/inspector/overlay/structuralGestures.js +1 -4
  324. package/dist/inspector/pageInspector.d.ts +33 -0
  325. package/dist/inspector/pageInspector.js +335 -0
  326. package/dist/inspector/projection/cssEscapes.d.ts +0 -1
  327. package/dist/inspector/projection/cssEscapes.js +2 -4
  328. package/dist/inspector/projection/draftProjection.d.ts +6 -10
  329. package/dist/inspector/projection/draftProjection.js +8 -7
  330. package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
  331. package/dist/inspector/projection/managedStylesheet.js +28 -26
  332. package/dist/inspector/projection/renderedInstance.d.ts +5 -28
  333. package/dist/inspector/projection/renderedInstance.js +13 -33
  334. package/dist/inspector/projection/structuralProjection.d.ts +7 -48
  335. package/dist/inspector/projection/structuralProjection.js +31 -96
  336. package/dist/inspector/projection/textProjection.d.ts +7 -13
  337. package/dist/inspector/projection/textProjection.js +35 -80
  338. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
  339. package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
  340. package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -0
  341. package/dist/inspector/prompt/clipboardHandoff.js +34 -16
  342. package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
  343. package/dist/inspector/prompt/generatePrompt.js +247 -166
  344. package/dist/inspector/prompt/promptDocument.d.ts +3 -0
  345. package/dist/inspector/prompt/promptDocument.js +8 -0
  346. package/dist/inspector/prompt/promptSettings.d.ts +0 -3
  347. package/dist/inspector/prompt/promptSettings.js +7 -8
  348. package/dist/inspector/runtime/devFlag.d.ts +2 -25
  349. package/dist/inspector/runtime/devFlag.js +4 -31
  350. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
  351. package/dist/inspector/runtime/editorShell.d.ts +0 -1
  352. package/dist/inspector/runtime/editorShell.js +0 -1
  353. package/dist/inspector/runtime/inspectorStorage.d.ts +11 -0
  354. package/dist/inspector/runtime/inspectorStorage.js +37 -0
  355. package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
  356. package/dist/inspector/runtime/ownedStylesheets.js +66 -0
  357. package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
  358. package/dist/inspector/runtime/runtimeConfig.js +18 -50
  359. package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
  360. package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
  361. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
  362. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
  363. package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
  364. package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
  365. package/dist/inspector/selection/editScope.d.ts +2 -7
  366. package/dist/inspector/selection/editScope.js +15 -14
  367. package/dist/inspector/selection/editTarget.d.ts +1 -5
  368. package/dist/inspector/selection/hierarchy.d.ts +11 -11
  369. package/dist/inspector/selection/hierarchy.js +42 -24
  370. package/dist/inspector/selection/selectionStore.d.ts +0 -3
  371. package/dist/inspector/selection/selectionStore.js +5 -16
  372. package/dist/inspector/selection/sourceSite.d.ts +1 -5
  373. package/dist/inspector/selection/sourceSite.js +2 -8
  374. package/dist/inspector/selection/styleSelection.d.ts +1 -5
  375. package/dist/inspector/selection/styleSelection.js +1 -5
  376. package/dist/inspector/session/lifecycle.d.ts +1 -9
  377. package/dist/inspector/session/lifecycle.js +0 -1
  378. package/dist/inspector/session/sessionContext.d.ts +0 -4
  379. package/dist/inspector/session/sessionContext.js +0 -4
  380. package/dist/inspector/session/sessionFactory.d.ts +0 -9
  381. package/dist/inspector/session/sessionFactory.js +0 -6
  382. package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
  383. package/dist/inspector/settings/SettingsDialog.js +5 -3
  384. package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
  385. package/dist/inspector/shell/AgentStatusButton.js +7 -7
  386. package/dist/inspector/shell/AppShell.js +6 -2
  387. package/dist/inspector/shell/ChangesLog.js +29 -12
  388. package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
  389. package/dist/inspector/shell/CopyPromptButton.js +62 -55
  390. package/dist/inspector/shell/EmptyState.js +3 -3
  391. package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
  392. package/dist/inspector/shell/InspectorEditors.js +14 -0
  393. package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
  394. package/dist/inspector/shell/InspectorPanel.js +8 -0
  395. package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
  396. package/dist/inspector/shell/InspectorSelection.js +20 -0
  397. package/dist/inspector/shell/InspectorShell.d.ts +0 -3
  398. package/dist/inspector/shell/InspectorShell.js +44 -58
  399. package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
  400. package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
  401. package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
  402. package/dist/inspector/shell/PeekOriginalButton.js +3 -8
  403. package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
  404. package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
  405. package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
  406. package/dist/inspector/shell/PromptActionButton.js +14 -0
  407. package/dist/inspector/shell/elementName.d.ts +5 -0
  408. package/dist/inspector/shell/elementName.js +29 -0
  409. package/dist/inspector/shell/interactionStatePreview.d.ts +6 -0
  410. package/dist/inspector/shell/interactionStatePreview.js +107 -0
  411. package/dist/inspector/shell/originalPreview.d.ts +1 -5
  412. package/dist/inspector/shell/originalPreview.js +5 -37
  413. package/dist/inspector/shell/stateValue.d.ts +1 -2
  414. package/dist/inspector/shell/stateValue.js +4 -8
  415. package/dist/inspector/shell/styleState.d.ts +1 -2
  416. package/dist/inspector/shell/styleState.js +1 -2
  417. package/dist/inspector/sketch/SketchEditor.js +5 -5
  418. package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
  419. package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
  420. package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
  421. package/dist/inspector/sketch/SketchOverlay.js +138 -263
  422. package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
  423. package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
  424. package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
  425. package/dist/inspector/sketch/SketchThumbnail.js +18 -0
  426. package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
  427. package/dist/inspector/sketch/SketchWorkspace.js +70 -37
  428. package/dist/inspector/sketch/capture.d.ts +12 -3
  429. package/dist/inspector/sketch/capture.js +31 -14
  430. package/dist/inspector/sketch/copySketch.d.ts +4 -0
  431. package/dist/inspector/sketch/copySketch.js +43 -0
  432. package/dist/inspector/sketch/drawingTools.d.ts +15 -0
  433. package/dist/inspector/sketch/drawingTools.js +46 -0
  434. package/dist/inspector/sketch/frameHeading.d.ts +3 -0
  435. package/dist/inspector/sketch/frameHeading.js +23 -0
  436. package/dist/inspector/sketch/freehand.d.ts +0 -1
  437. package/dist/inspector/sketch/freehand.js +3 -4
  438. package/dist/inspector/sketch/geometry.d.ts +2 -1
  439. package/dist/inspector/sketch/geometry.js +15 -1
  440. package/dist/inspector/sketch/handoff.js +0 -1
  441. package/dist/inspector/sketch/history.d.ts +26 -0
  442. package/dist/inspector/sketch/history.js +55 -0
  443. package/dist/inspector/sketch/interaction.d.ts +3 -5
  444. package/dist/inspector/sketch/interaction.js +8 -11
  445. package/dist/inspector/sketch/model.d.ts +33 -6
  446. package/dist/inspector/sketch/model.js +101 -63
  447. package/dist/inspector/sketch/persistence.d.ts +14 -1
  448. package/dist/inspector/sketch/persistence.js +64 -8
  449. package/dist/inspector/sketch/raster.d.ts +3 -2
  450. package/dist/inspector/sketch/raster.js +40 -20
  451. package/dist/inspector/sketch/store.d.ts +1 -1
  452. package/dist/inspector/sketch/store.js +3 -4
  453. package/dist/inspector/sketch/videoFrames.d.ts +6 -0
  454. package/dist/inspector/sketch/videoFrames.js +80 -0
  455. package/dist/inspector/spacing/projection.d.ts +0 -8
  456. package/dist/inspector/spacing/projection.js +38 -20
  457. package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
  458. package/dist/inspector/styleEditors/BorderEditor.js +30 -135
  459. package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
  460. package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
  461. package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
  462. package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
  463. package/dist/inspector/styleEditors/FlexControls.js +158 -0
  464. package/dist/inspector/styleEditors/GapField.d.ts +5 -2
  465. package/dist/inspector/styleEditors/GapField.js +3 -4
  466. package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
  467. package/dist/inspector/styleEditors/GridChildSection.js +0 -5
  468. package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
  469. package/dist/inspector/styleEditors/GridPicker.js +2 -4
  470. package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
  471. package/dist/inspector/styleEditors/GridSection.js +22 -9
  472. package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
  473. package/dist/inspector/styleEditors/GridValueField.js +2 -8
  474. package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
  475. package/dist/inspector/styleEditors/ImageBackgroundEditor.js +1 -2
  476. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
  477. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
  478. package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
  479. package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
  480. package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
  481. package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
  482. package/dist/inspector/styleEditors/LayoutSection.js +30 -356
  483. package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
  484. package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
  485. package/dist/inspector/styleEditors/PositionControls.js +16 -0
  486. package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
  487. package/dist/inspector/styleEditors/SizeSection.js +71 -0
  488. package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
  489. package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
  490. package/dist/inspector/styleEditors/Typography.js +2 -4
  491. package/dist/inspector/styleEditors/borderModel.d.ts +36 -0
  492. package/dist/inspector/styleEditors/borderModel.js +105 -0
  493. package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
  494. package/dist/inspector/styleEditors/completeCssValue.js +3 -13
  495. package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
  496. package/dist/inspector/styleEditors/fieldValue.js +26 -0
  497. package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
  498. package/dist/inspector/styleEditors/gradientValue.js +3 -2
  499. package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
  500. package/dist/inspector/styleEditors/gridChildModel.js +6 -37
  501. package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
  502. package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
  503. package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
  504. package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
  505. package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
  506. package/dist/inspector/styleEditors/layoutMode.js +33 -0
  507. package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
  508. package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
  509. package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
  510. package/dist/inspector/styleEditors/layoutValue.js +6 -15
  511. package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
  512. package/dist/inspector/styleEditors/nudgeValue.js +1 -13
  513. package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
  514. package/dist/inspector/styleEditors/rowLookup.js +1 -5
  515. package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
  516. package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
  517. package/dist/inspector/styleEditors/stylePresence.js +1 -4
  518. package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
  519. package/dist/inspector/styleEditors/textRelevance.js +1 -1
  520. package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
  521. package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
  522. package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
  523. package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
  524. package/dist/inspector/styleEditors/valuePolicy.js +0 -1
  525. package/dist/inspector/testing.d.ts +1 -4
  526. package/dist/inspector/testing.js +1 -4
  527. package/dist/inspector/tokens/TokenChip.d.ts +1 -4
  528. package/dist/inspector/tokens/TokenChip.js +1 -4
  529. package/dist/inspector/tokens/TokenField.d.ts +4 -3
  530. package/dist/inspector/tokens/TokenField.js +53 -32
  531. package/dist/inspector/tokens/TokensPanel.js +2 -1
  532. package/dist/inspector/tokens/catalog.d.ts +2 -10
  533. package/dist/inspector/tokens/catalog.js +5 -12
  534. package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
  535. package/dist/inspector/tokens/dragPointerLock.js +2 -3
  536. package/dist/inspector/tokens/editActions.d.ts +4 -4
  537. package/dist/inspector/tokens/editActions.js +11 -7
  538. package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
  539. package/dist/inspector/tokens/resolution/cascade.js +1 -5
  540. package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +11 -0
  541. package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
  542. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
  543. package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
  544. package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
  545. package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
  546. package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
  547. package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
  548. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
  549. package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
  550. package/dist/inspector/tokens/resolution.d.ts +11 -27
  551. package/dist/inspector/tokens/resolution.js +105 -181
  552. package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
  553. package/dist/inspector/tokens/tokenAvailability.js +6 -38
  554. package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
  555. package/dist/inspector/tokens/tokenEdits.js +1 -1
  556. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
  557. package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
  558. package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
  559. package/dist/inspector/ui/AtRuleContext.js +8 -6
  560. package/dist/inspector/ui/ControlSurface.d.ts +0 -4
  561. package/dist/inspector/ui/Disclosure.d.ts +0 -5
  562. package/dist/inspector/ui/Disclosure.js +0 -4
  563. package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
  564. package/dist/inspector/ui/InlineStyleWarning.js +2 -2
  565. package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
  566. package/dist/inspector/ui/InspectorPopover.js +1 -5
  567. package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
  568. package/dist/inspector/ui/InspectorStyle.js +26 -0
  569. package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
  570. package/dist/inspector/ui/PopoverListbox.js +3 -3
  571. package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
  572. package/dist/inspector/ui/SegmentedControl.js +6 -4
  573. package/dist/inspector/ui/SideValuesField.d.ts +1 -6
  574. package/dist/inspector/ui/SideValuesField.js +2 -8
  575. package/dist/inspector/ui/Toast.d.ts +10 -0
  576. package/dist/inspector/ui/Toast.js +26 -0
  577. package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
  578. package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
  579. package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
  580. package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
  581. package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
  582. package/dist/inspector/ui/atRuleSegments.js +34 -0
  583. package/dist/inspector/ui/classNames.d.ts +0 -1
  584. package/dist/inspector/ui/classNames.js +0 -1
  585. package/dist/inspector/ui/customCursors.d.ts +11 -0
  586. package/dist/inspector/ui/customCursors.js +29 -7
  587. package/dist/inspector/ui/styles.js +25 -25
  588. package/dist/inspector/workspace/commands.js +1 -2
  589. package/dist/inspector/workspace/controller.js +20 -2
  590. package/dist/inspector/workspace/handoff.d.ts +1 -5
  591. package/dist/inspector/workspace/handoff.js +4 -7
  592. package/dist/inspector/workspace/sentItems.d.ts +3 -6
  593. package/dist/inspector/workspace/sentItems.js +6 -24
  594. package/dist/inspector/workspace/timeline.d.ts +28 -11
  595. package/dist/inspector/workspace/timeline.js +117 -96
  596. package/dist/internal/agent-protocol.d.ts +53 -38
  597. package/dist/internal/agent-protocol.js +151 -42
  598. package/dist/nudge-ui.mjs +155 -92
  599. package/dist/project/artifacts.js +24 -21
  600. package/dist/project/files.d.ts +0 -1
  601. package/dist/project/files.js +2 -9
  602. package/dist/project/identity.d.ts +1 -5
  603. package/dist/project/identity.js +1 -5
  604. package/dist/project/mcpPackage.d.ts +3 -0
  605. package/dist/project/mcpPackage.js +55 -0
  606. package/dist/project/pathPolicy.d.ts +1 -6
  607. package/dist/project/pathPolicy.js +1 -6
  608. package/dist/project/tokens.d.ts +2 -12
  609. package/dist/project/tokens.js +4 -15
  610. package/dist/transport/editor.d.ts +1 -12
  611. package/dist/transport/editor.js +2 -13
  612. package/dist/transport/index.d.ts +0 -5
  613. package/dist/transport/index.js +0 -5
  614. package/dist/transport/routes.d.ts +0 -5
  615. package/dist/transport/routes.js +0 -5
  616. package/package.json +16 -5
  617. package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
  618. package/dist/inspector/canvas/measurementProjection.js +0 -16
  619. package/dist/inspector/changes/changesLog.d.ts +0 -49
  620. package/dist/inspector/changes/changesLog.js +0 -255
  621. package/dist/inspector/changes/draftChanges.d.ts +0 -58
  622. package/dist/inspector/changes/draftChanges.js +0 -304
  623. package/dist/inspector/conformance/projection.d.ts +0 -2
  624. package/dist/inspector/conformance/projection.js +0 -3
  625. package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
  626. package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
  627. package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
  628. package/dist/inspector/overlay/InspectorOverlay.js +0 -332
  629. package/dist/inspector/overlay/elementSelector.d.ts +0 -1
  630. package/dist/inspector/overlay/elementSelector.js +0 -111
  631. package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
  632. package/dist/inspector/sketch/SketchChanges.js +0 -72
  633. package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
  634. package/dist/inspector/sketch/SketchEntryButton.js +0 -11
  635. package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
  636. package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
  637. package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
  638. package/dist/inspector/styleEditors/InsetSection.js +0 -15
  639. package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
  640. package/dist/inspector/styleEditors/PositionInsets.js +0 -12
  641. package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
  642. package/dist/inspector/tokens/TokenDropdown.js +0 -59
@@ -1,19 +1,18 @@
1
1
  import { cloneElement, createElement, forwardRef, useEffect, useMemo, useSyncExternalStore, version as reactVersion, } from "react";
2
- import { registerHostRuntimeAdapter } from "./runtimeBridge.js";
3
- import { getNudgeUiRuntimeConfig } from "../runtime/runtimeConfig.js";
2
+ import { registerHostRuntimeAdapter } from "../runtimeBridge.js";
3
+ import { getNudgeUiRuntimeConfig } from "../../runtime/runtimeConfig.js";
4
+ import { findFiber, hostOutputCount, isHostOutput } from "./fibers.js";
5
+ import { canPreviewLive, invocationProps, replaceTaggedOverrides, resetTaggedCallsites, taggedCallsiteMultiplicity, taggedInvocationsAbove, taggedRootInvocations, } from "./callsites.js";
6
+ export { registerReactCallsites } from "./callsites.js";
4
7
  const BOUNDARY_MARKER = Symbol.for("nudge-ui.react-component-boundary");
5
8
  const EMPTY_OVERRIDE = Object.freeze({});
6
9
  const REACT_MAJOR_VERSION = Number.parseInt(reactVersion, 10);
7
- /** React work tags for host output that has no string element type. */
8
- const HOST_PORTAL_TAG = 4;
9
- const HOST_TEXT_TAG = 6;
10
10
  let overridesByCallsite = new Map();
11
11
  const listeners = new Set();
12
12
  /**
13
- * Mounted invocation accounting is runtime state, not canonical identity. A
14
- * boundary registers by its stable transformed callsite and unregisters on
15
- * unmount. This survives rerenders and React Strict Mode's effect probe, and
16
- * each Canvas iframe owns an independent registry/module instance.
13
+ * Mounted invocation accounting is runtime state, not canonical identity: a boundary
14
+ * registers by its stable transformed callsite and unregisters on unmount, surviving
15
+ * rerenders and React Strict Mode's effect probe.
17
16
  */
18
17
  const mountedCallsites = new Map();
19
18
  function registerMountedCallsite(callsiteId) {
@@ -30,7 +29,6 @@ function registerMountedCallsite(callsiteId) {
30
29
  mountedCallsites.delete(callsiteId);
31
30
  };
32
31
  }
33
- /** Returns null when this runtime has no mounted boundary for the callsite. */
34
32
  export function getReactCallsiteMultiplicity(callsiteId) {
35
33
  return mountedCallsites.get(callsiteId) ?? null;
36
34
  }
@@ -39,6 +37,7 @@ export function resetReactComponentRuntime() {
39
37
  mountedCallsites.clear();
40
38
  overridesByCallsite = new Map();
41
39
  listeners.clear();
40
+ resetTaggedCallsites();
42
41
  }
43
42
  function subscribe(listener) {
44
43
  listeners.add(listener);
@@ -119,9 +118,8 @@ const ReactComponentOverride = forwardRef(function ReactComponentOverride({ elem
119
118
  const props = {
120
119
  ...injectedProps,
121
120
  ...override,
121
+ ...(forwardedRef === null ? {} : { ref: mergedRef }),
122
122
  };
123
- if (forwardedRef !== null)
124
- props.ref = mergedRef;
125
123
  return cloneElement(element, props);
126
124
  });
127
125
  ReactComponentOverride[BOUNDARY_MARKER] = true;
@@ -131,26 +129,40 @@ function isBoundaryType(value) {
131
129
  return false;
132
130
  return Reflect.get(value, BOUNDARY_MARKER) === true;
133
131
  }
134
- function findFiber(element) {
135
- for (const key of Object.keys(element)) {
136
- if (/^__reactFiber\$/.test(key) || /^__reactInternalInstance\$/.test(key)) {
137
- return Reflect.get(element, key) ?? null;
138
- }
139
- }
140
- return null;
141
- }
142
132
  export function instrumentReactComponent(element, meta) {
143
133
  return createElement(ReactComponentOverride, { key: element.key ?? undefined, element, meta });
144
134
  }
135
+ function boundaryOf(fiber) {
136
+ if (!isBoundaryType(fiber.type))
137
+ return null;
138
+ // SAFETY: a boundary fiber's props are the `{ element, meta }` it was created with; both are checked below.
139
+ const props = (fiber.memoizedProps ?? {});
140
+ return props.meta && props.element ? { meta: props.meta, element: props.element } : null;
141
+ }
142
+ function nearestFirst(boundaries, tagged) {
143
+ const wrapped = new Set(boundaries.map((entry) => entry.callsiteId));
144
+ return [...boundaries, ...tagged.filter((entry) => !wrapped.has(entry.callsiteId))]
145
+ .sort((left, right) => left.depth - right.depth)
146
+ .map((entry) => entry.value);
147
+ }
148
+ /** Wrapped callsites answer through their boundary, others through their fiber's identity tag; both merge nearest first. */
145
149
  export function inspectReactComponentTargets(element) {
146
150
  if (!getNudgeUiRuntimeConfig().capabilities.componentSemantics)
147
151
  return [];
148
- const targets = [];
149
- let fiber = findFiber(element);
150
- while (fiber) {
151
- if (isBoundaryType(fiber.type) && fiber.memoizedProps?.meta && fiber.memoizedProps.element) {
152
- const { meta, element: sourceElement } = fiber.memoizedProps;
153
- targets.push({
152
+ const host = findFiber(element);
153
+ if (!host)
154
+ return [];
155
+ const boundaries = [];
156
+ let depth = 0;
157
+ for (let fiber = host; fiber; fiber = fiber.return ?? null, depth += 1) {
158
+ const boundary = boundaryOf(fiber);
159
+ if (!boundary)
160
+ continue;
161
+ const { meta, element: sourceElement } = boundary;
162
+ boundaries.push({
163
+ depth,
164
+ callsiteId: meta.callsiteId,
165
+ value: {
154
166
  framework: "react",
155
167
  meta,
156
168
  props: {
@@ -158,28 +170,21 @@ export function inspectReactComponentTargets(element) {
158
170
  ...overrideFor(meta.callsiteId),
159
171
  },
160
172
  mountedCount: getReactCallsiteMultiplicity(meta.callsiteId) ?? undefined,
161
- });
162
- }
163
- fiber = fiber.return ?? null;
173
+ },
174
+ });
164
175
  }
165
- return targets;
166
- }
167
- function isHostOutput(fiber) {
168
- return typeof fiber.type === "string" || fiber.tag === HOST_TEXT_TAG || fiber.tag === HOST_PORTAL_TAG;
169
- }
170
- /** Counts top-level host outputs below a fiber, stopping once there are two. */
171
- function hostOutputCount(fiber) {
172
- let count = 0;
173
- const visit = (parent) => {
174
- for (let child = parent.child ?? null; child && count < 2; child = child.sibling ?? null) {
175
- if (isHostOutput(child))
176
- count += 1;
177
- else
178
- visit(child);
179
- }
180
- };
181
- visit(fiber);
182
- return count;
176
+ const tagged = taggedInvocationsAbove(host).map((invocation) => ({
177
+ depth: invocation.depth,
178
+ callsiteId: invocation.meta.callsiteId,
179
+ value: {
180
+ framework: "react",
181
+ meta: invocation.meta,
182
+ props: invocationProps(invocation.fiber),
183
+ mountedCount: taggedCallsiteMultiplicity(invocation.meta.callsiteId, invocation.root) ?? undefined,
184
+ ...(canPreviewLive(invocation.root) ? {} : { livePreview: false }),
185
+ },
186
+ }));
187
+ return nearestFirst(boundaries, tagged);
183
188
  }
184
189
  export function inspectReactRootInvocations(element) {
185
190
  if (!getNudgeUiRuntimeConfig().capabilities.componentSemantics)
@@ -187,16 +192,27 @@ export function inspectReactRootInvocations(element) {
187
192
  const host = findFiber(element);
188
193
  if (!host)
189
194
  return null;
190
- const invocations = [];
195
+ const boundaries = [];
196
+ let depth = 0;
191
197
  for (let fiber = host.return ?? null; fiber && !isHostOutput(fiber); fiber = fiber.return ?? null) {
192
- if (!isBoundaryType(fiber.type) || !fiber.memoizedProps?.meta)
198
+ depth += 1;
199
+ const boundary = boundaryOf(fiber);
200
+ if (!boundary)
193
201
  continue;
194
202
  if (hostOutputCount(fiber) !== 1)
195
203
  break;
196
- const { callsiteId, componentName } = fiber.memoizedProps.meta;
197
- invocations.push({ callsiteId, componentName });
204
+ const { callsiteId, componentName } = boundary.meta;
205
+ boundaries.push({ depth, callsiteId, value: { callsiteId, componentName } });
198
206
  }
199
- return invocations;
207
+ const tagged = taggedRootInvocations(host).map(({ depth: taggedDepth, callsiteId, componentName }) => ({
208
+ depth: taggedDepth,
209
+ callsiteId,
210
+ value: { callsiteId, componentName },
211
+ }));
212
+ return nearestFirst(boundaries, tagged);
213
+ }
214
+ function callsiteMultiplicity(callsiteId) {
215
+ return getReactCallsiteMultiplicity(callsiteId) ?? taggedCallsiteMultiplicity(callsiteId);
200
216
  }
201
217
  export function replaceReactComponentOverrides(overrides) {
202
218
  if (!getNudgeUiRuntimeConfig().capabilities.componentSemantics)
@@ -209,6 +225,7 @@ export function replaceReactComponentOverrides(overrides) {
209
225
  props[override.prop] = override.value;
210
226
  next.set(override.callsiteId, props);
211
227
  }
228
+ replaceTaggedOverrides(next);
212
229
  if (sameOverrideProjection(next))
213
230
  return;
214
231
  overridesByCallsite = next;
@@ -218,7 +235,7 @@ export const reactComponentRuntimeAdapter = {
218
235
  framework: "react",
219
236
  inspect: inspectReactComponentTargets,
220
237
  replaceOverrides: replaceReactComponentOverrides,
221
- getCallsiteMultiplicity: getReactCallsiteMultiplicity,
238
+ getCallsiteMultiplicity: callsiteMultiplicity,
222
239
  rootInvocations: inspectReactRootInvocations,
223
240
  };
224
241
  registerHostRuntimeAdapter(reactComponentRuntimeAdapter);
@@ -1,27 +1,11 @@
1
1
  import type { ComponentOverride, ComponentRootInvocation, ComponentRuntimeAdapter, RuntimeComponentTarget } from "./types.js";
2
2
  export type { ComponentFramework, ComponentInvocationMeta, ComponentOverride, ComponentRootInvocation, ComponentRuntimeAdapter, RuntimeComponentTarget, } from "./types.js";
3
- /** Version of the page-global host runtime Adapter Interface. */
4
3
  export declare const NUDGE_UI_HOST_RUNTIME_VERSION = 1;
5
- /**
6
- * Registers a framework runtime Adapter in the host application's module graph.
7
- *
8
- * The registry lives on the page global because the self-contained inspector
9
- * client and the host Adapter intentionally have separate dependency graphs.
10
- * Registration replaces an older Adapter for the same framework so HMR does
11
- * not accumulate stale implementations.
12
- */
4
+ /** The registry lives on the page global because the inspector client and the host Adapter have separate dependency graphs. */
13
5
  export declare function registerHostRuntimeAdapter(adapter: ComponentRuntimeAdapter): () => void;
14
- /** Returns the active host runtime Adapters for the requested browser realm. */
15
6
  export declare function getHostRuntimeAdapters(ownerGlobal?: typeof globalThis): readonly ComponentRuntimeAdapter[];
16
- /** Stores the latest projection and sends it to every registered host Adapter. */
17
7
  export declare function replaceHostRuntimeAdapterOverrides(overrides: readonly ComponentOverride[]): void;
18
- /**
19
- * Copies a host Adapter result into the protocol's plain-data value space.
20
- * React elements, functions, and other reconciler-owned values never cross
21
- * the host/client seam.
22
- */
8
+ /** Reconciler-owned values never cross the host/client seam. */
23
9
  export declare function copyRuntimeTarget(target: RuntimeComponentTarget): RuntimeComponentTarget;
24
- /** Copies a host Adapter's root invocations into plain protocol data. */
25
10
  export declare function copyRootInvocations(invocations: readonly ComponentRootInvocation[]): ComponentRootInvocation[];
26
- /** Copies override commands before dispatching them into a host Adapter. */
27
11
  export declare function copyComponentOverrides(overrides: readonly ComponentOverride[]): ComponentOverride[];
@@ -1,5 +1,4 @@
1
1
  import { isComponentFramework } from "./types.js";
2
- /** Version of the page-global host runtime Adapter Interface. */
3
2
  export const NUDGE_UI_HOST_RUNTIME_VERSION = 1;
4
3
  const HOST_RUNTIME_KEY = Symbol.for("nudge-ui.host-runtime.v1");
5
4
  function registry() {
@@ -21,14 +20,7 @@ function registry() {
21
20
  target[HOST_RUNTIME_KEY] = created;
22
21
  return created;
23
22
  }
24
- /**
25
- * Registers a framework runtime Adapter in the host application's module graph.
26
- *
27
- * The registry lives on the page global because the self-contained inspector
28
- * client and the host Adapter intentionally have separate dependency graphs.
29
- * Registration replaces an older Adapter for the same framework so HMR does
30
- * not accumulate stale implementations.
31
- */
23
+ /** The registry lives on the page global because the inspector client and the host Adapter have separate dependency graphs. */
32
24
  export function registerHostRuntimeAdapter(adapter) {
33
25
  assertRuntimeAdapter(adapter);
34
26
  const hostRegistry = registry();
@@ -42,14 +34,14 @@ export function registerHostRuntimeAdapter(adapter) {
42
34
  }
43
35
  };
44
36
  }
45
- /** Returns the active host runtime Adapters for the requested browser realm. */
46
37
  export function getHostRuntimeAdapters(ownerGlobal = globalThis) {
47
38
  if (ownerGlobal === globalThis)
48
39
  return [...registry().adapters.values()];
40
+ // SAFETY: the symbol key is this module's private registry slot; symbol lookup works across realms.
49
41
  const current = ownerGlobal[HOST_RUNTIME_KEY];
50
42
  if (current === undefined)
51
43
  return [];
52
- const mapConstructor = Reflect.get(ownerGlobal, "Map");
44
+ const mapConstructor = ownerGlobal.Map;
53
45
  if (!mapConstructor
54
46
  || typeof current !== "object"
55
47
  || current === null
@@ -59,7 +51,6 @@ export function getHostRuntimeAdapters(ownerGlobal = globalThis) {
59
51
  }
60
52
  return [...(current.adapters.values())];
61
53
  }
62
- /** Stores the latest projection and sends it to every registered host Adapter. */
63
54
  export function replaceHostRuntimeAdapterOverrides(overrides) {
64
55
  const hostRegistry = registry();
65
56
  const frameworks = new Set([
@@ -76,11 +67,7 @@ export function replaceHostRuntimeAdapterOverrides(overrides) {
76
67
  hostRegistry.adapters.get(framework)?.replaceOverrides(copyComponentOverrides(projection));
77
68
  }
78
69
  }
79
- /**
80
- * Copies a host Adapter result into the protocol's plain-data value space.
81
- * React elements, functions, and other reconciler-owned values never cross
82
- * the host/client seam.
83
- */
70
+ /** Reconciler-owned values never cross the host/client seam. */
84
71
  export function copyRuntimeTarget(target) {
85
72
  assertRuntimeTarget(target);
86
73
  const props = {};
@@ -102,9 +89,9 @@ export function copyRuntimeTarget(target) {
102
89
  },
103
90
  props,
104
91
  ...(target.mountedCount === undefined ? {} : { mountedCount: target.mountedCount }),
92
+ ...(target.livePreview === false ? { livePreview: false } : {}),
105
93
  };
106
94
  }
107
- /** Copies a host Adapter's root invocations into plain protocol data. */
108
95
  export function copyRootInvocations(invocations) {
109
96
  if (!Array.isArray(invocations)) {
110
97
  throw new TypeError("Nudge UI received invalid root invocations from a host Adapter.");
@@ -121,7 +108,6 @@ export function copyRootInvocations(invocations) {
121
108
  return { callsiteId: invocation.callsiteId, componentName: invocation.componentName };
122
109
  });
123
110
  }
124
- /** Copies override commands before dispatching them into a host Adapter. */
125
111
  export function copyComponentOverrides(overrides) {
126
112
  return overrides.map((override) => {
127
113
  assertComponentOverride(override);
@@ -1,6 +1,5 @@
1
1
  import type { ComponentChangeTarget, EditableComponentTarget } from "./types.js";
2
- import type { TextProjectionTarget } from "../inline-text/textChangeBoundary.js";
3
- import type { TextBindingEvidence, TextProjectionScope } from "../inline-text/textChangeBoundary.js";
2
+ import type { TextBindingEvidence, TextProjectionScope, TextProjectionTarget } from "../changes/editModel.js";
4
3
  /** The order used when more than one visible prop has the same value. */
5
4
  export declare const VISIBLE_TEXT_PROP_PRIORITY: readonly ["children", "label", "text", "caption", "description", "title"];
6
5
  export type TextEditRejectionReason = "no-text" | "no-binding" | "ambiguous-binding" | "editing-active" | "unsafe-target";
@@ -36,20 +35,16 @@ export interface TextBindingChoice {
36
35
  editableTarget: EditableComponentTarget;
37
36
  mountedCount: number;
38
37
  authoredAs: "literal" | "expression" | "spread" | "default";
39
- /** Durable target/source evidence for an item-only commit. */
40
38
  renderedTarget: TextProjectionTarget | null;
41
39
  renderedSource?: TextBindingRenderedSource;
42
40
  }
43
41
  export interface TextBindingCandidate {
44
42
  binding: TextEditBinding;
45
- /** Runtime target retained privately for semantic canonical records. */
46
43
  editableTarget?: EditableComponentTarget;
47
44
  element: HTMLElement;
48
45
  textNode: Text;
49
46
  before: string;
50
- /** Equal-priority semantic candidates are selected by the inline chooser. */
51
47
  bindingChoices?: TextBindingChoice[];
52
- /** Repeated literal invocations expose this scope choice before commit. */
53
48
  scope?: TextProjectionScope;
54
49
  scopeChoices?: TextProjectionScope[];
55
50
  mountedCount?: number;
@@ -58,11 +53,7 @@ export interface TextBindingCandidate {
58
53
  /** Existing inspector affordance hidden while its empty node is edited. */
59
54
  emptyProjectionMarker?: HTMLElement;
60
55
  }
61
- /**
62
- * Resolves only a confidently matched semantic string binding. Text nodes and
63
- * the temporary editor host are not identity: the returned component target is
64
- * the durable callsite used by the canonical component-prop record.
65
- */
56
+ /** Text nodes and the temporary editor host are not identity; the returned callsite is the durable one. */
66
57
  export declare function resolveTextBinding(element: HTMLElement, point?: {
67
58
  x: number;
68
59
  y: number;
@@ -1,5 +1,5 @@
1
1
  import { callsiteMultiplicity, editableComponentTargets, inspectComponentTargets, } from "./adapterRegistry.js";
2
- import { captureTextProjectionTarget, resolveTextProjectionTextNode, textProjectionSelector, } from "../projection/textProjection.js";
2
+ import { captureTextProjectionTarget, hasSafeMixedDescendants, isInApplicationEditingHost, isUnsafeTextHost, resolveTextProjectionTextNode, textProjectionSelector, } from "../projection/textProjection.js";
3
3
  /** The order used when more than one visible prop has the same value. */
4
4
  export const VISIBLE_TEXT_PROP_PRIORITY = [
5
5
  "children",
@@ -17,24 +17,6 @@ const STRUCTURAL_TEXT_PROPS = new Set([
17
17
  "role",
18
18
  "style",
19
19
  ]);
20
- const UNSAFE_TEXT_TAGS = new Set(["SCRIPT", "STYLE", "TEXTAREA", "OPTION"]);
21
- const UNSAFE_MIXED_DESCENDANT_TAGS = new Set([
22
- ...UNSAFE_TEXT_TAGS,
23
- "INPUT",
24
- "SELECT",
25
- "BUTTON",
26
- "A",
27
- "B",
28
- "STRONG",
29
- "I",
30
- "EM",
31
- "U",
32
- "MARK",
33
- "CODE",
34
- "S",
35
- "DEL",
36
- "INS",
37
- ]);
38
20
  function isStructuralTextProp(name) {
39
21
  return STRUCTURAL_TEXT_PROPS.has(name)
40
22
  || name.startsWith("data")
@@ -52,9 +34,8 @@ function isApplicationEditingHost(element) {
52
34
  && host.getAttribute("contenteditable") !== "false";
53
35
  }
54
36
  function isApplicationEditingTextNode(element, textNode) {
55
- // `element.closest()` only checks the selected root. A tracked root can
56
- // contain an application-owned editing island, so inspect the text node's
57
- // complete ancestor chain as well.
37
+ // `element.closest()` only checks the selected root; an editing island can
38
+ // live deeper, so inspect the text node's own chain as well.
58
39
  const editingHost = textNode.parentElement?.closest("[contenteditable]");
59
40
  if (!editingHost)
60
41
  return false;
@@ -62,9 +43,6 @@ function isApplicationEditingTextNode(element, textNode) {
62
43
  && editingHost.getAttribute("contenteditable") !== "false"
63
44
  && (editingHost === element || element.contains(editingHost) || editingHost.contains(element));
64
45
  }
65
- function isUnsafeSemanticHost(element) {
66
- return UNSAFE_TEXT_TAGS.has(element.tagName);
67
- }
68
46
  function isVisibleTextProp(name) {
69
47
  return VISIBLE_TEXT_PROP_PRIORITY.some((candidate) => candidate === name);
70
48
  }
@@ -107,33 +85,13 @@ function textNodesFor(element) {
107
85
  return nodes;
108
86
  }
109
87
  function isSafeRenderedTextHost(element, textNode) {
110
- if (UNSAFE_TEXT_TAGS.has(element.tagName))
111
- return false;
112
- const editingHost = element.closest("[contenteditable]");
113
- if (editingHost
114
- && editingHost.getAttribute("data-inline-editor") !== "true"
115
- && editingHost.getAttribute("contenteditable") !== "false")
88
+ if (isUnsafeTextHost(element) || isInApplicationEditingHost(element))
116
89
  return false;
117
90
  if (element.children.length === 0) {
118
91
  const directTextNodes = Array.from(element.childNodes).filter((node) => node.nodeType === 3);
119
92
  return directTextNodes.length === 1 && directTextNodes[0] === textNode;
120
93
  }
121
- if (!element.contains(textNode))
122
- return false;
123
- // A line break is layout structure, not rich text content. When the exact
124
- // text node is captured, wrapping that node leaves the <br> in place and
125
- // preserves both lines. Other inline formatting remains rejected because
126
- // replacing text inside it would silently flatten authored markup.
127
- for (const descendant of Array.from(element.querySelectorAll("*"))) {
128
- if (UNSAFE_MIXED_DESCENDANT_TAGS.has(descendant.tagName))
129
- return false;
130
- const descendantEditingHost = descendant.closest("[contenteditable]");
131
- if (descendantEditingHost
132
- && descendantEditingHost.getAttribute("data-inline-editor") !== "true"
133
- && descendantEditingHost.getAttribute("contenteditable") !== "false")
134
- return false;
135
- }
136
- return true;
94
+ return element.contains(textNode) && hasSafeMixedDescendants(element);
137
95
  }
138
96
  function textNodeAtPoint(element, point) {
139
97
  const nodes = textNodesFor(element);
@@ -177,9 +135,8 @@ function mountedCountFor(element, target) {
177
135
  const mountedCount = callsiteMultiplicity(target);
178
136
  if (mountedCount !== null)
179
137
  return mountedCount;
180
- // Adapters written before multiplicity was introduced may still provide a
181
- // marker-backed inspection. Keep that compatibility fallback conservative:
182
- // it can prove one root, but it can never prove an arbitrary count.
138
+ // Compatibility fallback for adapters predating multiplicity: it can prove
139
+ // one root, never an arbitrary count.
183
140
  return hasUniqueInvocationEvidence(element, target.meta.callsiteId) ? 1 : null;
184
141
  }
185
142
  function candidatesForText(element, renderedText) {
@@ -229,10 +186,8 @@ function renderedTextCandidate(element, textNode, before, semantic, requireUniqu
229
186
  }
230
187
  const componentTarget = semantic?.target ?? inspectComponentTargets(element)[0];
231
188
  const semanticProperty = semantic?.property;
232
- // A component target is only source evidence when it is the callsite that
233
- // produced this exact DOM root. For text inside a child host element, the
234
- // nearest boundary is the enclosing component invocation, so the element's
235
- // own data-src must remain the prompt/change source.
189
+ // A component target is source evidence only when its callsite produced this
190
+ // exact DOM root; otherwise the element's own data-src remains the source.
236
191
  const elementDataSrc = element.getAttribute("data-src");
237
192
  const elementSource = parseRenderedSource(elementDataSrc ?? "");
238
193
  const matchingComponentTarget = componentTarget
@@ -280,7 +235,6 @@ function renderedTextCandidate(element, textNode, before, semantic, requireUniqu
280
235
  element,
281
236
  textNode,
282
237
  before,
283
- // Keep this private metadata on the candidate for canonical source data.
284
238
  renderedSource: {
285
239
  file: source.file,
286
240
  line: source.line,
@@ -331,11 +285,6 @@ function parseRenderedSource(src) {
331
285
  return { file: src, line: 0, column: 0 };
332
286
  return { file: match[1] ?? src, line: Number(match[2]), column: Number(match[3]) };
333
287
  }
334
- /**
335
- * Compatibility evidence for adapters that predate the mounted-count seam.
336
- * React itself reports multiplicity through the runtime Adapter registry; this
337
- * fallback is only a one-root proof and is never used to pick an occurrence.
338
- */
339
288
  function hasUniqueInvocationEvidence(element, callsiteId) {
340
289
  const nodes = Array.from(element.ownerDocument.querySelectorAll("[data-cid]"));
341
290
  const matches = new Set();
@@ -366,11 +315,7 @@ function hasUniqueInvocationEvidence(element, callsiteId) {
366
315
  }
367
316
  return roots === 1;
368
317
  }
369
- /**
370
- * Resolves only a confidently matched semantic string binding. Text nodes and
371
- * the temporary editor host are not identity: the returned component target is
372
- * the durable callsite used by the canonical component-prop record.
373
- */
318
+ /** Text nodes and the temporary editor host are not identity; the returned callsite is the durable one. */
374
319
  export function resolveTextBinding(element, point) {
375
320
  if (isApplicationEditingHost(element)) {
376
321
  return {
@@ -379,11 +324,9 @@ export function resolveTextBinding(element, point) {
379
324
  message: "Application-owned editing surfaces are not managed by the inspector.",
380
325
  };
381
326
  }
382
- // Hard-dangerous hosts are rejected before adapter inspection. Descendant
383
- // markup is intentionally not included: a confident semantic component
384
- // binding may still own a nested text node, while rendered fallback keeps
385
- // its stricter direct-leaf requirement.
386
- if (isUnsafeSemanticHost(element)) {
327
+ // Descendant markup is intentionally not included: a semantic binding may still own a
328
+ // nested text node, while the rendered fallback keeps its stricter direct-leaf rule.
329
+ if (isUnsafeTextHost(element)) {
387
330
  return {
388
331
  kind: "rejected",
389
332
  reason: "unsafe-target",
@@ -439,9 +382,7 @@ export function resolveTextBinding(element, point) {
439
382
  renderedSource: rendered?.source,
440
383
  };
441
384
  });
442
- // Multiple equal-priority candidates are not rejected or guessed. The
443
- // session exposes these choices to the inline chooser and blocks commit
444
- // until the user picks one.
385
+ // Equal-priority candidates are handed to the inline chooser, never guessed.
445
386
  if (choices.length > 1) {
446
387
  return {
447
388
  binding: firstBinding,
@@ -463,16 +404,13 @@ export function resolveTextBinding(element, point) {
463
404
  const authoredAs = authoredAsFor(match.target, match.property);
464
405
  const binding = targetBinding(match.target, match.property);
465
406
  if (match.mountedCount > 1 && authoredAs !== "literal") {
466
- // Expressions/spreads are source-logic intent. A semantic callsite
467
- // override would fan out to every item, so retain one durable text target
468
- // and tell the prompt to update the data/source logic.
407
+ // Expressions/spreads are source-logic intent; a callsite override would
408
+ // fan out to every item, so keep one durable text target instead.
469
409
  return renderedTextCandidate(element, textNode, before, match);
470
410
  }
471
411
  if (match.mountedCount > 1 && authoredAs === "literal") {
472
- // Validate the selected output with the same bounded before-text evidence
473
- // used by the durable projection. The source-site option remains safe even
474
- // when identical outputs make an instance impossible to distinguish, but
475
- // an item-only session is never allowed to guess.
412
+ // Item-only scope must validate against the same bounded before-text
413
+ // evidence as the durable projection; source-site stays safe either way.
476
414
  const rendered = renderedTextCandidate(element, textNode, before, match, false);
477
415
  if (!("kind" in rendered)) {
478
416
  return {
@@ -484,10 +422,8 @@ export function resolveTextBinding(element, point) {
484
422
  scopeChoices: ["rendered-instance", "source-site"],
485
423
  };
486
424
  }
487
- // An unsafe/missing rendered-text projection only removes the item-scoped
488
- // option. The explicit all-output source-site edit is still a safe
489
- // canonical component-prop change and must not be rejected because the
490
- // DOM fallback cannot capture bounded instance evidence.
425
+ // A missing rendered projection only removes the item-scoped option; the
426
+ // all-output source-site edit is still a safe canonical change.
491
427
  return {
492
428
  binding,
493
429
  editableTarget: match.target,
@@ -499,9 +435,6 @@ export function resolveTextBinding(element, point) {
499
435
  scopeChoices: ["source-site"],
500
436
  };
501
437
  }
502
- // Unique invocation (mountedCount === 1): the callsite is unambiguous, so
503
- // the source-site edit is always safe and no scope choice is offered. The
504
- // mountedCount > 1 cases all returned above.
505
438
  return {
506
439
  binding,
507
440
  editableTarget: match.target,
@@ -1,16 +1,13 @@
1
1
  import type { RuntimeProps } from "./runtimeTypes.js";
2
2
  import type { EditScope } from "../editScope.js";
3
+ import type { ComponentInvocationMeta } from "../../compiler/componentContractTypes.js";
3
4
  export type ComponentPropValue = string | number | boolean;
4
5
  export type AuthoredPropKind = "literal" | "expression" | "spread" | "default";
5
6
  export declare const COMPONENT_FRAMEWORKS: readonly ["react"];
6
7
  export type ComponentFramework = (typeof COMPONENT_FRAMEWORKS)[number];
7
8
  export type ComponentChangeScope = EditScope;
8
- /** Returns whether a host value names a supported component framework. */
9
9
  export declare function isComponentFramework(value: string): value is ComponentFramework;
10
- /**
11
- * Bounded evidence for the rendered invocation that a text edit started from.
12
- * This is deliberately JSON data, never a DOM node or a React fiber.
13
- */
10
+ /** Deliberately JSON data, never a DOM node or a React fiber. */
14
11
  export interface ComponentInvocationEvidence {
15
12
  occurrence: number;
16
13
  props: string | null;
@@ -40,26 +37,18 @@ export interface ComponentChangeRecord {
40
37
  before: ComponentPropBaseline;
41
38
  after: ComponentPropValue;
42
39
  authoredAs: AuthoredPropKind;
43
- /** `source-site` is the historical/default semantic projection scope. */
44
40
  scope?: ComponentChangeScope;
45
- /** Present when an inline scope decision was made from one rendered item. */
46
41
  evidence?: ComponentInvocationEvidence;
47
42
  }
48
- export interface ComponentInvocationMeta {
49
- callsiteId: string;
50
- componentId: string;
51
- componentName: string;
52
- file: string;
53
- line: number;
54
- column: number;
55
- authoredProps: Record<string, Exclude<AuthoredPropKind, "default">>;
56
- }
43
+ /** The compiler owns this wire format; the runtime only reads it. */
44
+ export type { ComponentInvocationMeta };
57
45
  export interface RuntimeComponentTarget {
58
46
  framework: ComponentFramework;
59
47
  meta: ComponentInvocationMeta;
60
48
  props: RuntimeProps;
61
- /** Adapter-reported mounted invocation count for this callsite. */
62
49
  mountedCount?: number;
50
+ /** False when the runtime cannot render a prop change (the change still reaches the prompt); absent means live. */
51
+ livePreview?: boolean;
63
52
  }
64
53
  /** A component invocation whose entire rendered output is one DOM element. */
65
54
  export interface ComponentRootInvocation {
@@ -92,16 +81,8 @@ export interface ComponentRuntimeAdapter {
92
81
  framework: ComponentFramework;
93
82
  inspect(element: HTMLElement): RuntimeComponentTarget[];
94
83
  replaceOverrides(overrides: ComponentOverride[]): void;
95
- /**
96
- * Return the number of currently mounted invocations for a callsite. A
97
- * runtime that cannot prove this must return null/undefined so callers can
98
- * fail closed instead of broadening a semantic override.
99
- */
84
+ /** A runtime that cannot prove the count must return null so callers fail closed. */
100
85
  getCallsiteMultiplicity?(callsiteId: string): number | null | undefined;
101
- /**
102
- * Return, nearest first, the invocations whose entire rendered output is
103
- * this element. A runtime that cannot read the element's ancestry must
104
- * return null so structural identity fails closed.
105
- */
86
+ /** Nearest first; null when the runtime cannot read the element's ancestry, so structural identity fails closed. */
106
87
  rootInvocations?(element: HTMLElement): ComponentRootInvocation[] | null;
107
88
  }
@@ -1,5 +1,4 @@
1
1
  export const COMPONENT_FRAMEWORKS = ["react"];
2
- /** Returns whether a host value names a supported component framework. */
3
2
  export function isComponentFramework(value) {
4
3
  return COMPONENT_FRAMEWORKS.some((framework) => framework === value);
5
4
  }
@@ -1,7 +1,2 @@
1
1
  import type { ConformanceFixture } from "./fixture.js";
2
- /**
3
- * Framework-neutral border corpus. Covers shorthand decomposition into width,
4
- * style, and color longhands (including omitted CSS initials), side-specific
5
- * shorthands, token attribution, border-radius, and true raw fallbacks.
6
- */
7
2
  export declare const BORDER_CASES: ConformanceFixture[];