nudge-ui 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/agentCommand.d.ts +0 -1
- package/dist/cli/agentCommand.js +0 -1
- package/dist/client.mjs +238 -122
- package/dist/compiler/ast.d.ts +0 -6
- package/dist/compiler/ast.js +0 -5
- package/dist/compiler/componentContractTypes.d.ts +11 -5
- package/dist/compiler/componentContracts.js +3 -9
- package/dist/compiler/componentInstrumentation.d.ts +2 -13
- package/dist/compiler/componentInstrumentation.js +3 -12
- package/dist/compiler/componentPolicyResolution.d.ts +3 -22
- package/dist/compiler/componentPolicyResolution.js +6 -38
- package/dist/compiler/identityAttributes.d.ts +2 -0
- package/dist/compiler/identityAttributes.js +2 -0
- package/dist/compiler/index.d.ts +0 -1
- package/dist/compiler/index.js +0 -1
- package/dist/compiler/packageComponentContracts.d.ts +10 -19
- package/dist/compiler/packageComponentContracts.js +60 -43
- package/dist/compiler/reactComponentProtocols.d.ts +0 -7
- package/dist/compiler/reactComponentProtocols.js +0 -7
- package/dist/compiler/reactIdentity.d.ts +2 -2
- package/dist/compiler/reactIdentity.js +41 -43
- package/dist/compiler/sourcePaths.d.ts +4 -8
- package/dist/compiler/sourcePaths.js +6 -8
- package/dist/css/dialects/index.d.ts +2 -21
- package/dist/css/dialects/index.js +2 -9
- package/dist/css/dialects/tailwind.d.ts +2 -16
- package/dist/css/dialects/tailwind.js +2 -25
- package/dist/css/dialects/vanillaExtract.d.ts +1 -9
- package/dist/css/dialects/vanillaExtract.js +0 -1
- package/dist/css/index.d.ts +0 -8
- package/dist/css/index.js +0 -8
- package/dist/css/model/index.d.ts +6 -38
- package/dist/css/model/index.js +0 -9
- package/dist/css/token-inventory/index.d.ts +0 -23
- package/dist/css/token-inventory/index.js +0 -23
- package/dist/css/token-inventory/inventory.js +4 -16
- package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
- package/dist/css/token-inventory/parseStylesheet.js +5 -42
- package/dist/css/token-inventory/policy.d.ts +2 -39
- package/dist/css/token-inventory/policy.js +2 -39
- package/dist/css/token-inventory/types.d.ts +2 -15
- package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
- package/dist/css/value-semantics/borderSemantics.js +5 -23
- package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
- package/dist/css/value-semantics/boxSemantics.js +1 -7
- package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
- package/dist/css/value-semantics/colorSemantics.js +9 -40
- package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
- package/dist/css/value-semantics/cssSyntax.js +39 -11
- package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
- package/dist/css/value-semantics/fontSemantics.js +7 -25
- package/dist/css/value-semantics/index.d.ts +1 -12
- package/dist/css/value-semantics/index.js +1 -12
- package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
- package/dist/css/value-semantics/propertyPolicy.js +47 -59
- package/dist/css/value-semantics/stringMaps.d.ts +0 -1
- package/dist/css/value-semantics/structuredValues.d.ts +3 -37
- package/dist/css/value-semantics/structuredValues.js +6 -17
- package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
- package/dist/css/value-semantics/tokenInterpretation.js +7 -21
- package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
- package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
- package/dist/hosts/astro/clientAsset.d.ts +1 -5
- package/dist/hosts/astro/clientAsset.js +1 -5
- package/dist/hosts/astro/clientTransport.d.ts +0 -1
- package/dist/hosts/astro/clientTransport.js +4 -9
- package/dist/hosts/astro/integration.d.ts +2 -28
- package/dist/hosts/astro/integration.js +7 -36
- package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
- package/dist/hosts/astro/markdownIdentity.js +0 -3
- package/dist/hosts/astro/middleware.d.ts +1 -12
- package/dist/hosts/astro/middleware.js +1 -12
- package/dist/hosts/astro/projectContext.d.ts +1 -9
- package/dist/hosts/astro/projectContext.js +2 -11
- package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
- package/dist/hosts/astro/responseInstrumentation.js +5 -34
- package/dist/hosts/environment.d.ts +0 -8
- package/dist/hosts/environment.js +0 -1
- package/dist/hosts/next/index.js +1 -3
- package/dist/hosts/next/loader.d.ts +5 -44
- package/dist/hosts/next/loader.js +22 -103
- package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
- package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
- package/dist/hosts/next/manifest.d.ts +2 -16
- package/dist/hosts/next/manifest.js +18 -20
- package/dist/hosts/next/mount.d.ts +1 -11
- package/dist/hosts/next/mount.js +1 -11
- package/dist/hosts/next/repositoryScope.d.ts +2 -17
- package/dist/hosts/next/repositoryScope.js +2 -17
- package/dist/hosts/next/sidecar.d.ts +0 -13
- package/dist/hosts/next/sidecar.js +25 -110
- package/dist/hosts/next/wrapper.d.ts +0 -31
- package/dist/hosts/next/wrapper.js +13 -64
- package/dist/hosts/projectBridge.d.ts +0 -2
- package/dist/hosts/projectBridge.js +0 -2
- package/dist/hosts/reactRendererCapture.d.ts +2 -0
- package/dist/hosts/reactRendererCapture.js +12 -0
- package/dist/hosts/static/cli.d.ts +0 -4
- package/dist/hosts/static/cli.js +0 -3
- package/dist/hosts/static/html/bootstrap.d.ts +1 -18
- package/dist/hosts/static/html/bootstrap.js +2 -14
- package/dist/hosts/static/manifest.d.ts +2 -15
- package/dist/hosts/static/manifest.js +5 -18
- package/dist/hosts/static/server.d.ts +4 -38
- package/dist/hosts/static/server.js +17 -67
- package/dist/hosts/vite/index.d.ts +0 -10
- package/dist/hosts/vite/index.js +0 -10
- package/dist/hosts/vite/react.d.ts +4 -17
- package/dist/hosts/vite/react.js +18 -35
- package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
- package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
- package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
- package/dist/hosts/vite/vite.d.ts +5 -26
- package/dist/hosts/vite/vite.js +44 -80
- package/dist/html/dom.d.ts +0 -1
- package/dist/html/dom.js +0 -1
- package/dist/html/identity.d.ts +1 -15
- package/dist/html/identity.js +1 -8
- package/dist/html/insertions.d.ts +2 -8
- package/dist/html/insertions.js +1 -1
- package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
- package/dist/inspector/agent/McpConnectionDialog.js +1 -6
- package/dist/inspector/agent/activity.d.ts +1 -1
- package/dist/inspector/agent/activity.js +1 -1
- package/dist/inspector/agent/client.d.ts +2 -26
- package/dist/inspector/agent/client.js +17 -64
- package/dist/inspector/agent/connectionStatus.d.ts +0 -1
- package/dist/inspector/agent/connectionStatus.js +0 -1
- package/dist/inspector/agent/httpTransport.d.ts +0 -8
- package/dist/inspector/agent/httpTransport.js +21 -39
- package/dist/inspector/agent/protocol.d.ts +1 -10
- package/dist/inspector/agent/protocol.js +1 -9
- package/dist/inspector/agent/verification.d.ts +2 -19
- package/dist/inspector/agent/verification.js +7 -43
- package/dist/inspector/boot.d.ts +3 -1
- package/dist/inspector/boot.js +12 -20
- package/dist/inspector/canvas/AgentActivityOverlay.d.ts +1 -1
- package/dist/inspector/canvas/AgentActivityOverlay.js +1 -1
- package/dist/inspector/canvas/CanvasCard.js +7 -14
- package/dist/inspector/canvas/CanvasElementOverlay.js +117 -50
- package/dist/inspector/canvas/CanvasWorkspace.js +15 -29
- package/dist/inspector/canvas/PageCard.d.ts +0 -1
- package/dist/inspector/canvas/PageCard.js +0 -1
- package/dist/inspector/canvas/SketchToolOptions.d.ts +0 -1
- package/dist/inspector/canvas/SketchToolOptions.js +0 -6
- package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +1 -6
- package/dist/inspector/canvas/ToolOptionsDrawer.js +2 -8
- package/dist/inspector/canvas/activeCanvasDocument.d.ts +0 -2
- package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
- package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
- package/dist/inspector/canvas/agentPresentation.js +3 -14
- package/dist/inspector/canvas/canvasFrame.d.ts +2 -6
- package/dist/inspector/canvas/canvasFrame.js +1 -2
- package/dist/inspector/canvas/canvasResize.d.ts +1 -6
- package/dist/inspector/canvas/canvasResize.js +1 -6
- package/dist/inspector/canvas/canvasStore.d.ts +4 -12
- package/dist/inspector/canvas/canvasStore.js +12 -26
- package/dist/inspector/canvas/frameConnection.d.ts +1 -7
- package/dist/inspector/canvas/frameContent.d.ts +0 -1
- package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
- package/dist/inspector/canvas/frameLifecycle.js +11 -0
- package/dist/inspector/canvas/frameProtocol.d.ts +5 -40
- package/dist/inspector/canvas/frameProtocol.js +1 -24
- package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
- package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
- package/dist/inspector/canvas/layout.d.ts +10 -22
- package/dist/inspector/canvas/layout.js +0 -3
- package/dist/inspector/canvas/normalizeUrl.js +1 -8
- package/dist/inspector/canvas/pageSurface.d.ts +1 -6
- package/dist/inspector/canvas/pageSurface.js +1 -6
- package/dist/inspector/canvas/projection.d.ts +4 -25
- package/dist/inspector/canvas/projection.js +22 -72
- package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
- package/dist/inspector/canvas/rendererBootstrap.js +6 -14
- package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
- package/dist/inspector/canvas/rendererCidIndex.js +0 -5
- package/dist/inspector/canvas/rendererElementSelector.js +29 -27
- package/dist/inspector/canvas/rendererMessageRouter.d.ts +0 -1
- package/dist/inspector/canvas/rendererMessageRouter.js +0 -1
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +1 -5
- package/dist/inspector/canvas/rendererSelectionProxy.js +2 -7
- package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
- package/dist/inspector/canvas/rendererStylesheet.js +9 -2
- package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
- package/dist/inspector/canvas/resizeHandleScale.js +1 -10
- package/dist/inspector/canvas/sessionStore.d.ts +1 -7
- package/dist/inspector/canvas/sessionStore.js +21 -34
- package/dist/inspector/canvas/staleChangeDetector.js +1 -4
- package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
- package/dist/inspector/canvas/toolbarScale.js +1 -4
- package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
- package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
- package/dist/inspector/canvas/viewStore.js +1 -1
- package/dist/inspector/canvas/wheelPan.d.ts +1 -1
- package/dist/inspector/canvas/wheelPan.js +1 -1
- package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
- package/dist/inspector/canvas/workspaceLease.js +1 -7
- package/dist/inspector/changes/codecs.js +2 -1
- package/dist/inspector/changes/draftPreview.d.ts +1 -6
- package/dist/inspector/changes/draftPreview.js +15 -30
- package/dist/inspector/changes/editModel.d.ts +3 -13
- package/dist/inspector/changes/editModel.js +1 -2
- package/dist/inspector/changes/managedStyleProjection.js +4 -14
- package/dist/inspector/changes/model.d.ts +0 -5
- package/dist/inspector/changes/model.js +1 -8
- package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
- package/dist/inspector/changes/previewDiagnostics.js +4 -20
- package/dist/inspector/changes/previewVerification.d.ts +25 -0
- package/dist/inspector/changes/previewVerification.js +34 -0
- package/dist/inspector/changes/structuralTypes.d.ts +2 -4
- package/dist/inspector/changes/types.d.ts +3 -10
- package/dist/inspector/clientManifest.d.ts +17 -6
- package/dist/inspector/clientManifest.js +16 -3
- package/dist/inspector/comments/CommentsOverlay.js +48 -7
- package/dist/inspector/comments/element.d.ts +1 -2
- package/dist/inspector/comments/element.js +1 -2
- package/dist/inspector/comments/store.d.ts +1 -1
- package/dist/inspector/comments/store.js +1 -1
- package/dist/inspector/comments/verification.d.ts +8 -2
- package/dist/inspector/comments/verification.js +18 -10
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +10 -7
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
- package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
- package/dist/inspector/componentSemantics/changeModel.js +2 -4
- package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
- package/dist/inspector/componentSemantics/react/callsites.js +261 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
- package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
- package/dist/inspector/componentSemantics/react/fibers.js +30 -0
- package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
- package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
- package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
- package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
- package/dist/inspector/componentSemantics/textBinding.d.ts +1 -9
- package/dist/inspector/componentSemantics/textBinding.js +16 -42
- package/dist/inspector/componentSemantics/types.d.ts +8 -27
- package/dist/inspector/componentSemantics/types.js +0 -1
- package/dist/inspector/conformance/borderCases.d.ts +0 -5
- package/dist/inspector/conformance/borderCases.js +0 -5
- package/dist/inspector/conformance/colorCases.d.ts +0 -6
- package/dist/inspector/conformance/colorCases.js +0 -6
- package/dist/inspector/conformance/fixture.d.ts +1 -5
- package/dist/inspector/conformance/fixture.js +1 -5
- package/dist/inspector/conformance/spacingCases.d.ts +0 -4
- package/dist/inspector/conformance/spacingCases.js +0 -4
- package/dist/inspector/conformance/typographyCases.d.ts +0 -5
- package/dist/inspector/conformance/typographyCases.js +0 -5
- package/dist/inspector/drafts/draftStore.d.ts +7 -21
- package/dist/inspector/drafts/draftStore.js +15 -5
- package/dist/inspector/drafts/model.d.ts +7 -15
- package/dist/inspector/drafts/model.js +0 -2
- package/dist/inspector/drafts/store.d.ts +1 -8
- package/dist/inspector/drafts/store.js +3 -10
- package/dist/inspector/editScope.d.ts +0 -1
- package/dist/inspector/editScope.js +0 -1
- package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
- package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
- package/dist/inspector/inline-text/inlineTextEditor.d.ts +2 -8
- package/dist/inspector/inline-text/inlineTextEditor.js +26 -79
- package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
- package/dist/inspector/inline-text/textEditChange.d.ts +0 -1
- package/dist/inspector/inspection/bridge.d.ts +2 -6
- package/dist/inspector/inspection/bridge.js +4 -12
- package/dist/inspector/inspection/browserCssInspection.d.ts +4 -11
- package/dist/inspector/inspection/browserCssInspection.js +4 -8
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
- package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
- package/dist/inspector/inspection/selectionProperty.js +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.js +5 -21
- package/dist/inspector/iterations/capture.d.ts +0 -1
- package/dist/inspector/iterations/capture.js +4 -9
- package/dist/inspector/iterations/client.d.ts +0 -1
- package/dist/inspector/iterations/client.js +0 -1
- package/dist/inspector/iterations/coordinator.d.ts +0 -1
- package/dist/inspector/iterations/coordinator.js +0 -1
- package/dist/inspector/iterations/prompt.d.ts +0 -1
- package/dist/inspector/iterations/prompt.js +0 -1
- package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
- package/dist/inspector/overlay/DomNavigator.js +39 -15
- package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
- package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
- package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
- package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
- package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
- package/dist/inspector/overlay/clickPolicy.js +3 -14
- package/dist/inspector/overlay/dropGuide.d.ts +0 -3
- package/dist/inspector/overlay/dropGuide.js +0 -3
- package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
- package/dist/inspector/overlay/frameThrottle.js +0 -1
- package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
- package/dist/inspector/overlay/interactionStyles.js +2 -8
- package/dist/inspector/overlay/measurementGeometry.js +4 -12
- package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
- package/dist/inspector/overlay/selectedGeometry.js +1 -8
- package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
- package/dist/inspector/overlay/spacingGestures.js +151 -31
- package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
- package/dist/inspector/overlay/structuralGestures.js +1 -4
- package/dist/inspector/pageInspector.d.ts +4 -13
- package/dist/inspector/pageInspector.js +25 -32
- package/dist/inspector/projection/cssEscapes.d.ts +0 -1
- package/dist/inspector/projection/cssEscapes.js +2 -4
- package/dist/inspector/projection/draftProjection.d.ts +2 -14
- package/dist/inspector/projection/draftProjection.js +1 -8
- package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
- package/dist/inspector/projection/managedStylesheet.js +4 -22
- package/dist/inspector/projection/renderedInstance.d.ts +5 -28
- package/dist/inspector/projection/renderedInstance.js +6 -32
- package/dist/inspector/projection/structuralProjection.d.ts +7 -39
- package/dist/inspector/projection/structuralProjection.js +17 -52
- package/dist/inspector/projection/textProjection.d.ts +2 -14
- package/dist/inspector/projection/textProjection.js +17 -70
- package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
- package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
- package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -9
- package/dist/inspector/prompt/clipboardHandoff.js +1 -9
- package/dist/inspector/prompt/generatePrompt.d.ts +1 -1
- package/dist/inspector/prompt/generatePrompt.js +10 -25
- package/dist/inspector/prompt/promptSettings.d.ts +0 -3
- package/dist/inspector/prompt/promptSettings.js +0 -3
- package/dist/inspector/runtime/devFlag.d.ts +2 -25
- package/dist/inspector/runtime/devFlag.js +4 -31
- package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
- package/dist/inspector/runtime/editorShell.d.ts +0 -1
- package/dist/inspector/runtime/editorShell.js +0 -1
- package/dist/inspector/runtime/inspectorStorage.d.ts +1 -7
- package/dist/inspector/runtime/inspectorStorage.js +1 -6
- package/dist/inspector/runtime/ownedStylesheets.d.ts +2 -8
- package/dist/inspector/runtime/ownedStylesheets.js +2 -8
- package/dist/inspector/runtime/runtimeConfig.d.ts +12 -86
- package/dist/inspector/runtime/runtimeConfig.js +9 -50
- package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +3 -13
- package/dist/inspector/runtime/runtimeIdentityClaims.js +9 -19
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +4 -36
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +7 -40
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
- package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
- package/dist/inspector/selection/editScope.d.ts +1 -7
- package/dist/inspector/selection/editScope.js +2 -12
- package/dist/inspector/selection/editTarget.d.ts +1 -5
- package/dist/inspector/selection/hierarchy.d.ts +11 -11
- package/dist/inspector/selection/hierarchy.js +42 -24
- package/dist/inspector/selection/selectionStore.d.ts +0 -3
- package/dist/inspector/selection/selectionStore.js +5 -16
- package/dist/inspector/selection/sourceSite.d.ts +1 -5
- package/dist/inspector/selection/sourceSite.js +2 -8
- package/dist/inspector/selection/styleSelection.d.ts +1 -5
- package/dist/inspector/selection/styleSelection.js +1 -5
- package/dist/inspector/session/lifecycle.d.ts +1 -9
- package/dist/inspector/session/lifecycle.js +0 -1
- package/dist/inspector/session/sessionContext.d.ts +0 -4
- package/dist/inspector/session/sessionContext.js +0 -4
- package/dist/inspector/session/sessionFactory.d.ts +0 -9
- package/dist/inspector/session/sessionFactory.js +0 -6
- package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
- package/dist/inspector/settings/SettingsDialog.js +5 -3
- package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
- package/dist/inspector/shell/AgentStatusButton.js +5 -5
- package/dist/inspector/shell/ChangesLog.js +3 -4
- package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
- package/dist/inspector/shell/CopyPromptButton.js +12 -11
- package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
- package/dist/inspector/shell/InspectorEditors.js +14 -0
- package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
- package/dist/inspector/shell/InspectorPanel.js +8 -0
- package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
- package/dist/inspector/shell/InspectorSelection.js +20 -0
- package/dist/inspector/shell/InspectorShell.js +26 -48
- package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
- package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
- package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalButton.js +0 -5
- package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
- package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
- package/dist/inspector/shell/PromptActionButton.js +14 -0
- package/dist/inspector/shell/elementName.d.ts +5 -0
- package/dist/inspector/shell/elementName.js +29 -0
- package/dist/inspector/shell/interactionStatePreview.d.ts +1 -4
- package/dist/inspector/shell/interactionStatePreview.js +3 -8
- package/dist/inspector/shell/originalPreview.d.ts +1 -6
- package/dist/inspector/shell/originalPreview.js +1 -6
- package/dist/inspector/shell/stateValue.d.ts +1 -2
- package/dist/inspector/shell/stateValue.js +2 -5
- package/dist/inspector/shell/styleState.d.ts +1 -2
- package/dist/inspector/shell/styleState.js +1 -2
- package/dist/inspector/sketch/SketchEditor.js +0 -1
- package/dist/inspector/sketch/SketchFrameOverlay.js +8 -12
- package/dist/inspector/sketch/SketchOverlay.js +5 -6
- package/dist/inspector/sketch/SketchPromptPanel.d.ts +0 -1
- package/dist/inspector/sketch/SketchPromptPanel.js +0 -1
- package/dist/inspector/sketch/SketchWorkspace.js +2 -4
- package/dist/inspector/sketch/capture.d.ts +12 -3
- package/dist/inspector/sketch/capture.js +12 -11
- package/dist/inspector/sketch/copySketch.d.ts +1 -7
- package/dist/inspector/sketch/copySketch.js +2 -11
- package/dist/inspector/sketch/drawingTools.d.ts +1 -3
- package/dist/inspector/sketch/drawingTools.js +1 -2
- package/dist/inspector/sketch/frameHeading.d.ts +1 -7
- package/dist/inspector/sketch/frameHeading.js +1 -8
- package/dist/inspector/sketch/freehand.d.ts +0 -1
- package/dist/inspector/sketch/freehand.js +0 -1
- package/dist/inspector/sketch/geometry.d.ts +1 -6
- package/dist/inspector/sketch/geometry.js +1 -6
- package/dist/inspector/sketch/handoff.js +0 -1
- package/dist/inspector/sketch/history.d.ts +1 -5
- package/dist/inspector/sketch/history.js +1 -4
- package/dist/inspector/sketch/interaction.d.ts +2 -2
- package/dist/inspector/sketch/interaction.js +2 -2
- package/dist/inspector/sketch/model.d.ts +2 -9
- package/dist/inspector/sketch/model.js +2 -19
- package/dist/inspector/sketch/persistence.d.ts +0 -1
- package/dist/inspector/sketch/persistence.js +2 -2
- package/dist/inspector/sketch/raster.d.ts +1 -4
- package/dist/inspector/sketch/raster.js +2 -8
- package/dist/inspector/sketch/store.js +2 -3
- package/dist/inspector/sketch/videoFrames.js +2 -3
- package/dist/inspector/spacing/projection.d.ts +0 -8
- package/dist/inspector/spacing/projection.js +38 -20
- package/dist/inspector/styleEditors/BackgroundEditor.js +1 -1
- package/dist/inspector/styleEditors/BorderEditor.js +1 -6
- package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
- package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
- package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
- package/dist/inspector/styleEditors/FlexControls.js +158 -0
- package/dist/inspector/styleEditors/GapField.d.ts +5 -2
- package/dist/inspector/styleEditors/GapField.js +3 -4
- package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
- package/dist/inspector/styleEditors/GridChildSection.js +0 -5
- package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
- package/dist/inspector/styleEditors/GridPicker.js +2 -4
- package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
- package/dist/inspector/styleEditors/GridSection.js +22 -9
- package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
- package/dist/inspector/styleEditors/GridValueField.js +2 -8
- package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
- package/dist/inspector/styleEditors/ImageBackgroundEditor.js +0 -1
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
- package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
- package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
- package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
- package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
- package/dist/inspector/styleEditors/LayoutSection.js +30 -356
- package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
- package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
- package/dist/inspector/styleEditors/PositionControls.js +16 -0
- package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
- package/dist/inspector/styleEditors/SizeSection.js +71 -0
- package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
- package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
- package/dist/inspector/styleEditors/Typography.js +2 -4
- package/dist/inspector/styleEditors/borderModel.d.ts +1 -7
- package/dist/inspector/styleEditors/borderModel.js +2 -11
- package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
- package/dist/inspector/styleEditors/completeCssValue.js +3 -13
- package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
- package/dist/inspector/styleEditors/fieldValue.js +26 -0
- package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
- package/dist/inspector/styleEditors/gradientValue.js +3 -2
- package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
- package/dist/inspector/styleEditors/gridChildModel.js +6 -37
- package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
- package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
- package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
- package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
- package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
- package/dist/inspector/styleEditors/layoutMode.js +33 -0
- package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
- package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
- package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
- package/dist/inspector/styleEditors/layoutValue.js +4 -12
- package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
- package/dist/inspector/styleEditors/nudgeValue.js +1 -13
- package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
- package/dist/inspector/styleEditors/rowLookup.js +1 -5
- package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
- package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
- package/dist/inspector/styleEditors/stylePresence.js +1 -4
- package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
- package/dist/inspector/styleEditors/textRelevance.js +1 -1
- package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
- package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
- package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
- package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
- package/dist/inspector/styleEditors/valuePolicy.js +0 -1
- package/dist/inspector/testing.d.ts +1 -4
- package/dist/inspector/testing.js +1 -4
- package/dist/inspector/tokens/TokenChip.d.ts +1 -4
- package/dist/inspector/tokens/TokenChip.js +1 -4
- package/dist/inspector/tokens/TokenField.d.ts +4 -3
- package/dist/inspector/tokens/TokenField.js +19 -29
- package/dist/inspector/tokens/catalog.d.ts +2 -10
- package/dist/inspector/tokens/catalog.js +5 -12
- package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
- package/dist/inspector/tokens/dragPointerLock.js +2 -3
- package/dist/inspector/tokens/editActions.d.ts +1 -1
- package/dist/inspector/tokens/editActions.js +2 -4
- package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
- package/dist/inspector/tokens/resolution/cascade.js +1 -5
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +1 -5
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +1 -5
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
- package/dist/inspector/tokens/resolution/cssomCollector.js +151 -122
- package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +1 -5
- package/dist/inspector/tokens/resolution/nestedSelectors.js +1 -5
- package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
- package/dist/inspector/tokens/resolution/ruleMatching.js +121 -67
- package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
- package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
- package/dist/inspector/tokens/resolution.d.ts +5 -24
- package/dist/inspector/tokens/resolution.js +16 -71
- package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
- package/dist/inspector/tokens/tokenAvailability.js +6 -38
- package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
- package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
- package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
- package/dist/inspector/ui/AtRuleContext.js +8 -6
- package/dist/inspector/ui/ControlSurface.d.ts +0 -4
- package/dist/inspector/ui/Disclosure.d.ts +0 -5
- package/dist/inspector/ui/Disclosure.js +0 -4
- package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
- package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
- package/dist/inspector/ui/InspectorPopover.js +1 -5
- package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
- package/dist/inspector/ui/SegmentedControl.js +6 -4
- package/dist/inspector/ui/SideValuesField.d.ts +1 -6
- package/dist/inspector/ui/SideValuesField.js +2 -8
- package/dist/inspector/ui/Toast.d.ts +0 -4
- package/dist/inspector/ui/Toast.js +0 -4
- package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
- package/dist/inspector/ui/atRuleSegments.js +34 -0
- package/dist/inspector/ui/classNames.d.ts +0 -1
- package/dist/inspector/ui/classNames.js +0 -1
- package/dist/inspector/ui/customCursors.d.ts +7 -1
- package/dist/inspector/ui/customCursors.js +2 -6
- package/dist/inspector/ui/styles.js +18 -20
- package/dist/inspector/workspace/controller.js +20 -1
- package/dist/inspector/workspace/handoff.d.ts +1 -5
- package/dist/inspector/workspace/handoff.js +1 -5
- package/dist/inspector/workspace/timeline.d.ts +5 -2
- package/dist/inspector/workspace/timeline.js +0 -1
- package/dist/internal/agent-protocol.d.ts +20 -42
- package/dist/internal/agent-protocol.js +18 -35
- package/dist/nudge-ui.mjs +75 -28
- package/dist/project/artifacts.js +24 -21
- package/dist/project/files.d.ts +0 -1
- package/dist/project/files.js +2 -9
- package/dist/project/identity.d.ts +1 -5
- package/dist/project/identity.js +1 -5
- package/dist/project/mcpPackage.d.ts +1 -6
- package/dist/project/mcpPackage.js +2 -7
- package/dist/project/pathPolicy.d.ts +1 -6
- package/dist/project/pathPolicy.js +1 -6
- package/dist/project/tokens.d.ts +2 -12
- package/dist/project/tokens.js +4 -15
- package/dist/transport/editor.d.ts +1 -12
- package/dist/transport/editor.js +2 -13
- package/dist/transport/index.d.ts +0 -5
- package/dist/transport/index.js +0 -5
- package/dist/transport/routes.d.ts +0 -5
- package/dist/transport/routes.js +0 -5
- package/package.json +5 -4
- package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
- package/dist/inspector/styleEditors/InsetSection.js +0 -15
- package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
- package/dist/inspector/styleEditors/PositionInsets.js +0 -12
- package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
- package/dist/inspector/tokens/TokenDropdown.js +0 -59
|
@@ -104,12 +104,7 @@ export function McpConnectionContent({ projectId, origin, snapshot, onConnect, o
|
|
|
104
104
|
}
|
|
105
105
|
return (_jsxs(_Fragment, { children: [showConnectionStatus ? (_jsxs(StatusCallout, { className: "mcp-connection__status", tone: status.tone, "data-test": "mcp-connection-status", children: [_jsx("span", { className: "mcp-connection__status-label", role: "status", children: status.label }), snapshot.error ? (_jsx("span", { className: "mcp-connection__status-detail", children: snapshot.error })) : null, checkError ? _jsx("span", { role: "alert", children: checkError }) : null, snapshot.request?.summary ? (_jsx("span", { className: "mcp-connection__status-detail", children: snapshot.request.summary })) : null, snapshot.request?.error ? (_jsx("span", { className: "mcp-connection__status-detail", children: snapshot.request.error })) : null] })) : null, _jsxs("ol", { className: "mcp-connection__timeline", "data-test": "mcp-connection-timeline", children: [_jsxs(TimelineStep, { number: 1, complete: snapshot.companionReachable || snapshot.listenerActive || snapshot.request !== null, title: "Set up agent", children: [_jsx("p", { className: "mcp-connection__copy", children: "Agent prompt" }), _jsxs("div", { className: "mcp-connection__command-block", children: [_jsx(IconButton, { className: "mcp-connection__copy-button", variant: "quiet", size: "compact", label: copiedPrompt ? "Copied" : "Copy setup instructions", "data-test": "mcp-copy-setup-prompt", onClick: () => void handleCopyPrompt(), children: copiedPrompt ? _jsx(IconCheck, { size: 16, "aria-hidden": "true" }) : _jsx(IconCopy, { size: 16, "aria-hidden": "true" }) }), _jsx("pre", { className: "mcp-connection__command", children: _jsx("code", { "data-test": "mcp-setup-prompt", children: setupPrompt }) })] }), _jsx("p", { className: "mcp-connection__copy", children: "Or, terminal command" }), _jsxs("div", { className: "mcp-connection__command-block", children: [_jsx(IconButton, { className: "mcp-connection__copy-button", variant: "quiet", size: "compact", label: copiedCommand ? "Copied" : "Copy command", "data-test": "mcp-copy-command", onClick: () => void handleCopyCommand(), children: copiedCommand ? _jsx(IconCheck, { size: 16, "aria-hidden": "true" }) : _jsx(IconCopy, { size: 16, "aria-hidden": "true" }) }), _jsx("pre", { className: "mcp-connection__command", children: _jsx("code", { "data-test": "mcp-setup-command", children: setupCommand }) })] })] }), _jsx(TimelineStep, { number: 2, complete: snapshot.listenerActive, title: "Tell agent to listen for instructions", children: _jsx("p", { className: "mcp-connection__copy", children: "Tell your coding agent: \u201CListen to Nudge.\u201D" }) })] }), _jsxs(Disclosure, { className: "mcp-connection__details", title: "Troubleshooting", defaultOpen: true, children: [_jsx("p", { className: "mcp-connection__copy", children: "To diagnose setup" }), _jsxs("div", { className: "mcp-connection__command-block", children: [_jsx(IconButton, { className: "mcp-connection__copy-button", variant: "quiet", size: "compact", label: copiedDoctor ? "Copied" : "Copy diagnostic command", "data-test": "mcp-copy-doctor", onClick: () => void handleCopyDoctor(), children: copiedDoctor ? _jsx(IconCheck, { size: 16, "aria-hidden": "true" }) : _jsx(IconCopy, { size: 16, "aria-hidden": "true" }) }), _jsx("pre", { className: "mcp-connection__command", children: _jsx("code", { children: doctorCommand }) })] }), _jsxs("dl", { className: "mcp-connection__diagnostics", "data-test": "mcp-connection-diagnostics", children: [_jsxs("div", { className: "mcp-connection__diagnostic", children: [_jsx("dt", { children: "Project ID" }), _jsx("dd", { "data-test": "mcp-project-id", children: projectId })] }), _jsxs("div", { className: "mcp-connection__diagnostic", children: [_jsx("dt", { children: "Origin" }), _jsx("dd", { "data-test": "mcp-origin", children: origin })] })] }), _jsxs("div", { className: "mcp-connection__actions", children: [canTakeOver ? (_jsxs(Button, { variant: "primary", "data-test": "mcp-takeover", type: "button", onClick: () => void onTakeOver(), children: [_jsx(IconPlugConnected, { size: "var(--icon-size-small)", stroke: 1.8, "aria-hidden": "true" }), "Take over"] })) : null, canConnect ? (_jsxs(Button, { variant: "primary", "data-test": "mcp-connect", type: "button", onClick: () => void onConnect(), children: [_jsx(IconPlugConnected, { size: "var(--icon-size-small)", stroke: 1.8, "aria-hidden": "true" }), "Connect"] })) : null, _jsxs(Button, { variant: "quiet", "data-test": "mcp-check-again", type: "button", disabled: checking || snapshot.state === "disabled" || snapshot.state === "pairing", onClick: () => void handleCheckAgain(), children: [_jsx(IconRefresh, { size: "var(--icon-size-small)", stroke: 1.8, "aria-hidden": "true" }), checking ? "Checking…" : "Refresh connection"] }), canDisconnect ? (_jsxs(Button, { variant: "danger", "data-test": "mcp-disconnect", type: "button", onClick: onDisconnect, children: [_jsx(IconUnlink, { size: "var(--icon-size-small)", stroke: 1.8, "aria-hidden": "true" }), snapshot.paired ? "Disconnect" : "Forget connection"] })) : null] })] }), copyError ? _jsx("p", { className: "mcp-connection__error", role: "alert", children: copyError }) : null] }));
|
|
106
106
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Explains and controls the project-scoped MCP companion connection.
|
|
109
|
-
*
|
|
110
|
-
* This compatibility wrapper keeps the existing standalone MCP surface while
|
|
111
|
-
* the shared content is also embedded in the general settings modal.
|
|
112
|
-
*/
|
|
107
|
+
/** Compatibility wrapper: the shared content is also embedded in the general settings modal. */
|
|
113
108
|
export function McpConnectionDialog({ open, projectId, origin, snapshot, onOpenChange, onConnect, onTakeOver, onDisconnect, onCheckAgain, }) {
|
|
114
109
|
const closeRef = useRef(null);
|
|
115
110
|
return (_jsx(Dialog.Root, { open: open, onOpenChange: onOpenChange, children: _jsxs(Dialog.Portal, { container: portalContainer(), children: [_jsx(Dialog.Backdrop, { className: "mcp-connection__backdrop", "data-test": "mcp-connection-backdrop" }), _jsxs(Dialog.Popup, { className: "mcp-connection__popup", "data-test": "mcp-connection-dialog", initialFocus: closeRef, children: [_jsxs("div", { className: "mcp-connection__header", children: [_jsxs("div", { children: [_jsx(Dialog.Title, { className: "mcp-connection__title", children: "Connect MCP" }), _jsx(Dialog.Description, { className: "mcp-connection__description", children: "Set up your coding agent once, then ask it to listen to Nudge in this worktree." })] }), _jsx(Dialog.Close, { ref: closeRef, className: "icon-button icon-button--quiet mcp-connection__close", "aria-label": "Close MCP connection", "data-test": "mcp-connection-close", type: "button", children: _jsx(IconX, { size: "var(--icon-size-small)", stroke: 1.8, "aria-hidden": "true" }) })] }), _jsx(McpConnectionContent, { projectId: projectId, origin: origin, snapshot: snapshot, onConnect: onConnect, onTakeOver: onTakeOver, onDisconnect: onDisconnect, onCheckAgain: onCheckAgain })] })] }) }));
|
|
@@ -9,7 +9,7 @@ export interface AgentActivitySnapshot {
|
|
|
9
9
|
readonly target?: DraftTarget;
|
|
10
10
|
readonly files: readonly ActivityFile[];
|
|
11
11
|
}
|
|
12
|
-
/** Pins submitted frames before dispatch
|
|
12
|
+
/** Pins submitted frames before dispatch; activity never selects or edits a draft. */
|
|
13
13
|
export declare function beginActivityDispatch(projectId: string, dispatchId: string, targets: readonly string[], target?: DraftTarget): void;
|
|
14
14
|
/** Dispatch and status are the only authority for the layer's lifetime. */
|
|
15
15
|
export declare function synchronizeAgentActivity(projectId: string, requestId: string | undefined, working: boolean, dispatchId?: string, awaitingAcknowledgment?: boolean): void;
|
|
@@ -14,7 +14,7 @@ function publish(state, snapshot) {
|
|
|
14
14
|
for (const listener of state.listeners)
|
|
15
15
|
listener();
|
|
16
16
|
}
|
|
17
|
-
/** Pins submitted frames before dispatch
|
|
17
|
+
/** Pins submitted frames before dispatch; activity never selects or edits a draft. */
|
|
18
18
|
export function beginActivityDispatch(projectId, dispatchId, targets, target) {
|
|
19
19
|
project(projectId).dispatch = { id: dispatchId, targets: [...targets], target };
|
|
20
20
|
}
|
|
@@ -16,23 +16,14 @@ export interface AgentClientSnapshot {
|
|
|
16
16
|
readonly connection: AgentStatusSnapshot["connection"];
|
|
17
17
|
readonly listenerActive: boolean;
|
|
18
18
|
readonly agentClientName?: string;
|
|
19
|
-
/** Whether the last valid discovery response came from the local companion. */
|
|
20
19
|
readonly companionReachable: boolean;
|
|
21
20
|
readonly paired: boolean;
|
|
22
|
-
/** Whether another browser currently owns this project's pairing. */
|
|
23
21
|
readonly pairedElsewhere: boolean;
|
|
24
22
|
readonly request: AgentRequestSnapshot | null;
|
|
25
23
|
readonly error?: string;
|
|
26
24
|
}
|
|
27
|
-
/** Creates a stable numeric revision for one prompt snapshot. */
|
|
28
25
|
export declare function createPromptRevision(changes: readonly unknown[], structuralChanges?: readonly unknown[], sketches?: readonly unknown[]): number;
|
|
29
|
-
/**
|
|
30
|
-
* Browser-side companion client.
|
|
31
|
-
*
|
|
32
|
-
* Discovery is deliberately started by `start()`, which is guarded by the
|
|
33
|
-
* dev-only flag. Constructing this class never opens a socket or performs a
|
|
34
|
-
* network request, so importing the inspector remains inert in production.
|
|
35
|
-
*/
|
|
26
|
+
/** Construction never touches the network; discovery starts only from the dev-flag-guarded start(). */
|
|
36
27
|
export declare class AgentClient {
|
|
37
28
|
readonly projectId: string;
|
|
38
29
|
readonly origin: string;
|
|
@@ -60,35 +51,23 @@ export declare class AgentClient {
|
|
|
60
51
|
private readonly autoConnect;
|
|
61
52
|
private autoConnectSuppressed;
|
|
62
53
|
constructor(options: AgentClientOptions);
|
|
63
|
-
/** Installs the controller callback used to acknowledge Canvas commands. */
|
|
64
54
|
setCanvasCommandHandler(handler: AgentClientOptions["canvasCommandHandler"]): void;
|
|
65
55
|
getSnapshot: () => AgentClientSnapshot;
|
|
66
56
|
subscribe: (listener: () => void) => (() => void);
|
|
67
|
-
/** Starts loopback discovery. Calling it repeatedly is idempotent. */
|
|
68
57
|
start(): void;
|
|
69
|
-
/** Stops discovery and closes the browser event stream. */
|
|
70
58
|
stop(): void;
|
|
71
59
|
private restoreOrDiscover;
|
|
72
|
-
/** Runs an immediate authenticated restore or companion discovery probe. */
|
|
73
60
|
checkConnection(): Promise<void>;
|
|
74
|
-
/** Triggers a new discovery probe after a connection loss. */
|
|
75
61
|
reconnect(): void;
|
|
76
|
-
/** Pairs the browser with a reachable companion, including an idle agent. */
|
|
77
62
|
connect(): Promise<boolean>;
|
|
78
|
-
/** Replaces an existing browser pairing after an explicit user action. */
|
|
79
63
|
takeOver(): Promise<boolean>;
|
|
80
64
|
private pairWith;
|
|
81
65
|
private openEvents;
|
|
82
|
-
/**
|
|
83
|
-
* Dispatches one immutable prompt revision. The request enters `delivered`
|
|
84
|
-
* synchronously, before the transport promise resolves, so the UI cannot
|
|
85
|
-
* issue a second prompt while the first one is in flight.
|
|
86
|
-
*/
|
|
66
|
+
/** Enters `delivered` synchronously so the UI cannot dispatch a second prompt while the first is in flight. */
|
|
87
67
|
dispatchPrompt(prompt: string, changeRevision?: number, options?: {
|
|
88
68
|
readonly clientDispatchId?: string;
|
|
89
69
|
readonly attachments?: readonly AgentSketchAttachment[];
|
|
90
70
|
}): Promise<PromptDispatchResponse | null>;
|
|
91
|
-
/** Interrupts local request state and asks the companion to revoke pairing. */
|
|
92
71
|
disconnect(reason?: string): void;
|
|
93
72
|
private discover;
|
|
94
73
|
private scheduleDiscovery;
|
|
@@ -103,11 +82,8 @@ export declare class AgentClient {
|
|
|
103
82
|
private deriveState;
|
|
104
83
|
private publish;
|
|
105
84
|
}
|
|
106
|
-
/** Sets a host/test transport for subsequently created project clients. */
|
|
107
85
|
export declare function configureAgentBridgeTransport(transport: AgentBridgeTransport | undefined): void;
|
|
108
|
-
/** Clears cached clients and their active streams. */
|
|
109
86
|
export declare function resetAgentClients(): void;
|
|
110
87
|
export declare function createAgentClient(options: AgentClientOptions): AgentClient;
|
|
111
88
|
export declare function getAgentClient(projectId: string, options?: Omit<AgentClientOptions, "projectId">): AgentClient;
|
|
112
|
-
/** React hook used by the inspector handoff control. */
|
|
113
89
|
export declare function useAgentClient(projectId: string, suppliedClient?: AgentClient): AgentClientSnapshot;
|
|
@@ -57,8 +57,7 @@ function writeStoredSession(session) {
|
|
|
57
57
|
localStorage.setItem(sessionStorageKey(session.projectId), JSON.stringify(session));
|
|
58
58
|
}
|
|
59
59
|
catch {
|
|
60
|
-
// Storage can be disabled by browser privacy settings
|
|
61
|
-
// pairing remains valid for this document in that case.
|
|
60
|
+
// Storage can be disabled by browser privacy settings; the in-memory pairing stays valid.
|
|
62
61
|
}
|
|
63
62
|
}
|
|
64
63
|
function clearStoredSession(projectId) {
|
|
@@ -92,15 +91,11 @@ function setAutoConnectDisabled(projectId, disabled) {
|
|
|
92
91
|
localStorage.removeItem(key);
|
|
93
92
|
}
|
|
94
93
|
catch {
|
|
95
|
-
//
|
|
96
|
-
// the explicit disconnect preference in memory.
|
|
94
|
+
// Storage can be disabled; the disconnect preference stays in memory for this document.
|
|
97
95
|
}
|
|
98
96
|
}
|
|
99
97
|
function hashRevision(value) {
|
|
100
|
-
//
|
|
101
|
-
// used to prevent a later browser edit from being mistaken for the sent
|
|
102
|
-
// canonical change set. Keep it in the safe-integer range accepted by the
|
|
103
|
-
// companion protocol.
|
|
98
|
+
// Opaque bounded identity, kept in the safe-integer range the companion protocol accepts.
|
|
104
99
|
let hash = 2_166_136_261;
|
|
105
100
|
for (let index = 0; index < value.length; index += 1) {
|
|
106
101
|
hash ^= value.charCodeAt(index);
|
|
@@ -108,7 +103,6 @@ function hashRevision(value) {
|
|
|
108
103
|
}
|
|
109
104
|
return (hash >>> 0) & 0x7fff_ffff;
|
|
110
105
|
}
|
|
111
|
-
/** Creates a stable numeric revision for one prompt snapshot. */
|
|
112
106
|
export function createPromptRevision(changes, structuralChanges = [], sketches = []) {
|
|
113
107
|
let serialized;
|
|
114
108
|
try {
|
|
@@ -119,13 +113,7 @@ export function createPromptRevision(changes, structuralChanges = [], sketches =
|
|
|
119
113
|
}
|
|
120
114
|
return hashRevision(serialized);
|
|
121
115
|
}
|
|
122
|
-
/**
|
|
123
|
-
* Browser-side companion client.
|
|
124
|
-
*
|
|
125
|
-
* Discovery is deliberately started by `start()`, which is guarded by the
|
|
126
|
-
* dev-only flag. Constructing this class never opens a socket or performs a
|
|
127
|
-
* network request, so importing the inspector remains inert in production.
|
|
128
|
-
*/
|
|
116
|
+
/** Construction never touches the network; discovery starts only from the dev-flag-guarded start(). */
|
|
129
117
|
export class AgentClient {
|
|
130
118
|
projectId;
|
|
131
119
|
origin;
|
|
@@ -160,12 +148,10 @@ export class AgentClient {
|
|
|
160
148
|
this.canvasCommandHandler = options.canvasCommandHandler;
|
|
161
149
|
this.autoConnect = options.autoConnect ?? shouldAutoConnectAgentBridge();
|
|
162
150
|
this.autoConnectSuppressed = this.autoConnect && autoConnectDisabled(this.projectId);
|
|
163
|
-
// The public demo renders the real inspector but intentionally keeps the
|
|
164
|
-
// local MCP/agent bridge inert.
|
|
151
|
+
// The public demo renders the real inspector but intentionally keeps the local MCP/agent bridge inert.
|
|
165
152
|
this.enabled = isNudgeUiDev() && !isDemoRuntime();
|
|
166
153
|
this.snapshot = this.enabled ? this.makeSnapshot() : DISABLED_SNAPSHOT;
|
|
167
154
|
}
|
|
168
|
-
/** Installs the controller callback used to acknowledge Canvas commands. */
|
|
169
155
|
setCanvasCommandHandler(handler) {
|
|
170
156
|
this.canvasCommandHandler = handler;
|
|
171
157
|
}
|
|
@@ -174,14 +160,12 @@ export class AgentClient {
|
|
|
174
160
|
this.listeners.add(listener);
|
|
175
161
|
return () => this.listeners.delete(listener);
|
|
176
162
|
};
|
|
177
|
-
/** Starts loopback discovery. Calling it repeatedly is idempotent. */
|
|
178
163
|
start() {
|
|
179
164
|
if (!this.enabled || this.started)
|
|
180
165
|
return;
|
|
181
166
|
this.started = true;
|
|
182
167
|
void this.restoreOrDiscover();
|
|
183
168
|
}
|
|
184
|
-
/** Stops discovery and closes the browser event stream. */
|
|
185
169
|
stop() {
|
|
186
170
|
if (!this.started && !this.eventSubscription)
|
|
187
171
|
return;
|
|
@@ -198,10 +182,7 @@ export class AgentClient {
|
|
|
198
182
|
this.dispatchAbort = null;
|
|
199
183
|
this.eventSubscription?.close();
|
|
200
184
|
this.eventSubscription = null;
|
|
201
|
-
//
|
|
202
|
-
// request and ephemeral token in memory/storage so a still-running
|
|
203
|
-
// companion can be resumed; explicit `disconnect()` is the revocation
|
|
204
|
-
// and interruption path.
|
|
185
|
+
// Keep the request and token so a remount can resume; disconnect() is the revocation path.
|
|
205
186
|
this.connection = "offline";
|
|
206
187
|
this.listenerActive = false;
|
|
207
188
|
this.companionReachable = false;
|
|
@@ -240,8 +221,7 @@ export class AgentClient {
|
|
|
240
221
|
catch (error) {
|
|
241
222
|
if (abortController.signal.aborted || !this.started)
|
|
242
223
|
return;
|
|
243
|
-
// A stale or revoked token is not a connection error
|
|
244
|
-
// lets the normal listener discovery path offer a fresh pairing.
|
|
224
|
+
// A stale or revoked token is not a connection error; clearing it lets discovery offer a fresh pairing.
|
|
245
225
|
clearStoredSession(this.projectId);
|
|
246
226
|
this.sessionToken = null;
|
|
247
227
|
this.resetForDiscovery();
|
|
@@ -254,7 +234,6 @@ export class AgentClient {
|
|
|
254
234
|
}
|
|
255
235
|
await this.discover();
|
|
256
236
|
}
|
|
257
|
-
/** Runs an immediate authenticated restore or companion discovery probe. */
|
|
258
237
|
async checkConnection() {
|
|
259
238
|
if (!this.enabled)
|
|
260
239
|
return;
|
|
@@ -270,7 +249,6 @@ export class AgentClient {
|
|
|
270
249
|
this.publish();
|
|
271
250
|
await this.restoreOrDiscover();
|
|
272
251
|
}
|
|
273
|
-
/** Triggers a new discovery probe after a connection loss. */
|
|
274
252
|
reconnect() {
|
|
275
253
|
if (!this.enabled)
|
|
276
254
|
return;
|
|
@@ -292,11 +270,9 @@ export class AgentClient {
|
|
|
292
270
|
this.publish();
|
|
293
271
|
void this.restoreOrDiscover();
|
|
294
272
|
}
|
|
295
|
-
/** Pairs the browser with a reachable companion, including an idle agent. */
|
|
296
273
|
async connect() {
|
|
297
274
|
return this.pairWith((request, signal) => this.transport.pair(request, signal));
|
|
298
275
|
}
|
|
299
|
-
/** Replaces an existing browser pairing after an explicit user action. */
|
|
300
276
|
async takeOver() {
|
|
301
277
|
if (!this.transport.takeOver)
|
|
302
278
|
return false;
|
|
@@ -388,11 +364,7 @@ export class AgentClient {
|
|
|
388
364
|
this.handleDisconnect(errorMessage(error, "The agent event stream could not be opened."));
|
|
389
365
|
}
|
|
390
366
|
}
|
|
391
|
-
/**
|
|
392
|
-
* Dispatches one immutable prompt revision. The request enters `delivered`
|
|
393
|
-
* synchronously, before the transport promise resolves, so the UI cannot
|
|
394
|
-
* issue a second prompt while the first one is in flight.
|
|
395
|
-
*/
|
|
367
|
+
/** Enters `delivered` synchronously so the UI cannot dispatch a second prompt while the first is in flight. */
|
|
396
368
|
async dispatchPrompt(prompt, changeRevision, options = {}) {
|
|
397
369
|
if (!this.enabled || !this.started || !this.paired || !this.listenerActive || !this.sessionToken)
|
|
398
370
|
return null;
|
|
@@ -456,7 +428,6 @@ export class AgentClient {
|
|
|
456
428
|
this.dispatchAbort = null;
|
|
457
429
|
}
|
|
458
430
|
}
|
|
459
|
-
/** Interrupts local request state and asks the companion to revoke pairing. */
|
|
460
431
|
disconnect(reason = "browser_disconnected") {
|
|
461
432
|
this.autoConnectSuppressed = true;
|
|
462
433
|
if (this.autoConnect)
|
|
@@ -511,10 +482,7 @@ export class AgentClient {
|
|
|
511
482
|
else {
|
|
512
483
|
this.companionReachable = true;
|
|
513
484
|
if (this.connection !== "paired" && this.connection !== "working" && this.connection !== "delivered" && !this.pairingAbort) {
|
|
514
|
-
// Discovery is unauthenticated
|
|
515
|
-
// pairing, so do not adopt `paired` until this tab restores the
|
|
516
|
-
// shared token. The next poll runs restore first in case a sibling
|
|
517
|
-
// tab has just stored that token.
|
|
485
|
+
// Discovery is unauthenticated; do not adopt `paired` until this tab restores the shared token.
|
|
518
486
|
const pairedElsewhere = status.paired && !this.sessionToken;
|
|
519
487
|
this.applyStatus(status.paired ? {
|
|
520
488
|
...status,
|
|
@@ -547,8 +515,7 @@ export class AgentClient {
|
|
|
547
515
|
this.companionReachable = false;
|
|
548
516
|
this.paired = false;
|
|
549
517
|
this.pairedElsewhere = false;
|
|
550
|
-
// Discovery failures are expected while the companion is
|
|
551
|
-
// retain a quiet disconnected state rather than flashing an error.
|
|
518
|
+
// Discovery failures are expected while the companion is down; stay quietly disconnected.
|
|
552
519
|
this.lastError = undefined;
|
|
553
520
|
this.publish();
|
|
554
521
|
}
|
|
@@ -616,10 +583,7 @@ export class AgentClient {
|
|
|
616
583
|
},
|
|
617
584
|
};
|
|
618
585
|
}
|
|
619
|
-
// Every tab
|
|
620
|
-
// only the Canvas lease owner may answer it. A read-only tab reports this
|
|
621
|
-
// local sentinel; leave the command pending for the owning tab instead of
|
|
622
|
-
// racing its acknowledgement with a false failure.
|
|
586
|
+
// Every tab receives the SSE command but only the Canvas lease owner may answer; leave it pending for that tab.
|
|
623
587
|
if (!acknowledgement.ok && acknowledgement.error?.code === "workspace-locked")
|
|
624
588
|
return;
|
|
625
589
|
if (acknowledgement.commandId !== command.commandId) {
|
|
@@ -639,8 +603,7 @@ export class AgentClient {
|
|
|
639
603
|
await this.transport.acknowledgeCanvasCommand(request);
|
|
640
604
|
}
|
|
641
605
|
catch {
|
|
642
|
-
//
|
|
643
|
-
// bounded timeout and reports any expired command to its agent host.
|
|
606
|
+
// Acknowledgement is best effort; the companion owns the timeout.
|
|
644
607
|
}
|
|
645
608
|
}
|
|
646
609
|
applyStatus(status, pairedElsewhere = false) {
|
|
@@ -659,14 +622,11 @@ export class AgentClient {
|
|
|
659
622
|
this.applyRequestStatus(status.request.status, status.request.requestId, status.request.summary, status.request.error, status.request.changeRevision, status.request.clientDispatchId, status.request.sketches);
|
|
660
623
|
}
|
|
661
624
|
else if (status.listenerActive && status.paired && this.activeRequest?.status !== "working" && this.activeRequest?.status !== "delivered") {
|
|
662
|
-
// A re-armed
|
|
663
|
-
// terminal request. Drop only that terminal status; newer edits remain
|
|
664
|
-
// in the inspector's canonical change log.
|
|
625
|
+
// A re-armed listen call ends the previous terminal request; newer edits stay in the canonical change log.
|
|
665
626
|
this.activeRequest = null;
|
|
666
627
|
}
|
|
667
628
|
else if ((this.activeRequest?.status === "working" || this.activeRequest?.status === "delivered") && status.connection !== this.activeRequest.status) {
|
|
668
|
-
//
|
|
669
|
-
// not mark a local request interrupted until the stream disconnects.
|
|
629
|
+
// A brief re-arm can omit the request; do not mark it interrupted until the stream disconnects.
|
|
670
630
|
this.connection = this.activeRequest.status;
|
|
671
631
|
}
|
|
672
632
|
if (!status.paired && this.sessionToken) {
|
|
@@ -693,8 +653,7 @@ export class AgentClient {
|
|
|
693
653
|
return;
|
|
694
654
|
}
|
|
695
655
|
if (active && active.requestId !== requestId && active.localRequestId !== requestId) {
|
|
696
|
-
// A fresh server id can arrive before the POST response
|
|
697
|
-
// with the one local request awaiting acknowledgment.
|
|
656
|
+
// A fresh server id can arrive before the POST response; associate it with the local request.
|
|
698
657
|
if (active.status !== "working" && active.status !== "delivered")
|
|
699
658
|
return;
|
|
700
659
|
this.activeRequest = { ...active, requestId };
|
|
@@ -732,9 +691,7 @@ export class AgentClient {
|
|
|
732
691
|
handleDisconnect(reason = "The agent connection was lost.") {
|
|
733
692
|
this.eventSubscription?.close();
|
|
734
693
|
this.eventSubscription = null;
|
|
735
|
-
// An SSE disconnect is not proof
|
|
736
|
-
// its last known state until an authenticated status restore says
|
|
737
|
-
// otherwise. Explicit browser disconnect remains the interruption path.
|
|
694
|
+
// An SSE disconnect is not proof the request stopped; keep its last known state until an authenticated restore says otherwise.
|
|
738
695
|
this.connection = "offline";
|
|
739
696
|
this.listenerActive = false;
|
|
740
697
|
this.companionReachable = false;
|
|
@@ -742,8 +699,7 @@ export class AgentClient {
|
|
|
742
699
|
this.pairedElsewhere = false;
|
|
743
700
|
this.lastError = reason;
|
|
744
701
|
if (reason === "browser_disconnected") {
|
|
745
|
-
// A remote takeover
|
|
746
|
-
// not immediately race the new browser by auto-pairing again.
|
|
702
|
+
// A remote takeover invalidates this token; do not race the new browser by auto-pairing.
|
|
747
703
|
this.autoConnectSuppressed = true;
|
|
748
704
|
if (this.autoConnect)
|
|
749
705
|
setAutoConnectDisabled(this.projectId, true);
|
|
@@ -803,7 +759,6 @@ export class AgentClient {
|
|
|
803
759
|
let configuredTransport;
|
|
804
760
|
const clients = new Map();
|
|
805
761
|
const consumerCounts = new Map();
|
|
806
|
-
/** Sets a host/test transport for subsequently created project clients. */
|
|
807
762
|
export function configureAgentBridgeTransport(transport) {
|
|
808
763
|
for (const client of clients.values())
|
|
809
764
|
client.stop();
|
|
@@ -811,7 +766,6 @@ export function configureAgentBridgeTransport(transport) {
|
|
|
811
766
|
consumerCounts.clear();
|
|
812
767
|
configuredTransport = transport;
|
|
813
768
|
}
|
|
814
|
-
/** Clears cached clients and their active streams. */
|
|
815
769
|
export function resetAgentClients() {
|
|
816
770
|
for (const client of clients.values())
|
|
817
771
|
client.stop();
|
|
@@ -846,7 +800,6 @@ export function getAgentClient(projectId, options = {}) {
|
|
|
846
800
|
}
|
|
847
801
|
return client;
|
|
848
802
|
}
|
|
849
|
-
/** React hook used by the inspector handoff control. */
|
|
850
803
|
export function useAgentClient(projectId, suppliedClient) {
|
|
851
804
|
const client = useMemo(() => suppliedClient ?? getAgentClient(projectId), [projectId, suppliedClient]);
|
|
852
805
|
useEffect(() => {
|
|
@@ -9,7 +9,6 @@ export interface AgentConnectionStatus {
|
|
|
9
9
|
readonly label: "Connect" | "Take over";
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
/** Returns the user-facing connection state shared by the prompt UI and MCP panel. */
|
|
13
12
|
export declare function getAgentConnectionStatus(snapshot: AgentClientSnapshot): AgentConnectionStatus;
|
|
14
13
|
/** Gives the agent time to rearm after completing a request before showing a reminder. */
|
|
15
14
|
export declare function useAgentConnectionStatus(snapshot: AgentClientSnapshot): AgentConnectionStatus;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { useEffect, useState } from "react";
|
|
2
|
-
/** Returns the user-facing connection state shared by the prompt UI and MCP panel. */
|
|
3
2
|
export function getAgentConnectionStatus(snapshot) {
|
|
4
3
|
if (snapshot.state === "disabled") {
|
|
5
4
|
return { kind: "unavailable", label: "Unavailable in this build", tone: "neutral" };
|
|
@@ -1,18 +1,10 @@
|
|
|
1
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
|
-
/** Returns whether the dev host supplied a trusted project bridge endpoint. */
|
|
3
2
|
export declare function shouldAutoConnectAgentBridge(): boolean;
|
|
4
3
|
export declare class AgentBridgeHttpError extends Error {
|
|
5
4
|
readonly status: number;
|
|
6
5
|
readonly code?: string;
|
|
7
6
|
constructor(status: number, message: string, code?: string);
|
|
8
7
|
}
|
|
9
|
-
/**
|
|
10
|
-
* HTTP/SSE browser adapter for the companion's canonical endpoints.
|
|
11
|
-
*
|
|
12
|
-
* The adapter is inert when no endpoint is configured. A host can publish an
|
|
13
|
-
* endpoint with `window.__NUDGE_UI_AGENT_BRIDGE__` or the meta tag named
|
|
14
|
-
* `nudge-ui-agent-bridge`; tests can inject a transport directly instead.
|
|
15
|
-
*/
|
|
16
8
|
export declare class HttpAgentBridgeTransport implements AgentBridgeTransport {
|
|
17
9
|
private readonly config;
|
|
18
10
|
constructor(config?: AgentBridgeEndpointConfig);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AGENT_PROTOCOL_VERSION, decodeAgentStatusSnapshot, decodeBridgeEvent, decodePairingResponse, decodePromptDispatchResponse, } from "./protocol.js";
|
|
1
|
+
import { AGENT_PROTOCOL_VERSION, BRIDGE_ENDPOINTS, decodeAgentStatusSnapshot, decodeBridgeEvent, decodePairingResponse, decodePromptDispatchResponse, } from "./protocol.js";
|
|
2
2
|
import { getActiveCanvasDocument } from "../canvas/activeCanvasDocument.js";
|
|
3
3
|
function isRecord(value) {
|
|
4
4
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -43,7 +43,6 @@ function configuredEndpoint() {
|
|
|
43
43
|
const previewDocument = getActiveCanvasDocument();
|
|
44
44
|
return previewDocument ? configuredEndpointInDocument(previewDocument) : undefined;
|
|
45
45
|
}
|
|
46
|
-
/** Returns whether the dev host supplied a trusted project bridge endpoint. */
|
|
47
46
|
export function shouldAutoConnectAgentBridge() {
|
|
48
47
|
return configuredEndpoint()?.autoConnect === true;
|
|
49
48
|
}
|
|
@@ -64,8 +63,7 @@ function safeUrl(value, origin) {
|
|
|
64
63
|
const url = new URL(value, origin);
|
|
65
64
|
if (url.protocol !== "http:" && url.protocol !== "https:")
|
|
66
65
|
return null;
|
|
67
|
-
// A same-origin reverse proxy is valid
|
|
68
|
-
// remain loopback-only to match ADR-0013.
|
|
66
|
+
// A separately hosted bridge must remain loopback-only; a same-origin reverse proxy is valid.
|
|
69
67
|
if (url.origin !== origin && !isLoopback(url.hostname))
|
|
70
68
|
return null;
|
|
71
69
|
return url;
|
|
@@ -107,45 +105,23 @@ export class AgentBridgeHttpError extends Error {
|
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
107
|
async function readJson(response) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
payload = await response.json();
|
|
113
|
-
}
|
|
114
|
-
catch {
|
|
115
|
-
payload = {};
|
|
116
|
-
}
|
|
108
|
+
const body = await response.json().catch(() => null);
|
|
109
|
+
const payload = isRecord(body) ? body : {};
|
|
117
110
|
if (!response.ok) {
|
|
118
|
-
const error = isRecord(payload
|
|
111
|
+
const error = isRecord(payload.error) ? payload.error : payload;
|
|
119
112
|
const message = isRecord(error) ? stringValue(error.message) : undefined;
|
|
120
113
|
const code = isRecord(error) ? stringValue(error.code) : undefined;
|
|
121
114
|
throw new AgentBridgeHttpError(response.status, message ?? `Agent bridge request failed (${response.status}).`, code);
|
|
122
115
|
}
|
|
123
|
-
return
|
|
116
|
+
return payload;
|
|
124
117
|
}
|
|
125
|
-
function eventData(event) {
|
|
126
|
-
if (typeof event.data !== "string")
|
|
127
|
-
return event.data;
|
|
128
|
-
try {
|
|
129
|
-
return JSON.parse(event.data);
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* HTTP/SSE browser adapter for the companion's canonical endpoints.
|
|
137
|
-
*
|
|
138
|
-
* The adapter is inert when no endpoint is configured. A host can publish an
|
|
139
|
-
* endpoint with `window.__NUDGE_UI_AGENT_BRIDGE__` or the meta tag named
|
|
140
|
-
* `nudge-ui-agent-bridge`; tests can inject a transport directly instead.
|
|
141
|
-
*/
|
|
142
118
|
export class HttpAgentBridgeTransport {
|
|
143
119
|
config;
|
|
144
120
|
constructor(config = configuredEndpoint() ?? {}) {
|
|
145
121
|
this.config = config;
|
|
146
122
|
}
|
|
147
123
|
async discover(request, signal) {
|
|
148
|
-
const url = endpointUrl(this.config, "healthUrl",
|
|
124
|
+
const url = endpointUrl(this.config, "healthUrl", BRIDGE_ENDPOINTS.health, pageOrigin());
|
|
149
125
|
if (!url || typeof fetch !== "function")
|
|
150
126
|
return null;
|
|
151
127
|
const response = await fetch(withQuery(url, {
|
|
@@ -163,7 +139,7 @@ export class HttpAgentBridgeTransport {
|
|
|
163
139
|
return decodeAgentStatusSnapshot(payload.status);
|
|
164
140
|
}
|
|
165
141
|
async pair(request, signal) {
|
|
166
|
-
const url = endpointUrl(this.config, "pairUrl",
|
|
142
|
+
const url = endpointUrl(this.config, "pairUrl", BRIDGE_ENDPOINTS.pair, pageOrigin());
|
|
167
143
|
if (!url || typeof fetch !== "function")
|
|
168
144
|
throw new Error("Agent bridge is unavailable.");
|
|
169
145
|
const response = await fetch(url, {
|
|
@@ -178,7 +154,7 @@ export class HttpAgentBridgeTransport {
|
|
|
178
154
|
return pairing;
|
|
179
155
|
}
|
|
180
156
|
async takeOver(request, signal) {
|
|
181
|
-
const url = endpointUrl(this.config, "takeoverUrl",
|
|
157
|
+
const url = endpointUrl(this.config, "takeoverUrl", BRIDGE_ENDPOINTS.takeover, pageOrigin());
|
|
182
158
|
if (!url || typeof fetch !== "function")
|
|
183
159
|
throw new Error("Agent bridge is unavailable.");
|
|
184
160
|
const response = await fetch(url, {
|
|
@@ -193,7 +169,7 @@ export class HttpAgentBridgeTransport {
|
|
|
193
169
|
return pairing;
|
|
194
170
|
}
|
|
195
171
|
async restore(request, signal) {
|
|
196
|
-
const url = endpointUrl(this.config, "statusUrl",
|
|
172
|
+
const url = endpointUrl(this.config, "statusUrl", BRIDGE_ENDPOINTS.status, pageOrigin());
|
|
197
173
|
if (!url || typeof fetch !== "function")
|
|
198
174
|
return null;
|
|
199
175
|
const response = await fetch(withQuery(url, {
|
|
@@ -206,7 +182,7 @@ export class HttpAgentBridgeTransport {
|
|
|
206
182
|
return status;
|
|
207
183
|
}
|
|
208
184
|
openEvents(request, handlers) {
|
|
209
|
-
const url = endpointUrl(this.config, "eventsUrl",
|
|
185
|
+
const url = endpointUrl(this.config, "eventsUrl", BRIDGE_ENDPOINTS.events, pageOrigin());
|
|
210
186
|
if (!url || typeof EventSource !== "function") {
|
|
211
187
|
queueMicrotask(() => handlers.onDisconnect("Agent event transport is unavailable."));
|
|
212
188
|
return { close: () => undefined };
|
|
@@ -218,7 +194,13 @@ export class HttpAgentBridgeTransport {
|
|
|
218
194
|
const source = new EventSource(eventUrl.href);
|
|
219
195
|
let closed = false;
|
|
220
196
|
const handleMessage = (event) => {
|
|
221
|
-
|
|
197
|
+
let envelope;
|
|
198
|
+
try {
|
|
199
|
+
envelope = JSON.parse(event.data);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
222
204
|
if (!isRecord(envelope)
|
|
223
205
|
|| envelope.protocolVersion !== AGENT_PROTOCOL_VERSION
|
|
224
206
|
|| envelope.projectId !== request.projectId
|
|
@@ -251,7 +233,7 @@ export class HttpAgentBridgeTransport {
|
|
|
251
233
|
};
|
|
252
234
|
}
|
|
253
235
|
async dispatch(request, signal) {
|
|
254
|
-
const url = endpointUrl(this.config, "promptUrl",
|
|
236
|
+
const url = endpointUrl(this.config, "promptUrl", BRIDGE_ENDPOINTS.prompt, pageOrigin());
|
|
255
237
|
if (!url || typeof fetch !== "function")
|
|
256
238
|
throw new Error("Agent bridge is unavailable.");
|
|
257
239
|
const response = await fetch(url, {
|
|
@@ -266,7 +248,7 @@ export class HttpAgentBridgeTransport {
|
|
|
266
248
|
return dispatched;
|
|
267
249
|
}
|
|
268
250
|
async disconnect(request, signal) {
|
|
269
|
-
const url = endpointUrl(this.config, "disconnectUrl",
|
|
251
|
+
const url = endpointUrl(this.config, "disconnectUrl", BRIDGE_ENDPOINTS.disconnect, pageOrigin());
|
|
270
252
|
if (!url || typeof fetch !== "function")
|
|
271
253
|
return;
|
|
272
254
|
await fetch(url, {
|
|
@@ -277,7 +259,7 @@ export class HttpAgentBridgeTransport {
|
|
|
277
259
|
});
|
|
278
260
|
}
|
|
279
261
|
async acknowledgeCanvasCommand(request, signal) {
|
|
280
|
-
const url = endpointUrl(this.config, "canvasAckUrl",
|
|
262
|
+
const url = endpointUrl(this.config, "canvasAckUrl", BRIDGE_ENDPOINTS.canvasAcknowledgement, pageOrigin());
|
|
281
263
|
if (!url || typeof fetch !== "function")
|
|
282
264
|
return;
|
|
283
265
|
await fetch(url, {
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import type { AgentActivity, AgentStatusSnapshot, CanvasCommand, CanvasCommandAcknowledgement, CanvasCommandResult, AgentSketchAttachment, 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, CANVAS_COMMAND_TYPES, canonicalOrigin, decodeAgentStatusSnapshot, decodeBridgeEvent, decodePairingResponse, decodePromptDispatchResponse, deriveConnectionState, isAgentPromptRequest, isAgentSketchAttachment, isAgentSketchAnnotation, isAgentSketchCaptureMetadata, isAgentSketchMetadata, isAgentStatusUpdate, isAgentActivity, isAllowedOrigin, isCanvasCommand, isCanvasGroup, isCanvasState, isCanonicalOrigin, isProjectIdentity, isSameOriginRoute, protocolError, validateSketchAttachments, validateRoutes, } from "../../internal/agent-protocol.js";
|
|
2
|
+
export { AGENT_PROTOCOL_LIMITS, AGENT_PROTOCOL_VERSION, BRIDGE_ENDPOINTS, CANVAS_COMMAND_TYPES, canonicalOrigin, decodeAgentStatusSnapshot, decodeBridgeEvent, decodePairingResponse, decodePromptDispatchResponse, deriveConnectionState, isAgentPromptRequest, isAgentSketchAttachment, isAgentSketchAnnotation, isAgentSketchCaptureMetadata, isAgentSketchMetadata, isAgentStatusUpdate, isAgentActivity, isAllowedOrigin, isCanvasCommand, isCanvasGroup, isCanvasState, isCanonicalOrigin, isProjectIdentity, isSameOriginRoute, protocolError, validateSketchAttachments, validateRoutes, } from "../../internal/agent-protocol.js";
|
|
11
3
|
export type { AgentActivity, BridgeActivityEvent, AgentConnectionState, AgentProjectIdentity, AgentPromptRequest, AgentDeliveredPrompt, AgentSketchAttachment, AgentSketchAnnotation, AgentSketchCaptureMetadata, AgentSketchMetadata, 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
4
|
export interface AgentBridgeEndpointConfig {
|
|
13
5
|
readonly baseUrl?: string;
|
|
@@ -67,7 +59,6 @@ export interface AgentEventHandlers {
|
|
|
67
59
|
export interface AgentEventSubscription {
|
|
68
60
|
readonly close: () => void;
|
|
69
61
|
}
|
|
70
|
-
/** Events delivered by the companion's SSE stream. */
|
|
71
62
|
export type AgentBridgeEvent = {
|
|
72
63
|
readonly type: "activity";
|
|
73
64
|
readonly activity: AgentActivity;
|
|
@@ -1,9 +1 @@
|
|
|
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, CANVAS_COMMAND_TYPES, canonicalOrigin, decodeAgentStatusSnapshot, decodeBridgeEvent, decodePairingResponse, decodePromptDispatchResponse, deriveConnectionState, isAgentPromptRequest, isAgentSketchAttachment, isAgentSketchAnnotation, isAgentSketchCaptureMetadata, isAgentSketchMetadata, isAgentStatusUpdate, isAgentActivity, isAllowedOrigin, isCanvasCommand, isCanvasGroup, isCanvasState, isCanonicalOrigin, isProjectIdentity, isSameOriginRoute, protocolError, validateSketchAttachments, validateRoutes, } from "../../internal/agent-protocol.js";
|
|
1
|
+
export { AGENT_PROTOCOL_LIMITS, AGENT_PROTOCOL_VERSION, BRIDGE_ENDPOINTS, CANVAS_COMMAND_TYPES, canonicalOrigin, decodeAgentStatusSnapshot, decodeBridgeEvent, decodePairingResponse, decodePromptDispatchResponse, deriveConnectionState, isAgentPromptRequest, isAgentSketchAttachment, isAgentSketchAnnotation, isAgentSketchCaptureMetadata, isAgentSketchMetadata, isAgentStatusUpdate, isAgentActivity, isAllowedOrigin, isCanvasCommand, isCanvasGroup, isCanvasState, isCanonicalOrigin, isProjectIdentity, isSameOriginRoute, protocolError, validateSketchAttachments, validateRoutes, } from "../../internal/agent-protocol.js";
|