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
@@ -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,14 +112,7 @@ function instrumentConfig(config, options) {
137
112
  return 0;
138
113
  });
139
114
  const nextConfig = { ...source };
140
- // --- transpilePackages -------------------------------------------------
141
- // Workspace Nudge UI packages ship raw TypeScript that SWC refuses to
142
- // compile from node_modules unless listed (see feature-plan appendix).
143
- const nudgeUiPackages = [
144
- "nudge-ui",
145
- "../../inspector/index.ts",
146
- "../../css/index.ts",
147
- ];
115
+ const nudgeUiPackages = ["nudge-ui"];
148
116
  const userTranspile = Array.isArray(source.transpilePackages)
149
117
  ? source.transpilePackages
150
118
  : [];
@@ -152,7 +120,6 @@ function instrumentConfig(config, options) {
152
120
  ...userTranspile,
153
121
  ...nudgeUiPackages.filter((name) => !userTranspile.includes(name)),
154
122
  ];
155
- // --- Turbopack rules (primary compiler) ---------------------------------
156
123
  const turbopackRules = {
157
124
  ...(source.turbopack?.rules ?? {}),
158
125
  };
@@ -168,18 +135,12 @@ function instrumentConfig(config, options) {
168
135
  loader: paths.plugin,
169
136
  options: loaderOptions,
170
137
  }],
171
- // 'foreign' is Turbopack's builtin condition for dependency code, so
172
- // `not: foreign` confines the loader to first-party sources. The path
173
- // 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.
174
139
  condition: {
175
140
  all: [
176
141
  { not: "foreign" },
177
142
  { not: { path: "(**/)?\\.next/**" } },
178
- // Workspace symlinks are NOT foreign (they are source-backed), so
179
- // the Nudge UI packages themselves must be excluded explicitly:
180
- // instrumenting the inspector's own UI would wrap every control in
181
- // override boundaries and pollute the panel with identity attrs.
182
- // 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.
183
144
  {
184
145
  not: {
185
146
  path: nudgeUiRepositoryPackagePath,
@@ -188,11 +149,7 @@ function instrumentConfig(config, options) {
188
149
  ],
189
150
  },
190
151
  };
191
- /**
192
- * Rules are COMPOSED with any user rule for the same key by building a
193
- * rule collection (Next supports arrays of items per glob) — silently
194
- * overwriting host configuration is never acceptable.
195
- */
152
+ /** Composed with any user rule for the same key: silently overwriting host configuration is never acceptable. */
196
153
  const compose = (key, rule) => {
197
154
  const existing = turbopackRules[key];
198
155
  if (existing === undefined) {
@@ -205,12 +162,8 @@ function instrumentConfig(config, options) {
205
162
  compose("*.tsx", { ...identityRule });
206
163
  compose("*.jsx", { ...identityRule });
207
164
  }
208
- // --- Single React instance (ADR-0004 via module resolution) -------------
209
- // Nudge UI packages carry their own react dependency for standalone
210
- // consumers. Without an alias, SWC resolves their `react` imports against
211
- // those copies while the host application runs its own — two Reacts in one
212
- // document, and inspector state updates silently stop rendering. Aliasing
213
- // 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.
214
167
  const hostReact = hostPackageDir(root, "react");
215
168
  const hostReactDom = hostPackageDir(root, "react-dom");
216
169
  const componentRuntime = adapterPackageExport("nudge-ui/internal/component-runtime");
@@ -234,7 +187,6 @@ function instrumentConfig(config, options) {
234
187
  ...(nextConfig.turbopack ?? {}),
235
188
  rules: turbopackRules,
236
189
  };
237
- // --- Webpack mode (secondary target, Stage 6 verifies parity) ----------
238
190
  const userWebpack = source.webpack;
239
191
  nextConfig.webpack = (webpackConfig, context) => {
240
192
  const merged = userWebpack ? userWebpack(webpackConfig, context) : webpackConfig;
@@ -245,11 +197,8 @@ function instrumentConfig(config, options) {
245
197
  const userAlias = (resolveConfig.alias ?? {});
246
198
  const rules = Array.isArray(module.rules) ? [...module.rules] : [];
247
199
  const paths = loaderPaths();
248
- // Next 16 removed the webpack CSS pipeline entirely
249
- // (nextjs.org/docs/messages/built-in-css-disabled): applications using
250
- // stylesheets cannot run under `next dev --webpack` on 16 at all,
251
- // with or without Nudge UI. Registration stays so Next 15.x within
252
- // 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.
253
202
  const version = resolveNextVersion(root);
254
203
  if (version && Number(version.split(".")[0]) >= 16) {
255
204
  console.warn("[nudge-ui] Next.js " + version + " webpack dev mode has no CSS support "
@@ -279,7 +228,6 @@ function instrumentConfig(config, options) {
279
228
  module: { ...module, rules },
280
229
  };
281
230
  };
282
- // --- Manifest transport rewrite ----------------------------------------
283
231
  const proxyRewrite = (port) => ({
284
232
  source: `${NUDGE_UI_ROUTE_PREFIX}:path*`,
285
233
  destination: `http://127.0.0.1:${port}${NUDGE_UI_ROUTE_PREFIX}:path*`,
@@ -306,9 +254,7 @@ function instrumentConfig(config, options) {
306
254
  + "your rewrites also declare it and will be shadowed:", collisions);
307
255
  }
308
256
  return {
309
- // Port 0 (sidecar failed to bind) yields a dead destination; the mount
310
- // surfaces an honest fetch failure instead of silently pretending to
311
- // work.
257
+ // Port 0 (failed sidecar) yields a dead destination: an honest fetch failure beats silently pretending to work.
312
258
  beforeFiles: [
313
259
  proxyRewrite(port),
314
260
  editorRewrite(port, { key: "accept", value: ".*text/html.*" }),
@@ -319,10 +265,7 @@ function instrumentConfig(config, options) {
319
265
  fallback: shape.fallback ?? [],
320
266
  };
321
267
  };
322
- // Preserve callability while keeping our async resolver.
323
268
  nextConfig.rewrites = resolveRewrites;
324
- // The structural view carries every original field through the spread;
325
- // consumers keep their NextConfig typing via the generic passthrough.
326
269
  return nextConfig;
327
270
  }
328
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;
@@ -6,12 +6,11 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
6
6
  }
7
7
  return path;
8
8
  };
9
- import { existsSync } from "node:fs";
10
9
  import { createRequire } from "node:module";
11
- import { dirname, join, parse } from "node:path";
10
+ import { join } from "node:path";
12
11
  import { pathToFileURL } from "node:url";
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);
@@ -28,7 +27,7 @@ export async function startOptionalProjectBridge(input) {
28
27
  async function launchOptionalProjectBridge(input, key) {
29
28
  let modulePath;
30
29
  try {
31
- if (!isPnpRuntime() && !hasProjectInstalledMcp(input.appRoot)) {
30
+ if (findProjectMcpRoot(input.appRoot) === null) {
32
31
  runningBridges.delete(key);
33
32
  return null;
34
33
  }
@@ -73,21 +72,6 @@ async function launchOptionalProjectBridge(input, key) {
73
72
  return null;
74
73
  }
75
74
  }
76
- function isPnpRuntime() {
77
- return typeof process.versions.pnp === "string";
78
- }
79
- function hasProjectInstalledMcp(appRoot) {
80
- let directory = appRoot;
81
- const root = parse(directory).root;
82
- for (;;) {
83
- if (existsSync(join(directory, "node_modules", "@nudge-ui", "mcp", "package.json")))
84
- return true;
85
- if (directory === root)
86
- return false;
87
- directory = dirname(directory);
88
- }
89
- }
90
- /** Returns the browser origin for a loopback HTTP server address. */
91
75
  export function loopbackOrigin(address, protocol = "http") {
92
76
  const host = address.address === "::" || address.address === "::1"
93
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>;