opensteer 0.9.6 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/{chunk-BVRIPCWA.js → chunk-3OHKIPBD.js} +316 -465
  2. package/dist/chunk-3OHKIPBD.js.map +1 -0
  3. package/dist/{chunk-L4NF74KI.js → chunk-52UNH5UW.js} +5 -5
  4. package/dist/{chunk-L4NF74KI.js.map → chunk-52UNH5UW.js.map} +1 -1
  5. package/dist/{chunk-3XBQRZZC.js → chunk-PJXN7HED.js} +115 -14
  6. package/dist/chunk-PJXN7HED.js.map +1 -0
  7. package/dist/{chunk-3I3A5OLB.js → chunk-R33BXCMQ.js} +16 -7
  8. package/dist/chunk-R33BXCMQ.js.map +1 -0
  9. package/dist/{chunk-T5P2QGZ3.js → chunk-U4BUCIZ4.js} +153 -12
  10. package/dist/chunk-U4BUCIZ4.js.map +1 -0
  11. package/dist/cli/bin.cjs +663 -544
  12. package/dist/cli/bin.cjs.map +1 -1
  13. package/dist/cli/bin.js +66 -50
  14. package/dist/cli/bin.js.map +1 -1
  15. package/dist/index.cjs +584 -495
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +26 -50
  18. package/dist/index.d.ts +26 -50
  19. package/dist/index.js +4 -4
  20. package/dist/local-view/public/assets/app.js +10 -1
  21. package/dist/local-view/serve-entry.cjs +687 -494
  22. package/dist/local-view/serve-entry.cjs.map +1 -1
  23. package/dist/local-view/serve-entry.js +2 -2
  24. package/dist/opensteer-CY2QUJEG.js +6 -0
  25. package/dist/{opensteer-UGA6YBRN.js.map → opensteer-CY2QUJEG.js.map} +1 -1
  26. package/dist/{session-control-U3L5H2ZI.js → session-control-FIP6ZJLH.js} +4 -4
  27. package/dist/{session-control-U3L5H2ZI.js.map → session-control-FIP6ZJLH.js.map} +1 -1
  28. package/package.json +7 -7
  29. package/dist/chunk-3I3A5OLB.js.map +0 -1
  30. package/dist/chunk-3XBQRZZC.js.map +0 -1
  31. package/dist/chunk-BVRIPCWA.js.map +0 -1
  32. package/dist/chunk-T5P2QGZ3.js.map +0 -1
  33. package/dist/opensteer-UGA6YBRN.js +0 -6
package/dist/index.d.cts CHANGED
@@ -398,6 +398,7 @@ interface BrowserCapabilities {
398
398
  }
399
399
 
400
400
  interface PostLoadTrackerSnapshot {
401
+ readonly lastMutationAt: number;
401
402
  readonly lastTrackedNetworkActivityAt: number;
402
403
  readonly trackedPendingFetches: number;
403
404
  readonly trackedPendingXhrs: number;
@@ -415,6 +416,8 @@ interface ActionBoundaryOutcome {
415
416
  readonly trigger: ActionBoundarySettleTrigger;
416
417
  readonly crossDocument: boolean;
417
418
  readonly bootstrapSettled: boolean;
419
+ readonly observedMutationQuietMs?: number;
420
+ readonly postLoadHandled?: boolean;
418
421
  readonly timedOutPhase?: ActionBoundaryTimedOutPhase;
419
422
  }
420
423
 
@@ -745,6 +748,7 @@ interface BrowserInspector {
745
748
  readonly pageRef: PageRef;
746
749
  readonly timeoutMs?: number;
747
750
  readonly settleMs?: number;
751
+ readonly initialQuietMs?: number;
748
752
  readonly scope?: VisualStabilityScope;
749
753
  }): Promise<void>;
750
754
  waitForPostLoadQuiet(input: {
@@ -1628,27 +1632,11 @@ interface OpensteerStealthProfileInput {
1628
1632
  readonly locale?: string;
1629
1633
  readonly timezoneId?: string;
1630
1634
  }
1631
- interface OpensteerResolvedTarget {
1632
- readonly pageRef: PageRef;
1633
- readonly frameRef: FrameRef;
1634
- readonly documentRef: DocumentRef;
1635
- readonly documentEpoch: DocumentEpoch;
1636
- readonly nodeRef: NodeRef;
1635
+ interface OpensteerActionResult {
1637
1636
  readonly tagName: string;
1638
- readonly pathHint: string;
1639
1637
  readonly persist?: string;
1640
- readonly selectorUsed?: string;
1641
- }
1642
- interface OpensteerActionResult {
1643
- readonly target: OpensteerResolvedTarget;
1644
- readonly point?: {
1645
- readonly x: number;
1646
- readonly y: number;
1647
- };
1648
1638
  }
1649
- interface OpensteerSessionState {
1650
- readonly sessionRef: SessionRef;
1651
- readonly pageRef: PageRef;
1639
+ interface OpensteerNavigationSummary {
1652
1640
  readonly url: string;
1653
1641
  readonly title: string;
1654
1642
  }
@@ -1659,7 +1647,7 @@ interface OpensteerOpenInput {
1659
1647
  readonly launch?: OpensteerBrowserLaunchOptions;
1660
1648
  readonly context?: OpensteerBrowserContextOptions;
1661
1649
  }
1662
- interface OpensteerOpenOutput extends OpensteerSessionState {
1650
+ interface OpensteerOpenOutput extends OpensteerNavigationSummary {
1663
1651
  }
1664
1652
  interface OpensteerPageListInput {
1665
1653
  }
@@ -1671,12 +1659,13 @@ interface OpensteerPageNewInput {
1671
1659
  readonly url?: string;
1672
1660
  readonly openerPageRef?: PageRef;
1673
1661
  }
1674
- interface OpensteerPageNewOutput extends OpensteerSessionState {
1662
+ interface OpensteerPageNewOutput extends OpensteerNavigationSummary {
1663
+ readonly pageRef: PageRef;
1675
1664
  }
1676
1665
  interface OpensteerPageActivateInput {
1677
1666
  readonly pageRef: PageRef;
1678
1667
  }
1679
- interface OpensteerPageActivateOutput extends OpensteerSessionState {
1668
+ interface OpensteerPageActivateOutput extends OpensteerNavigationSummary {
1680
1669
  }
1681
1670
  interface OpensteerPageCloseInput {
1682
1671
  readonly pageRef?: PageRef;
@@ -1690,7 +1679,7 @@ interface OpensteerPageGotoInput {
1690
1679
  readonly url: string;
1691
1680
  readonly captureNetwork?: string;
1692
1681
  }
1693
- interface OpensteerPageGotoOutput extends OpensteerSessionState {
1682
+ interface OpensteerPageGotoOutput extends OpensteerNavigationSummary {
1694
1683
  }
1695
1684
  interface OpensteerPageEvaluateInput {
1696
1685
  readonly script: string;
@@ -1766,39 +1755,22 @@ interface OpensteerComputerScreenshotOptions {
1766
1755
  readonly includeCursor?: boolean;
1767
1756
  readonly disableAnnotations?: readonly OpensteerComputerAnnotation[];
1768
1757
  }
1758
+ interface OpensteerScreenshotSummary {
1759
+ readonly payload: ExternalBinaryLocation;
1760
+ readonly format: "png" | "jpeg" | "webp";
1761
+ readonly size: Size;
1762
+ readonly coordinateSpace: CoordinateSpace;
1763
+ readonly clip?: Rect;
1764
+ }
1769
1765
  interface OpensteerComputerExecuteInput {
1770
1766
  readonly action: OpensteerComputerAction;
1771
1767
  readonly screenshot?: OpensteerComputerScreenshotOptions;
1772
1768
  readonly captureNetwork?: string;
1773
1769
  }
1774
- interface OpensteerComputerDisplayScale {
1775
- readonly x: number;
1776
- readonly y: number;
1777
- }
1778
- interface OpensteerComputerTracePoint {
1779
- readonly role: "point" | "start" | "end";
1780
- readonly point: Point;
1781
- readonly hitTest?: HitTestResult;
1782
- readonly target?: OpensteerResolvedTarget;
1783
- }
1784
- interface OpensteerComputerTraceEnrichment {
1785
- readonly points: readonly OpensteerComputerTracePoint[];
1786
- }
1787
- interface OpensteerComputerExecuteTiming {
1788
- readonly actionMs: number;
1789
- readonly waitMs: number;
1790
- readonly totalMs: number;
1791
- }
1792
1770
  interface OpensteerComputerExecuteOutput {
1793
- readonly action: OpensteerComputerAction;
1794
- readonly pageRef: PageRef;
1795
- readonly screenshot: ScreenshotArtifact;
1796
- readonly displayViewport: ViewportMetrics;
1797
- readonly nativeViewport: ViewportMetrics;
1798
- readonly displayScale: OpensteerComputerDisplayScale;
1799
- readonly events: readonly StepEvent[];
1800
- readonly timing: OpensteerComputerExecuteTiming;
1801
- readonly trace?: OpensteerComputerTraceEnrichment;
1771
+ readonly url: string;
1772
+ readonly title: string;
1773
+ readonly screenshot: OpensteerScreenshotSummary;
1802
1774
  }
1803
1775
  declare const opensteerSemanticOperationNames: readonly ["session.open", "page.list", "page.new", "page.activate", "page.close", "page.goto", "page.evaluate", "page.add-init-script", "page.snapshot", "dom.click", "dom.hover", "dom.input", "dom.scroll", "dom.extract", "network.query", "network.detail", "interaction.capture", "interaction.get", "interaction.diff", "interaction.replay", "artifact.read", "session.cookies", "session.storage", "session.state", "session.fetch", "scripts.capture", "scripts.beautify", "scripts.deobfuscate", "scripts.sandbox", "captcha.solve", "computer.execute", "session.close"];
1804
1776
  type OpensteerSemanticOperationName = (typeof opensteerSemanticOperationNames)[number];
@@ -1939,7 +1911,7 @@ interface DomActionSettleOptions {
1939
1911
  readonly snapshot?: ActionBoundarySnapshot;
1940
1912
  readonly signal: AbortSignal;
1941
1913
  remainingMs(): number | undefined;
1942
- policySettle(pageRef: PageRef, trigger: ActionBoundarySettleTrigger): Promise<void>;
1914
+ policySettle(pageRef: PageRef, trigger: ActionBoundarySettleTrigger, boundary?: ActionBoundaryOutcome): Promise<void>;
1943
1915
  }
1944
1916
  type DomPointerHitRelation = "self" | "descendant" | "ancestor" | "same-owner" | "outside" | "unknown";
1945
1917
  interface DomPointerHitAssessment {
@@ -2349,6 +2321,8 @@ interface SettleContext extends SettleDelayInput {
2349
2321
  readonly pageRef: PageRef;
2350
2322
  readonly signal: AbortSignal;
2351
2323
  readonly remainingMs: number | undefined;
2324
+ readonly observedMutationQuietMs?: number;
2325
+ readonly postLoadHandled?: boolean;
2352
2326
  }
2353
2327
  interface SettleObserver {
2354
2328
  settle(input: SettleContext): Promise<boolean>;
@@ -2715,6 +2689,7 @@ interface WorkspaceBrowserManifest {
2715
2689
  }
2716
2690
  interface WorkspaceLiveBrowserRecord {
2717
2691
  readonly mode: "persistent";
2692
+ readonly ownership: "owned" | "attached";
2718
2693
  readonly engine: OpensteerEngineName;
2719
2694
  readonly endpoint?: string;
2720
2695
  readonly baseUrl?: string;
@@ -3113,6 +3088,7 @@ interface PersistedSessionRecordBase {
3113
3088
  interface PersistedLocalBrowserSessionRecord extends PersistedSessionRecordBase {
3114
3089
  readonly provider: "local";
3115
3090
  readonly engine: "playwright" | "abp";
3091
+ readonly ownership?: Exclude<OpensteerSessionOwnership, "managed">;
3116
3092
  readonly endpoint?: string;
3117
3093
  readonly baseUrl?: string;
3118
3094
  readonly remoteDebuggingUrl?: string;
package/dist/index.d.ts CHANGED
@@ -398,6 +398,7 @@ interface BrowserCapabilities {
398
398
  }
399
399
 
400
400
  interface PostLoadTrackerSnapshot {
401
+ readonly lastMutationAt: number;
401
402
  readonly lastTrackedNetworkActivityAt: number;
402
403
  readonly trackedPendingFetches: number;
403
404
  readonly trackedPendingXhrs: number;
@@ -415,6 +416,8 @@ interface ActionBoundaryOutcome {
415
416
  readonly trigger: ActionBoundarySettleTrigger;
416
417
  readonly crossDocument: boolean;
417
418
  readonly bootstrapSettled: boolean;
419
+ readonly observedMutationQuietMs?: number;
420
+ readonly postLoadHandled?: boolean;
418
421
  readonly timedOutPhase?: ActionBoundaryTimedOutPhase;
419
422
  }
420
423
 
@@ -745,6 +748,7 @@ interface BrowserInspector {
745
748
  readonly pageRef: PageRef;
746
749
  readonly timeoutMs?: number;
747
750
  readonly settleMs?: number;
751
+ readonly initialQuietMs?: number;
748
752
  readonly scope?: VisualStabilityScope;
749
753
  }): Promise<void>;
750
754
  waitForPostLoadQuiet(input: {
@@ -1628,27 +1632,11 @@ interface OpensteerStealthProfileInput {
1628
1632
  readonly locale?: string;
1629
1633
  readonly timezoneId?: string;
1630
1634
  }
1631
- interface OpensteerResolvedTarget {
1632
- readonly pageRef: PageRef;
1633
- readonly frameRef: FrameRef;
1634
- readonly documentRef: DocumentRef;
1635
- readonly documentEpoch: DocumentEpoch;
1636
- readonly nodeRef: NodeRef;
1635
+ interface OpensteerActionResult {
1637
1636
  readonly tagName: string;
1638
- readonly pathHint: string;
1639
1637
  readonly persist?: string;
1640
- readonly selectorUsed?: string;
1641
- }
1642
- interface OpensteerActionResult {
1643
- readonly target: OpensteerResolvedTarget;
1644
- readonly point?: {
1645
- readonly x: number;
1646
- readonly y: number;
1647
- };
1648
1638
  }
1649
- interface OpensteerSessionState {
1650
- readonly sessionRef: SessionRef;
1651
- readonly pageRef: PageRef;
1639
+ interface OpensteerNavigationSummary {
1652
1640
  readonly url: string;
1653
1641
  readonly title: string;
1654
1642
  }
@@ -1659,7 +1647,7 @@ interface OpensteerOpenInput {
1659
1647
  readonly launch?: OpensteerBrowserLaunchOptions;
1660
1648
  readonly context?: OpensteerBrowserContextOptions;
1661
1649
  }
1662
- interface OpensteerOpenOutput extends OpensteerSessionState {
1650
+ interface OpensteerOpenOutput extends OpensteerNavigationSummary {
1663
1651
  }
1664
1652
  interface OpensteerPageListInput {
1665
1653
  }
@@ -1671,12 +1659,13 @@ interface OpensteerPageNewInput {
1671
1659
  readonly url?: string;
1672
1660
  readonly openerPageRef?: PageRef;
1673
1661
  }
1674
- interface OpensteerPageNewOutput extends OpensteerSessionState {
1662
+ interface OpensteerPageNewOutput extends OpensteerNavigationSummary {
1663
+ readonly pageRef: PageRef;
1675
1664
  }
1676
1665
  interface OpensteerPageActivateInput {
1677
1666
  readonly pageRef: PageRef;
1678
1667
  }
1679
- interface OpensteerPageActivateOutput extends OpensteerSessionState {
1668
+ interface OpensteerPageActivateOutput extends OpensteerNavigationSummary {
1680
1669
  }
1681
1670
  interface OpensteerPageCloseInput {
1682
1671
  readonly pageRef?: PageRef;
@@ -1690,7 +1679,7 @@ interface OpensteerPageGotoInput {
1690
1679
  readonly url: string;
1691
1680
  readonly captureNetwork?: string;
1692
1681
  }
1693
- interface OpensteerPageGotoOutput extends OpensteerSessionState {
1682
+ interface OpensteerPageGotoOutput extends OpensteerNavigationSummary {
1694
1683
  }
1695
1684
  interface OpensteerPageEvaluateInput {
1696
1685
  readonly script: string;
@@ -1766,39 +1755,22 @@ interface OpensteerComputerScreenshotOptions {
1766
1755
  readonly includeCursor?: boolean;
1767
1756
  readonly disableAnnotations?: readonly OpensteerComputerAnnotation[];
1768
1757
  }
1758
+ interface OpensteerScreenshotSummary {
1759
+ readonly payload: ExternalBinaryLocation;
1760
+ readonly format: "png" | "jpeg" | "webp";
1761
+ readonly size: Size;
1762
+ readonly coordinateSpace: CoordinateSpace;
1763
+ readonly clip?: Rect;
1764
+ }
1769
1765
  interface OpensteerComputerExecuteInput {
1770
1766
  readonly action: OpensteerComputerAction;
1771
1767
  readonly screenshot?: OpensteerComputerScreenshotOptions;
1772
1768
  readonly captureNetwork?: string;
1773
1769
  }
1774
- interface OpensteerComputerDisplayScale {
1775
- readonly x: number;
1776
- readonly y: number;
1777
- }
1778
- interface OpensteerComputerTracePoint {
1779
- readonly role: "point" | "start" | "end";
1780
- readonly point: Point;
1781
- readonly hitTest?: HitTestResult;
1782
- readonly target?: OpensteerResolvedTarget;
1783
- }
1784
- interface OpensteerComputerTraceEnrichment {
1785
- readonly points: readonly OpensteerComputerTracePoint[];
1786
- }
1787
- interface OpensteerComputerExecuteTiming {
1788
- readonly actionMs: number;
1789
- readonly waitMs: number;
1790
- readonly totalMs: number;
1791
- }
1792
1770
  interface OpensteerComputerExecuteOutput {
1793
- readonly action: OpensteerComputerAction;
1794
- readonly pageRef: PageRef;
1795
- readonly screenshot: ScreenshotArtifact;
1796
- readonly displayViewport: ViewportMetrics;
1797
- readonly nativeViewport: ViewportMetrics;
1798
- readonly displayScale: OpensteerComputerDisplayScale;
1799
- readonly events: readonly StepEvent[];
1800
- readonly timing: OpensteerComputerExecuteTiming;
1801
- readonly trace?: OpensteerComputerTraceEnrichment;
1771
+ readonly url: string;
1772
+ readonly title: string;
1773
+ readonly screenshot: OpensteerScreenshotSummary;
1802
1774
  }
1803
1775
  declare const opensteerSemanticOperationNames: readonly ["session.open", "page.list", "page.new", "page.activate", "page.close", "page.goto", "page.evaluate", "page.add-init-script", "page.snapshot", "dom.click", "dom.hover", "dom.input", "dom.scroll", "dom.extract", "network.query", "network.detail", "interaction.capture", "interaction.get", "interaction.diff", "interaction.replay", "artifact.read", "session.cookies", "session.storage", "session.state", "session.fetch", "scripts.capture", "scripts.beautify", "scripts.deobfuscate", "scripts.sandbox", "captcha.solve", "computer.execute", "session.close"];
1804
1776
  type OpensteerSemanticOperationName = (typeof opensteerSemanticOperationNames)[number];
@@ -1939,7 +1911,7 @@ interface DomActionSettleOptions {
1939
1911
  readonly snapshot?: ActionBoundarySnapshot;
1940
1912
  readonly signal: AbortSignal;
1941
1913
  remainingMs(): number | undefined;
1942
- policySettle(pageRef: PageRef, trigger: ActionBoundarySettleTrigger): Promise<void>;
1914
+ policySettle(pageRef: PageRef, trigger: ActionBoundarySettleTrigger, boundary?: ActionBoundaryOutcome): Promise<void>;
1943
1915
  }
1944
1916
  type DomPointerHitRelation = "self" | "descendant" | "ancestor" | "same-owner" | "outside" | "unknown";
1945
1917
  interface DomPointerHitAssessment {
@@ -2349,6 +2321,8 @@ interface SettleContext extends SettleDelayInput {
2349
2321
  readonly pageRef: PageRef;
2350
2322
  readonly signal: AbortSignal;
2351
2323
  readonly remainingMs: number | undefined;
2324
+ readonly observedMutationQuietMs?: number;
2325
+ readonly postLoadHandled?: boolean;
2352
2326
  }
2353
2327
  interface SettleObserver {
2354
2328
  settle(input: SettleContext): Promise<boolean>;
@@ -2715,6 +2689,7 @@ interface WorkspaceBrowserManifest {
2715
2689
  }
2716
2690
  interface WorkspaceLiveBrowserRecord {
2717
2691
  readonly mode: "persistent";
2692
+ readonly ownership: "owned" | "attached";
2718
2693
  readonly engine: OpensteerEngineName;
2719
2694
  readonly endpoint?: string;
2720
2695
  readonly baseUrl?: string;
@@ -3113,6 +3088,7 @@ interface PersistedSessionRecordBase {
3113
3088
  interface PersistedLocalBrowserSessionRecord extends PersistedSessionRecordBase {
3114
3089
  readonly provider: "local";
3115
3090
  readonly engine: "playwright" | "abp";
3091
+ readonly ownership?: Exclude<OpensteerSessionOwnership, "managed">;
3116
3092
  readonly endpoint?: string;
3117
3093
  readonly baseUrl?: string;
3118
3094
  readonly remoteDebuggingUrl?: string;
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export { Opensteer } from './chunk-L4NF74KI.js';
2
- export { DEFERRED_MATCH_ATTR_KEYS, ElementPathError, MATCH_ATTRIBUTE_PRIORITY, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL, OpensteerCloudClient, STABLE_PRIMARY_ATTR_KEYS, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createDomDescriptorStore, createDomRuntime, createOpensteerExtractionDescriptorStore, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, hashDomDescriptorPersist, isCurrentUrlField, isValidCssAttributeKey, normalizeExtractedValue, normalizeOpensteerProviderMode, parseDomDescriptorRecord, parseExtractionDescriptorRecord, resolveCloudConfig, resolveDomActionBridge, resolveExtractedValueInContext, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath } from './chunk-BVRIPCWA.js';
3
- export { DEFAULT_OPENSTEER_ENGINE, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, OpensteerBrowserManager, OpensteerProtocolError, createArtifactStore, createFilesystemOpensteerWorkspace, createObservationStore, isOpensteerProtocolError, manifestToExternalBinaryLocation, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeWorkspaceId, opensteerErrorCodes, resolveFilesystemWorkspacePath, resolveOpensteerEngineName } from './chunk-3XBQRZZC.js';
4
- export { OpensteerAttachAmbiguousError, clearPersistedSessionRecord, discoverLocalCdpBrowsers, inspectCdpEndpoint, listLocalChromeProfiles, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudSessionRecordPath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, writePersistedSessionRecord } from './chunk-T5P2QGZ3.js';
1
+ export { Opensteer } from './chunk-52UNH5UW.js';
2
+ export { DEFERRED_MATCH_ATTR_KEYS, ElementPathError, MATCH_ATTRIBUTE_PRIORITY, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL, OpensteerCloudClient, STABLE_PRIMARY_ATTR_KEYS, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createDomDescriptorStore, createDomRuntime, createOpensteerExtractionDescriptorStore, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, hashDomDescriptorPersist, isCurrentUrlField, isValidCssAttributeKey, normalizeExtractedValue, normalizeOpensteerProviderMode, parseDomDescriptorRecord, parseExtractionDescriptorRecord, resolveCloudConfig, resolveDomActionBridge, resolveExtractedValueInContext, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath } from './chunk-3OHKIPBD.js';
3
+ export { DEFAULT_OPENSTEER_ENGINE, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, OpensteerBrowserManager, OpensteerProtocolError, createArtifactStore, createFilesystemOpensteerWorkspace, createObservationStore, isOpensteerProtocolError, manifestToExternalBinaryLocation, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeWorkspaceId, opensteerErrorCodes, resolveFilesystemWorkspacePath, resolveOpensteerEngineName } from './chunk-PJXN7HED.js';
4
+ export { OpensteerAttachAmbiguousError, clearPersistedSessionRecord, discoverLocalCdpBrowsers, inspectCdpEndpoint, listLocalChromeProfiles, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudSessionRecordPath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, writePersistedSessionRecord } from './chunk-U4BUCIZ4.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -1556,7 +1556,16 @@ class LocalViewApp {
1556
1556
 
1557
1557
  const meta = document.createElement("span");
1558
1558
  meta.className = "session-info";
1559
- meta.textContent = [session.workspace, `pid ${session.pid}`].filter(Boolean).join(" \u00b7 ");
1559
+ meta.textContent = [
1560
+ session.workspace,
1561
+ Number.isInteger(session.pid) && session.pid > 0
1562
+ ? `pid ${session.pid}`
1563
+ : session.ownership === "attached"
1564
+ ? "attached"
1565
+ : "",
1566
+ ]
1567
+ .filter(Boolean)
1568
+ .join(" \u00b7 ");
1560
1569
 
1561
1570
  row2.append(badge, meta);
1562
1571