nudge-ui 0.2.5 → 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 (575) hide show
  1. package/dist/cli/agentCommand.d.ts +0 -1
  2. package/dist/cli/agentCommand.js +0 -1
  3. package/dist/client.mjs +238 -122
  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 +13 -64
  94. package/dist/hosts/projectBridge.d.ts +0 -2
  95. package/dist/hosts/projectBridge.js +0 -2
  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 +1 -6
  125. package/dist/inspector/agent/activity.d.ts +1 -1
  126. package/dist/inspector/agent/activity.js +1 -1
  127. package/dist/inspector/agent/client.d.ts +2 -26
  128. package/dist/inspector/agent/client.js +17 -64
  129. package/dist/inspector/agent/connectionStatus.d.ts +0 -1
  130. package/dist/inspector/agent/connectionStatus.js +0 -1
  131. package/dist/inspector/agent/httpTransport.d.ts +0 -8
  132. package/dist/inspector/agent/httpTransport.js +21 -39
  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 +2 -19
  136. package/dist/inspector/agent/verification.js +7 -43
  137. package/dist/inspector/boot.d.ts +3 -1
  138. package/dist/inspector/boot.js +12 -20
  139. package/dist/inspector/canvas/AgentActivityOverlay.d.ts +1 -1
  140. package/dist/inspector/canvas/AgentActivityOverlay.js +1 -1
  141. package/dist/inspector/canvas/CanvasCard.js +7 -14
  142. package/dist/inspector/canvas/CanvasElementOverlay.js +117 -50
  143. package/dist/inspector/canvas/CanvasWorkspace.js +15 -29
  144. package/dist/inspector/canvas/PageCard.d.ts +0 -1
  145. package/dist/inspector/canvas/PageCard.js +0 -1
  146. package/dist/inspector/canvas/SketchToolOptions.d.ts +0 -1
  147. package/dist/inspector/canvas/SketchToolOptions.js +0 -6
  148. package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +1 -6
  149. package/dist/inspector/canvas/ToolOptionsDrawer.js +2 -8
  150. package/dist/inspector/canvas/activeCanvasDocument.d.ts +0 -2
  151. package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
  152. package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
  153. package/dist/inspector/canvas/agentPresentation.js +3 -14
  154. package/dist/inspector/canvas/canvasFrame.d.ts +2 -6
  155. package/dist/inspector/canvas/canvasFrame.js +1 -2
  156. package/dist/inspector/canvas/canvasResize.d.ts +1 -6
  157. package/dist/inspector/canvas/canvasResize.js +1 -6
  158. package/dist/inspector/canvas/canvasStore.d.ts +4 -12
  159. package/dist/inspector/canvas/canvasStore.js +12 -26
  160. package/dist/inspector/canvas/frameConnection.d.ts +1 -7
  161. package/dist/inspector/canvas/frameContent.d.ts +0 -1
  162. package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
  163. package/dist/inspector/canvas/frameLifecycle.js +11 -0
  164. package/dist/inspector/canvas/frameProtocol.d.ts +5 -40
  165. package/dist/inspector/canvas/frameProtocol.js +1 -24
  166. package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
  167. package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
  168. package/dist/inspector/canvas/layout.d.ts +10 -22
  169. package/dist/inspector/canvas/layout.js +0 -3
  170. package/dist/inspector/canvas/normalizeUrl.js +1 -8
  171. package/dist/inspector/canvas/pageSurface.d.ts +1 -6
  172. package/dist/inspector/canvas/pageSurface.js +1 -6
  173. package/dist/inspector/canvas/projection.d.ts +4 -25
  174. package/dist/inspector/canvas/projection.js +22 -72
  175. package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
  176. package/dist/inspector/canvas/rendererBootstrap.js +6 -14
  177. package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
  178. package/dist/inspector/canvas/rendererCidIndex.js +0 -5
  179. package/dist/inspector/canvas/rendererElementSelector.js +29 -27
  180. package/dist/inspector/canvas/rendererMessageRouter.d.ts +0 -1
  181. package/dist/inspector/canvas/rendererMessageRouter.js +0 -1
  182. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +1 -5
  183. package/dist/inspector/canvas/rendererSelectionProxy.js +2 -7
  184. package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
  185. package/dist/inspector/canvas/rendererStylesheet.js +9 -2
  186. package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
  187. package/dist/inspector/canvas/resizeHandleScale.js +1 -10
  188. package/dist/inspector/canvas/sessionStore.d.ts +1 -7
  189. package/dist/inspector/canvas/sessionStore.js +21 -34
  190. package/dist/inspector/canvas/staleChangeDetector.js +1 -4
  191. package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
  192. package/dist/inspector/canvas/toolbarScale.js +1 -4
  193. package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
  194. package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
  195. package/dist/inspector/canvas/viewStore.js +1 -1
  196. package/dist/inspector/canvas/wheelPan.d.ts +1 -1
  197. package/dist/inspector/canvas/wheelPan.js +1 -1
  198. package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
  199. package/dist/inspector/canvas/workspaceLease.js +1 -7
  200. package/dist/inspector/changes/codecs.js +2 -1
  201. package/dist/inspector/changes/draftPreview.d.ts +1 -6
  202. package/dist/inspector/changes/draftPreview.js +15 -30
  203. package/dist/inspector/changes/editModel.d.ts +3 -13
  204. package/dist/inspector/changes/editModel.js +1 -2
  205. package/dist/inspector/changes/managedStyleProjection.js +4 -14
  206. package/dist/inspector/changes/model.d.ts +0 -5
  207. package/dist/inspector/changes/model.js +1 -8
  208. package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
  209. package/dist/inspector/changes/previewDiagnostics.js +4 -20
  210. package/dist/inspector/changes/previewVerification.d.ts +25 -0
  211. package/dist/inspector/changes/previewVerification.js +34 -0
  212. package/dist/inspector/changes/structuralTypes.d.ts +2 -4
  213. package/dist/inspector/changes/types.d.ts +3 -10
  214. package/dist/inspector/clientManifest.d.ts +17 -6
  215. package/dist/inspector/clientManifest.js +16 -3
  216. package/dist/inspector/comments/CommentsOverlay.js +48 -7
  217. package/dist/inspector/comments/element.d.ts +1 -2
  218. package/dist/inspector/comments/element.js +1 -2
  219. package/dist/inspector/comments/store.d.ts +1 -1
  220. package/dist/inspector/comments/store.js +1 -1
  221. package/dist/inspector/comments/verification.d.ts +8 -2
  222. package/dist/inspector/comments/verification.js +18 -10
  223. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
  224. package/dist/inspector/componentSemantics/ComponentPropsSection.js +10 -7
  225. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
  226. package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
  227. package/dist/inspector/componentSemantics/changeModel.js +2 -4
  228. package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
  229. package/dist/inspector/componentSemantics/react/callsites.js +261 -0
  230. package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
  231. package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
  232. package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
  233. package/dist/inspector/componentSemantics/react/fibers.js +30 -0
  234. package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
  235. package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
  236. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
  237. package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
  238. package/dist/inspector/componentSemantics/textBinding.d.ts +1 -9
  239. package/dist/inspector/componentSemantics/textBinding.js +16 -42
  240. package/dist/inspector/componentSemantics/types.d.ts +8 -27
  241. package/dist/inspector/componentSemantics/types.js +0 -1
  242. package/dist/inspector/conformance/borderCases.d.ts +0 -5
  243. package/dist/inspector/conformance/borderCases.js +0 -5
  244. package/dist/inspector/conformance/colorCases.d.ts +0 -6
  245. package/dist/inspector/conformance/colorCases.js +0 -6
  246. package/dist/inspector/conformance/fixture.d.ts +1 -5
  247. package/dist/inspector/conformance/fixture.js +1 -5
  248. package/dist/inspector/conformance/spacingCases.d.ts +0 -4
  249. package/dist/inspector/conformance/spacingCases.js +0 -4
  250. package/dist/inspector/conformance/typographyCases.d.ts +0 -5
  251. package/dist/inspector/conformance/typographyCases.js +0 -5
  252. package/dist/inspector/drafts/draftStore.d.ts +7 -21
  253. package/dist/inspector/drafts/draftStore.js +15 -5
  254. package/dist/inspector/drafts/model.d.ts +7 -15
  255. package/dist/inspector/drafts/model.js +0 -2
  256. package/dist/inspector/drafts/store.d.ts +1 -8
  257. package/dist/inspector/drafts/store.js +3 -10
  258. package/dist/inspector/editScope.d.ts +0 -1
  259. package/dist/inspector/editScope.js +0 -1
  260. package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
  261. package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
  262. package/dist/inspector/inline-text/inlineTextEditor.d.ts +2 -8
  263. package/dist/inspector/inline-text/inlineTextEditor.js +26 -79
  264. package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
  265. package/dist/inspector/inline-text/textEditChange.d.ts +0 -1
  266. package/dist/inspector/inspection/bridge.d.ts +2 -6
  267. package/dist/inspector/inspection/bridge.js +4 -12
  268. package/dist/inspector/inspection/browserCssInspection.d.ts +4 -11
  269. package/dist/inspector/inspection/browserCssInspection.js +4 -8
  270. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
  271. package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
  272. package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
  273. package/dist/inspector/inspection/selectionProperty.js +1 -5
  274. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
  275. package/dist/inspector/inspection/useBrowserCssInspection.js +5 -21
  276. package/dist/inspector/iterations/capture.d.ts +0 -1
  277. package/dist/inspector/iterations/capture.js +4 -9
  278. package/dist/inspector/iterations/client.d.ts +0 -1
  279. package/dist/inspector/iterations/client.js +0 -1
  280. package/dist/inspector/iterations/coordinator.d.ts +0 -1
  281. package/dist/inspector/iterations/coordinator.js +0 -1
  282. package/dist/inspector/iterations/prompt.d.ts +0 -1
  283. package/dist/inspector/iterations/prompt.js +0 -1
  284. package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
  285. package/dist/inspector/overlay/DomNavigator.js +39 -15
  286. package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
  287. package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
  288. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
  289. package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
  290. package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
  291. package/dist/inspector/overlay/clickPolicy.js +3 -14
  292. package/dist/inspector/overlay/dropGuide.d.ts +0 -3
  293. package/dist/inspector/overlay/dropGuide.js +0 -3
  294. package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
  295. package/dist/inspector/overlay/frameThrottle.js +0 -1
  296. package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
  297. package/dist/inspector/overlay/interactionStyles.js +2 -8
  298. package/dist/inspector/overlay/measurementGeometry.js +4 -12
  299. package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
  300. package/dist/inspector/overlay/selectedGeometry.js +1 -8
  301. package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
  302. package/dist/inspector/overlay/spacingGestures.js +151 -31
  303. package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
  304. package/dist/inspector/overlay/structuralGestures.js +1 -4
  305. package/dist/inspector/pageInspector.d.ts +4 -13
  306. package/dist/inspector/pageInspector.js +25 -32
  307. package/dist/inspector/projection/cssEscapes.d.ts +0 -1
  308. package/dist/inspector/projection/cssEscapes.js +2 -4
  309. package/dist/inspector/projection/draftProjection.d.ts +2 -14
  310. package/dist/inspector/projection/draftProjection.js +1 -8
  311. package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
  312. package/dist/inspector/projection/managedStylesheet.js +4 -22
  313. package/dist/inspector/projection/renderedInstance.d.ts +5 -28
  314. package/dist/inspector/projection/renderedInstance.js +6 -32
  315. package/dist/inspector/projection/structuralProjection.d.ts +7 -39
  316. package/dist/inspector/projection/structuralProjection.js +17 -52
  317. package/dist/inspector/projection/textProjection.d.ts +2 -14
  318. package/dist/inspector/projection/textProjection.js +17 -70
  319. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
  320. package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
  321. package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -9
  322. package/dist/inspector/prompt/clipboardHandoff.js +1 -9
  323. package/dist/inspector/prompt/generatePrompt.d.ts +1 -1
  324. package/dist/inspector/prompt/generatePrompt.js +10 -25
  325. package/dist/inspector/prompt/promptSettings.d.ts +0 -3
  326. package/dist/inspector/prompt/promptSettings.js +0 -3
  327. package/dist/inspector/runtime/devFlag.d.ts +2 -25
  328. package/dist/inspector/runtime/devFlag.js +4 -31
  329. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
  330. package/dist/inspector/runtime/editorShell.d.ts +0 -1
  331. package/dist/inspector/runtime/editorShell.js +0 -1
  332. package/dist/inspector/runtime/inspectorStorage.d.ts +1 -7
  333. package/dist/inspector/runtime/inspectorStorage.js +1 -6
  334. package/dist/inspector/runtime/ownedStylesheets.d.ts +2 -8
  335. package/dist/inspector/runtime/ownedStylesheets.js +2 -8
  336. package/dist/inspector/runtime/runtimeConfig.d.ts +12 -86
  337. package/dist/inspector/runtime/runtimeConfig.js +9 -50
  338. package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +3 -13
  339. package/dist/inspector/runtime/runtimeIdentityClaims.js +9 -19
  340. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +4 -36
  341. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +7 -40
  342. package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
  343. package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
  344. package/dist/inspector/selection/editScope.d.ts +1 -7
  345. package/dist/inspector/selection/editScope.js +2 -12
  346. package/dist/inspector/selection/editTarget.d.ts +1 -5
  347. package/dist/inspector/selection/hierarchy.d.ts +11 -11
  348. package/dist/inspector/selection/hierarchy.js +42 -24
  349. package/dist/inspector/selection/selectionStore.d.ts +0 -3
  350. package/dist/inspector/selection/selectionStore.js +5 -16
  351. package/dist/inspector/selection/sourceSite.d.ts +1 -5
  352. package/dist/inspector/selection/sourceSite.js +2 -8
  353. package/dist/inspector/selection/styleSelection.d.ts +1 -5
  354. package/dist/inspector/selection/styleSelection.js +1 -5
  355. package/dist/inspector/session/lifecycle.d.ts +1 -9
  356. package/dist/inspector/session/lifecycle.js +0 -1
  357. package/dist/inspector/session/sessionContext.d.ts +0 -4
  358. package/dist/inspector/session/sessionContext.js +0 -4
  359. package/dist/inspector/session/sessionFactory.d.ts +0 -9
  360. package/dist/inspector/session/sessionFactory.js +0 -6
  361. package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
  362. package/dist/inspector/settings/SettingsDialog.js +5 -3
  363. package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
  364. package/dist/inspector/shell/AgentStatusButton.js +5 -5
  365. package/dist/inspector/shell/ChangesLog.js +3 -4
  366. package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
  367. package/dist/inspector/shell/CopyPromptButton.js +12 -11
  368. package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
  369. package/dist/inspector/shell/InspectorEditors.js +14 -0
  370. package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
  371. package/dist/inspector/shell/InspectorPanel.js +8 -0
  372. package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
  373. package/dist/inspector/shell/InspectorSelection.js +20 -0
  374. package/dist/inspector/shell/InspectorShell.js +26 -48
  375. package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
  376. package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
  377. package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
  378. package/dist/inspector/shell/PeekOriginalButton.js +0 -5
  379. package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
  380. package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
  381. package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
  382. package/dist/inspector/shell/PromptActionButton.js +14 -0
  383. package/dist/inspector/shell/elementName.d.ts +5 -0
  384. package/dist/inspector/shell/elementName.js +29 -0
  385. package/dist/inspector/shell/interactionStatePreview.d.ts +1 -4
  386. package/dist/inspector/shell/interactionStatePreview.js +3 -8
  387. package/dist/inspector/shell/originalPreview.d.ts +1 -6
  388. package/dist/inspector/shell/originalPreview.js +1 -6
  389. package/dist/inspector/shell/stateValue.d.ts +1 -2
  390. package/dist/inspector/shell/stateValue.js +2 -5
  391. package/dist/inspector/shell/styleState.d.ts +1 -2
  392. package/dist/inspector/shell/styleState.js +1 -2
  393. package/dist/inspector/sketch/SketchEditor.js +0 -1
  394. package/dist/inspector/sketch/SketchFrameOverlay.js +8 -12
  395. package/dist/inspector/sketch/SketchOverlay.js +5 -6
  396. package/dist/inspector/sketch/SketchPromptPanel.d.ts +0 -1
  397. package/dist/inspector/sketch/SketchPromptPanel.js +0 -1
  398. package/dist/inspector/sketch/SketchWorkspace.js +2 -4
  399. package/dist/inspector/sketch/capture.d.ts +12 -3
  400. package/dist/inspector/sketch/capture.js +12 -11
  401. package/dist/inspector/sketch/copySketch.d.ts +1 -7
  402. package/dist/inspector/sketch/copySketch.js +2 -11
  403. package/dist/inspector/sketch/drawingTools.d.ts +1 -3
  404. package/dist/inspector/sketch/drawingTools.js +1 -2
  405. package/dist/inspector/sketch/frameHeading.d.ts +1 -7
  406. package/dist/inspector/sketch/frameHeading.js +1 -8
  407. package/dist/inspector/sketch/freehand.d.ts +0 -1
  408. package/dist/inspector/sketch/freehand.js +0 -1
  409. package/dist/inspector/sketch/geometry.d.ts +1 -6
  410. package/dist/inspector/sketch/geometry.js +1 -6
  411. package/dist/inspector/sketch/handoff.js +0 -1
  412. package/dist/inspector/sketch/history.d.ts +1 -5
  413. package/dist/inspector/sketch/history.js +1 -4
  414. package/dist/inspector/sketch/interaction.d.ts +2 -2
  415. package/dist/inspector/sketch/interaction.js +2 -2
  416. package/dist/inspector/sketch/model.d.ts +2 -9
  417. package/dist/inspector/sketch/model.js +2 -19
  418. package/dist/inspector/sketch/persistence.d.ts +0 -1
  419. package/dist/inspector/sketch/persistence.js +2 -2
  420. package/dist/inspector/sketch/raster.d.ts +1 -4
  421. package/dist/inspector/sketch/raster.js +2 -8
  422. package/dist/inspector/sketch/store.js +2 -3
  423. package/dist/inspector/sketch/videoFrames.js +2 -3
  424. package/dist/inspector/spacing/projection.d.ts +0 -8
  425. package/dist/inspector/spacing/projection.js +38 -20
  426. package/dist/inspector/styleEditors/BackgroundEditor.js +1 -1
  427. package/dist/inspector/styleEditors/BorderEditor.js +1 -6
  428. package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
  429. package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
  430. package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
  431. package/dist/inspector/styleEditors/FlexControls.js +158 -0
  432. package/dist/inspector/styleEditors/GapField.d.ts +5 -2
  433. package/dist/inspector/styleEditors/GapField.js +3 -4
  434. package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
  435. package/dist/inspector/styleEditors/GridChildSection.js +0 -5
  436. package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
  437. package/dist/inspector/styleEditors/GridPicker.js +2 -4
  438. package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
  439. package/dist/inspector/styleEditors/GridSection.js +22 -9
  440. package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
  441. package/dist/inspector/styleEditors/GridValueField.js +2 -8
  442. package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
  443. package/dist/inspector/styleEditors/ImageBackgroundEditor.js +0 -1
  444. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
  445. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
  446. package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
  447. package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
  448. package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
  449. package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
  450. package/dist/inspector/styleEditors/LayoutSection.js +30 -356
  451. package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
  452. package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
  453. package/dist/inspector/styleEditors/PositionControls.js +16 -0
  454. package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
  455. package/dist/inspector/styleEditors/SizeSection.js +71 -0
  456. package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
  457. package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
  458. package/dist/inspector/styleEditors/Typography.js +2 -4
  459. package/dist/inspector/styleEditors/borderModel.d.ts +1 -7
  460. package/dist/inspector/styleEditors/borderModel.js +2 -11
  461. package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
  462. package/dist/inspector/styleEditors/completeCssValue.js +3 -13
  463. package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
  464. package/dist/inspector/styleEditors/fieldValue.js +26 -0
  465. package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
  466. package/dist/inspector/styleEditors/gradientValue.js +3 -2
  467. package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
  468. package/dist/inspector/styleEditors/gridChildModel.js +6 -37
  469. package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
  470. package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
  471. package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
  472. package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
  473. package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
  474. package/dist/inspector/styleEditors/layoutMode.js +33 -0
  475. package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
  476. package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
  477. package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
  478. package/dist/inspector/styleEditors/layoutValue.js +4 -12
  479. package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
  480. package/dist/inspector/styleEditors/nudgeValue.js +1 -13
  481. package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
  482. package/dist/inspector/styleEditors/rowLookup.js +1 -5
  483. package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
  484. package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
  485. package/dist/inspector/styleEditors/stylePresence.js +1 -4
  486. package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
  487. package/dist/inspector/styleEditors/textRelevance.js +1 -1
  488. package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
  489. package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
  490. package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
  491. package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
  492. package/dist/inspector/styleEditors/valuePolicy.js +0 -1
  493. package/dist/inspector/testing.d.ts +1 -4
  494. package/dist/inspector/testing.js +1 -4
  495. package/dist/inspector/tokens/TokenChip.d.ts +1 -4
  496. package/dist/inspector/tokens/TokenChip.js +1 -4
  497. package/dist/inspector/tokens/TokenField.d.ts +4 -3
  498. package/dist/inspector/tokens/TokenField.js +19 -29
  499. package/dist/inspector/tokens/catalog.d.ts +2 -10
  500. package/dist/inspector/tokens/catalog.js +5 -12
  501. package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
  502. package/dist/inspector/tokens/dragPointerLock.js +2 -3
  503. package/dist/inspector/tokens/editActions.d.ts +1 -1
  504. package/dist/inspector/tokens/editActions.js +2 -4
  505. package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
  506. package/dist/inspector/tokens/resolution/cascade.js +1 -5
  507. package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +1 -5
  508. package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +1 -5
  509. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
  510. package/dist/inspector/tokens/resolution/cssomCollector.js +151 -122
  511. package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +1 -5
  512. package/dist/inspector/tokens/resolution/nestedSelectors.js +1 -5
  513. package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
  514. package/dist/inspector/tokens/resolution/ruleMatching.js +121 -67
  515. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
  516. package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
  517. package/dist/inspector/tokens/resolution.d.ts +5 -24
  518. package/dist/inspector/tokens/resolution.js +16 -71
  519. package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
  520. package/dist/inspector/tokens/tokenAvailability.js +6 -38
  521. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
  522. package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
  523. package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
  524. package/dist/inspector/ui/AtRuleContext.js +8 -6
  525. package/dist/inspector/ui/ControlSurface.d.ts +0 -4
  526. package/dist/inspector/ui/Disclosure.d.ts +0 -5
  527. package/dist/inspector/ui/Disclosure.js +0 -4
  528. package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
  529. package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
  530. package/dist/inspector/ui/InspectorPopover.js +1 -5
  531. package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
  532. package/dist/inspector/ui/SegmentedControl.js +6 -4
  533. package/dist/inspector/ui/SideValuesField.d.ts +1 -6
  534. package/dist/inspector/ui/SideValuesField.js +2 -8
  535. package/dist/inspector/ui/Toast.d.ts +0 -4
  536. package/dist/inspector/ui/Toast.js +0 -4
  537. package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
  538. package/dist/inspector/ui/atRuleSegments.js +34 -0
  539. package/dist/inspector/ui/classNames.d.ts +0 -1
  540. package/dist/inspector/ui/classNames.js +0 -1
  541. package/dist/inspector/ui/customCursors.d.ts +7 -1
  542. package/dist/inspector/ui/customCursors.js +2 -6
  543. package/dist/inspector/ui/styles.js +18 -20
  544. package/dist/inspector/workspace/controller.js +20 -1
  545. package/dist/inspector/workspace/handoff.d.ts +1 -5
  546. package/dist/inspector/workspace/handoff.js +1 -5
  547. package/dist/inspector/workspace/timeline.d.ts +5 -2
  548. package/dist/inspector/workspace/timeline.js +0 -1
  549. package/dist/internal/agent-protocol.d.ts +20 -42
  550. package/dist/internal/agent-protocol.js +18 -35
  551. package/dist/nudge-ui.mjs +75 -28
  552. package/dist/project/artifacts.js +24 -21
  553. package/dist/project/files.d.ts +0 -1
  554. package/dist/project/files.js +2 -9
  555. package/dist/project/identity.d.ts +1 -5
  556. package/dist/project/identity.js +1 -5
  557. package/dist/project/mcpPackage.d.ts +1 -6
  558. package/dist/project/mcpPackage.js +2 -7
  559. package/dist/project/pathPolicy.d.ts +1 -6
  560. package/dist/project/pathPolicy.js +1 -6
  561. package/dist/project/tokens.d.ts +2 -12
  562. package/dist/project/tokens.js +4 -15
  563. package/dist/transport/editor.d.ts +1 -12
  564. package/dist/transport/editor.js +2 -13
  565. package/dist/transport/index.d.ts +0 -5
  566. package/dist/transport/index.js +0 -5
  567. package/dist/transport/routes.d.ts +0 -5
  568. package/dist/transport/routes.js +0 -5
  569. package/package.json +5 -4
  570. package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
  571. package/dist/inspector/styleEditors/InsetSection.js +0 -15
  572. package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
  573. package/dist/inspector/styleEditors/PositionInsets.js +0 -12
  574. package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
  575. package/dist/inspector/tokens/TokenDropdown.js +0 -59
@@ -11,33 +11,11 @@ import { createProjectTokenSnapshot } from "../../project/tokens.js";
11
11
  import { NUDGE_UI_CLIENT_PATH, NUDGE_UI_EDITOR_PATH, NUDGE_UI_MANIFEST_PATH, NUDGE_UI_RELOAD_PATH, NUDGE_UI_ROUTE_PREFIX, createNudgeUiEditorDocument, isNudgeUiEditorDocumentRequest, } from "../../transport/index.js";
12
12
  import { startOptionalProjectBridge } from "../projectBridge.js";
13
13
  import { automationManifestFields } from "../environment.js";
14
- /**
15
- * Loopback-only manifest/reload sidecar (ADR-0010).
16
- *
17
- * One server per dev-server process, guarded against double-spawn because
18
- * Next re-evaluates `next.config` more than once. Same-origin access without
19
- * CORS comes from a `beforeFiles` rewrite proxying `/__nudge_ui__/*` to the
20
- * sidecar port — both are wrapper-owned config, so the user touchpoint stays
21
- * at one line.
22
- *
23
- * Routes:
24
- * - GET /__nudge_ui__/client.mjs — the shared self-contained inspector client.
25
- * - GET /__nudge_ui__/manifest — the frozen runtime snapshot, including
26
- * the Stage 4 token lifecycle when `tokens` is enabled: scanned project CSS
27
- * feeds a deterministic generation, and each settled watcher batch bumps
28
- * the generation and emits exactly one reload notification.
29
- * - GET /__nudge_ui__/reload — SSE revision notifications after settled
30
- * file changes.
31
- */
32
14
  const STATE_DIR_SEGMENT = ".next";
33
15
  const packageRequire = createRequire(import.meta.url);
34
16
  let inspectorClientPath;
35
17
  const GLOBAL_KEY = Symbol.for("nudge-ui/next/sidecar");
36
- /**
37
- * One sidecar per process per configuration. The key keeps a token-enabled
38
- * server from being conflated with a bare manifest-only server created
39
- * elsewhere in the same process (tests, multiple projects).
40
- */
18
+ /** One sidecar per process per configuration: the key keeps token-enabled and manifest-only servers distinct. */
41
19
  function globalState(key) {
42
20
  // SAFETY: The GLOBAL_KEY symbol names the one global slot this module owns and writes itself.
43
21
  const holder = globalThis;
@@ -58,9 +36,7 @@ function portFilePath(root) {
58
36
  }
59
37
  const CONTRACT_SOURCE_EXT = /\.(tsx|jsx)$/;
60
38
  const SCAN_EXCLUDED_SEGMENTS = new Set([".git", ".next", "build", "dist", "node_modules"]);
61
- /** Upper bound on examined project source files; truncation is announced. */
62
39
  const SCAN_MAX_SOURCES = 5000;
63
- /** Returns whether a directory declares a package-manager workspace. */
64
40
  function hasWorkspaceManifest(directory) {
65
41
  if (existsSync(join(directory, "pnpm-workspace.yaml")))
66
42
  return true;
@@ -79,18 +55,8 @@ function hasWorkspaceManifest(directory) {
79
55
  return false;
80
56
  }
81
57
  }
82
- /** Upper bound on ancestors examined when searching for a workspace root. */
83
58
  const MAX_WORKSPACE_SEARCH_DEPTH = 5;
84
- /**
85
- * Finds the nearest declared workspace root by walking upward from the app.
86
- *
87
- * A Next app normally runs with its app directory as `process.cwd()`. When a
88
- * workspace manifest is present above that directory, the workspace is the
89
- * smallest safe default that can include sibling authored stylesheets. The
90
- * walk is bounded and never promotes the filesystem root itself, so a stray
91
- * manifest at `/` cannot turn the whole machine into the token scan root.
92
- * With no manifest found, scanning remains confined to the app root.
93
- */
59
+ /** Bounded upward walk; never promotes the filesystem root, so a stray manifest at `/` cannot become the scan root. */
94
60
  function nearestWorkspaceRoot(root) {
95
61
  let directory = root;
96
62
  for (let depth = 0; depth <= MAX_WORKSPACE_SEARCH_DEPTH; depth += 1) {
@@ -120,17 +86,8 @@ function isWithinRoot(root, candidate) {
120
86
  && !isAbsolute(pathFromRoot));
121
87
  }
122
88
  /**
123
- * Extracts component contracts directly from project sources.
124
- *
125
- * Compile-time loader postings alone leave a restart gap: Turbopack's
126
- * persistent cache serves previously compiled modules without re-running
127
- * loaders, so a fresh sidecar would publish an empty contract catalog until
128
- * every file happens to recompile. Reading the same authored sources the
129
- * loader reads keeps the manifest coherent across dev-server restarts.
130
- *
131
- * `canonicalRoot` must be the realpath'd project root so aggregation keys
132
- * match both loader postings and watcher events regardless of how the host
133
- * spelled the working directory.
89
+ * Reads authored sources directly because Turbopack's persistent cache can skip
90
+ * loader re-runs; `canonicalRoot` must be realpath'd so keys match loader postings.
134
91
  */
135
92
  async function scanProjectContracts(canonicalRoot, apply) {
136
93
  const queue = [canonicalRoot];
@@ -178,12 +135,7 @@ async function scanProjectContracts(canonicalRoot, apply) {
178
135
  }
179
136
  return { truncated, files };
180
137
  }
181
- /**
182
- * Reads one source file only while its size is stable across the read.
183
- * Editors that truncate-then-write can expose half a file at read time; a
184
- * syntactically valid prefix would otherwise replace good contracts with
185
- * wrong ones until the next settled batch.
186
- */
138
+ /** Null unless the size is stable across the read: truncate-then-write editors can expose a syntactically valid prefix. */
187
139
  function readStableSource(absolutePath) {
188
140
  try {
189
141
  const sizeBefore = statSync(absolutePath).size;
@@ -197,14 +149,12 @@ function readStableSource(absolutePath) {
197
149
  return null;
198
150
  }
199
151
  }
200
- /** Removes a stale port file left by a crashed previous run. */
201
152
  export function clearStaleSidecarState(root) {
202
153
  try {
203
154
  // SAFETY: The JSON.parse result is validated by the typeof guard below before use.
204
155
  const raw = JSON.parse(readFileSync(portFilePath(root), "utf8"));
205
156
  if (typeof raw.pid === "number" && raw.pid !== process.pid) {
206
- // A previous process's record: safe to drop. The loopback socket it
207
- // named cannot be trusted for reuse and is never dialled here.
157
+ // Previous process's record: the socket it named is never dialled, so dropping it is safe.
208
158
  rmSync(portFilePath(root), { force: true });
209
159
  }
210
160
  }
@@ -212,16 +162,9 @@ export function clearStaleSidecarState(root) {
212
162
  // Absent or unreadable state is fine; a fresh record gets written below.
213
163
  }
214
164
  }
215
- /**
216
- * Starts (or returns) the sidecar for this dev-server process.
217
- *
218
- * `root` is the project root; the manifest names itself from it. The server
219
- * binds 127.0.0.1 exclusively.
220
- */
221
165
  export async function ensureSidecar(root, options = {}) {
222
- // Watchers and removal events report REAL paths; on macOS the tmp/root
223
- // prefix may differ (e.g. /tmp -> /private/tmp), so canonicalize once and
224
- // derive every filesystem-relative computation from the canonical root.
166
+ // Watchers report REAL paths; on macOS the textual form can differ from root
167
+ // (/tmp -> /private/tmp), so canonicalize once and derive everything from fsRoot.
225
168
  const fsRoot = await realpath(root).catch(() => root);
226
169
  const scanRoots = await tokenScanRoots(fsRoot, options.sourceRoots);
227
170
  const state = globalState(`${options.tokens ? "tokens" : "manifest"}:${options.projectBridgeOrigin ?? "plain"}:${fsRoot}:${scanRoots.join("|")}`);
@@ -232,11 +175,6 @@ export async function ensureSidecar(root, options = {}) {
232
175
  const starting = (async () => {
233
176
  let generation = 0;
234
177
  const streams = new Set();
235
- // Token knowledge lives in a mutable holder so settled batches can swap
236
- // the snapshot without rebuilding the rest of the manifest.
237
- // Component contracts aggregate across loader postings, keyed by file so
238
- // recompiles replace rather than duplicate (Stage 5). A debounced flush
239
- // publishes one revision per settled burst of compilations.
240
178
  const contractsByFile = new Map();
241
179
  let contractsTimer = null;
242
180
  const flushContracts = () => {
@@ -307,8 +245,7 @@ export async function ensureSidecar(root, options = {}) {
307
245
  });
308
246
  const port = await new Promise((resolvePort, rejectPort) => {
309
247
  server.once("error", rejectPort);
310
- // Port 0 asks the kernel for a free loopback port, so concurrent
311
- // projects on one machine never collide.
248
+ // Port 0 lets concurrent projects on one machine pick distinct free loopback ports.
312
249
  server.listen(0, "127.0.0.1", () => {
313
250
  const address = server.address();
314
251
  if (address && typeof address === "object")
@@ -322,14 +259,11 @@ export async function ensureSidecar(root, options = {}) {
322
259
  writeFileSync(portFilePath(root), `${JSON.stringify({ pid: process.pid, port })}\n`);
323
260
  }
324
261
  catch {
325
- // The port file is diagnostics-only; the rewrite carries the real
326
- // transport, so an unwritable .next must not break instrumentation.
262
+ // The port file is diagnostics-only; an unwritable .next must not break instrumentation.
327
263
  }
328
264
  await ensureProjectBridge();
329
265
  const watchers = [];
330
- // The startup source scan runs regardless of the token lifecycle so a
331
- // restarted sidecar republishes contracts even when Turbopack's
332
- // persistent cache skips every loader re-run.
266
+ // Runs even without the token lifecycle so a restarted sidecar republishes contracts.
333
267
  try {
334
268
  await scanProjectContracts(fsRoot, (file, list) => {
335
269
  contractsByFile.set(file, list);
@@ -341,9 +275,7 @@ export async function ensureSidecar(root, options = {}) {
341
275
  /* an unreadable tree keeps whatever knowledge postings provided */
342
276
  }
343
277
  if (options.tokens) {
344
- // Initial scan before the first manifest response so early clients see
345
- // tokens without waiting for a watcher tick. Failures degrade to the
346
- // empty snapshot already present in the manifest.
278
+ // Scan before the first manifest response so early clients see tokens without waiting for a watcher tick.
347
279
  try {
348
280
  applySnapshot(await createProjectTokenSnapshot(tokenSnapshotOptions));
349
281
  }
@@ -362,16 +294,12 @@ export async function ensureSidecar(root, options = {}) {
362
294
  };
363
295
  const settleProjectChanges = async (changes) => {
364
296
  let needsContractRescan = false;
365
- // Changed or deleted component sources update their aggregated
366
- // contracts directly: deletions must prune (or stale controls
367
- // survive forever), and edits re-extract from the authored bytes
368
- // even if a compiler cache never re-runs the loader. A read that
369
- // lands mid-write is skipped — the next settled batch retries.
297
+ // Deletions must prune or stale controls survive forever; a read that
298
+ // lands mid-write is skipped and retried on the next settled batch.
370
299
  for (const change of changes) {
371
300
  const normalized = change.absolutePath.split("\\").join("/");
372
- // fs.watch can report a directory or omit a filename. In that
373
- // case the exact source is unknown, so a bounded project scan is
374
- // the only way to keep the contract catalog coherent.
301
+ // fs.watch can report a directory or omit the filename, leaving the
302
+ // source unknown; a bounded rescan is then the only way to stay coherent.
375
303
  if (!CONTRACT_SOURCE_EXT.test(normalized)) {
376
304
  needsContractRescan = true;
377
305
  continue;
@@ -410,14 +338,10 @@ export async function ensureSidecar(root, options = {}) {
410
338
  }
411
339
  await settleTokens();
412
340
  };
413
- // Always keep the application watcher responsible for component
414
- // contracts. Additional workspace roots only need token updates; using
415
- // them for contract rescans would broaden the contract root silently.
416
- // Roots nested inside the app are already covered by the app watcher.
341
+ // Extra workspace roots refresh tokens only; contract rescans stay
342
+ // within the app root (nested roots are already covered by the app watcher).
417
343
  const additionalRoots = scanRoots.filter((scanRoot) => scanRoot !== fsRoot && !isWithinRoot(fsRoot, scanRoot));
418
- // Additional roots can overlap each other (for example an explicit
419
- // source root inside the workspace). Keep only the outermost so one
420
- // sibling edit settles into one token scan.
344
+ // Roots can nest; keep only the outermost so one sibling edit settles into one token scan.
421
345
  const outerAdditionalRoots = additionalRoots
422
346
  .sort((a, b) => a.length - b.length)
423
347
  .filter((scanRoot, index, list) => !list.slice(0, index).some((outer) => isWithinRoot(outer, scanRoot)));
@@ -433,9 +357,8 @@ export async function ensureSidecar(root, options = {}) {
433
357
  rootDirectory: tokenRoot,
434
358
  debounceMs: 60,
435
359
  onSettled: async (changes) => {
436
- // A workspace root contains the app tree, so app edits fire this
437
- // watcher too. The app watcher already refreshes tokens for those
438
- // edits, so only changes outside the app need a second scan.
360
+ // App edits fire this watcher too; the app watcher already covers them,
361
+ // so only changes outside the app need a second scan.
439
362
  const outside = isWithinRoot(tokenRoot, fsRoot)
440
363
  ? changes.filter((change) => !isWithinRoot(fsRoot, change.absolutePath))
441
364
  : changes;
@@ -456,9 +379,7 @@ export async function ensureSidecar(root, options = {}) {
456
379
  stream.write(`data: ${JSON.stringify({ revision })}\n\n`);
457
380
  },
458
381
  close() {
459
- // Idempotent: the singleton handle can be reached from several test
460
- // files in one worker, and a dev server shutdown may race an explicit
461
- // close. Closing twice must not throw.
382
+ // Idempotent: the singleton can be closed twice (tests, shutdown race) without throwing.
462
383
  if (!server.listening) {
463
384
  state.starting = undefined;
464
385
  return closeProjectBridge();
@@ -480,10 +401,8 @@ export async function ensureSidecar(root, options = {}) {
480
401
  };
481
402
  return handle;
482
403
  })();
483
- // A failed start must not wedge the singleton forever: the Symbol.for key
484
- // survives HMR re-evaluation, so a cached rejected promise would be
485
- // replayed to every later caller. Observe the rejection and clear the slot
486
- // (identity-checked so a concurrent successful start is never discarded).
404
+ // A failed start must not wedge the singleton (the Symbol.for key survives
405
+ // HMR): clear the slot, identity-checked so a concurrent start is not discarded.
487
406
  starting.catch(() => {
488
407
  if (state.starting === starting)
489
408
  state.starting = undefined;
@@ -494,8 +413,6 @@ export async function ensureSidecar(root, options = {}) {
494
413
  function respond(req, res, currentManifest, currentGeneration, streams, receiveContracts) {
495
414
  const requestUrl = req.url ?? "";
496
415
  const url = requestUrl.split("?")[0];
497
- // Loader postings aggregate component contracts (Stage 5). Loopback-only by
498
- // virtue of the bind address; payload size is capped defensively.
499
416
  if (url === `${NUDGE_UI_ROUTE_PREFIX}contracts` && req.method === "POST") {
500
417
  let body = "";
501
418
  req.on("data", (chunk) => {
@@ -533,8 +450,6 @@ function respond(req, res, currentManifest, currentGeneration, streams, receiveC
533
450
  return;
534
451
  }
535
452
  if (url === NUDGE_UI_MANIFEST_PATH) {
536
- // The served snapshot carries its revision so clients can reconcile
537
- // against SSE notifications instead of guessing.
538
453
  const body = `${JSON.stringify({
539
454
  ...currentManifest(),
540
455
  revision: currentGeneration(),
@@ -571,7 +486,7 @@ function respond(req, res, currentManifest, currentGeneration, streams, receiveC
571
486
  res.write(": nudge-ui reload stream\n\n");
572
487
  streams.add(res);
573
488
  res.on("close", () => streams.delete(res));
574
- // Announce the current generation so late subscribers can reconcile.
489
+ // Send the current revision first so late subscribers do not miss a change.
575
490
  res.write(`data: ${JSON.stringify({ revision: currentGeneration() })}\n\n`);
576
491
  return;
577
492
  }
@@ -1,18 +1,4 @@
1
1
  import type { ComponentModuleProtocols } from "../../compiler/componentPolicyResolution.js";
2
- /**
3
- * `withNudgeUi(nextConfig)` — the single user touchpoint (ADR-0010).
4
- *
5
- * Development-phase gated per ADR-0002: the returned config factory
6
- * instruments only `next dev` (`PHASE_DEVELOPMENT_SERVER` with
7
- * `NODE_ENV=development`). Every other phase returns the original
8
- * configuration untouched and nothing is registered, spawned, or injected.
9
- * Production builds cannot observe Nudge UI.
10
- *
11
- * The wrapper is written against a structural subset of Next's config types
12
- * so this package stays typecheckable without `next` installed; consumers
13
- * pass their real NextConfig object straight through.
14
- */
15
- /** Structural subset of Next.js config this wrapper reads and writes. */
16
2
  export interface NudgeUiNextConfig {
17
3
  [key: string]: unknown;
18
4
  turbopack?: {
@@ -26,7 +12,6 @@ export interface NudgeUiNextConfig {
26
12
  rewrites?: (() => Promise<RewritesShape> | RewritesShape) | RewritesShape;
27
13
  transpilePackages?: string[];
28
14
  }
29
- /** Host-specific policy additions passed to the shared source compiler. */
30
15
  export interface NudgeUiNextOptions {
31
16
  /** `false` returns the configuration untouched. `NUDGE_UI=0` has the same effect for one run. */
32
17
  readonly enabled?: boolean;
@@ -47,22 +32,6 @@ export interface RewritesShape {
47
32
  }
48
33
  /** Mirrors next/constants PHASE_DEVELOPMENT_SERVER. */
49
34
  export declare const DEVELOPMENT_SERVER_PHASE = "phase-development-server";
50
- /**
51
- * Wraps a Next.js configuration with Nudge UI instrumentation.
52
- *
53
- * Two input forms are supported:
54
- *
55
- * - **Function form (recommended):** pass `(phase) => nextConfig`; the
56
- * wrapper resolves and instruments ONLY for PHASE_DEVELOPMENT_SERVER, so
57
- * `NODE_ENV=development next build` cannot register instrumentation
58
- * (ADR-0002) regardless of environment tricks.
59
- * - **Object form:** converted to a phase-aware config factory. This keeps
60
- * the convenient `withNudgeUi(nextConfig)` invocation while ensuring Next
61
- * supplies the phase before any instrumentation can be registered.
62
- *
63
- * @param config The application's existing configuration or a config factory.
64
- * @returns A configuration (or factory) to export in its place.
65
- */
66
35
  /** Function form: gates instrumentation on PHASE_DEVELOPMENT_SERVER. */
67
36
  export declare function withNudgeUi<T extends object>(factory: (phase: string) => T, options?: NudgeUiNextOptions): (phase: string) => T;
68
37
  /** Object form: returns a phase-aware Next.js config factory. */
@@ -8,11 +8,7 @@ import { isNudgeUiEnabled } from "../environment.js";
8
8
  import { NUDGE_UI_EDITOR_QUERY_PARAM, NUDGE_UI_EDITOR_QUERY_VALUE, NUDGE_UI_ROUTE_PREFIX, } from "../../transport/index.js";
9
9
  const NAMESPACE_PREFIX = NUDGE_UI_ROUTE_PREFIX.slice(0, -1);
10
10
  const SUPPORTED_NEXT_RANGE = ">=15.3 <17";
11
- /**
12
- * Resolved from the package root so the path is identical whether this module
13
- * runs from `src/hosts/next/` during development or `dist/hosts/next/` when
14
- * installed. The loaders only ever exist in `dist`.
15
- */
11
+ /** Resolved from the package root so the path is the same from `src/` and `dist/`. */
16
12
  function loaderPaths() {
17
13
  const loaders = new URL("../../../dist/hosts/next/loaders/", import.meta.url);
18
14
  return {
@@ -20,7 +16,6 @@ function loaderPaths() {
20
16
  identity: fileURLToPath(new URL("identity-loader.cjs", loaders)),
21
17
  };
22
18
  }
23
- /** Absolute directory of a package installed in the host project, or null. */
24
19
  function hostPackageDir(root, name) {
25
20
  try {
26
21
  const require = createRequire(join(root, "package.json"));
@@ -30,7 +25,6 @@ function hostPackageDir(root, name) {
30
25
  return null;
31
26
  }
32
27
  }
33
- /** Absolute path for an Adapter-owned package export, resolved beside this package. */
34
28
  function adapterPackageExport(specifier) {
35
29
  try {
36
30
  return createRequire(import.meta.url).resolve(specifier);
@@ -52,14 +46,7 @@ function resolveNextVersion(root) {
52
46
  return null;
53
47
  }
54
48
  }
55
- /**
56
- * ADR-0010 gates instrumentation on the supported range: a RESOLVED version
57
- * outside it fails closed (no registration) with a diagnostic — instrumenting
58
- * an unsupported compiler risks breaking the host build. An unresolvable
59
- * version gets the benefit of the doubt and proceeds with a diagnostic,
60
- * since refusing to work because we could not read a version number would
61
- * make the adapter brittle for no safety gain.
62
- */
49
+ /** Fails closed on a resolved unsupported version; an unresolvable one proceeds with a diagnostic. */
63
50
  function gateUnsupportedVersion(version) {
64
51
  if (version && isVersionSupported(version))
65
52
  return true;
@@ -74,7 +61,6 @@ function isVersionSupported(version) {
74
61
  return false;
75
62
  const major = Number(match[1]);
76
63
  const minor = Number(match[2]);
77
- // >=15.3 <17
78
64
  return (major === 15 && minor >= 3) || (major >= 16 && major < 17);
79
65
  }
80
66
  function collectUserRewriteSources(rewrites) {
@@ -88,14 +74,7 @@ function collectUserRewriteSources(rewrites) {
88
74
  }
89
75
  /** Mirrors next/constants PHASE_DEVELOPMENT_SERVER. */
90
76
  export const DEVELOPMENT_SERVER_PHASE = "phase-development-server";
91
- /**
92
- * Returns whether this config evaluation belongs to Next's development
93
- * server. The phase argument is supplied by Next when it invokes a config
94
- * factory, so object exports are converted to factories before any
95
- * instrumentation can run. Keeping the phase check here means an object
96
- * export cannot accidentally instrument `next build` when a caller has
97
- * forced `NODE_ENV=development`.
98
- */
77
+ /** Object exports are converted to factories so the phase is always available; the phase gate keeps `NODE_ENV=development next build` uninstrumented. */
99
78
  function isDevelopmentEvaluation(phase) {
100
79
  return process.env.NODE_ENV === "development" && phase === DEVELOPMENT_SERVER_PHASE;
101
80
  }
@@ -111,19 +90,15 @@ export function withNudgeUi(config = {}, options = {}) {
111
90
  };
112
91
  }
113
92
  function instrumentConfig(config, options) {
114
- // Consumers pass their real NextConfig object; the structural subset is an
115
- // internal view so this package stays typecheckable without next installed.
93
+ // Consumers pass their real NextConfig; the structural view keeps this package typecheckable without next installed.
116
94
  const source = config;
117
95
  const root = process.cwd();
118
- // Fail closed per ADR-0010 when the resolved version is unsupported.
119
96
  if (!gateUnsupportedVersion(resolveNextVersion(root))) {
120
97
  return config;
121
98
  }
122
99
  const sourceRoots = options.sourceRoots?.map((sourceRoot) => resolve(root, sourceRoot));
123
100
  const bridgeOrigin = nextDevelopmentOrigin();
124
- // ensureSidecar is a per-process singleton; awaiting it wherever the port
125
- // is needed removes any config-evaluation race. The same authored roots
126
- // reach token discovery so workspace CSS is visible to both integrations.
101
+ // ensureSidecar is a per-process singleton; awaiting it wherever the port is needed removes any config-evaluation race.
127
102
  const sidecarPort = () => ensureSidecar(root, {
128
103
  manifest: buildManifest({ root }),
129
104
  tokens: true,
@@ -137,7 +112,6 @@ function instrumentConfig(config, options) {
137
112
  return 0;
138
113
  });
139
114
  const nextConfig = { ...source };
140
- // --- transpilePackages -------------------------------------------------
141
115
  const nudgeUiPackages = ["nudge-ui"];
142
116
  const userTranspile = Array.isArray(source.transpilePackages)
143
117
  ? source.transpilePackages
@@ -146,7 +120,6 @@ function instrumentConfig(config, options) {
146
120
  ...userTranspile,
147
121
  ...nudgeUiPackages.filter((name) => !userTranspile.includes(name)),
148
122
  ];
149
- // --- Turbopack rules (primary compiler) ---------------------------------
150
123
  const turbopackRules = {
151
124
  ...(source.turbopack?.rules ?? {}),
152
125
  };
@@ -162,18 +135,12 @@ function instrumentConfig(config, options) {
162
135
  loader: paths.plugin,
163
136
  options: loaderOptions,
164
137
  }],
165
- // 'foreign' is Turbopack's builtin condition for dependency code, so
166
- // `not: foreign` confines the loader to first-party sources. The path
167
- // guard additionally keeps build output (.next) out of scope.
138
+ // 'foreign' marks dependency code in Turbopack; `not: foreign` plus the path guard confines the loader to first-party sources outside .next.
168
139
  condition: {
169
140
  all: [
170
141
  { not: "foreign" },
171
142
  { not: { path: "(**/)?\\.next/**" } },
172
- // Workspace symlinks are NOT foreign (they are source-backed), so
173
- // the Nudge UI packages themselves must be excluded explicitly:
174
- // instrumenting the inspector's own UI would wrap every control in
175
- // override boundaries and pollute the panel with identity attrs.
176
- // The list is shared with the loader's runtime scope check.
143
+ // Workspace symlinks are not 'foreign', so Nudge UI's own packages must be excluded explicitly or the inspector would instrument itself.
177
144
  {
178
145
  not: {
179
146
  path: nudgeUiRepositoryPackagePath,
@@ -182,11 +149,7 @@ function instrumentConfig(config, options) {
182
149
  ],
183
150
  },
184
151
  };
185
- /**
186
- * Rules are COMPOSED with any user rule for the same key by building a
187
- * rule collection (Next supports arrays of items per glob) — silently
188
- * overwriting host configuration is never acceptable.
189
- */
152
+ /** Composed with any user rule for the same key: silently overwriting host configuration is never acceptable. */
190
153
  const compose = (key, rule) => {
191
154
  const existing = turbopackRules[key];
192
155
  if (existing === undefined) {
@@ -199,12 +162,8 @@ function instrumentConfig(config, options) {
199
162
  compose("*.tsx", { ...identityRule });
200
163
  compose("*.jsx", { ...identityRule });
201
164
  }
202
- // --- Single React instance (ADR-0004 via module resolution) -------------
203
- // Nudge UI packages carry their own react dependency for standalone
204
- // consumers. Without an alias, SWC resolves their `react` imports against
205
- // those copies while the host application runs its own — two Reacts in one
206
- // document, and inspector state updates silently stop rendering. Aliasing
207
- // to the host project's copies pins one instance for every compilation.
165
+ // Nudge UI carries its own react copy for standalone consumers; without an alias
166
+ // SWC loads both, and two Reacts in one document silently break inspector rendering.
208
167
  const hostReact = hostPackageDir(root, "react");
209
168
  const hostReactDom = hostPackageDir(root, "react-dom");
210
169
  const componentRuntime = adapterPackageExport("nudge-ui/internal/component-runtime");
@@ -228,7 +187,6 @@ function instrumentConfig(config, options) {
228
187
  ...(nextConfig.turbopack ?? {}),
229
188
  rules: turbopackRules,
230
189
  };
231
- // --- Webpack mode (secondary target, Stage 6 verifies parity) ----------
232
190
  const userWebpack = source.webpack;
233
191
  nextConfig.webpack = (webpackConfig, context) => {
234
192
  const merged = userWebpack ? userWebpack(webpackConfig, context) : webpackConfig;
@@ -239,11 +197,8 @@ function instrumentConfig(config, options) {
239
197
  const userAlias = (resolveConfig.alias ?? {});
240
198
  const rules = Array.isArray(module.rules) ? [...module.rules] : [];
241
199
  const paths = loaderPaths();
242
- // Next 16 removed the webpack CSS pipeline entirely
243
- // (nextjs.org/docs/messages/built-in-css-disabled): applications using
244
- // stylesheets cannot run under `next dev --webpack` on 16 at all,
245
- // with or without Nudge UI. Registration stays so Next 15.x within
246
- // the supported range keeps working; flag the combination loudly.
200
+ // Next 16 removed the webpack CSS pipeline entirely (nextjs.org/docs/messages/built-in-css-disabled);
201
+ // registration stays so Next 15.x works, and the combination is flagged loudly.
247
202
  const version = resolveNextVersion(root);
248
203
  if (version && Number(version.split(".")[0]) >= 16) {
249
204
  console.warn("[nudge-ui] Next.js " + version + " webpack dev mode has no CSS support "
@@ -273,7 +228,6 @@ function instrumentConfig(config, options) {
273
228
  module: { ...module, rules },
274
229
  };
275
230
  };
276
- // --- Manifest transport rewrite ----------------------------------------
277
231
  const proxyRewrite = (port) => ({
278
232
  source: `${NUDGE_UI_ROUTE_PREFIX}:path*`,
279
233
  destination: `http://127.0.0.1:${port}${NUDGE_UI_ROUTE_PREFIX}:path*`,
@@ -300,9 +254,7 @@ function instrumentConfig(config, options) {
300
254
  + "your rewrites also declare it and will be shadowed:", collisions);
301
255
  }
302
256
  return {
303
- // Port 0 (sidecar failed to bind) yields a dead destination; the mount
304
- // surfaces an honest fetch failure instead of silently pretending to
305
- // work.
257
+ // Port 0 (failed sidecar) yields a dead destination: an honest fetch failure beats silently pretending to work.
306
258
  beforeFiles: [
307
259
  proxyRewrite(port),
308
260
  editorRewrite(port, { key: "accept", value: ".*text/html.*" }),
@@ -313,10 +265,7 @@ function instrumentConfig(config, options) {
313
265
  fallback: shape.fallback ?? [],
314
266
  };
315
267
  };
316
- // Preserve callability while keeping our async resolver.
317
268
  nextConfig.rewrites = resolveRewrites;
318
- // The structural view carries every original field through the spread;
319
- // consumers keep their NextConfig typing via the generic passthrough.
320
269
  return nextConfig;
321
270
  }
322
271
  function nextDevelopmentOrigin() {
@@ -2,7 +2,6 @@ export interface ProjectBridgeBrowserConfig {
2
2
  readonly baseUrl: string;
3
3
  readonly autoConnect: true;
4
4
  }
5
- /** Starts the optional project bridge installed beside the host application. */
6
5
  export declare function startOptionalProjectBridge(input: {
7
6
  readonly appRoot: string;
8
7
  readonly projectId: string;
@@ -14,7 +13,6 @@ export declare function startOptionalProjectBridge(input: {
14
13
  browser: ProjectBridgeBrowserConfig;
15
14
  close(): Promise<void>;
16
15
  } | null>;
17
- /** Returns the browser origin for a loopback HTTP server address. */
18
16
  export declare function loopbackOrigin(address: {
19
17
  address: string;
20
18
  port: number;
@@ -11,7 +11,6 @@ import { join } from "node:path";
11
11
  import { pathToFileURL } from "node:url";
12
12
  import { findProjectMcpRoot } from "../project/mcpPackage.js";
13
13
  const runningBridges = new Map();
14
- /** Starts the optional project bridge installed beside the host application. */
15
14
  export async function startOptionalProjectBridge(input) {
16
15
  const key = `${input.appRoot}\u0000${input.origin}`;
17
16
  const running = runningBridges.get(key);
@@ -73,7 +72,6 @@ async function launchOptionalProjectBridge(input, key) {
73
72
  return null;
74
73
  }
75
74
  }
76
- /** Returns the browser origin for a loopback HTTP server address. */
77
75
  export function loopbackOrigin(address, protocol = "http") {
78
76
  const host = address.address === "::" || address.address === "::1"
79
77
  ? "[::1]"
@@ -0,0 +1,2 @@
1
+ /** Must run before the application's renderer loads; extends any existing DevTools hook and never replaces it. */
2
+ export declare const REACT_RENDERER_CAPTURE_SCRIPT: string;
@@ -0,0 +1,12 @@
1
+ /** Must run before the application's renderer loads; extends any existing DevTools hook and never replaces it. */
2
+ export const REACT_RENDERER_CAPTURE_SCRIPT = [
3
+ "(function(w){",
4
+ "var h=w.__REACT_DEVTOOLS_GLOBAL_HOOK__;",
5
+ "if(!h){var n=0;h=w.__REACT_DEVTOOLS_GLOBAL_HOOK__={renderers:new Map(),supportsFiber:true,",
6
+ "inject:function(i){var id=n++;h.renderers.set(id,i);return id},",
7
+ "onScheduleFiberRoot:function(){},onCommitFiberRoot:function(){},onCommitFiberUnmount:function(){}};return}",
8
+ "if(h.__nudgeUiRendererCapture||typeof h.inject!=='function'||!(h.renderers instanceof Map))return;",
9
+ "h.__nudgeUiRendererCapture=true;var inject=h.inject;",
10
+ "h.inject=function(i){var id=inject.apply(this,arguments);if(!h.renderers.has(id))h.renderers.set(id,i);return id}",
11
+ "})(window);",
12
+ ].join("");
@@ -1,12 +1,8 @@
1
- /** Parsed arguments for `nudge-ui serve`. */
2
1
  export interface ServeCommandOptions {
3
2
  readonly rootDirectory: string;
4
3
  readonly host: "127.0.0.1" | "::1" | "localhost";
5
4
  readonly port: number;
6
5
  }
7
- /** Parses the standalone CLI's intentionally small command surface. */
8
6
  export declare function parseServeArguments(args: readonly string[], currentDirectory?: string): ServeCommandOptions;
9
- /** Starts the CLI server and waits until the process receives a termination signal. */
10
7
  export declare function runServeCommand(options: ServeCommandOptions): Promise<void>;
11
- /** Runs the standalone command. */
12
8
  export declare function main(args?: string[], packageVersion?: string): Promise<void>;
@@ -1,7 +1,6 @@
1
1
  import { resolve } from "node:path";
2
2
  import { runAgentCommand } from "../../cli/agentCommand.js";
3
3
  import { createStandaloneServer } from "./server.js";
4
- /** Parses the standalone CLI's intentionally small command surface. */
5
4
  export function parseServeArguments(args, currentDirectory = process.cwd()) {
6
5
  if (args[0] !== "serve") {
7
6
  throw new Error("Usage: nudge-ui serve [directory] [--port <port>] [--host <loopback>]");
@@ -37,14 +36,12 @@ export function parseServeArguments(args, currentDirectory = process.cwd()) {
37
36
  }
38
37
  return { rootDirectory: resolve(currentDirectory, directory), host, port };
39
38
  }
40
- /** Starts the CLI server and waits until the process receives a termination signal. */
41
39
  export async function runServeCommand(options) {
42
40
  const server = createStandaloneServer(options);
43
41
  const address = await server.start();
44
42
  console.log(`Nudge UI serving ${server.rootDirectory} at ${address.url}`);
45
43
  await waitForTermination(server);
46
44
  }
47
- /** Runs the standalone command. */
48
45
  export async function main(args = process.argv.slice(2), packageVersion) {
49
46
  if (args[0] === "agent") {
50
47
  runAgentCommand(args.slice(1), packageVersion);