@modelprofile.com/browser-runtime 5.1.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-09-13 - 5.2.0
4
+
5
+ ### Maintenance
6
+
7
+ - update release tooling and omit private hints from npm (tooling)
8
+
9
+ ### Features
10
+
11
+ - add lease-owned WebRTC peers and demand-driven image capture (video)
12
+
13
+ ### Documentation
14
+
15
+ - describe the final release dependency state (changelog)
16
+
3
17
  ## 2026-09-08 - 5.1.0
4
18
 
5
19
  ### Features
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@modelprofile.com/browser-runtime',
6
- version: '5.1.0',
6
+ version: '5.2.0',
7
7
  description: 'Parent-owned, resource-centric Chromium runtime with revisioned attachment fencing, authenticated human and agent control, fail-closed egress, bounded artifacts, and Flex/MCP adapters.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxtQ0FBbUM7SUFDekMsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDBMQUEwTDtDQUN4TSxDQUFBIn0=
@@ -3,7 +3,7 @@ import { BrowserArtifactStore } from './classes.artifactstore.js';
3
3
  import { BrowserEgressProxy } from './classes.egressproxy.js';
4
4
  import { BrowserRuntimeError } from './errors.js';
5
5
  import { type IBrowserRuntimeTestingOptions } from './internal.testing.js';
6
- import type { IAttachTrustedFramedPeerOptions, IApplyBrowserAttachmentBindingRequest, IBrowserAttachmentBinding, TBrowserCapabilityDescriptor, TBrowserCapabilityAuthorizationRequest, TBrowserRuntimeLeaseAuthority, TBrowserRuntimeOperationClassification, IBrowserRuntimeFrameSubscription, IBrowserRuntimeOperationOptions, IBrowserRuntimeOptions, IBrowserResourceRegistration, IBrowserRuntimeState, IBrowserRuntimeViewportResult, ICreateBrowserResourceRequest, IRegisterBrowserResourceRequest, TIssueBrowserCapabilityRequest, TIssuedBrowserCapability, ILiveBrowserSessionLike, TBrowserActorRole, TBrowserAgentAction, TBrowserAgentActionResult, TBrowserRuntimeEvent } from './interfaces.js';
6
+ import type { IAttachTrustedFramedPeerOptions, IApplyBrowserAttachmentBindingRequest, IBrowserAttachmentBinding, TBrowserCapabilityDescriptor, TBrowserCapabilityAuthorizationRequest, TBrowserRuntimeLeaseAuthority, TBrowserRuntimeOperationClassification, IBrowserRuntimeFrameSubscription, IBrowserRuntimeOperationOptions, IBrowserRuntimeOptions, IBrowserResourceRegistration, IBrowserRuntimeState, IBrowserRuntimeViewportResult, IBrowserRuntimeEventSubscriptionOptions, TBrowserRuntimeVideoOffer, ICreateBrowserResourceRequest, IRegisterBrowserResourceRequest, TIssueBrowserCapabilityRequest, TIssuedBrowserCapability, ILiveBrowserSessionLike, TBrowserActorRole, TBrowserAgentAction, TBrowserAgentActionResult, TBrowserRuntimeEvent } from './interfaces.js';
7
7
  import { TransitionMutex } from './utils.js';
8
8
  import { BrowserRuntimeFramedServerPeer } from './classes.framed.js';
9
9
  type TCapabilityRecord = TBrowserCapabilityDescriptor & {
@@ -32,6 +32,9 @@ interface ILeaseRecord {
32
32
  released: boolean;
33
33
  releasePromise?: Promise<void>;
34
34
  preferredViewport?: plugins.smartpuppeteer.ILiveBrowserViewport;
35
+ videoPeerId: string;
36
+ videoPeerMayExist: boolean;
37
+ frameCaptureUsed: boolean;
35
38
  heldKeys: Map<string, plugins.smartpuppeteer.ILiveBrowserKeyInput>;
36
39
  heldButtons: Map<string, plugins.smartpuppeteer.ILiveBrowserMouseInput>;
37
40
  }
@@ -66,7 +69,7 @@ interface IQueuedOperationRecord {
66
69
  state: 'queued' | 'starting' | 'active' | 'settled';
67
70
  onQueuedAbort?: () => void;
68
71
  /** Resource-owned cleanup, admitted only for this exact released participant. */
69
- participantCleanup?: boolean;
72
+ participantCleanup?: 'participant' | 'subscription' | false;
70
73
  }
71
74
  interface IOutstandingFrameRecord {
72
75
  acknowledgement: plugins.smartpuppeteer.ILiveBrowserFrameAcknowledgementRequest;
@@ -86,6 +89,10 @@ type TFrameAcknowledgementOutcome = {
86
89
  interface IFrameSubscriptionRecord {
87
90
  lease: ILeaseRecord;
88
91
  listener: (event: TBrowserRuntimeEvent) => void;
92
+ includeFrames: boolean;
93
+ session: ILiveBrowserSessionLike;
94
+ closePromise?: Promise<void>;
95
+ closeComplete?: boolean;
89
96
  outstanding: Map<string, IOutstandingFrameRecord>;
90
97
  highestSequence: number;
91
98
  closed: boolean;
@@ -130,6 +137,7 @@ interface IResourceSlot {
130
137
  operationQueue: IQueuedOperationRecord[];
131
138
  operationSchedulerRunning: boolean;
132
139
  frameSubscriptions: Map<string, IFrameSubscriptionRecord>;
140
+ frameCaptureEnabled?: boolean;
133
141
  highestFrameSequence: number;
134
142
  producerAcknowledgements: Set<Promise<TFrameAcknowledgementOutcome>>;
135
143
  frameRefresh?: IFrameRefreshRecord;
@@ -220,6 +228,14 @@ export declare class BrowserRuntime {
220
228
  leaseHumanAgentAction(lease: ILeaseRecord, actionArg: unknown, operationOptions?: IBrowserRuntimeOperationOptions): Promise<TBrowserAgentActionResult>;
221
229
  /** @internal */
222
230
  leaseSetViewport(lease: ILeaseRecord, viewport: plugins.smartpuppeteer.ILiveBrowserViewport, operationOptions?: IBrowserRuntimeOperationOptions): Promise<IBrowserRuntimeViewportResult>;
231
+ /** @internal */
232
+ leaseOpenVideoPeer(lease: ILeaseRecord, options?: IBrowserRuntimeOperationOptions): Promise<TBrowserRuntimeVideoOffer>;
233
+ /** @internal */
234
+ leaseAnswerVideoPeer(lease: ILeaseRecord, negotiationId: string, description: plugins.smartpuppeteer.ILiveVideoDescription, options?: IBrowserRuntimeOperationOptions): Promise<void>;
235
+ /** @internal */
236
+ leaseCloseVideoPeer(lease: ILeaseRecord, options?: IBrowserRuntimeOperationOptions): Promise<void>;
237
+ /** @internal */
238
+ leaseGetVideoStatistics(lease: ILeaseRecord, options?: IBrowserRuntimeOperationOptions): Promise<plugins.smartpuppeteer.ILiveVideoStatistics>;
223
239
  private validatePreferredViewport;
224
240
  private applySharedViewport;
225
241
  /** @internal */
@@ -235,7 +251,8 @@ export declare class BrowserRuntime {
235
251
  private releaseAllParticipantInput;
236
252
  private releaseParticipantInput;
237
253
  /** @internal */
238
- subscribeLeaseEvents(lease: ILeaseRecord, listener: (event: TBrowserRuntimeEvent) => void): Promise<IBrowserRuntimeFrameSubscription>;
254
+ subscribeLeaseEvents(lease: ILeaseRecord, listener: (event: TBrowserRuntimeEvent) => void, options?: IBrowserRuntimeEventSubscriptionOptions): Promise<IBrowserRuntimeFrameSubscription>;
255
+ private reconcileFrameCapture;
239
256
  /** @internal */
240
257
  acknowledgeLeaseFrame(lease: ILeaseRecord, acknowledgementArg: plugins.smartpuppeteer.ILiveBrowserFrameAcknowledgementRequest): Promise<boolean>;
241
258
  /** @internal */
@@ -284,6 +301,7 @@ export declare class BrowserRuntime {
284
301
  private handleSessionEvent;
285
302
  private pushToSubscription;
286
303
  private closeFrameSubscription;
304
+ private detachFrameSubscription;
287
305
  private retireOutstandingFrame;
288
306
  private validateFrameAcknowledgement;
289
307
  private frameAcknowledgementKey;
@@ -372,7 +390,11 @@ export declare class BrowserRuntimeLease {
372
390
  dispatchWheel(input: plugins.smartpuppeteer.ILiveBrowserWheelInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
373
391
  dispatchKey(input: plugins.smartpuppeteer.ILiveBrowserKeyInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
374
392
  insertText(input: plugins.smartpuppeteer.ILiveBrowserInsertTextInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
375
- subscribeEvents(listener: (event: TBrowserRuntimeEvent) => void): Promise<IBrowserRuntimeFrameSubscription>;
393
+ subscribeEvents(listener: (event: TBrowserRuntimeEvent) => void, options?: IBrowserRuntimeEventSubscriptionOptions): Promise<IBrowserRuntimeFrameSubscription>;
394
+ openVideoPeer(options?: IBrowserRuntimeOperationOptions): Promise<TBrowserRuntimeVideoOffer>;
395
+ answerVideoPeer(negotiationId: string, description: plugins.smartpuppeteer.ILiveVideoDescription, options?: IBrowserRuntimeOperationOptions): Promise<void>;
396
+ closeVideoPeer(options?: IBrowserRuntimeOperationOptions): Promise<void>;
397
+ getVideoStatistics(options?: IBrowserRuntimeOperationOptions): Promise<plugins.smartpuppeteer.ILiveVideoStatistics>;
376
398
  acknowledgeFrame(acknowledgement: plugins.smartpuppeteer.ILiveBrowserFrameAcknowledgementRequest): Promise<boolean>;
377
399
  refreshFrameStream(operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
378
400
  readArtifact(artifactId: string): Promise<Uint8Array>;