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,13 @@
1
+ import type { AgentClientSnapshot } from "./client.js";
2
+ export type AgentConnectionStatusKind = "unavailable" | "connecting" | "working-disconnected" | "working" | "not-found" | "ready-to-connect" | "connected-not-listening" | "listening";
3
+ export interface AgentConnectionStatus {
4
+ readonly kind: AgentConnectionStatusKind;
5
+ readonly label: string;
6
+ readonly tone: "neutral" | "accent" | "warning" | "danger";
7
+ readonly action?: {
8
+ readonly kind: "connect" | "setup";
9
+ readonly label: "Connect" | "Set up";
10
+ };
11
+ }
12
+ /** Returns the user-facing connection state shared by the prompt UI and MCP panel. */
13
+ export declare function getAgentConnectionStatus(snapshot: AgentClientSnapshot): AgentConnectionStatus;
@@ -0,0 +1,35 @@
1
+ /** Returns the user-facing connection state shared by the prompt UI and MCP panel. */
2
+ export function getAgentConnectionStatus(snapshot) {
3
+ if (snapshot.state === "disabled") {
4
+ return { kind: "unavailable", label: "Unavailable in this build", tone: "neutral" };
5
+ }
6
+ if (snapshot.state === "pairing") {
7
+ return { kind: "connecting", label: "Connecting…", tone: "accent" };
8
+ }
9
+ if (!snapshot.paired && (snapshot.state === "working" || snapshot.request?.status === "working")) {
10
+ return { kind: "working-disconnected", label: "Disconnected · Last work status unknown", tone: "warning" };
11
+ }
12
+ if (snapshot.paired && (snapshot.state === "working" || snapshot.request?.status === "working")) {
13
+ return { kind: "working", label: "Connected · Agent working", tone: "accent" };
14
+ }
15
+ if (snapshot.paired && !snapshot.listenerActive) {
16
+ return {
17
+ kind: "connected-not-listening",
18
+ label: "Connected, not listening",
19
+ tone: "accent",
20
+ action: { kind: "setup", label: "Set up" },
21
+ };
22
+ }
23
+ if (!snapshot.companionReachable) {
24
+ return { kind: "not-found", label: "Companion not found", tone: "neutral" };
25
+ }
26
+ if (snapshot.listenerActive) {
27
+ return { kind: "listening", label: "Agent listening", tone: "accent" };
28
+ }
29
+ return {
30
+ kind: "ready-to-connect",
31
+ label: "Ready to connect agent",
32
+ tone: "accent",
33
+ action: { kind: "connect", label: "Connect" },
34
+ };
35
+ }
@@ -0,0 +1,21 @@
1
+ import { type AgentBridgeTransport, type AgentBridgeEndpointConfig, type AgentDiscoveryRequest, type AgentEventHandlers, type AgentEventSubscription, type AgentEventsRequest, type AgentPairRequest, type AgentPromptDispatch, type AgentDisconnectRequest, type AgentCanvasAcknowledgementRequest, type AgentSessionRequest, type AgentStatusSnapshot, type PairingResponse, type PromptDispatchResponse } from "./protocol.js";
2
+ /**
3
+ * HTTP/SSE browser adapter for the companion's canonical endpoints.
4
+ *
5
+ * The adapter is inert when no endpoint is configured. A host can publish an
6
+ * endpoint with `window.__NUDGE_UI_AGENT_BRIDGE__` or the meta tag named
7
+ * `nudge-ui-agent-bridge`; tests can inject a transport directly instead.
8
+ */
9
+ export declare class HttpAgentBridgeTransport implements AgentBridgeTransport {
10
+ private readonly config;
11
+ constructor(config?: AgentBridgeEndpointConfig);
12
+ discover(request: AgentDiscoveryRequest, signal?: AbortSignal): Promise<AgentStatusSnapshot | null>;
13
+ pair(request: AgentPairRequest, signal?: AbortSignal): Promise<PairingResponse>;
14
+ restore(request: AgentSessionRequest, signal?: AbortSignal): Promise<AgentStatusSnapshot | null>;
15
+ openEvents(request: AgentEventsRequest, handlers: AgentEventHandlers): AgentEventSubscription;
16
+ dispatch(request: AgentPromptDispatch, signal?: AbortSignal): Promise<PromptDispatchResponse>;
17
+ disconnect(request: AgentDisconnectRequest, signal?: AbortSignal): Promise<void>;
18
+ acknowledgeCanvasCommand(request: AgentCanvasAcknowledgementRequest, signal?: AbortSignal): Promise<void>;
19
+ }
20
+ /** Resolve host configuration without touching the network. */
21
+ export declare function getConfiguredAgentBridgeEndpoint(): AgentBridgeEndpointConfig | undefined;
@@ -0,0 +1,347 @@
1
+ import { AGENT_PROTOCOL_VERSION, defaultBridgePort, } from "./protocol.js";
2
+ function isRecord(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value);
4
+ }
5
+ function stringValue(value) {
6
+ return typeof value === "string" && value.length > 0 ? value : undefined;
7
+ }
8
+ function endpointValue(value) {
9
+ if (!isRecord(value))
10
+ return undefined;
11
+ const config = {
12
+ baseUrl: stringValue(value.baseUrl),
13
+ healthUrl: stringValue(value.healthUrl),
14
+ pairUrl: stringValue(value.pairUrl),
15
+ eventsUrl: stringValue(value.eventsUrl),
16
+ promptUrl: stringValue(value.promptUrl),
17
+ statusUrl: stringValue(value.statusUrl),
18
+ canvasAckUrl: stringValue(value.canvasAckUrl),
19
+ disconnectUrl: stringValue(value.disconnectUrl),
20
+ };
21
+ return Object.values(config).some((entry) => entry !== undefined) ? config : undefined;
22
+ }
23
+ function configuredEndpoint() {
24
+ if (typeof window === "undefined")
25
+ return undefined;
26
+ const target = window;
27
+ const globalConfig = endpointValue(target.__NUDGE_UI_AGENT_BRIDGE__)
28
+ ?? endpointValue(target.__NUDGE_UI_AGENT__);
29
+ if (globalConfig)
30
+ return globalConfig;
31
+ const meta = document.querySelector('meta[name="nudge-ui-agent-bridge"]');
32
+ const content = meta?.content.trim();
33
+ return content ? { baseUrl: content } : undefined;
34
+ }
35
+ function isLoopback(hostname) {
36
+ const normalized = hostname.toLowerCase();
37
+ return normalized === "localhost"
38
+ || normalized === "127.0.0.1"
39
+ || normalized === "[::1]"
40
+ || normalized === "::1";
41
+ }
42
+ function pageOrigin() {
43
+ return typeof window !== "undefined" && window.location.origin
44
+ ? window.location.origin
45
+ : "http://localhost";
46
+ }
47
+ function safeUrl(value, origin) {
48
+ try {
49
+ const url = new URL(value, origin);
50
+ if (url.protocol !== "http:" && url.protocol !== "https:")
51
+ return null;
52
+ // A same-origin reverse proxy is valid; a separately hosted bridge must
53
+ // remain loopback-only to match ADR-0013.
54
+ if (url.origin !== origin && !isLoopback(url.hostname))
55
+ return null;
56
+ return url;
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ }
62
+ function endpointUrl(config, projectId, key, fallbackPath, origin) {
63
+ const explicit = config[key];
64
+ if (explicit && key !== "baseUrl")
65
+ return safeUrl(explicit, origin);
66
+ const baseValue = config.baseUrl ?? `http://127.0.0.1:${defaultBridgePort(projectId)}`;
67
+ const base = safeUrl(baseValue, origin);
68
+ if (!base)
69
+ return null;
70
+ base.pathname = `${base.pathname.replace(/\/$/, "")}${fallbackPath}`;
71
+ return base;
72
+ }
73
+ function withQuery(url, values) {
74
+ const result = new URL(url.href);
75
+ for (const [key, value] of Object.entries(values))
76
+ result.searchParams.set(key, value);
77
+ return result;
78
+ }
79
+ function headers() {
80
+ return {
81
+ Accept: "application/json",
82
+ };
83
+ }
84
+ async function readJson(response) {
85
+ let payload;
86
+ try {
87
+ payload = await response.json();
88
+ }
89
+ catch {
90
+ payload = {};
91
+ }
92
+ if (!response.ok) {
93
+ const error = isRecord(payload) && isRecord(payload.error) ? payload.error : payload;
94
+ const message = isRecord(error) ? stringValue(error.message) : undefined;
95
+ throw new Error(message ?? `Agent bridge request failed (${response.status}).`);
96
+ }
97
+ return isRecord(payload) ? payload : {};
98
+ }
99
+ function statusPayload(value) {
100
+ if (!isRecord(value))
101
+ return null;
102
+ const status = isRecord(value.status) ? value.status : value;
103
+ if (typeof status.projectId !== "string"
104
+ || (status.connection !== "offline"
105
+ && status.connection !== "listening"
106
+ && status.connection !== "paired"
107
+ && status.connection !== "working")
108
+ || typeof status.listenerActive !== "boolean"
109
+ || typeof status.paired !== "boolean")
110
+ return null;
111
+ if (status.protocolVersion !== undefined && status.protocolVersion !== AGENT_PROTOCOL_VERSION)
112
+ return null;
113
+ const rawRequest = status.request;
114
+ let request = null;
115
+ if (rawRequest !== null && rawRequest !== undefined) {
116
+ if (!isRecord(rawRequest)
117
+ || typeof rawRequest.requestId !== "string"
118
+ || typeof rawRequest.projectId !== "string"
119
+ || typeof rawRequest.prompt !== "string"
120
+ || (rawRequest.status !== "working"
121
+ && rawRequest.status !== "completed"
122
+ && rawRequest.status !== "failed"
123
+ && rawRequest.status !== "interrupted"))
124
+ return null;
125
+ request = {
126
+ requestId: rawRequest.requestId,
127
+ projectId: rawRequest.projectId,
128
+ prompt: rawRequest.prompt,
129
+ status: rawRequest.status,
130
+ ...(typeof rawRequest.changeRevision === "number" ? { changeRevision: rawRequest.changeRevision } : {}),
131
+ ...(typeof rawRequest.summary === "string" ? { summary: rawRequest.summary } : {}),
132
+ ...(typeof rawRequest.error === "string" ? { error: rawRequest.error } : {}),
133
+ };
134
+ }
135
+ return {
136
+ protocolVersion: AGENT_PROTOCOL_VERSION,
137
+ projectId: status.projectId,
138
+ connection: status.connection,
139
+ listenerActive: status.listenerActive,
140
+ paired: status.paired,
141
+ request,
142
+ };
143
+ }
144
+ function eventPayload(value) {
145
+ if (!isRecord(value))
146
+ return null;
147
+ const envelope = value;
148
+ const event = isRecord(envelope.event) ? envelope.event : value;
149
+ const type = stringValue(event.type);
150
+ if (type === "status") {
151
+ const status = statusPayload(event.status);
152
+ return status ? { type: "status", status } : null;
153
+ }
154
+ if (type === "connected") {
155
+ const status = statusPayload(event.status);
156
+ return status ? { type: "connected", status } : null;
157
+ }
158
+ if (type === "disconnected") {
159
+ return { type: "disconnected", ...(stringValue(event.reason) ? { reason: stringValue(event.reason) } : {}) };
160
+ }
161
+ if (type === "canvas-command" && isRecord(event.command)) {
162
+ // The Canvas controller owns command validation. Preserve the shared
163
+ // shape here so the parent stage can consume this event without a second
164
+ // protocol vocabulary.
165
+ return { type: "canvas-command", command: event.command };
166
+ }
167
+ return null;
168
+ }
169
+ function eventData(event) {
170
+ if (typeof event.data !== "string")
171
+ return event.data;
172
+ try {
173
+ return JSON.parse(event.data);
174
+ }
175
+ catch {
176
+ return null;
177
+ }
178
+ }
179
+ /**
180
+ * HTTP/SSE browser adapter for the companion's canonical endpoints.
181
+ *
182
+ * The adapter is inert when no endpoint is configured. A host can publish an
183
+ * endpoint with `window.__NUDGE_UI_AGENT_BRIDGE__` or the meta tag named
184
+ * `nudge-ui-agent-bridge`; tests can inject a transport directly instead.
185
+ */
186
+ export class HttpAgentBridgeTransport {
187
+ config;
188
+ constructor(config = configuredEndpoint() ?? {}) {
189
+ this.config = config;
190
+ }
191
+ async discover(request, signal) {
192
+ const url = endpointUrl(this.config, request.projectId, "healthUrl", "/health", pageOrigin());
193
+ if (!url || typeof fetch !== "function")
194
+ return null;
195
+ const response = await fetch(withQuery(url, {
196
+ projectId: request.projectId,
197
+ }), {
198
+ method: "GET",
199
+ headers: headers(),
200
+ signal,
201
+ });
202
+ const payload = await readJson(response);
203
+ if (payload.protocolVersion !== AGENT_PROTOCOL_VERSION
204
+ || payload.projectId !== request.projectId
205
+ || (payload.origin !== undefined && payload.origin !== null && payload.origin !== request.origin))
206
+ return null;
207
+ return statusPayload(payload.status);
208
+ }
209
+ async pair(request, signal) {
210
+ const url = endpointUrl(this.config, request.projectId, "pairUrl", "/pair", pageOrigin());
211
+ if (!url || typeof fetch !== "function")
212
+ throw new Error("Agent bridge is unavailable.");
213
+ const response = await fetch(url, {
214
+ method: "POST",
215
+ headers: { ...headers(), "Content-Type": "application/json" },
216
+ body: JSON.stringify(request),
217
+ signal,
218
+ });
219
+ const payload = await readJson(response);
220
+ if (payload.protocolVersion !== AGENT_PROTOCOL_VERSION
221
+ || payload.projectId !== request.projectId
222
+ || payload.origin !== request.origin
223
+ || typeof payload.sessionToken !== "string") {
224
+ throw new Error("Agent bridge returned an invalid pairing response.");
225
+ }
226
+ const status = statusPayload(payload.status);
227
+ if (!status)
228
+ throw new Error("Agent bridge returned an invalid status.");
229
+ return {
230
+ protocolVersion: AGENT_PROTOCOL_VERSION,
231
+ projectId: request.projectId,
232
+ origin: request.origin,
233
+ sessionToken: payload.sessionToken,
234
+ status,
235
+ };
236
+ }
237
+ async restore(request, signal) {
238
+ const url = endpointUrl(this.config, request.projectId, "statusUrl", "/status", pageOrigin());
239
+ if (!url || typeof fetch !== "function")
240
+ return null;
241
+ const response = await fetch(withQuery(url, {
242
+ projectId: request.projectId,
243
+ sessionToken: request.sessionToken,
244
+ }), { method: "GET", headers: headers(), signal });
245
+ const payload = await readJson(response);
246
+ if (payload.protocolVersion !== AGENT_PROTOCOL_VERSION || payload.projectId !== request.projectId)
247
+ return null;
248
+ const status = statusPayload(payload);
249
+ if (!status || !status.paired)
250
+ return null;
251
+ return status;
252
+ }
253
+ openEvents(request, handlers) {
254
+ const url = endpointUrl(this.config, request.projectId, "eventsUrl", "/events", pageOrigin());
255
+ if (!url || typeof EventSource !== "function") {
256
+ queueMicrotask(() => handlers.onDisconnect("Agent event transport is unavailable."));
257
+ return { close: () => undefined };
258
+ }
259
+ const eventUrl = withQuery(url, {
260
+ projectId: request.projectId,
261
+ sessionToken: request.sessionToken,
262
+ });
263
+ const source = new EventSource(eventUrl.href);
264
+ let closed = false;
265
+ const handleMessage = (event) => {
266
+ const parsed = eventPayload(eventData(event));
267
+ if (parsed)
268
+ handlers.onEvent(parsed);
269
+ };
270
+ source.addEventListener("message", handleMessage);
271
+ source.addEventListener("status", handleMessage);
272
+ source.addEventListener("connected", handleMessage);
273
+ source.addEventListener("disconnected", handleMessage);
274
+ source.addEventListener("canvas-command", handleMessage);
275
+ source.onerror = () => {
276
+ if (closed)
277
+ return;
278
+ closed = true;
279
+ source.close();
280
+ handlers.onDisconnect("Agent event stream disconnected.");
281
+ };
282
+ return {
283
+ close: () => {
284
+ if (closed)
285
+ return;
286
+ closed = true;
287
+ source.close();
288
+ },
289
+ };
290
+ }
291
+ async dispatch(request, signal) {
292
+ const url = endpointUrl(this.config, request.projectId, "promptUrl", "/prompt", pageOrigin());
293
+ if (!url || typeof fetch !== "function")
294
+ throw new Error("Agent bridge is unavailable.");
295
+ const response = await fetch(url, {
296
+ method: "POST",
297
+ headers: { ...headers(), "Content-Type": "application/json" },
298
+ body: JSON.stringify(request),
299
+ signal,
300
+ });
301
+ const payload = await readJson(response);
302
+ if (!isRecord(payload.request)
303
+ || typeof payload.request.requestId !== "string"
304
+ || typeof payload.request.projectId !== "string"
305
+ || typeof payload.request.prompt !== "string"
306
+ || payload.status !== "working") {
307
+ throw new Error("Agent bridge returned an invalid prompt response.");
308
+ }
309
+ const requestBody = {
310
+ requestId: payload.request.requestId,
311
+ projectId: payload.request.projectId,
312
+ prompt: payload.request.prompt,
313
+ ...(typeof payload.request.changeRevision === "number" ? { changeRevision: payload.request.changeRevision } : {}),
314
+ };
315
+ return { request: requestBody, status: "working" };
316
+ }
317
+ async disconnect(request, signal) {
318
+ const url = endpointUrl(this.config, request.projectId, "disconnectUrl", "/disconnect", pageOrigin());
319
+ if (!url || typeof fetch !== "function")
320
+ return;
321
+ await fetch(url, {
322
+ method: "POST",
323
+ headers: { ...headers(), "Content-Type": "application/json" },
324
+ body: JSON.stringify(request),
325
+ signal,
326
+ });
327
+ }
328
+ async acknowledgeCanvasCommand(request, signal) {
329
+ const url = endpointUrl(this.config, request.projectId, "canvasAckUrl", "/canvas/ack", pageOrigin());
330
+ if (!url || typeof fetch !== "function")
331
+ return;
332
+ await fetch(url, {
333
+ method: "POST",
334
+ headers: { ...headers(), "Content-Type": "application/json" },
335
+ body: JSON.stringify({
336
+ projectId: request.projectId,
337
+ sessionToken: request.sessionToken,
338
+ ...request.acknowledgement,
339
+ }),
340
+ signal,
341
+ });
342
+ }
343
+ }
344
+ /** Resolve host configuration without touching the network. */
345
+ export function getConfiguredAgentBridgeEndpoint() {
346
+ return configuredEndpoint();
347
+ }
@@ -0,0 +1,95 @@
1
+ import type { AgentStatusSnapshot, CanvasCommand, CanvasCommandAcknowledgement, CanvasCommandResult, PairingResponse, PromptDispatchResponse } from "../../internal/agent-protocol.js";
2
+ /**
3
+ * Browser transport port for the shared Nudge agent protocol.
4
+ *
5
+ * Domain messages come from the private shared protocol module; this file only
6
+ * adds the browser's injectable HTTP/SSE transport boundary. Keeping that
7
+ * boundary local lets inspector tests use a deterministic fake while the
8
+ * companion remains the owner of MCP and Node-specific code.
9
+ */
10
+ export { AGENT_PROTOCOL_LIMITS, AGENT_PROTOCOL_VERSION, defaultBridgePort, CANVAS_COMMAND_TYPES, canonicalOrigin, isAgentPromptRequest, isAgentStatusUpdate, isAllowedOrigin, isCanvasCommand, isCanvasGroup, isCanvasState, isCanonicalOrigin, isProjectIdentity, isSameOriginRoute, protocolError, validateRoutes, } from "../../internal/agent-protocol.js";
11
+ export type { AgentConnectionState, AgentProjectIdentity, AgentPromptRequest, AgentRequestOutcome, AgentRequestStatus, AgentRoute, AgentStatusSnapshot, AgentStatusUpdate, BridgeCanvasCommandEvent, BridgeConnectedEvent, BridgeDisconnectedEvent, BridgeEnvelope, BridgeEvent, BridgeEventType, BridgeStatusEvent, CanvasCommand, CanvasCommandAcknowledgement, CanvasCommandError, CanvasCommandResult, CanvasGroup, CanvasGroupOwner, CanvasState, FitCanvasCommand, FocusCanvasGroupCommand, PairingRequest, PairingResponse, PresentRoutesCommand, PromptDispatchRequest, PromptDispatchResponse, ReadCanvasStateCommand, RemoveCanvasGroupCommand, StatusEventRequest, AgentProtocolVersion, } from "../../internal/agent-protocol.js";
12
+ export interface AgentBridgeEndpointConfig {
13
+ readonly baseUrl?: string;
14
+ readonly healthUrl?: string;
15
+ readonly pairUrl?: string;
16
+ readonly eventsUrl?: string;
17
+ readonly promptUrl?: string;
18
+ readonly statusUrl?: string;
19
+ readonly canvasAckUrl?: string;
20
+ readonly disconnectUrl?: string;
21
+ }
22
+ export interface AgentDiscoveryRequest {
23
+ readonly projectId: string;
24
+ readonly origin: string;
25
+ }
26
+ export interface AgentPairRequest {
27
+ readonly projectId: string;
28
+ readonly origin: string;
29
+ readonly pageUrl?: string;
30
+ }
31
+ export interface AgentEventsRequest {
32
+ readonly projectId: string;
33
+ readonly origin: string;
34
+ readonly sessionToken: string;
35
+ }
36
+ export interface AgentSessionRequest {
37
+ readonly projectId: string;
38
+ readonly origin: string;
39
+ readonly sessionToken: string;
40
+ }
41
+ export interface AgentPromptDispatch {
42
+ readonly projectId: string;
43
+ readonly sessionToken: string;
44
+ readonly prompt: string;
45
+ readonly changeRevision?: number;
46
+ }
47
+ export interface AgentDisconnectRequest {
48
+ readonly projectId: string;
49
+ readonly origin: string;
50
+ readonly sessionToken: string;
51
+ }
52
+ export interface AgentCanvasAcknowledgementRequest {
53
+ readonly projectId: string;
54
+ readonly origin: string;
55
+ readonly sessionToken: string;
56
+ readonly acknowledgement: CanvasCommandAcknowledgement;
57
+ }
58
+ export interface AgentEventHandlers {
59
+ readonly onEvent: (event: AgentBridgeEvent) => void;
60
+ readonly onDisconnect: (reason?: string) => void;
61
+ }
62
+ export interface AgentEventSubscription {
63
+ readonly close: () => void;
64
+ }
65
+ /** Events delivered by the companion's SSE stream. */
66
+ export type AgentBridgeEvent = {
67
+ readonly type: "status";
68
+ readonly status: AgentStatusSnapshot;
69
+ } | {
70
+ readonly type: "connected";
71
+ readonly status: AgentStatusSnapshot;
72
+ } | {
73
+ readonly type: "disconnected";
74
+ readonly reason?: string;
75
+ } | {
76
+ readonly type: "canvas-command";
77
+ readonly command: CanvasCommand;
78
+ };
79
+ export interface AgentBridgeTransport {
80
+ readonly discover: (request: AgentDiscoveryRequest, signal?: AbortSignal) => Promise<AgentStatusSnapshot | null>;
81
+ readonly restore?: (request: AgentSessionRequest, signal?: AbortSignal) => Promise<AgentStatusSnapshot | null>;
82
+ readonly pair: (request: AgentPairRequest, signal?: AbortSignal) => Promise<PairingResponse>;
83
+ readonly openEvents: (request: AgentEventsRequest, handlers: AgentEventHandlers) => AgentEventSubscription;
84
+ readonly dispatch: (request: AgentPromptDispatch, signal?: AbortSignal) => Promise<PromptDispatchResponse | null>;
85
+ readonly disconnect?: (request: AgentDisconnectRequest, signal?: AbortSignal) => Promise<void>;
86
+ readonly acknowledgeCanvasCommand?: (request: AgentCanvasAcknowledgementRequest, signal?: AbortSignal) => Promise<void>;
87
+ }
88
+ export interface AgentClientOptions {
89
+ readonly projectId: string;
90
+ readonly origin?: string;
91
+ readonly transport?: AgentBridgeTransport;
92
+ readonly endpoint?: AgentBridgeEndpointConfig;
93
+ readonly discoveryIntervalMs?: number;
94
+ readonly canvasCommandHandler?: (command: CanvasCommand) => CanvasCommandResult | Promise<CanvasCommandResult>;
95
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Browser transport port for the shared Nudge agent protocol.
3
+ *
4
+ * Domain messages come from the private shared protocol module; this file only
5
+ * adds the browser's injectable HTTP/SSE transport boundary. Keeping that
6
+ * boundary local lets inspector tests use a deterministic fake while the
7
+ * companion remains the owner of MCP and Node-specific code.
8
+ */
9
+ export { AGENT_PROTOCOL_LIMITS, AGENT_PROTOCOL_VERSION, defaultBridgePort, CANVAS_COMMAND_TYPES, canonicalOrigin, isAgentPromptRequest, isAgentStatusUpdate, isAllowedOrigin, isCanvasCommand, isCanvasGroup, isCanvasState, isCanonicalOrigin, isProjectIdentity, isSameOriginRoute, protocolError, validateRoutes, } from "../../internal/agent-protocol.js";
@@ -0,0 +1,39 @@
1
+ import { type ChangeRecord } from "../changes/changesLog.js";
2
+ import { type StructuralChange } from "../projection/structuralProjection.js";
3
+ export interface HandoffSnapshot {
4
+ readonly changes: readonly ChangeRecord[];
5
+ readonly structuralChanges: readonly StructuralChange[];
6
+ }
7
+ /**
8
+ * User-facing agent completion state, named once.
9
+ * "completed" means the agent finished; "verified" means completed work was
10
+ * positively reconciled against source-rendered output.
11
+ */
12
+ export type AgentCompletionStatus = "completed" | "verified";
13
+ /** Stable, preview-metadata-free identity for one prompt handoff record. */
14
+ export declare function handoffChangeFingerprint(change: ChangeRecord): string;
15
+ /** Stable identity for one structural record included in a prompt handoff. */
16
+ export declare function handoffStructuralFingerprint(change: StructuralChange): string;
17
+ /**
18
+ * Positively verifies browser-observable source results after the inspector's
19
+ * own projections have been removed. Component props and interaction states
20
+ * intentionally remain unresolved because rendered output alone cannot prove
21
+ * that their source was updated.
22
+ */
23
+ export declare function verifiedChangeKeys(sentChanges: readonly ChangeRecord[], doc?: Document): Set<string>;
24
+ /** Captures the exact canonical edits associated with one dispatched prompt. */
25
+ export declare function recordAgentDispatch(revision: number, changes: readonly ChangeRecord[], structuralChanges?: readonly StructuralChange[]): void;
26
+ /** Drops a captured revision when the bridge rejects its dispatch. */
27
+ export declare function discardAgentDispatch(revision: number): void;
28
+ /** Returns how many canonical edits were in flight for one dispatch. */
29
+ export declare function getAgentDispatchSize(revision: number): number;
30
+ /**
31
+ * Reconciles only records that still equal the sent snapshot and that remain
32
+ * observable after removing Nudge's own preview. Newer edits and ambiguous
33
+ * records are preserved.
34
+ */
35
+ export declare function verifyAndReconcileHandoff(snapshot: HandoffSnapshot): Promise<number>;
36
+ /** Reconciles the captured records for one completed connected-agent request. */
37
+ export declare function verifyAndReconcileAgentDispatch(revision: number): Promise<number>;
38
+ /** Test/session reset for in-memory dispatch snapshots. */
39
+ export declare function resetAgentVerification(): void;