nudge-ui 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +66 -0
  2. package/bin/nudge-ui.mjs +7 -0
  3. package/dist/LICENSE +21 -0
  4. package/dist/client.mjs +261 -0
  5. package/dist/compiler/ast.d.ts +18 -0
  6. package/dist/compiler/ast.js +75 -0
  7. package/dist/compiler/componentContractTypes.d.ts +19 -0
  8. package/dist/compiler/componentContractTypes.js +1 -0
  9. package/dist/compiler/componentContracts.d.ts +2 -0
  10. package/dist/compiler/componentContracts.js +260 -0
  11. package/dist/compiler/componentInstrumentation.d.ts +32 -0
  12. package/dist/compiler/componentInstrumentation.js +140 -0
  13. package/dist/compiler/componentPolicyResolution.d.ts +71 -0
  14. package/dist/compiler/componentPolicyResolution.js +388 -0
  15. package/dist/compiler/index.d.ts +9 -0
  16. package/dist/compiler/index.js +9 -0
  17. package/dist/compiler/packageComponentContracts.d.ts +32 -0
  18. package/dist/compiler/packageComponentContracts.js +308 -0
  19. package/dist/compiler/reactComponentProtocols.d.ts +145 -0
  20. package/dist/compiler/reactComponentProtocols.js +47 -0
  21. package/dist/compiler/reactIdentity.d.ts +15 -0
  22. package/dist/compiler/reactIdentity.js +339 -0
  23. package/dist/compiler/sourcePaths.d.ts +12 -0
  24. package/dist/compiler/sourcePaths.js +27 -0
  25. package/dist/css/dialects/index.d.ts +62 -0
  26. package/dist/css/dialects/index.js +103 -0
  27. package/dist/css/dialects/tailwind.d.ts +46 -0
  28. package/dist/css/dialects/tailwind.js +119 -0
  29. package/dist/css/dialects/vanillaExtract.d.ts +20 -0
  30. package/dist/css/dialects/vanillaExtract.js +32 -0
  31. package/dist/css/index.d.ts +10 -0
  32. package/dist/css/index.js +10 -0
  33. package/dist/css/model/index.d.ts +190 -0
  34. package/dist/css/model/index.js +10 -0
  35. package/dist/css/token-inventory/index.d.ts +26 -0
  36. package/dist/css/token-inventory/index.js +24 -0
  37. package/dist/css/token-inventory/inventory.d.ts +8 -0
  38. package/dist/css/token-inventory/inventory.js +421 -0
  39. package/dist/css/token-inventory/parseStylesheet.d.ts +16 -0
  40. package/dist/css/token-inventory/parseStylesheet.js +155 -0
  41. package/dist/css/token-inventory/policy.d.ts +47 -0
  42. package/dist/css/token-inventory/policy.js +50 -0
  43. package/dist/css/token-inventory/types.d.ts +97 -0
  44. package/dist/css/token-inventory/types.js +1 -0
  45. package/dist/css/value-semantics/borderSemantics.d.ts +28 -0
  46. package/dist/css/value-semantics/borderSemantics.js +91 -0
  47. package/dist/css/value-semantics/boxSemantics.d.ts +37 -0
  48. package/dist/css/value-semantics/boxSemantics.js +71 -0
  49. package/dist/css/value-semantics/colorSemantics.d.ts +99 -0
  50. package/dist/css/value-semantics/colorSemantics.js +526 -0
  51. package/dist/css/value-semantics/cssSyntax.d.ts +19 -0
  52. package/dist/css/value-semantics/cssSyntax.js +111 -0
  53. package/dist/css/value-semantics/fontSemantics.d.ts +35 -0
  54. package/dist/css/value-semantics/fontSemantics.js +131 -0
  55. package/dist/css/value-semantics/index.d.ts +20 -0
  56. package/dist/css/value-semantics/index.js +15 -0
  57. package/dist/css/value-semantics/propertyPolicy.d.ts +118 -0
  58. package/dist/css/value-semantics/propertyPolicy.js +356 -0
  59. package/dist/css/value-semantics/stringMaps.d.ts +2 -0
  60. package/dist/css/value-semantics/stringMaps.js +1 -0
  61. package/dist/css/value-semantics/structuredValues.d.ts +64 -0
  62. package/dist/css/value-semantics/structuredValues.js +250 -0
  63. package/dist/css/value-semantics/tokenInterpretation.d.ts +90 -0
  64. package/dist/css/value-semantics/tokenInterpretation.js +193 -0
  65. package/dist/css/virtual-design-tokens.d.ts +17 -0
  66. package/dist/hosts/astro/astroRuntimeConfig.d.ts +12 -0
  67. package/dist/hosts/astro/astroRuntimeConfig.js +26 -0
  68. package/dist/hosts/astro/clientAsset.d.ts +12 -0
  69. package/dist/hosts/astro/clientAsset.js +51 -0
  70. package/dist/hosts/astro/clientTransport.d.ts +3 -0
  71. package/dist/hosts/astro/clientTransport.js +57 -0
  72. package/dist/hosts/astro/index.d.ts +3 -0
  73. package/dist/hosts/astro/index.js +2 -0
  74. package/dist/hosts/astro/integration.d.ts +35 -0
  75. package/dist/hosts/astro/integration.js +96 -0
  76. package/dist/hosts/astro/middleware.d.ts +13 -0
  77. package/dist/hosts/astro/middleware.js +22 -0
  78. package/dist/hosts/astro/projectContext.d.ts +11 -0
  79. package/dist/hosts/astro/projectContext.js +34 -0
  80. package/dist/hosts/astro/responseInstrumentation.d.ts +41 -0
  81. package/dist/hosts/astro/responseInstrumentation.js +80 -0
  82. package/dist/hosts/next/index.d.ts +4 -0
  83. package/dist/hosts/next/index.js +7 -0
  84. package/dist/hosts/next/loader.d.ts +66 -0
  85. package/dist/hosts/next/loader.js +346 -0
  86. package/dist/hosts/next/loaders/identity-loader.cjs +228257 -0
  87. package/dist/hosts/next/loaders/loader-plugin.cjs +228257 -0
  88. package/dist/hosts/next/manifest.d.ts +38 -0
  89. package/dist/hosts/next/manifest.js +30 -0
  90. package/dist/hosts/next/mount.d.ts +12 -0
  91. package/dist/hosts/next/mount.js +23 -0
  92. package/dist/hosts/next/repositoryScope.d.ts +20 -0
  93. package/dist/hosts/next/repositoryScope.js +33 -0
  94. package/dist/hosts/next/sidecar.d.ts +27 -0
  95. package/dist/hosts/next/sidecar.js +526 -0
  96. package/dist/hosts/next/wrapper.d.ts +67 -0
  97. package/dist/hosts/next/wrapper.js +310 -0
  98. package/dist/hosts/static/cli.d.ts +12 -0
  99. package/dist/hosts/static/cli.js +77 -0
  100. package/dist/hosts/static/html/bootstrap.d.ts +27 -0
  101. package/dist/hosts/static/html/bootstrap.js +93 -0
  102. package/dist/hosts/static/index.d.ts +4 -0
  103. package/dist/hosts/static/index.js +4 -0
  104. package/dist/hosts/static/manifest.d.ts +18 -0
  105. package/dist/hosts/static/manifest.js +51 -0
  106. package/dist/hosts/static/server.d.ts +72 -0
  107. package/dist/hosts/static/server.js +554 -0
  108. package/dist/hosts/vite/index.d.ts +20 -0
  109. package/dist/hosts/vite/index.js +48 -0
  110. package/dist/hosts/vite/react.d.ts +67 -0
  111. package/dist/hosts/vite/react.js +231 -0
  112. package/dist/hosts/vite/tokens/activeStylesheets.d.ts +28 -0
  113. package/dist/hosts/vite/tokens/activeStylesheets.js +70 -0
  114. package/dist/hosts/vite/tokens/fileMap.d.ts +2 -0
  115. package/dist/hosts/vite/tokens/fileMap.js +1 -0
  116. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +46 -0
  117. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +104 -0
  118. package/dist/hosts/vite/virtual/design-tokens.d.ts +9 -0
  119. package/dist/hosts/vite/virtual/design-tokens.js +7 -0
  120. package/dist/hosts/vite/virtual-design-tokens.d.ts +1 -0
  121. package/dist/hosts/vite/vite.d.ts +62 -0
  122. package/dist/hosts/vite/vite.js +854 -0
  123. package/dist/html/dom.d.ts +13 -0
  124. package/dist/html/dom.js +46 -0
  125. package/dist/html/identity.d.ts +40 -0
  126. package/dist/html/identity.js +196 -0
  127. package/dist/html/insertions.d.ts +26 -0
  128. package/dist/html/insertions.js +59 -0
  129. package/dist/inspector/agent/McpConnectionDialog.d.ts +26 -0
  130. package/dist/inspector/agent/McpConnectionDialog.js +135 -0
  131. package/dist/inspector/agent/client.d.ts +98 -0
  132. package/dist/inspector/agent/client.js +728 -0
  133. package/dist/inspector/agent/connectionStatus.d.ts +13 -0
  134. package/dist/inspector/agent/connectionStatus.js +35 -0
  135. package/dist/inspector/agent/httpTransport.d.ts +21 -0
  136. package/dist/inspector/agent/httpTransport.js +347 -0
  137. package/dist/inspector/agent/protocol.d.ts +95 -0
  138. package/dist/inspector/agent/protocol.js +9 -0
  139. package/dist/inspector/agent/verification.d.ts +39 -0
  140. package/dist/inspector/agent/verification.js +207 -0
  141. package/dist/inspector/canvas/CanvasCard.d.ts +10 -0
  142. package/dist/inspector/canvas/CanvasCard.js +275 -0
  143. package/dist/inspector/canvas/CanvasElementOverlay.d.ts +2 -0
  144. package/dist/inspector/canvas/CanvasElementOverlay.js +301 -0
  145. package/dist/inspector/canvas/CanvasWorkspace.d.ts +2 -0
  146. package/dist/inspector/canvas/CanvasWorkspace.js +301 -0
  147. package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +6 -0
  148. package/dist/inspector/canvas/LockedWorkspaceNotice.js +17 -0
  149. package/dist/inspector/canvas/StaleChangeIndicator.d.ts +7 -0
  150. package/dist/inspector/canvas/StaleChangeIndicator.js +43 -0
  151. package/dist/inspector/canvas/agentPresentation.d.ts +87 -0
  152. package/dist/inspector/canvas/agentPresentation.js +421 -0
  153. package/dist/inspector/canvas/canvasGestures.d.ts +12 -0
  154. package/dist/inspector/canvas/canvasGestures.js +21 -0
  155. package/dist/inspector/canvas/canvasStore.d.ts +108 -0
  156. package/dist/inspector/canvas/canvasStore.js +448 -0
  157. package/dist/inspector/canvas/frameProtocol.d.ts +231 -0
  158. package/dist/inspector/canvas/frameProtocol.js +165 -0
  159. package/dist/inspector/canvas/linkEligibility.d.ts +8 -0
  160. package/dist/inspector/canvas/linkEligibility.js +68 -0
  161. package/dist/inspector/canvas/measurementProjection.d.ts +8 -0
  162. package/dist/inspector/canvas/measurementProjection.js +16 -0
  163. package/dist/inspector/canvas/normalizeUrl.d.ts +7 -0
  164. package/dist/inspector/canvas/normalizeUrl.js +27 -0
  165. package/dist/inspector/canvas/projection.d.ts +41 -0
  166. package/dist/inspector/canvas/projection.js +232 -0
  167. package/dist/inspector/canvas/rendererBootstrap.d.ts +4 -0
  168. package/dist/inspector/canvas/rendererBootstrap.js +410 -0
  169. package/dist/inspector/canvas/rendererCidIndex.d.ts +11 -0
  170. package/dist/inspector/canvas/rendererCidIndex.js +21 -0
  171. package/dist/inspector/canvas/rendererElementSelector.d.ts +2 -0
  172. package/dist/inspector/canvas/rendererElementSelector.js +378 -0
  173. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +2 -0
  174. package/dist/inspector/canvas/rendererSelectionProxy.js +61 -0
  175. package/dist/inspector/canvas/rendererStylesheet.d.ts +16 -0
  176. package/dist/inspector/canvas/rendererStylesheet.js +221 -0
  177. package/dist/inspector/canvas/resizeHandleScale.d.ts +13 -0
  178. package/dist/inspector/canvas/resizeHandleScale.js +20 -0
  179. package/dist/inspector/canvas/roleDetection.d.ts +5 -0
  180. package/dist/inspector/canvas/roleDetection.js +21 -0
  181. package/dist/inspector/canvas/sessionStore.d.ts +71 -0
  182. package/dist/inspector/canvas/sessionStore.js +453 -0
  183. package/dist/inspector/canvas/staleChangeDetector.d.ts +11 -0
  184. package/dist/inspector/canvas/staleChangeDetector.js +217 -0
  185. package/dist/inspector/canvas/toolbarScale.d.ts +7 -0
  186. package/dist/inspector/canvas/toolbarScale.js +11 -0
  187. package/dist/inspector/canvas/workspaceLease.d.ts +26 -0
  188. package/dist/inspector/canvas/workspaceLease.js +214 -0
  189. package/dist/inspector/changes/changesLog.d.ts +46 -0
  190. package/dist/inspector/changes/changesLog.js +209 -0
  191. package/dist/inspector/changes/codecs.d.ts +98 -0
  192. package/dist/inspector/changes/codecs.js +389 -0
  193. package/dist/inspector/changes/editModel.d.ts +74 -0
  194. package/dist/inspector/changes/editModel.js +120 -0
  195. package/dist/inspector/changes/managedStyleProjection.d.ts +6 -0
  196. package/dist/inspector/changes/managedStyleProjection.js +109 -0
  197. package/dist/inspector/changes/model.d.ts +13 -0
  198. package/dist/inspector/changes/model.js +163 -0
  199. package/dist/inspector/changes/presentation.d.ts +14 -0
  200. package/dist/inspector/changes/presentation.js +81 -0
  201. package/dist/inspector/changes/previewDiagnostics.d.ts +39 -0
  202. package/dist/inspector/changes/previewDiagnostics.js +172 -0
  203. package/dist/inspector/changes/structuralTypes.d.ts +35 -0
  204. package/dist/inspector/changes/structuralTypes.js +1 -0
  205. package/dist/inspector/changes/types.d.ts +76 -0
  206. package/dist/inspector/changes/types.js +16 -0
  207. package/dist/inspector/changes/workspaceChanges.d.ts +43 -0
  208. package/dist/inspector/changes/workspaceChanges.js +239 -0
  209. package/dist/inspector/clientManifest.d.ts +24 -0
  210. package/dist/inspector/clientManifest.js +69 -0
  211. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +5 -0
  212. package/dist/inspector/componentSemantics/ComponentPropsSection.js +44 -0
  213. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +11 -0
  214. package/dist/inspector/componentSemantics/adapterRegistry.js +75 -0
  215. package/dist/inspector/componentSemantics/boundaries.d.ts +2 -0
  216. package/dist/inspector/componentSemantics/boundaries.js +10 -0
  217. package/dist/inspector/componentSemantics/changeAction.d.ts +3 -0
  218. package/dist/inspector/componentSemantics/changeAction.js +6 -0
  219. package/dist/inspector/componentSemantics/changeModel.d.ts +8 -0
  220. package/dist/inspector/componentSemantics/changeModel.js +60 -0
  221. package/dist/inspector/componentSemantics/index.d.ts +4 -0
  222. package/dist/inspector/componentSemantics/index.js +2 -0
  223. package/dist/inspector/componentSemantics/reactRuntime.d.ts +10 -0
  224. package/dist/inspector/componentSemantics/reactRuntime.js +186 -0
  225. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +25 -0
  226. package/dist/inspector/componentSemantics/runtimeBridge.js +161 -0
  227. package/dist/inspector/componentSemantics/runtimeTypes.d.ts +2 -0
  228. package/dist/inspector/componentSemantics/runtimeTypes.js +1 -0
  229. package/dist/inspector/componentSemantics/textBinding.d.ts +69 -0
  230. package/dist/inspector/componentSemantics/textBinding.js +514 -0
  231. package/dist/inspector/componentSemantics/types.d.ts +96 -0
  232. package/dist/inspector/componentSemantics/types.js +5 -0
  233. package/dist/inspector/conformance/borderCases.d.ts +7 -0
  234. package/dist/inspector/conformance/borderCases.js +428 -0
  235. package/dist/inspector/conformance/colorCases.d.ts +8 -0
  236. package/dist/inspector/conformance/colorCases.js +470 -0
  237. package/dist/inspector/conformance/fixture.d.ts +68 -0
  238. package/dist/inspector/conformance/fixture.js +153 -0
  239. package/dist/inspector/conformance/projection.d.ts +2 -0
  240. package/dist/inspector/conformance/projection.js +3 -0
  241. package/dist/inspector/conformance/spacingCases.d.ts +6 -0
  242. package/dist/inspector/conformance/spacingCases.js +417 -0
  243. package/dist/inspector/conformance/typographyCases.d.ts +7 -0
  244. package/dist/inspector/conformance/typographyCases.js +174 -0
  245. package/dist/inspector/editScope.d.ts +4 -0
  246. package/dist/inspector/editScope.js +5 -0
  247. package/dist/inspector/index.d.ts +20 -0
  248. package/dist/inspector/index.js +236 -0
  249. package/dist/inspector/inline-text/inlineTextEditor.d.ts +74 -0
  250. package/dist/inspector/inline-text/inlineTextEditor.js +1207 -0
  251. package/dist/inspector/inline-text/inlineTextLifecycle.d.ts +2 -0
  252. package/dist/inspector/inline-text/inlineTextLifecycle.js +17 -0
  253. package/dist/inspector/inline-text/textChangeBoundary.d.ts +6 -0
  254. package/dist/inspector/inline-text/textChangeBoundary.js +1 -0
  255. package/dist/inspector/inspection/bridge.d.ts +72 -0
  256. package/dist/inspector/inspection/bridge.js +134 -0
  257. package/dist/inspector/inspection/browserCssInspection.d.ts +74 -0
  258. package/dist/inspector/inspection/browserCssInspection.js +317 -0
  259. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +12 -0
  260. package/dist/inspector/inspection/browserCssInspectionRegistry.js +66 -0
  261. package/dist/inspector/inspection/selectionProperty.d.ts +32 -0
  262. package/dist/inspector/inspection/selectionProperty.js +33 -0
  263. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +20 -0
  264. package/dist/inspector/inspection/useBrowserCssInspection.js +159 -0
  265. package/dist/inspector/overlay/DropGuideOverlay.d.ts +17 -0
  266. package/dist/inspector/overlay/DropGuideOverlay.js +17 -0
  267. package/dist/inspector/overlay/InspectorOverlay.d.ts +5 -0
  268. package/dist/inspector/overlay/InspectorOverlay.js +328 -0
  269. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +19 -0
  270. package/dist/inspector/overlay/MeasurementGuideOverlay.js +40 -0
  271. package/dist/inspector/overlay/clickPolicy.d.ts +7 -0
  272. package/dist/inspector/overlay/clickPolicy.js +13 -0
  273. package/dist/inspector/overlay/dropGuide.d.ts +22 -0
  274. package/dist/inspector/overlay/dropGuide.js +48 -0
  275. package/dist/inspector/overlay/elementSelector.d.ts +1 -0
  276. package/dist/inspector/overlay/elementSelector.js +100 -0
  277. package/dist/inspector/overlay/frameThrottle.d.ts +10 -0
  278. package/dist/inspector/overlay/frameThrottle.js +38 -0
  279. package/dist/inspector/overlay/interactionStyles.d.ts +3 -0
  280. package/dist/inspector/overlay/interactionStyles.js +70 -0
  281. package/dist/inspector/overlay/measurementGeometry.d.ts +25 -0
  282. package/dist/inspector/overlay/measurementGeometry.js +104 -0
  283. package/dist/inspector/overlay/overlayGeometry.d.ts +40 -0
  284. package/dist/inspector/overlay/overlayGeometry.js +59 -0
  285. package/dist/inspector/overlay/selectedGeometry.d.ts +7 -0
  286. package/dist/inspector/overlay/selectedGeometry.js +51 -0
  287. package/dist/inspector/overlay/structuralGestures.d.ts +28 -0
  288. package/dist/inspector/overlay/structuralGestures.js +180 -0
  289. package/dist/inspector/projection/cssEscapes.d.ts +3 -0
  290. package/dist/inspector/projection/cssEscapes.js +20 -0
  291. package/dist/inspector/projection/managedStylesheet.d.ts +33 -0
  292. package/dist/inspector/projection/managedStylesheet.js +240 -0
  293. package/dist/inspector/projection/renderedInstance.d.ts +56 -0
  294. package/dist/inspector/projection/renderedInstance.js +306 -0
  295. package/dist/inspector/projection/structuralProjection.d.ts +93 -0
  296. package/dist/inspector/projection/structuralProjection.js +560 -0
  297. package/dist/inspector/projection/structuralProjectionBoundary.d.ts +5 -0
  298. package/dist/inspector/projection/structuralProjectionBoundary.js +65 -0
  299. package/dist/inspector/projection/textProjection.d.ts +53 -0
  300. package/dist/inspector/projection/textProjection.js +705 -0
  301. package/dist/inspector/projection/workspaceProjection.d.ts +43 -0
  302. package/dist/inspector/projection/workspaceProjection.js +58 -0
  303. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +15 -0
  304. package/dist/inspector/prompt/PromptSettingsDialog.js +17 -0
  305. package/dist/inspector/prompt/clipboardHandoff.d.ts +34 -0
  306. package/dist/inspector/prompt/clipboardHandoff.js +212 -0
  307. package/dist/inspector/prompt/copyToClipboard.d.ts +1 -0
  308. package/dist/inspector/prompt/copyToClipboard.js +34 -0
  309. package/dist/inspector/prompt/detectFramework.d.ts +6 -0
  310. package/dist/inspector/prompt/detectFramework.js +4 -0
  311. package/dist/inspector/prompt/generatePrompt.d.ts +7 -0
  312. package/dist/inspector/prompt/generatePrompt.js +391 -0
  313. package/dist/inspector/prompt/promptSettings.d.ts +8 -0
  314. package/dist/inspector/prompt/promptSettings.js +28 -0
  315. package/dist/inspector/runtime/devFlag.d.ts +28 -0
  316. package/dist/inspector/runtime/devFlag.js +50 -0
  317. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +19 -0
  318. package/dist/inspector/runtime/documentStylesheetOrder.js +89 -0
  319. package/dist/inspector/runtime/domRealm.d.ts +4 -0
  320. package/dist/inspector/runtime/domRealm.js +11 -0
  321. package/dist/inspector/runtime/runtimeConfig.d.ts +119 -0
  322. package/dist/inspector/runtime/runtimeConfig.js +276 -0
  323. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +32 -0
  324. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +149 -0
  325. package/dist/inspector/runtime/useRuntimeConfig.d.ts +10 -0
  326. package/dist/inspector/runtime/useRuntimeConfig.js +13 -0
  327. package/dist/inspector/selection/editScope.d.ts +32 -0
  328. package/dist/inspector/selection/editScope.js +140 -0
  329. package/dist/inspector/selection/editTarget.d.ts +8 -0
  330. package/dist/inspector/selection/editTarget.js +11 -0
  331. package/dist/inspector/selection/hierarchy.d.ts +7 -0
  332. package/dist/inspector/selection/hierarchy.js +42 -0
  333. package/dist/inspector/selection/resolveSelection.d.ts +10 -0
  334. package/dist/inspector/selection/resolveSelection.js +60 -0
  335. package/dist/inspector/selection/selectionStore.d.ts +41 -0
  336. package/dist/inspector/selection/selectionStore.js +262 -0
  337. package/dist/inspector/selection/selectionTarget.d.ts +5 -0
  338. package/dist/inspector/selection/selectionTarget.js +50 -0
  339. package/dist/inspector/selection/sourceSite.d.ts +2 -0
  340. package/dist/inspector/selection/sourceSite.js +12 -0
  341. package/dist/inspector/selection/styleSelection.d.ts +22 -0
  342. package/dist/inspector/selection/styleSelection.js +104 -0
  343. package/dist/inspector/session/index.d.ts +3 -0
  344. package/dist/inspector/session/index.js +2 -0
  345. package/dist/inspector/session/lifecycle.d.ts +22 -0
  346. package/dist/inspector/session/lifecycle.js +63 -0
  347. package/dist/inspector/session/sessionContext.d.ts +21 -0
  348. package/dist/inspector/session/sessionContext.js +28 -0
  349. package/dist/inspector/session/sessionFactory.d.ts +29 -0
  350. package/dist/inspector/session/sessionFactory.js +73 -0
  351. package/dist/inspector/settings/SettingsDialog.d.ts +12 -0
  352. package/dist/inspector/settings/SettingsDialog.js +46 -0
  353. package/dist/inspector/shell/AppShell.d.ts +2 -0
  354. package/dist/inspector/shell/AppShell.js +9 -0
  355. package/dist/inspector/shell/ChangesLog.d.ts +6 -0
  356. package/dist/inspector/shell/ChangesLog.js +92 -0
  357. package/dist/inspector/shell/CopyPromptButton.d.ts +9 -0
  358. package/dist/inspector/shell/CopyPromptButton.js +159 -0
  359. package/dist/inspector/shell/DomNavigation.d.ts +8 -0
  360. package/dist/inspector/shell/DomNavigation.js +30 -0
  361. package/dist/inspector/shell/EmptyState.d.ts +2 -0
  362. package/dist/inspector/shell/EmptyState.js +15 -0
  363. package/dist/inspector/shell/InspectorShell.d.ts +11 -0
  364. package/dist/inspector/shell/InspectorShell.js +268 -0
  365. package/dist/inspector/shell/openStore.d.ts +6 -0
  366. package/dist/inspector/shell/openStore.js +29 -0
  367. package/dist/inspector/shell/panelLayout.d.ts +2 -0
  368. package/dist/inspector/shell/panelLayout.js +29 -0
  369. package/dist/inspector/shell/shortcuts.d.ts +3 -0
  370. package/dist/inspector/shell/shortcuts.js +25 -0
  371. package/dist/inspector/shell/stateValue.d.ts +3 -0
  372. package/dist/inspector/shell/stateValue.js +34 -0
  373. package/dist/inspector/shell/styleState.d.ts +7 -0
  374. package/dist/inspector/shell/styleState.js +13 -0
  375. package/dist/inspector/spacing/projection.d.ts +43 -0
  376. package/dist/inspector/spacing/projection.js +136 -0
  377. package/dist/inspector/styleEditors/AppearanceSection.d.ts +13 -0
  378. package/dist/inspector/styleEditors/AppearanceSection.js +6 -0
  379. package/dist/inspector/styleEditors/AspectRatioField.d.ts +17 -0
  380. package/dist/inspector/styleEditors/AspectRatioField.js +10 -0
  381. package/dist/inspector/styleEditors/BorderEditor.d.ts +13 -0
  382. package/dist/inspector/styleEditors/BorderEditor.js +295 -0
  383. package/dist/inspector/styleEditors/BorderRadiusEditor.d.ts +14 -0
  384. package/dist/inspector/styleEditors/BorderRadiusEditor.js +108 -0
  385. package/dist/inspector/styleEditors/BoxShadowEditor.d.ts +13 -0
  386. package/dist/inspector/styleEditors/BoxShadowEditor.js +13 -0
  387. package/dist/inspector/styleEditors/ColorPicker.d.ts +15 -0
  388. package/dist/inspector/styleEditors/ColorPicker.js +73 -0
  389. package/dist/inspector/styleEditors/GapField.d.ts +17 -0
  390. package/dist/inspector/styleEditors/GapField.js +12 -0
  391. package/dist/inspector/styleEditors/GridChildSection.d.ts +14 -0
  392. package/dist/inspector/styleEditors/GridChildSection.js +91 -0
  393. package/dist/inspector/styleEditors/GridPicker.d.ts +13 -0
  394. package/dist/inspector/styleEditors/GridPicker.js +179 -0
  395. package/dist/inspector/styleEditors/GridSection.d.ts +17 -0
  396. package/dist/inspector/styleEditors/GridSection.js +27 -0
  397. package/dist/inspector/styleEditors/GridValueField.d.ts +17 -0
  398. package/dist/inspector/styleEditors/GridValueField.js +70 -0
  399. package/dist/inspector/styleEditors/InsetSection.d.ts +15 -0
  400. package/dist/inspector/styleEditors/InsetSection.js +15 -0
  401. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +6 -0
  402. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +6 -0
  403. package/dist/inspector/styleEditors/LayoutComboField.d.ts +18 -0
  404. package/dist/inspector/styleEditors/LayoutComboField.js +138 -0
  405. package/dist/inspector/styleEditors/LayoutDropdown.d.ts +14 -0
  406. package/dist/inspector/styleEditors/LayoutDropdown.js +34 -0
  407. package/dist/inspector/styleEditors/LayoutSection.d.ts +13 -0
  408. package/dist/inspector/styleEditors/LayoutSection.js +342 -0
  409. package/dist/inspector/styleEditors/OpacityEditor.d.ts +13 -0
  410. package/dist/inspector/styleEditors/OpacityEditor.js +34 -0
  411. package/dist/inspector/styleEditors/PositionInsets.d.ts +15 -0
  412. package/dist/inspector/styleEditors/PositionInsets.js +12 -0
  413. package/dist/inspector/styleEditors/SpacingBox.d.ts +29 -0
  414. package/dist/inspector/styleEditors/SpacingBox.js +189 -0
  415. package/dist/inspector/styleEditors/Typography.d.ts +13 -0
  416. package/dist/inspector/styleEditors/Typography.js +137 -0
  417. package/dist/inspector/styleEditors/completeCssValue.d.ts +8 -0
  418. package/dist/inspector/styleEditors/completeCssValue.js +34 -0
  419. package/dist/inspector/styleEditors/gridChildModel.d.ts +74 -0
  420. package/dist/inspector/styleEditors/gridChildModel.js +138 -0
  421. package/dist/inspector/styleEditors/layoutValue.d.ts +24 -0
  422. package/dist/inspector/styleEditors/layoutValue.js +103 -0
  423. package/dist/inspector/styleEditors/nudgeValue.d.ts +8 -0
  424. package/dist/inspector/styleEditors/nudgeValue.js +71 -0
  425. package/dist/inspector/styleEditors/rowLookup.d.ts +11 -0
  426. package/dist/inspector/styleEditors/rowLookup.js +13 -0
  427. package/dist/inspector/styleEditors/stringRecord.d.ts +4 -0
  428. package/dist/inspector/styleEditors/stringRecord.js +1 -0
  429. package/dist/inspector/styleEditors/valuePolicy.d.ts +20 -0
  430. package/dist/inspector/styleEditors/valuePolicy.js +82 -0
  431. package/dist/inspector/testing.d.ts +10 -0
  432. package/dist/inspector/testing.js +9 -0
  433. package/dist/inspector/tokens/TokenChip.d.ts +24 -0
  434. package/dist/inspector/tokens/TokenChip.js +23 -0
  435. package/dist/inspector/tokens/TokenDropdown.d.ts +13 -0
  436. package/dist/inspector/tokens/TokenDropdown.js +59 -0
  437. package/dist/inspector/tokens/TokenField.d.ts +68 -0
  438. package/dist/inspector/tokens/TokenField.js +485 -0
  439. package/dist/inspector/tokens/TokenLabel.d.ts +7 -0
  440. package/dist/inspector/tokens/TokenLabel.js +23 -0
  441. package/dist/inspector/tokens/TokensPanel.d.ts +5 -0
  442. package/dist/inspector/tokens/TokensPanel.js +47 -0
  443. package/dist/inspector/tokens/catalog.d.ts +51 -0
  444. package/dist/inspector/tokens/catalog.js +184 -0
  445. package/dist/inspector/tokens/editActions.d.ts +35 -0
  446. package/dist/inspector/tokens/editActions.js +164 -0
  447. package/dist/inspector/tokens/resolution/cascade.d.ts +14 -0
  448. package/dist/inspector/tokens/resolution/cascade.js +31 -0
  449. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +43 -0
  450. package/dist/inspector/tokens/resolution/cssomCollector.js +528 -0
  451. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +12 -0
  452. package/dist/inspector/tokens/resolution/selectorSemantics.js +106 -0
  453. package/dist/inspector/tokens/resolution.d.ts +56 -0
  454. package/dist/inspector/tokens/resolution.js +1401 -0
  455. package/dist/inspector/tokens/tokenEdits.d.ts +3 -0
  456. package/dist/inspector/tokens/tokenEdits.js +22 -0
  457. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +6 -0
  458. package/dist/inspector/tokens/valueSemanticsAdapter.js +68 -0
  459. package/dist/inspector/ui/AtRuleContext.d.ts +18 -0
  460. package/dist/inspector/ui/AtRuleContext.js +54 -0
  461. package/dist/inspector/ui/Button.d.ts +9 -0
  462. package/dist/inspector/ui/Button.js +4 -0
  463. package/dist/inspector/ui/ColorSwatch.d.ts +7 -0
  464. package/dist/inspector/ui/ColorSwatch.js +6 -0
  465. package/dist/inspector/ui/ControlSurface.d.ts +14 -0
  466. package/dist/inspector/ui/ControlSurface.js +10 -0
  467. package/dist/inspector/ui/FieldRow.d.ts +14 -0
  468. package/dist/inspector/ui/FieldRow.js +15 -0
  469. package/dist/inspector/ui/IconButton.d.ts +14 -0
  470. package/dist/inspector/ui/IconButton.js +5 -0
  471. package/dist/inspector/ui/InspectorPopover.d.ts +17 -0
  472. package/dist/inspector/ui/InspectorPopover.js +13 -0
  473. package/dist/inspector/ui/PopoverListbox.d.ts +37 -0
  474. package/dist/inspector/ui/PopoverListbox.js +21 -0
  475. package/dist/inspector/ui/SegmentedControl.d.ts +24 -0
  476. package/dist/inspector/ui/SegmentedControl.js +16 -0
  477. package/dist/inspector/ui/Select.d.ts +25 -0
  478. package/dist/inspector/ui/Select.js +56 -0
  479. package/dist/inspector/ui/SideValuesField.d.ts +44 -0
  480. package/dist/inspector/ui/SideValuesField.js +76 -0
  481. package/dist/inspector/ui/StatusCallout.d.ts +9 -0
  482. package/dist/inspector/ui/StatusCallout.js +4 -0
  483. package/dist/inspector/ui/TextInput.d.ts +12 -0
  484. package/dist/inspector/ui/TextInput.js +5 -0
  485. package/dist/inspector/ui/ToggleButton.d.ts +11 -0
  486. package/dist/inspector/ui/ToggleButton.js +6 -0
  487. package/dist/inspector/ui/assets/grid.svg +14 -0
  488. package/dist/inspector/ui/css.d.ts +9 -0
  489. package/dist/inspector/ui/labels.d.ts +1 -0
  490. package/dist/inspector/ui/labels.js +7 -0
  491. package/dist/inspector/ui/styles.d.ts +1 -0
  492. package/dist/inspector/ui/styles.js +68 -0
  493. package/dist/inspector/virtual-modules.d.ts +7 -0
  494. package/dist/inspector/vite-env.d.ts +10 -0
  495. package/dist/internal/agent-protocol.d.ts +232 -0
  496. package/dist/internal/agent-protocol.js +237 -0
  497. package/dist/nudge-ui.mjs +15722 -0
  498. package/dist/project/files.d.ts +19 -0
  499. package/dist/project/files.js +226 -0
  500. package/dist/project/identity.d.ts +6 -0
  501. package/dist/project/identity.js +19 -0
  502. package/dist/project/pathPolicy.d.ts +8 -0
  503. package/dist/project/pathPolicy.js +12 -0
  504. package/dist/project/tokens.d.ts +36 -0
  505. package/dist/project/tokens.js +223 -0
  506. package/dist/transport/index.d.ts +8 -0
  507. package/dist/transport/index.js +8 -0
  508. package/dist/transport/routes.d.ts +13 -0
  509. package/dist/transport/routes.js +16 -0
  510. package/package.json +137 -0
@@ -0,0 +1,43 @@
1
+ import { type StyleRule } from "./managedStylesheet.js";
2
+ import type { RenderedInstanceOverride } from "../changes/editModel.js";
3
+ import { type StructuralChange } from "./structuralProjection.js";
4
+ import type { ComponentOverride } from "../componentSemantics/types.js";
5
+ import { type TextContentChangeRecord } from "../changes/types.js";
6
+ import type { WorkspaceContents } from "../changes/workspaceChanges.js";
7
+ export interface WorkspaceProjectionSource extends WorkspaceContents {
8
+ readonly revision: number;
9
+ }
10
+ export interface CompiledManagedStyles {
11
+ readonly rules: readonly StyleRule[];
12
+ readonly css: string;
13
+ }
14
+ export interface SerializedManagedStyles {
15
+ readonly css: string;
16
+ }
17
+ /** A complete, read-only projection for one document-local runtime. */
18
+ export interface WorkspaceProjectionPlan<ManagedStyles> {
19
+ readonly sourceRevision: number;
20
+ readonly managedStyles: ManagedStyles;
21
+ readonly instanceOverrides: readonly RenderedInstanceOverride[];
22
+ readonly structuralChanges: readonly StructuralChange[];
23
+ readonly textContentChanges: readonly TextContentChangeRecord[];
24
+ readonly componentOverrides: readonly ComponentOverride[];
25
+ }
26
+ /** Applies every projection dimension to one document-local runtime. */
27
+ export interface DocumentProjectionAdapter<ManagedStyles> {
28
+ applyStructural(changes: readonly StructuralChange[]): void;
29
+ applyRenderedInstances(overrides: readonly RenderedInstanceOverride[]): void;
30
+ applyText(changes: readonly TextContentChangeRecord[]): void;
31
+ applyComponents(overrides: readonly ComponentOverride[]): void;
32
+ applyManagedStyles(styles: ManagedStyles): void;
33
+ }
34
+ export declare function compileWorkspaceProjection(snapshot: WorkspaceProjectionSource): WorkspaceProjectionPlan<CompiledManagedStyles>;
35
+ /**
36
+ * Replaces one document projection in the required order.
37
+ *
38
+ * Structural intent is applied first because later rendered-instance evidence
39
+ * can depend on the restored element order. Managed CSS is applied last so
40
+ * selectors can use the document-local instance markers installed above.
41
+ */
42
+ export declare function applyWorkspaceProjection<ManagedStyles>(adapter: DocumentProjectionAdapter<ManagedStyles>, plan: WorkspaceProjectionPlan<ManagedStyles>): void;
43
+ export declare function applyHostWorkspaceProjection(plan: WorkspaceProjectionPlan<CompiledManagedStyles>): void;
@@ -0,0 +1,58 @@
1
+ import { applyRules, rulesToCssText } from "./managedStylesheet.js";
2
+ import { applyRenderedInstanceProjection, collectRenderedInstanceOverrides, } from "./renderedInstance.js";
3
+ import { applyStructuralProjection, } from "./structuralProjection.js";
4
+ import { applyTextContentProjection, collectTextContentChanges, } from "./textProjection.js";
5
+ import { replaceComponentOverrideProjection } from "../componentSemantics/index.js";
6
+ import { componentChangeToOverride } from "../componentSemantics/changeModel.js";
7
+ import { isComponentChange } from "../changes/types.js";
8
+ import { buildManagedStyleRules } from "../changes/managedStyleProjection.js";
9
+ export function compileWorkspaceProjection(snapshot) {
10
+ const changes = [...snapshot.changes];
11
+ const rules = buildManagedStyleRules(changes);
12
+ return {
13
+ sourceRevision: snapshot.revision,
14
+ managedStyles: {
15
+ rules,
16
+ css: rulesToCssText(rules),
17
+ },
18
+ instanceOverrides: collectRenderedInstanceOverrides(changes),
19
+ structuralChanges: [...snapshot.structuralChanges],
20
+ textContentChanges: collectTextContentChanges(changes),
21
+ componentOverrides: changes
22
+ .filter(isComponentChange)
23
+ .map(componentChangeToOverride)
24
+ .filter((override) => override !== null),
25
+ };
26
+ }
27
+ /**
28
+ * Replaces one document projection in the required order.
29
+ *
30
+ * Structural intent is applied first because later rendered-instance evidence
31
+ * can depend on the restored element order. Managed CSS is applied last so
32
+ * selectors can use the document-local instance markers installed above.
33
+ */
34
+ export function applyWorkspaceProjection(adapter, plan) {
35
+ adapter.applyStructural(plan.structuralChanges);
36
+ adapter.applyRenderedInstances(plan.instanceOverrides);
37
+ adapter.applyText(plan.textContentChanges);
38
+ adapter.applyComponents(plan.componentOverrides);
39
+ adapter.applyManagedStyles(plan.managedStyles);
40
+ }
41
+ const hostDocumentProjectionAdapter = {
42
+ applyStructural: (changes) => {
43
+ applyStructuralProjection(document, changes);
44
+ },
45
+ applyRenderedInstances: (overrides) => {
46
+ applyRenderedInstanceProjection(document, overrides);
47
+ },
48
+ applyText: (changes) => {
49
+ applyTextContentProjection(document, changes);
50
+ },
51
+ applyComponents: replaceComponentOverrideProjection,
52
+ applyManagedStyles: (styles) => {
53
+ applyRules([...styles.rules]);
54
+ },
55
+ };
56
+ export function applyHostWorkspaceProjection(plan) {
57
+ applyWorkspaceProjection(hostDocumentProjectionAdapter, plan);
58
+ }
@@ -0,0 +1,15 @@
1
+ import type { ReactElement, RefObject } from "react";
2
+ export interface PromptSettingsDialogProps {
3
+ open: boolean;
4
+ value: string;
5
+ onChange: (value: string) => void;
6
+ onOpenChange: (open: boolean) => void;
7
+ }
8
+ export interface PromptSettingsFieldsProps {
9
+ value: string;
10
+ onChange: (value: string) => void;
11
+ instructionsRef?: RefObject<HTMLTextAreaElement | null>;
12
+ }
13
+ /** Edits the instructions appended to every generated prompt. */
14
+ export declare function PromptSettingsFields({ value, onChange, instructionsRef, }: PromptSettingsFieldsProps): ReactElement;
15
+ export declare function PromptSettingsDialog({ open, value, onChange, onOpenChange, }: PromptSettingsDialogProps): ReactElement;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef } from "react";
3
+ import { Dialog } from "@base-ui/react/dialog";
4
+ import { IconX } from "@tabler/icons-react";
5
+ function portalContainer() {
6
+ return typeof document !== "undefined"
7
+ ? document.getElementById("nudge-ui-root")?.shadowRoot ?? document.body
8
+ : null;
9
+ }
10
+ /** Edits the instructions appended to every generated prompt. */
11
+ export function PromptSettingsFields({ value, onChange, instructionsRef, }) {
12
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "prompt-settings__field", children: _jsx("textarea", { ref: instructionsRef, id: "nudge-ui-custom-instructions", className: "prompt-settings__textarea", "data-test": "prompt-custom-instructions", "aria-label": "Custom instructions", rows: 6, value: value, onChange: (event) => onChange(event.currentTarget.value) }) }), _jsx("div", { className: "prompt-settings__actions", children: _jsx(Dialog.Close, { className: "button button--primary", "data-test": "prompt-settings-done", type: "button", children: "Done" }) })] }));
13
+ }
14
+ export function PromptSettingsDialog({ open, value, onChange, onOpenChange, }) {
15
+ const instructionsRef = useRef(null);
16
+ return (_jsx(Dialog.Root, { open: open, onOpenChange: onOpenChange, children: _jsxs(Dialog.Portal, { container: portalContainer(), children: [_jsx(Dialog.Backdrop, { className: "prompt-settings__backdrop", "data-test": "prompt-settings-backdrop" }), _jsxs(Dialog.Popup, { className: "prompt-settings__popup", "data-test": "prompt-settings-dialog", initialFocus: instructionsRef, children: [_jsxs("div", { className: "prompt-settings__header", children: [_jsx(Dialog.Title, { className: "prompt-settings__title", children: "Custom instructions" }), _jsx(Dialog.Close, { className: "icon-button icon-button--quiet prompt-settings__close", "aria-label": "Close custom instructions", "data-test": "prompt-settings-close", type: "button", children: _jsx(IconX, { size: "var(--icon-size-small)", stroke: 1.8, "aria-hidden": "true" }) })] }), _jsx(Dialog.Description, { className: "prompt-settings__description", children: "These instructions are added to the end of every copied prompt." }), _jsx(PromptSettingsFields, { value: value, onChange: onChange, instructionsRef: instructionsRef })] })] }) }));
17
+ }
@@ -0,0 +1,34 @@
1
+ import { type ChangeRecord } from "../changes/changesLog.js";
2
+ import { type StructuralChange } from "../projection/structuralProjection.js";
3
+ export interface ClipboardHandoffFingerprint {
4
+ readonly key: string;
5
+ readonly fingerprint: string;
6
+ }
7
+ export interface ClipboardHandoffSnapshot {
8
+ readonly changes: readonly ClipboardHandoffFingerprint[];
9
+ readonly structuralChanges: readonly ClipboardHandoffFingerprint[];
10
+ }
11
+ /** Validates an origin-local persisted clipboard checkpoint. */
12
+ export declare function isClipboardHandoffSnapshot(value: unknown): value is ClipboardHandoffSnapshot | null;
13
+ /** Captures the exact records included in a successful clipboard copy. */
14
+ export declare function recordClipboardHandoff(changes: readonly ChangeRecord[], structuralChanges?: readonly StructuralChange[]): void;
15
+ /** Returns a defensive copy for durable-session serialization. */
16
+ export declare function getClipboardHandoffSnapshot(): ClipboardHandoffSnapshot | null;
17
+ /** Replaces the in-memory checkpoint from a validated durable session. */
18
+ export declare function hydrateClipboardHandoff(value: ClipboardHandoffSnapshot | null): void;
19
+ export declare function clearClipboardHandoff(): void;
20
+ export declare function subscribeClipboardHandoff(listener: () => void): () => void;
21
+ /** Monotonic external-store snapshot for persistence and React consumers. */
22
+ export declare function getClipboardHandoffRevision(): number;
23
+ export declare function getLastClipboardReconciledCount(): number;
24
+ /**
25
+ * Checks a copied prompt against source-rendered output and reconciles only
26
+ * exact records that the browser can positively verify.
27
+ */
28
+ export declare function reconcileClipboardHandoff(): Promise<number>;
29
+ /**
30
+ * Watches source-driven document refreshes and page-return signals. The
31
+ * trailing debounce lets an HMR commit settle before verification lifts the
32
+ * inspector preview for two frames.
33
+ */
34
+ export declare function startClipboardHandoffController(doc?: Document): () => void;
@@ -0,0 +1,212 @@
1
+ import { changeKey } from "../changes/model.js";
2
+ import { subscribeChanges, } from "../changes/changesLog.js";
3
+ import {} from "../projection/structuralProjection.js";
4
+ import { getWorkspaceChanges } from "../changes/workspaceChanges.js";
5
+ import { documentRevisions, subscribeDocumentRevision } from "../tokens/resolution/cssomCollector.js";
6
+ import { handoffChangeFingerprint, handoffStructuralFingerprint, verifyAndReconcileHandoff, } from "../agent/verification.js";
7
+ const MAX_HANDOFF_RECORDS = 10_000;
8
+ const MAX_KEY_LENGTH = 16_384;
9
+ const MAX_FINGERPRINT_LENGTH = 1_048_576;
10
+ const RECONCILE_DEBOUNCE_MS = 450;
11
+ let checkpoint = null;
12
+ let revision = 0;
13
+ let lastReconciledCount = 0;
14
+ const listeners = new Set();
15
+ function notify() {
16
+ revision += 1;
17
+ for (const listener of listeners)
18
+ listener();
19
+ }
20
+ function cloneSnapshot(snapshot) {
21
+ return {
22
+ changes: snapshot.changes.map((entry) => ({ ...entry })),
23
+ structuralChanges: snapshot.structuralChanges.map((entry) => ({ ...entry })),
24
+ };
25
+ }
26
+ function isFingerprint(value) {
27
+ if (!value || typeof value !== "object" || Array.isArray(value))
28
+ return false;
29
+ const entry = value;
30
+ return Object.keys(entry).every((key) => key === "key" || key === "fingerprint")
31
+ && typeof entry.key === "string"
32
+ && entry.key.length > 0
33
+ && entry.key.length <= MAX_KEY_LENGTH
34
+ && typeof entry.fingerprint === "string"
35
+ && entry.fingerprint.length > 0
36
+ && entry.fingerprint.length <= MAX_FINGERPRINT_LENGTH;
37
+ }
38
+ /** Validates an origin-local persisted clipboard checkpoint. */
39
+ export function isClipboardHandoffSnapshot(value) {
40
+ if (value === null)
41
+ return true;
42
+ if (!value || typeof value !== "object" || Array.isArray(value))
43
+ return false;
44
+ const candidate = value;
45
+ if (!Object.keys(candidate).every((key) => key === "changes" || key === "structuralChanges")
46
+ || !Array.isArray(candidate.changes)
47
+ || !Array.isArray(candidate.structuralChanges)
48
+ || candidate.changes.length + candidate.structuralChanges.length > MAX_HANDOFF_RECORDS
49
+ || !candidate.changes.every(isFingerprint)
50
+ || !candidate.structuralChanges.every(isFingerprint)) {
51
+ return false;
52
+ }
53
+ const changeKeys = candidate.changes.map((entry) => entry.key);
54
+ const structuralKeys = candidate.structuralChanges.map((entry) => entry.key);
55
+ return new Set(changeKeys).size === changeKeys.length
56
+ && new Set(structuralKeys).size === structuralKeys.length;
57
+ }
58
+ /** Captures the exact records included in a successful clipboard copy. */
59
+ export function recordClipboardHandoff(changes, structuralChanges = []) {
60
+ checkpoint = {
61
+ changes: changes.map((change) => ({
62
+ key: changeKey(change),
63
+ fingerprint: handoffChangeFingerprint(change),
64
+ })),
65
+ structuralChanges: structuralChanges.map((change) => ({
66
+ key: change.id,
67
+ fingerprint: handoffStructuralFingerprint(change),
68
+ })),
69
+ };
70
+ lastReconciledCount = 0;
71
+ notify();
72
+ }
73
+ /** Returns a defensive copy for durable-session serialization. */
74
+ export function getClipboardHandoffSnapshot() {
75
+ return checkpoint ? cloneSnapshot(checkpoint) : null;
76
+ }
77
+ /** Replaces the in-memory checkpoint from a validated durable session. */
78
+ export function hydrateClipboardHandoff(value) {
79
+ if (!value && !checkpoint && lastReconciledCount === 0)
80
+ return;
81
+ checkpoint = value ? cloneSnapshot(value) : null;
82
+ lastReconciledCount = 0;
83
+ notify();
84
+ }
85
+ export function clearClipboardHandoff() {
86
+ if (!checkpoint && lastReconciledCount === 0)
87
+ return;
88
+ checkpoint = null;
89
+ lastReconciledCount = 0;
90
+ notify();
91
+ }
92
+ export function subscribeClipboardHandoff(listener) {
93
+ listeners.add(listener);
94
+ return () => listeners.delete(listener);
95
+ }
96
+ /** Monotonic external-store snapshot for persistence and React consumers. */
97
+ export function getClipboardHandoffRevision() {
98
+ return revision;
99
+ }
100
+ export function getLastClipboardReconciledCount() {
101
+ return lastReconciledCount;
102
+ }
103
+ function matchingChanges(snapshot) {
104
+ const expected = new Map(snapshot.changes.map((entry) => [entry.key, entry.fingerprint]));
105
+ return getWorkspaceChanges().changes.filter((change) => expected.get(changeKey(change)) === handoffChangeFingerprint(change));
106
+ }
107
+ function matchingStructuralChanges(snapshot) {
108
+ const expected = new Map(snapshot.structuralChanges.map((entry) => [entry.key, entry.fingerprint]));
109
+ return getWorkspaceChanges().structuralChanges.filter((change) => expected.get(change.id) === handoffStructuralFingerprint(change));
110
+ }
111
+ /** Drops checkpoint entries that no longer describe current canonical intent. */
112
+ function pruneCheckpoint() {
113
+ if (!checkpoint)
114
+ return false;
115
+ const changes = matchingChanges(checkpoint);
116
+ const structuralChanges = matchingStructuralChanges(checkpoint);
117
+ if (changes.length === checkpoint.changes.length
118
+ && structuralChanges.length === checkpoint.structuralChanges.length) {
119
+ return false;
120
+ }
121
+ checkpoint = changes.length + structuralChanges.length === 0
122
+ ? null
123
+ : {
124
+ changes: changes.map((change) => ({
125
+ key: changeKey(change),
126
+ fingerprint: handoffChangeFingerprint(change),
127
+ })),
128
+ structuralChanges: structuralChanges.map((change) => ({
129
+ key: change.id,
130
+ fingerprint: handoffStructuralFingerprint(change),
131
+ })),
132
+ };
133
+ notify();
134
+ return true;
135
+ }
136
+ /**
137
+ * Checks a copied prompt against source-rendered output and reconciles only
138
+ * exact records that the browser can positively verify.
139
+ */
140
+ export async function reconcileClipboardHandoff() {
141
+ const snapshot = checkpoint;
142
+ if (!snapshot)
143
+ return 0;
144
+ const changes = matchingChanges(snapshot);
145
+ const structuralChanges = matchingStructuralChanges(snapshot);
146
+ if (changes.length + structuralChanges.length === 0) {
147
+ pruneCheckpoint();
148
+ return 0;
149
+ }
150
+ const removed = await verifyAndReconcileHandoff({ changes, structuralChanges });
151
+ pruneCheckpoint();
152
+ if (removed > 0) {
153
+ lastReconciledCount = removed;
154
+ notify();
155
+ }
156
+ return removed;
157
+ }
158
+ /**
159
+ * Watches source-driven document refreshes and page-return signals. The
160
+ * trailing debounce lets an HMR commit settle before verification lifts the
161
+ * inspector preview for two frames.
162
+ */
163
+ export function startClipboardHandoffController(doc = document) {
164
+ const ownerWindow = doc.defaultView;
165
+ let timer = null;
166
+ let checking = false;
167
+ let stopped = false;
168
+ const schedule = () => {
169
+ if (stopped || checking || !checkpoint)
170
+ return;
171
+ if (timer !== null)
172
+ clearTimeout(timer);
173
+ timer = setTimeout(() => {
174
+ timer = null;
175
+ if (stopped || checking || !checkpoint)
176
+ return;
177
+ checking = true;
178
+ void reconcileClipboardHandoff()
179
+ .catch(() => undefined)
180
+ .finally(() => {
181
+ // Keep the guard through the MutationObserver microtask generated by
182
+ // restoring managed projections, preventing a verification loop.
183
+ setTimeout(() => { checking = false; }, 0);
184
+ });
185
+ }, RECONCILE_DEBOUNCE_MS);
186
+ };
187
+ const onCanonicalChange = () => {
188
+ pruneCheckpoint();
189
+ };
190
+ const onVisibilityChange = () => {
191
+ if (doc.visibilityState === "visible")
192
+ schedule();
193
+ };
194
+ // Initializes the document observer before registering the listener.
195
+ documentRevisions(doc);
196
+ const unsubscribeRevision = subscribeDocumentRevision(doc, schedule);
197
+ const unsubscribeChanges = subscribeChanges(onCanonicalChange);
198
+ ownerWindow?.addEventListener("focus", schedule);
199
+ ownerWindow?.addEventListener("pageshow", schedule);
200
+ doc.addEventListener("visibilitychange", onVisibilityChange);
201
+ schedule();
202
+ return () => {
203
+ stopped = true;
204
+ if (timer !== null)
205
+ clearTimeout(timer);
206
+ unsubscribeRevision();
207
+ unsubscribeChanges();
208
+ ownerWindow?.removeEventListener("focus", schedule);
209
+ ownerWindow?.removeEventListener("pageshow", schedule);
210
+ doc.removeEventListener("visibilitychange", onVisibilityChange);
211
+ };
212
+ }
@@ -0,0 +1 @@
1
+ export declare function copyToClipboard(text: string): Promise<void>;
@@ -0,0 +1,34 @@
1
+ export async function copyToClipboard(text) {
2
+ if (typeof navigator !== "undefined" && navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
3
+ try {
4
+ await navigator.clipboard.writeText(text);
5
+ return;
6
+ }
7
+ catch {
8
+ // fall through to legacy path
9
+ }
10
+ }
11
+ legacyCopy(text);
12
+ }
13
+ function legacyCopy(text) {
14
+ const doc = document;
15
+ const textarea = doc.createElement("textarea");
16
+ textarea.value = text;
17
+ textarea.setAttribute("readonly", "");
18
+ textarea.style.position = "fixed";
19
+ textarea.style.top = "0";
20
+ textarea.style.left = "0";
21
+ textarea.style.opacity = "0";
22
+ doc.body.appendChild(textarea);
23
+ textarea.select();
24
+ let ok = false;
25
+ try {
26
+ ok = doc.execCommand("copy");
27
+ }
28
+ finally {
29
+ doc.body.removeChild(textarea);
30
+ }
31
+ if (!ok) {
32
+ throw new Error("copyToClipboard failed: clipboard API unavailable and execCommand returned false");
33
+ }
34
+ }
@@ -0,0 +1,6 @@
1
+ import type { TokenEntry } from "../../css/model/index.js";
2
+ export interface DetectedFramework {
3
+ framework: string;
4
+ stylingSystem: string;
5
+ }
6
+ export declare function detectFramework(tokens: readonly TokenEntry[]): DetectedFramework;
@@ -0,0 +1,4 @@
1
+ import { detectStylingSystem } from "../runtime/runtimeConfig.js";
2
+ export function detectFramework(tokens) {
3
+ return { framework: "React", stylingSystem: detectStylingSystem(tokens) };
4
+ }
@@ -0,0 +1,7 @@
1
+ import type { ChangeRecord } from "../changes/changesLog.js";
2
+ import type { StructuralChange } from "../projection/structuralProjection.js";
3
+ export interface FrameworkHints {
4
+ framework?: string;
5
+ stylingSystem?: string;
6
+ }
7
+ export declare function generatePrompt(changes: ChangeRecord[], frameworkHints?: FrameworkHints, structuralChanges?: readonly StructuralChange[], customInstructions?: string): string;