nudge-ui 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/agentCommand.d.ts +0 -1
- package/dist/cli/agentCommand.js +4 -29
- package/dist/client.mjs +987 -221
- 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 +14 -71
- package/dist/hosts/projectBridge.d.ts +0 -2
- package/dist/hosts/projectBridge.js +3 -19
- 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 +8 -9
- package/dist/inspector/agent/activity.d.ts +2 -2
- package/dist/inspector/agent/activity.js +4 -3
- package/dist/inspector/agent/client.d.ts +3 -27
- package/dist/inspector/agent/client.js +43 -91
- package/dist/inspector/agent/connectionStatus.d.ts +3 -2
- package/dist/inspector/agent/connectionStatus.js +25 -1
- package/dist/inspector/agent/httpTransport.d.ts +0 -8
- package/dist/inspector/agent/httpTransport.js +42 -176
- package/dist/inspector/agent/protocol.d.ts +1 -10
- package/dist/inspector/agent/protocol.js +1 -9
- package/dist/inspector/agent/verification.d.ts +3 -20
- package/dist/inspector/agent/verification.js +10 -43
- package/dist/inspector/boot.d.ts +5 -0
- package/dist/inspector/boot.js +289 -0
- package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
- package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
- package/dist/inspector/canvas/CanvasCard.js +26 -24
- package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
- package/dist/inspector/canvas/CanvasToolbar.js +2 -1
- package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
- package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
- package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
- package/dist/inspector/canvas/PageCard.d.ts +9 -0
- package/dist/inspector/canvas/PageCard.js +50 -0
- package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
- package/dist/inspector/canvas/SketchToolOptions.js +80 -0
- package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
- package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
- package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
- package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
- package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
- 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/assets/eraser.svg +28 -0
- package/dist/inspector/canvas/assets/pen.svg +25 -0
- package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
- package/dist/inspector/canvas/canvasFrame.js +9 -0
- package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
- package/dist/inspector/canvas/canvasGestures.js +0 -6
- package/dist/inspector/canvas/canvasResize.d.ts +1 -6
- package/dist/inspector/canvas/canvasResize.js +1 -6
- package/dist/inspector/canvas/canvasStore.d.ts +5 -7
- package/dist/inspector/canvas/canvasStore.js +42 -21
- package/dist/inspector/canvas/frameConnection.d.ts +42 -0
- package/dist/inspector/canvas/frameConnection.js +73 -0
- 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 +20 -38
- package/dist/inspector/canvas/frameProtocol.js +37 -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 +6 -0
- package/dist/inspector/canvas/pageSurface.js +29 -0
- package/dist/inspector/canvas/projection.d.ts +14 -25
- package/dist/inspector/canvas/projection.js +64 -87
- package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
- package/dist/inspector/canvas/rendererBootstrap.js +10 -15
- package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
- package/dist/inspector/canvas/rendererCidIndex.js +0 -5
- package/dist/inspector/canvas/rendererElementSelector.js +38 -28
- package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
- package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
- package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
- package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
- package/dist/inspector/canvas/rendererStylesheet.js +23 -1
- package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
- package/dist/inspector/canvas/resizeHandleScale.js +1 -10
- package/dist/inspector/canvas/sessionStore.d.ts +3 -9
- package/dist/inspector/canvas/sessionStore.js +33 -43
- package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
- package/dist/inspector/canvas/staleChangeDetector.js +11 -26
- 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.d.ts +1 -0
- package/dist/inspector/changes/codecs.js +21 -5
- package/dist/inspector/changes/draftPreview.d.ts +7 -0
- package/dist/inspector/changes/draftPreview.js +118 -0
- package/dist/inspector/changes/editModel.d.ts +11 -13
- package/dist/inspector/changes/editModel.js +9 -4
- package/dist/inspector/changes/managedStyleProjection.js +6 -15
- 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 +5 -21
- 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 +11 -8
- package/dist/inspector/clientManifest.d.ts +17 -6
- package/dist/inspector/clientManifest.js +16 -3
- package/dist/inspector/comments/CommentsOverlay.js +66 -23
- 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 +4 -3
- package/dist/inspector/comments/verification.d.ts +8 -2
- package/dist/inspector/comments/verification.js +19 -11
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
- package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
- package/dist/inspector/componentSemantics/changeAction.js +1 -1
- 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 +2 -11
- package/dist/inspector/componentSemantics/textBinding.js +20 -87
- 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 +95 -0
- package/dist/inspector/drafts/draftStore.js +461 -0
- package/dist/inspector/drafts/model.d.ts +14 -14
- package/dist/inspector/drafts/model.js +4 -2
- package/dist/inspector/drafts/store.d.ts +47 -16
- package/dist/inspector/drafts/store.js +137 -170
- package/dist/inspector/editScope.d.ts +0 -1
- package/dist/inspector/editScope.js +0 -1
- package/dist/inspector/index.d.ts +2 -4
- package/dist/inspector/index.js +2 -264
- 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 +3 -9
- package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
- package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
- package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
- package/dist/inspector/inspection/bridge.d.ts +3 -7
- package/dist/inspector/inspection/bridge.js +6 -13
- package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
- package/dist/inspector/inspection/browserCssInspection.js +32 -14
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
- package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
- package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
- package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
- package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
- 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 +22 -59
- package/dist/inspector/iterations/capture.d.ts +2 -2
- package/dist/inspector/iterations/capture.js +4 -9
- package/dist/inspector/iterations/client.d.ts +2 -2
- package/dist/inspector/iterations/client.js +0 -1
- package/dist/inspector/iterations/coordinator.d.ts +4 -4
- package/dist/inspector/iterations/coordinator.js +5 -4
- package/dist/inspector/iterations/prompt.d.ts +0 -1
- package/dist/inspector/iterations/prompt.js +9 -9
- 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 +19 -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 +33 -0
- package/dist/inspector/pageInspector.js +335 -0
- package/dist/inspector/projection/cssEscapes.d.ts +0 -1
- package/dist/inspector/projection/cssEscapes.js +2 -4
- package/dist/inspector/projection/draftProjection.d.ts +6 -10
- package/dist/inspector/projection/draftProjection.js +8 -7
- package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
- package/dist/inspector/projection/managedStylesheet.js +28 -26
- package/dist/inspector/projection/renderedInstance.d.ts +5 -28
- package/dist/inspector/projection/renderedInstance.js +13 -33
- package/dist/inspector/projection/structuralProjection.d.ts +7 -48
- package/dist/inspector/projection/structuralProjection.js +31 -96
- package/dist/inspector/projection/textProjection.d.ts +7 -13
- package/dist/inspector/projection/textProjection.js +35 -80
- 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 -0
- package/dist/inspector/prompt/clipboardHandoff.js +34 -16
- package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
- package/dist/inspector/prompt/generatePrompt.js +247 -166
- package/dist/inspector/prompt/promptDocument.d.ts +3 -0
- package/dist/inspector/prompt/promptDocument.js +8 -0
- package/dist/inspector/prompt/promptSettings.d.ts +0 -3
- package/dist/inspector/prompt/promptSettings.js +7 -8
- 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 +11 -0
- package/dist/inspector/runtime/inspectorStorage.js +37 -0
- package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
- package/dist/inspector/runtime/ownedStylesheets.js +66 -0
- package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
- package/dist/inspector/runtime/runtimeConfig.js +18 -50
- package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
- package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
- package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
- package/dist/inspector/selection/editScope.d.ts +2 -7
- package/dist/inspector/selection/editScope.js +15 -14
- 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 +7 -7
- package/dist/inspector/shell/AppShell.js +6 -2
- package/dist/inspector/shell/ChangesLog.js +29 -12
- package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
- package/dist/inspector/shell/CopyPromptButton.js +62 -55
- package/dist/inspector/shell/EmptyState.js +3 -3
- 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.d.ts +0 -3
- package/dist/inspector/shell/InspectorShell.js +44 -58
- 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 +3 -8
- 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 +6 -0
- package/dist/inspector/shell/interactionStatePreview.js +107 -0
- package/dist/inspector/shell/originalPreview.d.ts +1 -5
- package/dist/inspector/shell/originalPreview.js +5 -37
- package/dist/inspector/shell/stateValue.d.ts +1 -2
- package/dist/inspector/shell/stateValue.js +4 -8
- package/dist/inspector/shell/styleState.d.ts +1 -2
- package/dist/inspector/shell/styleState.js +1 -2
- package/dist/inspector/sketch/SketchEditor.js +5 -5
- package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
- package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
- package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
- package/dist/inspector/sketch/SketchOverlay.js +138 -263
- package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
- package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
- package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
- package/dist/inspector/sketch/SketchThumbnail.js +18 -0
- package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
- package/dist/inspector/sketch/SketchWorkspace.js +70 -37
- package/dist/inspector/sketch/capture.d.ts +12 -3
- package/dist/inspector/sketch/capture.js +31 -14
- package/dist/inspector/sketch/copySketch.d.ts +4 -0
- package/dist/inspector/sketch/copySketch.js +43 -0
- package/dist/inspector/sketch/drawingTools.d.ts +15 -0
- package/dist/inspector/sketch/drawingTools.js +46 -0
- package/dist/inspector/sketch/frameHeading.d.ts +3 -0
- package/dist/inspector/sketch/frameHeading.js +23 -0
- package/dist/inspector/sketch/freehand.d.ts +0 -1
- package/dist/inspector/sketch/freehand.js +3 -4
- package/dist/inspector/sketch/geometry.d.ts +2 -1
- package/dist/inspector/sketch/geometry.js +15 -1
- package/dist/inspector/sketch/handoff.js +0 -1
- package/dist/inspector/sketch/history.d.ts +26 -0
- package/dist/inspector/sketch/history.js +55 -0
- package/dist/inspector/sketch/interaction.d.ts +3 -5
- package/dist/inspector/sketch/interaction.js +8 -11
- package/dist/inspector/sketch/model.d.ts +33 -6
- package/dist/inspector/sketch/model.js +101 -63
- package/dist/inspector/sketch/persistence.d.ts +14 -1
- package/dist/inspector/sketch/persistence.js +64 -8
- package/dist/inspector/sketch/raster.d.ts +3 -2
- package/dist/inspector/sketch/raster.js +40 -20
- package/dist/inspector/sketch/store.d.ts +1 -1
- package/dist/inspector/sketch/store.js +3 -4
- package/dist/inspector/sketch/videoFrames.d.ts +6 -0
- package/dist/inspector/sketch/videoFrames.js +80 -0
- package/dist/inspector/spacing/projection.d.ts +0 -8
- package/dist/inspector/spacing/projection.js +38 -20
- package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
- package/dist/inspector/styleEditors/BorderEditor.js +30 -135
- package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
- 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 +1 -2
- 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 +36 -0
- package/dist/inspector/styleEditors/borderModel.js +105 -0
- 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 +6 -15
- 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 +53 -32
- package/dist/inspector/tokens/TokensPanel.js +2 -1
- 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 +4 -4
- package/dist/inspector/tokens/editActions.js +11 -7
- 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 +11 -0
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
- package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
- package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
- package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
- package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
- package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
- 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 +11 -27
- package/dist/inspector/tokens/resolution.js +105 -181
- package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
- package/dist/inspector/tokens/tokenAvailability.js +6 -38
- package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
- package/dist/inspector/tokens/tokenEdits.js +1 -1
- 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/InlineStyleWarning.js +2 -2
- package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
- package/dist/inspector/ui/InspectorPopover.js +1 -5
- package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
- package/dist/inspector/ui/InspectorStyle.js +26 -0
- package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
- package/dist/inspector/ui/PopoverListbox.js +3 -3
- 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 +10 -0
- package/dist/inspector/ui/Toast.js +26 -0
- package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
- package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
- 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 +11 -0
- package/dist/inspector/ui/customCursors.js +29 -7
- package/dist/inspector/ui/styles.js +25 -25
- package/dist/inspector/workspace/commands.js +1 -2
- package/dist/inspector/workspace/controller.js +20 -2
- package/dist/inspector/workspace/handoff.d.ts +1 -5
- package/dist/inspector/workspace/handoff.js +4 -7
- package/dist/inspector/workspace/sentItems.d.ts +3 -6
- package/dist/inspector/workspace/sentItems.js +6 -24
- package/dist/inspector/workspace/timeline.d.ts +28 -11
- package/dist/inspector/workspace/timeline.js +117 -96
- package/dist/internal/agent-protocol.d.ts +53 -38
- package/dist/internal/agent-protocol.js +151 -42
- package/dist/nudge-ui.mjs +155 -92
- 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 +3 -0
- package/dist/project/mcpPackage.js +55 -0
- 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 +16 -5
- package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
- package/dist/inspector/canvas/measurementProjection.js +0 -16
- package/dist/inspector/changes/changesLog.d.ts +0 -49
- package/dist/inspector/changes/changesLog.js +0 -255
- package/dist/inspector/changes/draftChanges.d.ts +0 -58
- package/dist/inspector/changes/draftChanges.js +0 -304
- package/dist/inspector/conformance/projection.d.ts +0 -2
- package/dist/inspector/conformance/projection.js +0 -3
- package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
- package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
- package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
- package/dist/inspector/overlay/InspectorOverlay.js +0 -332
- package/dist/inspector/overlay/elementSelector.d.ts +0 -1
- package/dist/inspector/overlay/elementSelector.js +0 -111
- package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
- package/dist/inspector/sketch/SketchChanges.js +0 -72
- package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
- package/dist/inspector/sketch/SketchEntryButton.js +0 -11
- package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
- package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
- 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
|
@@ -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,
|
|
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);
|
|
@@ -27,8 +27,7 @@ function configuredEndpointInDocument(doc) {
|
|
|
27
27
|
const target = doc.defaultView;
|
|
28
28
|
if (!target)
|
|
29
29
|
return undefined;
|
|
30
|
-
const globalConfig = endpointValue(target.__NUDGE_UI_AGENT_BRIDGE__)
|
|
31
|
-
?? endpointValue(target.__NUDGE_UI_AGENT__);
|
|
30
|
+
const globalConfig = endpointValue(target.__NUDGE_UI_AGENT_BRIDGE__);
|
|
32
31
|
if (globalConfig)
|
|
33
32
|
return globalConfig;
|
|
34
33
|
const meta = doc.querySelector('meta[name="nudge-ui-agent-bridge"]');
|
|
@@ -44,7 +43,6 @@ function configuredEndpoint() {
|
|
|
44
43
|
const previewDocument = getActiveCanvasDocument();
|
|
45
44
|
return previewDocument ? configuredEndpointInDocument(previewDocument) : undefined;
|
|
46
45
|
}
|
|
47
|
-
/** Returns whether the dev host supplied a trusted project bridge endpoint. */
|
|
48
46
|
export function shouldAutoConnectAgentBridge() {
|
|
49
47
|
return configuredEndpoint()?.autoConnect === true;
|
|
50
48
|
}
|
|
@@ -65,8 +63,7 @@ function safeUrl(value, origin) {
|
|
|
65
63
|
const url = new URL(value, origin);
|
|
66
64
|
if (url.protocol !== "http:" && url.protocol !== "https:")
|
|
67
65
|
return null;
|
|
68
|
-
// A same-origin reverse proxy is valid
|
|
69
|
-
// remain loopback-only to match ADR-0013.
|
|
66
|
+
// A separately hosted bridge must remain loopback-only; a same-origin reverse proxy is valid.
|
|
70
67
|
if (url.origin !== origin && !isLoopback(url.hostname))
|
|
71
68
|
return null;
|
|
72
69
|
return url;
|
|
@@ -75,12 +72,12 @@ function safeUrl(value, origin) {
|
|
|
75
72
|
return null;
|
|
76
73
|
}
|
|
77
74
|
}
|
|
78
|
-
|
|
75
|
+
/** Null when the host published no endpoint; the browser never guesses a bridge port. */
|
|
76
|
+
function endpointUrl(config, key, fallbackPath, origin) {
|
|
79
77
|
const explicit = config[key];
|
|
80
78
|
if (explicit && key !== "baseUrl")
|
|
81
79
|
return safeUrl(explicit, origin);
|
|
82
|
-
const
|
|
83
|
-
const base = safeUrl(baseValue, origin);
|
|
80
|
+
const base = config.baseUrl ? safeUrl(config.baseUrl, origin) : null;
|
|
84
81
|
if (!base)
|
|
85
82
|
return null;
|
|
86
83
|
base.pathname = `${base.pathname.replace(/\/$/, "")}${fallbackPath}`;
|
|
@@ -108,122 +105,23 @@ export class AgentBridgeHttpError extends Error {
|
|
|
108
105
|
}
|
|
109
106
|
}
|
|
110
107
|
async function readJson(response) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
payload = await response.json();
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
payload = {};
|
|
117
|
-
}
|
|
108
|
+
const body = await response.json().catch(() => null);
|
|
109
|
+
const payload = isRecord(body) ? body : {};
|
|
118
110
|
if (!response.ok) {
|
|
119
|
-
const error = isRecord(payload
|
|
111
|
+
const error = isRecord(payload.error) ? payload.error : payload;
|
|
120
112
|
const message = isRecord(error) ? stringValue(error.message) : undefined;
|
|
121
113
|
const code = isRecord(error) ? stringValue(error.code) : undefined;
|
|
122
114
|
throw new AgentBridgeHttpError(response.status, message ?? `Agent bridge request failed (${response.status}).`, code);
|
|
123
115
|
}
|
|
124
|
-
return
|
|
125
|
-
}
|
|
126
|
-
function statusPayload(value) {
|
|
127
|
-
if (!isRecord(value))
|
|
128
|
-
return null;
|
|
129
|
-
const status = isRecord(value.status) ? value.status : value;
|
|
130
|
-
if (typeof status.projectId !== "string"
|
|
131
|
-
|| (status.connection !== "offline"
|
|
132
|
-
&& status.connection !== "listening"
|
|
133
|
-
&& status.connection !== "paired"
|
|
134
|
-
&& status.connection !== "working")
|
|
135
|
-
|| typeof status.listenerActive !== "boolean"
|
|
136
|
-
|| typeof status.paired !== "boolean")
|
|
137
|
-
return null;
|
|
138
|
-
if (status.protocolVersion !== undefined && status.protocolVersion !== AGENT_PROTOCOL_VERSION)
|
|
139
|
-
return null;
|
|
140
|
-
const rawRequest = status.request;
|
|
141
|
-
let request = null;
|
|
142
|
-
if (rawRequest !== null && rawRequest !== undefined) {
|
|
143
|
-
if (!isRecord(rawRequest)
|
|
144
|
-
|| (rawRequest.status !== "working"
|
|
145
|
-
&& rawRequest.status !== "completed"
|
|
146
|
-
&& rawRequest.status !== "failed"
|
|
147
|
-
&& rawRequest.status !== "interrupted"))
|
|
148
|
-
return null;
|
|
149
|
-
const requestCandidate = {
|
|
150
|
-
requestId: rawRequest.requestId,
|
|
151
|
-
projectId: rawRequest.projectId,
|
|
152
|
-
prompt: rawRequest.prompt,
|
|
153
|
-
...(typeof rawRequest.changeRevision === "number" ? { changeRevision: rawRequest.changeRevision } : {}),
|
|
154
|
-
...(rawRequest.clientDispatchId === undefined ? {} : { clientDispatchId: rawRequest.clientDispatchId }),
|
|
155
|
-
...(rawRequest.sketches === undefined ? {} : { sketches: rawRequest.sketches }),
|
|
156
|
-
};
|
|
157
|
-
if (!isAgentPromptRequest(requestCandidate))
|
|
158
|
-
return null;
|
|
159
|
-
request = {
|
|
160
|
-
...requestCandidate,
|
|
161
|
-
status: rawRequest.status,
|
|
162
|
-
...(typeof rawRequest.summary === "string" ? { summary: rawRequest.summary } : {}),
|
|
163
|
-
...(typeof rawRequest.error === "string" ? { error: rawRequest.error } : {}),
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
return {
|
|
167
|
-
protocolVersion: AGENT_PROTOCOL_VERSION,
|
|
168
|
-
projectId: status.projectId,
|
|
169
|
-
connection: status.connection,
|
|
170
|
-
listenerActive: status.listenerActive,
|
|
171
|
-
...(typeof status.agentClientName === "string" ? { agentClientName: status.agentClientName.slice(0, 120) } : {}),
|
|
172
|
-
paired: status.paired,
|
|
173
|
-
request,
|
|
174
|
-
};
|
|
116
|
+
return payload;
|
|
175
117
|
}
|
|
176
|
-
function eventPayload(value) {
|
|
177
|
-
if (!isRecord(value))
|
|
178
|
-
return null;
|
|
179
|
-
const envelope = value;
|
|
180
|
-
const event = isRecord(envelope.event) ? envelope.event : value;
|
|
181
|
-
const type = stringValue(event.type);
|
|
182
|
-
if (type === "status") {
|
|
183
|
-
const status = statusPayload(event.status);
|
|
184
|
-
return status ? { type: "status", status } : null;
|
|
185
|
-
}
|
|
186
|
-
if (type === "connected") {
|
|
187
|
-
const status = statusPayload(event.status);
|
|
188
|
-
return status ? { type: "connected", status } : null;
|
|
189
|
-
}
|
|
190
|
-
if (type === "disconnected") {
|
|
191
|
-
return { type: "disconnected", ...(stringValue(event.reason) ? { reason: stringValue(event.reason) } : {}) };
|
|
192
|
-
}
|
|
193
|
-
if (type === "activity" && isAgentActivity(event.activity))
|
|
194
|
-
return { type: "activity", activity: event.activity };
|
|
195
|
-
if (type === "canvas-command" && isRecord(event.command)) {
|
|
196
|
-
// The Canvas controller owns command validation. Preserve the shared
|
|
197
|
-
// shape here so the parent stage can consume this event without a second
|
|
198
|
-
// protocol vocabulary.
|
|
199
|
-
return { type: "canvas-command", command: event.command };
|
|
200
|
-
}
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
function eventData(event) {
|
|
204
|
-
if (typeof event.data !== "string")
|
|
205
|
-
return event.data;
|
|
206
|
-
try {
|
|
207
|
-
return JSON.parse(event.data);
|
|
208
|
-
}
|
|
209
|
-
catch {
|
|
210
|
-
return null;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* HTTP/SSE browser adapter for the companion's canonical endpoints.
|
|
215
|
-
*
|
|
216
|
-
* The adapter is inert when no endpoint is configured. A host can publish an
|
|
217
|
-
* endpoint with `window.__NUDGE_UI_AGENT_BRIDGE__` or the meta tag named
|
|
218
|
-
* `nudge-ui-agent-bridge`; tests can inject a transport directly instead.
|
|
219
|
-
*/
|
|
220
118
|
export class HttpAgentBridgeTransport {
|
|
221
119
|
config;
|
|
222
120
|
constructor(config = configuredEndpoint() ?? {}) {
|
|
223
121
|
this.config = config;
|
|
224
122
|
}
|
|
225
123
|
async discover(request, signal) {
|
|
226
|
-
const url = endpointUrl(this.config,
|
|
124
|
+
const url = endpointUrl(this.config, "healthUrl", BRIDGE_ENDPOINTS.health, pageOrigin());
|
|
227
125
|
if (!url || typeof fetch !== "function")
|
|
228
126
|
return null;
|
|
229
127
|
const response = await fetch(withQuery(url, {
|
|
@@ -238,10 +136,10 @@ export class HttpAgentBridgeTransport {
|
|
|
238
136
|
|| payload.projectId !== request.projectId
|
|
239
137
|
|| (payload.origin !== undefined && payload.origin !== null && payload.origin !== request.origin))
|
|
240
138
|
return null;
|
|
241
|
-
return
|
|
139
|
+
return decodeAgentStatusSnapshot(payload.status);
|
|
242
140
|
}
|
|
243
141
|
async pair(request, signal) {
|
|
244
|
-
const url = endpointUrl(this.config,
|
|
142
|
+
const url = endpointUrl(this.config, "pairUrl", BRIDGE_ENDPOINTS.pair, pageOrigin());
|
|
245
143
|
if (!url || typeof fetch !== "function")
|
|
246
144
|
throw new Error("Agent bridge is unavailable.");
|
|
247
145
|
const response = await fetch(url, {
|
|
@@ -250,26 +148,13 @@ export class HttpAgentBridgeTransport {
|
|
|
250
148
|
body: JSON.stringify(request),
|
|
251
149
|
signal,
|
|
252
150
|
});
|
|
253
|
-
const
|
|
254
|
-
if (
|
|
255
|
-
|| payload.projectId !== request.projectId
|
|
256
|
-
|| payload.origin !== request.origin
|
|
257
|
-
|| typeof payload.sessionToken !== "string") {
|
|
151
|
+
const pairing = decodePairingResponse(await readJson(response), request);
|
|
152
|
+
if (!pairing)
|
|
258
153
|
throw new Error("Agent bridge returned an invalid pairing response.");
|
|
259
|
-
|
|
260
|
-
const status = statusPayload(payload.status);
|
|
261
|
-
if (!status)
|
|
262
|
-
throw new Error("Agent bridge returned an invalid status.");
|
|
263
|
-
return {
|
|
264
|
-
protocolVersion: AGENT_PROTOCOL_VERSION,
|
|
265
|
-
projectId: request.projectId,
|
|
266
|
-
origin: request.origin,
|
|
267
|
-
sessionToken: payload.sessionToken,
|
|
268
|
-
status,
|
|
269
|
-
};
|
|
154
|
+
return pairing;
|
|
270
155
|
}
|
|
271
156
|
async takeOver(request, signal) {
|
|
272
|
-
const url = endpointUrl(this.config,
|
|
157
|
+
const url = endpointUrl(this.config, "takeoverUrl", BRIDGE_ENDPOINTS.takeover, pageOrigin());
|
|
273
158
|
if (!url || typeof fetch !== "function")
|
|
274
159
|
throw new Error("Agent bridge is unavailable.");
|
|
275
160
|
const response = await fetch(url, {
|
|
@@ -278,42 +163,26 @@ export class HttpAgentBridgeTransport {
|
|
|
278
163
|
body: JSON.stringify(request),
|
|
279
164
|
signal,
|
|
280
165
|
});
|
|
281
|
-
const
|
|
282
|
-
if (
|
|
283
|
-
|| payload.projectId !== request.projectId
|
|
284
|
-
|| payload.origin !== request.origin
|
|
285
|
-
|| typeof payload.sessionToken !== "string") {
|
|
166
|
+
const pairing = decodePairingResponse(await readJson(response), request);
|
|
167
|
+
if (!pairing)
|
|
286
168
|
throw new Error("Agent bridge returned an invalid takeover response.");
|
|
287
|
-
|
|
288
|
-
const status = statusPayload(payload.status);
|
|
289
|
-
if (!status)
|
|
290
|
-
throw new Error("Agent bridge returned an invalid status.");
|
|
291
|
-
return {
|
|
292
|
-
protocolVersion: AGENT_PROTOCOL_VERSION,
|
|
293
|
-
projectId: request.projectId,
|
|
294
|
-
origin: request.origin,
|
|
295
|
-
sessionToken: payload.sessionToken,
|
|
296
|
-
status,
|
|
297
|
-
};
|
|
169
|
+
return pairing;
|
|
298
170
|
}
|
|
299
171
|
async restore(request, signal) {
|
|
300
|
-
const url = endpointUrl(this.config,
|
|
172
|
+
const url = endpointUrl(this.config, "statusUrl", BRIDGE_ENDPOINTS.status, pageOrigin());
|
|
301
173
|
if (!url || typeof fetch !== "function")
|
|
302
174
|
return null;
|
|
303
175
|
const response = await fetch(withQuery(url, {
|
|
304
176
|
projectId: request.projectId,
|
|
305
177
|
sessionToken: request.sessionToken,
|
|
306
178
|
}), { method: "GET", headers: headers(), signal });
|
|
307
|
-
const
|
|
308
|
-
if (
|
|
309
|
-
return null;
|
|
310
|
-
const status = statusPayload(payload);
|
|
311
|
-
if (!status || !status.paired)
|
|
179
|
+
const status = decodeAgentStatusSnapshot(await readJson(response));
|
|
180
|
+
if (!status || status.projectId !== request.projectId || !status.paired)
|
|
312
181
|
return null;
|
|
313
182
|
return status;
|
|
314
183
|
}
|
|
315
184
|
openEvents(request, handlers) {
|
|
316
|
-
const url = endpointUrl(this.config,
|
|
185
|
+
const url = endpointUrl(this.config, "eventsUrl", BRIDGE_ENDPOINTS.events, pageOrigin());
|
|
317
186
|
if (!url || typeof EventSource !== "function") {
|
|
318
187
|
queueMicrotask(() => handlers.onDisconnect("Agent event transport is unavailable."));
|
|
319
188
|
return { close: () => undefined };
|
|
@@ -325,10 +194,19 @@ export class HttpAgentBridgeTransport {
|
|
|
325
194
|
const source = new EventSource(eventUrl.href);
|
|
326
195
|
let closed = false;
|
|
327
196
|
const handleMessage = (event) => {
|
|
328
|
-
|
|
329
|
-
|
|
197
|
+
let envelope;
|
|
198
|
+
try {
|
|
199
|
+
envelope = JSON.parse(event.data);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
330
202
|
return;
|
|
331
|
-
|
|
203
|
+
}
|
|
204
|
+
if (!isRecord(envelope)
|
|
205
|
+
|| envelope.protocolVersion !== AGENT_PROTOCOL_VERSION
|
|
206
|
+
|| envelope.projectId !== request.projectId
|
|
207
|
+
|| envelope.sessionToken !== request.sessionToken)
|
|
208
|
+
return;
|
|
209
|
+
const parsed = decodeBridgeEvent(envelope.event);
|
|
332
210
|
if (parsed)
|
|
333
211
|
handlers.onEvent(parsed);
|
|
334
212
|
};
|
|
@@ -355,7 +233,7 @@ export class HttpAgentBridgeTransport {
|
|
|
355
233
|
};
|
|
356
234
|
}
|
|
357
235
|
async dispatch(request, signal) {
|
|
358
|
-
const url = endpointUrl(this.config,
|
|
236
|
+
const url = endpointUrl(this.config, "promptUrl", BRIDGE_ENDPOINTS.prompt, pageOrigin());
|
|
359
237
|
if (!url || typeof fetch !== "function")
|
|
360
238
|
throw new Error("Agent bridge is unavailable.");
|
|
361
239
|
const response = await fetch(url, {
|
|
@@ -364,25 +242,13 @@ export class HttpAgentBridgeTransport {
|
|
|
364
242
|
body: JSON.stringify(request),
|
|
365
243
|
signal,
|
|
366
244
|
});
|
|
367
|
-
const
|
|
368
|
-
if (!
|
|
369
|
-
throw new Error("Agent bridge returned an invalid prompt response.");
|
|
370
|
-
}
|
|
371
|
-
const requestCandidate = {
|
|
372
|
-
requestId: payload.request.requestId,
|
|
373
|
-
projectId: payload.request.projectId,
|
|
374
|
-
prompt: payload.request.prompt,
|
|
375
|
-
...(typeof payload.request.changeRevision === "number" ? { changeRevision: payload.request.changeRevision } : {}),
|
|
376
|
-
...(payload.request.clientDispatchId === undefined ? {} : { clientDispatchId: payload.request.clientDispatchId }),
|
|
377
|
-
...(payload.request.sketches === undefined ? {} : { sketches: payload.request.sketches }),
|
|
378
|
-
};
|
|
379
|
-
if (!isAgentPromptRequest(requestCandidate) || requestCandidate.projectId !== request.projectId) {
|
|
245
|
+
const dispatched = decodePromptDispatchResponse(await readJson(response), request.projectId);
|
|
246
|
+
if (!dispatched)
|
|
380
247
|
throw new Error("Agent bridge returned an invalid prompt response.");
|
|
381
|
-
|
|
382
|
-
return { request: requestCandidate, status: "working" };
|
|
248
|
+
return dispatched;
|
|
383
249
|
}
|
|
384
250
|
async disconnect(request, signal) {
|
|
385
|
-
const url = endpointUrl(this.config,
|
|
251
|
+
const url = endpointUrl(this.config, "disconnectUrl", BRIDGE_ENDPOINTS.disconnect, pageOrigin());
|
|
386
252
|
if (!url || typeof fetch !== "function")
|
|
387
253
|
return;
|
|
388
254
|
await fetch(url, {
|
|
@@ -393,7 +259,7 @@ export class HttpAgentBridgeTransport {
|
|
|
393
259
|
});
|
|
394
260
|
}
|
|
395
261
|
async acknowledgeCanvasCommand(request, signal) {
|
|
396
|
-
const url = endpointUrl(this.config,
|
|
262
|
+
const url = endpointUrl(this.config, "canvasAckUrl", BRIDGE_ENDPOINTS.canvasAcknowledgement, pageOrigin());
|
|
397
263
|
if (!url || typeof fetch !== "function")
|
|
398
264
|
return;
|
|
399
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, defaultBridgePort, CANVAS_COMMAND_TYPES, canonicalOrigin, 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, defaultBridgePort, CANVAS_COMMAND_TYPES, canonicalOrigin, 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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DraftTarget } from "../drafts/model.js";
|
|
2
|
-
import { type ChangeRecord } from "../changes/
|
|
2
|
+
import { type ChangeRecord } from "../changes/types.js";
|
|
3
3
|
import { type StructuralChange } from "../projection/structuralProjection.js";
|
|
4
4
|
export interface HandoffOwner {
|
|
5
5
|
readonly draftId: string;
|
|
@@ -13,35 +13,18 @@ export interface HandoffSnapshot {
|
|
|
13
13
|
readonly changes: readonly ChangeRecord[];
|
|
14
14
|
readonly structuralChanges: readonly StructuralChange[];
|
|
15
15
|
}
|
|
16
|
-
/** Stable, preview-metadata-free identity for one prompt handoff record. */
|
|
17
16
|
export declare function handoffChangeFingerprint(change: ChangeRecord): string;
|
|
18
|
-
/** Stable identity for one structural record included in a prompt handoff. */
|
|
19
17
|
export declare function handoffStructuralFingerprint(change: StructuralChange): string;
|
|
20
|
-
/**
|
|
21
|
-
* Positively verifies browser-observable source results after the inspector's
|
|
22
|
-
* own projections have been removed. Component props and interaction states
|
|
23
|
-
* intentionally remain unresolved because rendered output alone cannot prove
|
|
24
|
-
* that their source was updated.
|
|
25
|
-
*/
|
|
18
|
+
/** Component props and interaction states stay unresolved: rendered output alone cannot prove their source changed. */
|
|
26
19
|
export declare function verifiedChangeKeys(sentChanges: readonly ChangeRecord[], doc?: Document): Set<string>;
|
|
27
|
-
/** Captures the exact canonical edits associated with one dispatched prompt. */
|
|
28
20
|
export declare function recordAgentDispatch(revision: number, changes: readonly ChangeRecord[], structuralChanges?: readonly StructuralChange[], owner?: HandoffOwner): void;
|
|
29
|
-
/** Drops a captured revision when the bridge rejects its dispatch. */
|
|
30
21
|
export declare function discardAgentDispatch(revision: number): void;
|
|
31
|
-
/** Returns how many canonical edits were in flight for one dispatch. */
|
|
32
22
|
export declare function getAgentDispatchSize(revision: number): number;
|
|
33
|
-
/**
|
|
34
|
-
* Reconciles only records that still equal the sent snapshot and that remain
|
|
35
|
-
* observable after removing Nudge's own preview. Newer edits and ambiguous
|
|
36
|
-
* records are preserved.
|
|
37
|
-
*/
|
|
23
|
+
/** Newer edits and ambiguous records are preserved. */
|
|
38
24
|
export declare function verifyAndReconcileHandoff(snapshot: HandoffSnapshot, doc?: Document | null): Promise<number>;
|
|
39
25
|
export declare function documentBelongsToHandoff(doc: Document, owner: HandoffOwner): boolean;
|
|
40
|
-
/** Returns the records captured for one dispatch until it is reconciled. */
|
|
41
26
|
export declare function getAgentDispatch(revision: number): HandoffSnapshot | null;
|
|
42
|
-
/** Records in the owner draft that still equal what a handoff sent. */
|
|
43
27
|
export declare function unchangedHandoffRecords(snapshot: HandoffSnapshot): Pick<HandoffSnapshot, "changes" | "structuralChanges">;
|
|
44
|
-
/** Reconciles the captured records for one completed connected-agent request. */
|
|
45
28
|
export declare function verifyAndReconcileAgentDispatch(revision: number): Promise<number>;
|
|
46
29
|
/** Test/session reset for in-memory dispatch snapshots. */
|
|
47
30
|
export declare function resetAgentVerification(): void;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { draftIdForCard } from "../drafts/store.js";
|
|
1
|
+
import { draftIdForCard, getActiveDraftChanges, getDraftChanges, reconcileDraftChanges } from "../drafts/store.js";
|
|
2
2
|
import { getCanvasCards } from "../canvas/canvasStore.js";
|
|
3
3
|
import { getRegisteredFrames, getCanvasCardIdForDocument } from "../canvas/projection.js";
|
|
4
4
|
import { applicationTarget, targetFromKey, targetKey } from "../drafts/model.js";
|
|
5
5
|
import { changeKey, tokenReference } from "../changes/model.js";
|
|
6
6
|
import { selectorForManagedChange } from "../changes/managedStyleProjection.js";
|
|
7
|
-
import {
|
|
8
|
-
import { isComponentChange, isTextContentChange, isTokenChange, } from "../changes/changesLog.js";
|
|
7
|
+
import { isComponentChange, isTextContentChange, isTokenChange, } from "../changes/types.js";
|
|
9
8
|
import { verifyPreview } from "../projection/managedStylesheet.js";
|
|
10
9
|
import { resolveMovedRenderedInstance } from "../projection/renderedInstance.js";
|
|
11
10
|
import { relocateSourceSite, sourceSiteSelector } from "../selection/sourceSite.js";
|
|
@@ -35,11 +34,9 @@ function stableJsonValue(value) {
|
|
|
35
34
|
function stableSerialized(value) {
|
|
36
35
|
return JSON.stringify(stableJsonValue(value));
|
|
37
36
|
}
|
|
38
|
-
/** Stable, preview-metadata-free identity for one prompt handoff record. */
|
|
39
37
|
export function handoffChangeFingerprint(change) {
|
|
40
38
|
return stableSerialized(change);
|
|
41
39
|
}
|
|
42
|
-
/** Stable identity for one structural record included in a prompt handoff. */
|
|
43
40
|
export function handoffStructuralFingerprint(change) {
|
|
44
41
|
return stableSerialized(change);
|
|
45
42
|
}
|
|
@@ -60,7 +57,7 @@ function queryTargets(doc, selector) {
|
|
|
60
57
|
return [];
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
|
-
/**
|
|
60
|
+
/** Falls back to relocating a shifted source site. */
|
|
64
61
|
function styleTargets(change, doc) {
|
|
65
62
|
if (isTokenChange(change))
|
|
66
63
|
return queryTargets(doc, change.selector);
|
|
@@ -107,12 +104,7 @@ function verifyText(change, doc) {
|
|
|
107
104
|
&& change.after.length === 0
|
|
108
105
|
&& (resolved.element.textContent ?? "") === "";
|
|
109
106
|
}
|
|
110
|
-
/**
|
|
111
|
-
* A delete verifies when its target no longer resolves in the document once
|
|
112
|
-
* the preview is lifted: the source really removed it. Ambiguous evidence
|
|
113
|
-
* still means identical elements are present, so only a definitive miss
|
|
114
|
-
* verifies.
|
|
115
|
-
*/
|
|
107
|
+
/** Only a definitive miss verifies; ambiguous evidence still means identical elements are present. */
|
|
116
108
|
function verifyStructuralDelete(change, doc) {
|
|
117
109
|
if (!change.route || !change.state || !doc.location)
|
|
118
110
|
return false;
|
|
@@ -129,12 +121,7 @@ function verifyStructuralDelete(change, doc) {
|
|
|
129
121
|
&& documentStateKey(doc) === change.state
|
|
130
122
|
&& resolveMovedRenderedInstance(doc, change.target).status === "missing";
|
|
131
123
|
}
|
|
132
|
-
/**
|
|
133
|
-
* A move verifies when the element sits at its recorded destination without
|
|
134
|
-
* the preview holding it there. The projection rebuild returns a cleanly
|
|
135
|
-
* applied move preview to its captured origin, so such records conservatively
|
|
136
|
-
* stay unverified instead of trusting rendered placement alone.
|
|
137
|
-
*/
|
|
124
|
+
/** A cleanly applied preview returns to its captured origin, so only a move that stays at its recorded destination verifies. */
|
|
138
125
|
function verifyStructuralMove(change, doc) {
|
|
139
126
|
const target = resolveMovedRenderedInstance(doc, change.target);
|
|
140
127
|
if (target.status !== "resolved")
|
|
@@ -160,12 +147,7 @@ function verifiedStructuralChangeIds(eligible, doc) {
|
|
|
160
147
|
}
|
|
161
148
|
return verified;
|
|
162
149
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Positively verifies browser-observable source results after the inspector's
|
|
165
|
-
* own projections have been removed. Component props and interaction states
|
|
166
|
-
* intentionally remain unresolved because rendered output alone cannot prove
|
|
167
|
-
* that their source was updated.
|
|
168
|
-
*/
|
|
150
|
+
/** Component props and interaction states stay unresolved: rendered output alone cannot prove their source changed. */
|
|
169
151
|
export function verifiedChangeKeys(sentChanges, doc = document) {
|
|
170
152
|
const verified = new Set();
|
|
171
153
|
for (const change of sentChanges) {
|
|
@@ -179,7 +161,6 @@ export function verifiedChangeKeys(sentChanges, doc = document) {
|
|
|
179
161
|
}
|
|
180
162
|
return verified;
|
|
181
163
|
}
|
|
182
|
-
/** Captures the exact canonical edits associated with one dispatched prompt. */
|
|
183
164
|
export function recordAgentDispatch(revision, changes, structuralChanges = [], owner = captureHandoffOwner()) {
|
|
184
165
|
dispatches.set(revision, {
|
|
185
166
|
owner: structuredClone(owner),
|
|
@@ -187,11 +168,9 @@ export function recordAgentDispatch(revision, changes, structuralChanges = [], o
|
|
|
187
168
|
structuralChanges: structuralChanges.map((change) => structuredClone(change)),
|
|
188
169
|
});
|
|
189
170
|
}
|
|
190
|
-
/** Drops a captured revision when the bridge rejects its dispatch. */
|
|
191
171
|
export function discardAgentDispatch(revision) {
|
|
192
172
|
dispatches.delete(revision);
|
|
193
173
|
}
|
|
194
|
-
/** Returns how many canonical edits were in flight for one dispatch. */
|
|
195
174
|
export function getAgentDispatchSize(revision) {
|
|
196
175
|
const snapshot = dispatches.get(revision);
|
|
197
176
|
if (!snapshot)
|
|
@@ -220,11 +199,7 @@ function afterBrowserPaint(doc) {
|
|
|
220
199
|
});
|
|
221
200
|
});
|
|
222
201
|
}
|
|
223
|
-
/**
|
|
224
|
-
* Reconciles only records that still equal the sent snapshot and that remain
|
|
225
|
-
* observable after removing Nudge's own preview. Newer edits and ambiguous
|
|
226
|
-
* records are preserved.
|
|
227
|
-
*/
|
|
202
|
+
/** Newer edits and ambiguous records are preserved. */
|
|
228
203
|
export async function verifyAndReconcileHandoff(snapshot, doc = handoffDocument(snapshot.owner)) {
|
|
229
204
|
if (!doc || !documentBelongsToHandoff(doc, snapshot.owner))
|
|
230
205
|
return 0;
|
|
@@ -242,8 +217,6 @@ export async function verifyAndReconcileHandoff(snapshot, doc = handoffDocument(
|
|
|
242
217
|
const eligible = current.filter((change) => sentByKey.get(changeKey(change)) === handoffChangeFingerprint(change));
|
|
243
218
|
const eligibleKeys = new Set(eligible.map(changeKey));
|
|
244
219
|
const remaining = current.filter((change) => !eligibleKeys.has(changeKey(change)));
|
|
245
|
-
// The same "still unchanged" rule for structural intent: only canonical
|
|
246
|
-
// records byte-identical to the dispatched snapshot may be reconciled.
|
|
247
220
|
const sentStructural = new Map(snapshot.structuralChanges.map((change) => [change.id, handoffStructuralFingerprint(change)]));
|
|
248
221
|
const currentStructural = getDraftChanges(snapshot.owner.draftId).structuralChanges;
|
|
249
222
|
const eligibleStructural = currentStructural.filter((change) => sentStructural.get(change.id) === handoffStructuralFingerprint(change));
|
|
@@ -266,9 +239,7 @@ export async function verifyAndReconcileHandoff(snapshot, doc = handoffDocument(
|
|
|
266
239
|
return 0;
|
|
267
240
|
const verified = verifiedChangeKeys(eligible, doc);
|
|
268
241
|
const verifiedStructural = verifiedStructuralChangeIds(eligibleStructural, doc);
|
|
269
|
-
//
|
|
270
|
-
// window is open. Recheck byte identity immediately before reconciliation
|
|
271
|
-
// so a newer value at the same key can never be removed.
|
|
242
|
+
// Recheck byte identity before reconciling; a user edit can land while the two-frame window is open.
|
|
272
243
|
const currentByKey = new Map(getDraftChanges(snapshot.owner.draftId).changes.map((change) => [changeKey(change), handoffChangeFingerprint(change)]));
|
|
273
244
|
const stillVerified = new Set([...verified].filter((key) => currentByKey.get(key) === sentByKey.get(key)));
|
|
274
245
|
const currentStructuralById = new Map(getDraftChanges(snapshot.owner.draftId).structuralChanges.map((change) => [change.id, handoffStructuralFingerprint(change)]));
|
|
@@ -281,12 +252,11 @@ export async function verifyAndReconcileHandoff(snapshot, doc = handoffDocument(
|
|
|
281
252
|
return reconcileDraftChanges(snapshot.owner.draftId, stillVerified, stillVerifiedStructural);
|
|
282
253
|
}
|
|
283
254
|
finally {
|
|
284
|
-
//
|
|
285
|
-
// (for example, a read-only Canvas lease), restore the untouched set here.
|
|
255
|
+
// If reconciliation could not write (read-only Canvas lease), restore the untouched set; a Canvas restore settles on the renderer's acknowledgement.
|
|
286
256
|
if (doc === document)
|
|
287
257
|
await applyProjection(getActiveDraftChanges());
|
|
288
258
|
else
|
|
289
|
-
restoreCanonicalFrameProjection(doc);
|
|
259
|
+
await restoreCanonicalFrameProjection(doc);
|
|
290
260
|
}
|
|
291
261
|
}
|
|
292
262
|
export function documentBelongsToHandoff(doc, owner) {
|
|
@@ -308,11 +278,9 @@ function handoffDocument(owner) {
|
|
|
308
278
|
}
|
|
309
279
|
return owner.target.kind === "application" && !isEditorShellDocument() ? document : null;
|
|
310
280
|
}
|
|
311
|
-
/** Returns the records captured for one dispatch until it is reconciled. */
|
|
312
281
|
export function getAgentDispatch(revision) {
|
|
313
282
|
return dispatches.get(revision) ?? null;
|
|
314
283
|
}
|
|
315
|
-
/** Records in the owner draft that still equal what a handoff sent. */
|
|
316
284
|
export function unchangedHandoffRecords(snapshot) {
|
|
317
285
|
const sent = new Set(snapshot.changes.map(handoffChangeFingerprint));
|
|
318
286
|
const sentStructural = new Set(snapshot.structuralChanges.map(handoffStructuralFingerprint));
|
|
@@ -322,7 +290,6 @@ export function unchangedHandoffRecords(snapshot) {
|
|
|
322
290
|
structuralChanges: current.structuralChanges.filter((change) => sentStructural.has(handoffStructuralFingerprint(change))),
|
|
323
291
|
};
|
|
324
292
|
}
|
|
325
|
-
/** Reconciles the captured records for one completed connected-agent request. */
|
|
326
293
|
export async function verifyAndReconcileAgentDispatch(revision) {
|
|
327
294
|
const snapshot = dispatches.get(revision);
|
|
328
295
|
if (!snapshot)
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
export type InspectorShell = () => ReactElement;
|
|
3
|
+
export declare function bootstrapNudgeUi(inspectorHost: HTMLElement, shell?: InspectorShell): void;
|
|
4
|
+
export declare function mountInspector(host: HTMLElement): void;
|
|
5
|
+
export declare function unmountInspector(): void;
|