@modelprofile.com/browser-runtime 5.2.1 → 5.4.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,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-09-14 - 5.4.0
4
+
5
+ ### Features
6
+
7
+ - support page dialogs and bounded wheel input concurrency (runtime)
8
+ - Expose pending tab dialogs in runtime state and add human lease respondToDialog() with dialog operation classification.
9
+ - Let dialog replies bypass paused page operations and map pending or stale input errors to DIALOG_PENDING and STALE_INPUT.
10
+ - Run up to four wheel dispatches concurrently while preserving admission order and semantic barriers.
11
+ - Release held native input before input enters a new document to avoid stale modifiers or buttons.
12
+ - Bump @push.rocks/smartpuppeteer to ^2.11.1.
13
+
14
+ ## 2026-09-14 - 5.3.0
15
+
16
+ ### Features
17
+
18
+ - authorize selected-tab inspection through human leases (devtools)
19
+
3
20
  ## 2026-09-13 - 5.2.1
4
21
 
5
22
  ### Fixes
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@modelprofile.com/browser-runtime',
6
- version: '5.2.1',
6
+ version: '5.4.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=
@@ -35,9 +35,23 @@ interface ILeaseRecord {
35
35
  videoPeerId: string;
36
36
  videoPeerMayExist: boolean;
37
37
  frameCaptureUsed: boolean;
38
+ devTools?: IDevToolsRecord;
38
39
  heldKeys: Map<string, plugins.smartpuppeteer.ILiveBrowserKeyInput>;
39
40
  heldButtons: Map<string, plugins.smartpuppeteer.ILiveBrowserMouseInput>;
40
41
  }
42
+ interface IDevToolsRecord {
43
+ authority: TBrowserRuntimeLeaseAuthority;
44
+ session: ILiveBrowserSessionLike;
45
+ controller: AbortController;
46
+ connection?: plugins.smartpuppeteer.ILiveBrowserDevToolsConnection;
47
+ opening?: Promise<plugins.smartpuppeteer.ILiveBrowserDevToolsConnection>;
48
+ closePromise?: Promise<void>;
49
+ pending: Set<Promise<void>>;
50
+ commands: number;
51
+ interrupts: number;
52
+ closed: boolean;
53
+ removeAbortListener(): void;
54
+ }
41
55
  export interface IBrowserRuntimeLeaseRenewalOptions {
42
56
  signal?: AbortSignal;
43
57
  /** Lifetime from successful reauthorization; defaults to the runtime capability lifetime. */
@@ -133,7 +147,13 @@ interface IResourceSlot {
133
147
  profileDirectory?: string;
134
148
  unsubscribeSession?: () => void;
135
149
  leases: Map<string, ILeaseRecord>;
136
- operation?: IOperationRecord;
150
+ operations: Set<IOperationRecord>;
151
+ activeQueuedOperations: Set<IQueuedOperationRecord>;
152
+ inputCleanup?: {
153
+ session: ILiveBrowserSessionLike;
154
+ incarnationGeneration: number;
155
+ promise: Promise<void>;
156
+ };
137
157
  operationQueue: IQueuedOperationRecord[];
138
158
  operationSchedulerRunning: boolean;
139
159
  frameSubscriptions: Map<string, IFrameSubscriptionRecord>;
@@ -231,6 +251,11 @@ export declare class BrowserRuntime {
231
251
  /** @internal */
232
252
  leaseOpenVideoPeer(lease: ILeaseRecord, options?: IBrowserRuntimeOperationOptions): Promise<TBrowserRuntimeVideoOffer>;
233
253
  /** @internal */
254
+ leaseOpenDevTools(lease: ILeaseRecord, options: plugins.smartpuppeteer.ILiveBrowserDevToolsOptions, operationOptions?: IBrowserRuntimeOperationOptions): Promise<plugins.smartpuppeteer.ILiveBrowserDevToolsConnection>;
255
+ private requireDevToolsAuthority;
256
+ private sendLeaseDevTools;
257
+ private closeLeaseDevTools;
258
+ /** @internal */
234
259
  leaseAnswerVideoPeer(lease: ILeaseRecord, negotiationId: string, description: plugins.smartpuppeteer.ILiveVideoDescription, options?: IBrowserRuntimeOperationOptions): Promise<void>;
235
260
  /** @internal */
236
261
  leaseCloseVideoPeer(lease: ILeaseRecord, options?: IBrowserRuntimeOperationOptions): Promise<void>;
@@ -241,6 +266,8 @@ export declare class BrowserRuntime {
241
266
  /** @internal */
242
267
  leaseRefreshFrameStream(lease: ILeaseRecord, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
243
268
  /** @internal */
269
+ leaseRespondToDialog(lease: ILeaseRecord, input: plugins.smartpuppeteer.ILiveBrowserDialogResponse, options?: IBrowserRuntimeOperationOptions): Promise<void>;
270
+ /** @internal */
244
271
  leaseDispatchRawInput(lease: ILeaseRecord, action: 'dispatchMouse' | 'dispatchWheel' | 'dispatchKey' | 'insertText', input: plugins.smartpuppeteer.ILiveBrowserMouseInput | plugins.smartpuppeteer.ILiveBrowserWheelInput | plugins.smartpuppeteer.ILiveBrowserKeyInput | plugins.smartpuppeteer.ILiveBrowserInsertTextInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
245
272
  private keyOwnershipKey;
246
273
  private validateHeldInputTarget;
@@ -248,6 +275,7 @@ export declare class BrowserRuntime {
248
275
  private otherParticipantHolds;
249
276
  private sharedMouseButtons;
250
277
  private sharedModifiers;
278
+ private releaseStaleParticipantInput;
251
279
  private releaseAllParticipantInput;
252
280
  private releaseParticipantInput;
253
281
  /** @internal */
@@ -386,12 +414,14 @@ export declare class BrowserRuntimeLease {
386
414
  forward(options?: plugins.smartpuppeteer.ILiveBrowserNavigationOptions, operationOptions?: IBrowserRuntimeOperationOptions): Promise<IBrowserRuntimeState>;
387
415
  reload(options?: plugins.smartpuppeteer.ILiveBrowserNavigationOptions, operationOptions?: IBrowserRuntimeOperationOptions): Promise<IBrowserRuntimeState>;
388
416
  setViewport(viewport: plugins.smartpuppeteer.ILiveBrowserViewport, operationOptions?: IBrowserRuntimeOperationOptions): Promise<IBrowserRuntimeViewportResult>;
417
+ respondToDialog(input: plugins.smartpuppeteer.ILiveBrowserDialogResponse, options?: IBrowserRuntimeOperationOptions): Promise<void>;
389
418
  dispatchMouse(input: plugins.smartpuppeteer.ILiveBrowserMouseInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
390
419
  dispatchWheel(input: plugins.smartpuppeteer.ILiveBrowserWheelInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
391
420
  dispatchKey(input: plugins.smartpuppeteer.ILiveBrowserKeyInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
392
421
  insertText(input: plugins.smartpuppeteer.ILiveBrowserInsertTextInput, operationOptions?: IBrowserRuntimeOperationOptions): Promise<void>;
393
422
  subscribeEvents(listener: (event: TBrowserRuntimeEvent) => void, options?: IBrowserRuntimeEventSubscriptionOptions): Promise<IBrowserRuntimeFrameSubscription>;
394
423
  openVideoPeer(options?: IBrowserRuntimeOperationOptions): Promise<TBrowserRuntimeVideoOffer>;
424
+ openDevTools(options: plugins.smartpuppeteer.ILiveBrowserDevToolsOptions, operationOptions?: IBrowserRuntimeOperationOptions): Promise<plugins.smartpuppeteer.ILiveBrowserDevToolsConnection>;
395
425
  answerVideoPeer(negotiationId: string, description: plugins.smartpuppeteer.ILiveVideoDescription, options?: IBrowserRuntimeOperationOptions): Promise<void>;
396
426
  closeVideoPeer(options?: IBrowserRuntimeOperationOptions): Promise<void>;
397
427
  getVideoStatistics(options?: IBrowserRuntimeOperationOptions): Promise<plugins.smartpuppeteer.ILiveVideoStatistics>;