@minionry/browser-types 0.1.8

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/LICENSE ADDED
@@ -0,0 +1,14 @@
1
+ Minionry Commercial License
2
+
3
+ Copyright (c) 2025-present Minionry, Inc. All rights reserved.
4
+
5
+ This software is not open-source. It is provided under a commercial
6
+ license, and your rights to install, use, and (where the Minionry Terms
7
+ of Service expressly permit it) distribute this software are set out
8
+ there, together with all applicable restrictions, termination, and
9
+ disclaimer terms:
10
+
11
+ https://app.minionry.com/terms
12
+
13
+ If you do not agree to the Minionry Terms of Service, you may not
14
+ install or use this software.
package/README.md ADDED
@@ -0,0 +1,8 @@
1
+ # @minionry/browser-types
2
+
3
+ Shared types used by Minionry packages.
4
+
5
+ For use with Minionry (https://minionry.com).
6
+
7
+ Proprietary. © Minionry, Inc. All rights reserved. Use is subject to the terms
8
+ in LICENSE.
@@ -0,0 +1,7 @@
1
+ export * from './tabs.js';
2
+ export * from './input.js';
3
+ export * from './webrtc.js';
4
+ export * from './preflight.js';
5
+ export * from './viewport.js';
6
+ export * from './state.js';
7
+ export * from './message-types.js';
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from './tabs.js';
2
+ export * from './input.js';
3
+ export * from './webrtc.js';
4
+ export * from './preflight.js';
5
+ export * from './viewport.js';
6
+ export * from './state.js';
7
+ export * from './message-types.js';
@@ -0,0 +1,79 @@
1
+ export type MouseWireType = 'mousePressed' | 'mouseReleased' | 'mouseMoved' | 'mouseWheel';
2
+ export type CdpMouseButton = 'none' | 'left' | 'middle' | 'right' | 'back' | 'forward';
3
+ export declare const MOD_ALT = 1;
4
+ export declare const MOD_CTRL = 2;
5
+ export declare const MOD_META = 4;
6
+ export declare const MOD_SHIFT = 8;
7
+ export interface ModifierFlags {
8
+ altKey: boolean;
9
+ ctrlKey: boolean;
10
+ metaKey: boolean;
11
+ shiftKey: boolean;
12
+ }
13
+ export declare function modifierMask(e: ModifierFlags): number;
14
+ export declare function cdpMouseButton(button: number): CdpMouseButton;
15
+ export interface MouseEnvelope {
16
+ kind: 'mouse';
17
+ eventType: MouseWireType;
18
+ x: number;
19
+ y: number;
20
+ button: CdpMouseButton;
21
+ buttons: number;
22
+ clickCount: number;
23
+ modifiers: number;
24
+ deltaX?: number;
25
+ deltaY?: number;
26
+ deltaMode?: number;
27
+ sourceWidth?: number;
28
+ sourceHeight?: number;
29
+ }
30
+ export interface KeyEnvelope {
31
+ kind: 'key';
32
+ eventType: 'keyDown' | 'rawKeyDown' | 'keyUp';
33
+ key: string;
34
+ code: string;
35
+ keyCode?: number;
36
+ text?: string;
37
+ modifiers: number;
38
+ isComposing?: boolean;
39
+ }
40
+ export interface TouchPoint {
41
+ x: number;
42
+ y: number;
43
+ id: number;
44
+ force?: number;
45
+ radiusX?: number;
46
+ radiusY?: number;
47
+ }
48
+ export interface TouchEnvelope {
49
+ kind: 'touch';
50
+ eventType: 'touchStart' | 'touchMove' | 'touchEnd' | 'touchCancel';
51
+ touchPoints: TouchPoint[];
52
+ modifiers: number;
53
+ sourceWidth?: number;
54
+ sourceHeight?: number;
55
+ }
56
+ export interface TextEnvelope {
57
+ kind: 'text';
58
+ text: string;
59
+ }
60
+ export interface ImeEnvelope {
61
+ kind: 'ime';
62
+ eventType: 'start' | 'update' | 'commit';
63
+ imeText?: string;
64
+ text?: string;
65
+ selectionStart?: number;
66
+ selectionEnd?: number;
67
+ }
68
+ export type InputEnvelopeData = MouseEnvelope | KeyEnvelope | TouchEnvelope | TextEnvelope | ImeEnvelope;
69
+ export interface BrowserInputWireEnvelope {
70
+ type: 'browser_input';
71
+ tabId?: string;
72
+ data: InputEnvelopeData;
73
+ }
74
+ export interface BrowserInputRejectedPayload {
75
+ kind: InputEnvelopeData['kind'];
76
+ tabId?: string;
77
+ reason: 'no_active_view' | 'unsupported_kind' | 'modifier_only_key' | 'host_not_ready' | 'malformed' | 'unknown';
78
+ message?: string;
79
+ }
package/dist/input.js ADDED
@@ -0,0 +1,20 @@
1
+ export const MOD_ALT = 1;
2
+ export const MOD_CTRL = 2;
3
+ export const MOD_META = 4;
4
+ export const MOD_SHIFT = 8;
5
+ export function modifierMask(e) {
6
+ return ((e.altKey ? MOD_ALT : 0) |
7
+ (e.ctrlKey ? MOD_CTRL : 0) |
8
+ (e.metaKey ? MOD_META : 0) |
9
+ (e.shiftKey ? MOD_SHIFT : 0));
10
+ }
11
+ export function cdpMouseButton(button) {
12
+ switch (button) {
13
+ case 0: return 'left';
14
+ case 1: return 'middle';
15
+ case 2: return 'right';
16
+ case 3: return 'back';
17
+ case 4: return 'forward';
18
+ default: return 'none';
19
+ }
20
+ }
@@ -0,0 +1,10 @@
1
+ export declare const BROWSER_WEB_TO_CLI_TYPES: readonly ["browser_input", "browser_navigate", "browser_back", "browser_forward", "browser_reload", "browser_stop", "browser_resize", "browser_tab_open", "browser_tab_close", "browser_tab_select", "browser_set_bounds", "browser_set_device_profile", "browser_preflight", "browser_snapshot", "browser_webrtc_answer", "browser_webrtc_attach", "browser_webrtc_ice_config", "browser_resume_driver", "browser_lease_release", "browser_agent_task", "browser_agent_approve"];
2
+ export declare const BROWSER_CLI_TO_WEB_TYPES: readonly ["browser_tab_state", "browser_navigation_state", "browser_error", "browser_resize_ack", "browser_preflight_result", "browser_webrtc_offer", "browser_driver_state", "browser_status", "browser_state_update", "browser_session_reset", "browser_input_rejected", "browser_input_focus", "browser_agent_proposed", "browser_agent_step", "browser_agent_done"];
3
+ export declare const BROWSER_BIDIRECTIONAL_TYPES: readonly ["browser_webrtc_ice", "browser_webrtc_state"];
4
+ export type BrowserWebToCliType = (typeof BROWSER_WEB_TO_CLI_TYPES)[number];
5
+ export type BrowserCliToWebType = (typeof BROWSER_CLI_TO_WEB_TYPES)[number];
6
+ export type BrowserBidirectionalType = (typeof BROWSER_BIDIRECTIONAL_TYPES)[number];
7
+ export type BrowserMessageType = BrowserWebToCliType | BrowserCliToWebType | BrowserBidirectionalType;
8
+ export declare function isBrowserMessageType(type: unknown): type is BrowserMessageType;
9
+ export declare const AGENT_TAB_STATE_TYPES: readonly ["agent_tab_state"];
10
+ export type AgentTabStateType = (typeof AGENT_TAB_STATE_TYPES)[number];
@@ -0,0 +1,45 @@
1
+ export const BROWSER_WEB_TO_CLI_TYPES = [
2
+ 'browser_input',
3
+ 'browser_navigate',
4
+ 'browser_back',
5
+ 'browser_forward',
6
+ 'browser_reload',
7
+ 'browser_stop',
8
+ 'browser_resize',
9
+ 'browser_tab_open',
10
+ 'browser_tab_close',
11
+ 'browser_tab_select',
12
+ 'browser_set_bounds',
13
+ 'browser_set_device_profile',
14
+ 'browser_preflight',
15
+ 'browser_snapshot',
16
+ 'browser_webrtc_answer',
17
+ 'browser_webrtc_attach',
18
+ 'browser_webrtc_ice_config',
19
+ 'browser_resume_driver',
20
+ 'browser_lease_release',
21
+ 'browser_agent_task',
22
+ 'browser_agent_approve',
23
+ ];
24
+ export const BROWSER_CLI_TO_WEB_TYPES = [
25
+ 'browser_tab_state',
26
+ 'browser_navigation_state',
27
+ 'browser_error',
28
+ 'browser_resize_ack',
29
+ 'browser_preflight_result',
30
+ 'browser_webrtc_offer',
31
+ 'browser_driver_state',
32
+ 'browser_status',
33
+ 'browser_state_update',
34
+ 'browser_session_reset',
35
+ 'browser_input_rejected',
36
+ 'browser_input_focus',
37
+ 'browser_agent_proposed',
38
+ 'browser_agent_step',
39
+ 'browser_agent_done',
40
+ ];
41
+ export const BROWSER_BIDIRECTIONAL_TYPES = ['browser_webrtc_ice', 'browser_webrtc_state'];
42
+ export function isBrowserMessageType(type) {
43
+ return typeof type === 'string' && type.startsWith('browser_');
44
+ }
45
+ export const AGENT_TAB_STATE_TYPES = ['agent_tab_state'];
@@ -0,0 +1,31 @@
1
+ export type PlatformName = 'aix' | 'android' | 'darwin' | 'freebsd' | 'haiku' | 'linux' | 'openbsd' | 'sunos' | 'win32' | 'cygwin' | 'netbsd' | (string & {});
2
+ export type BrowserCheckId = 'chromium' | 'electron' | 'electron-host-dist' | 'xvfb' | 'pipewire' | 'chromium-libs' | 'chrome-sandbox' | (string & {});
3
+ export interface BrowserMissingCheck {
4
+ id: BrowserCheckId;
5
+ label: string;
6
+ reason?: string | null;
7
+ fixCommands: string[];
8
+ advisory?: boolean;
9
+ }
10
+ export interface BrowserPreflightResultPayload {
11
+ ok: boolean;
12
+ platform?: PlatformName;
13
+ packageManager?: string | null;
14
+ chromiumInstalling?: boolean;
15
+ missing?: BrowserMissingCheck[];
16
+ message?: string;
17
+ }
18
+ export type PreflightState = {
19
+ status: 'unknown';
20
+ } | {
21
+ status: 'ok';
22
+ } | {
23
+ status: 'missing';
24
+ missing: BrowserMissingCheck[];
25
+ platform?: PlatformName;
26
+ packageManager?: string | null;
27
+ chromiumInstalling?: boolean;
28
+ } | {
29
+ status: 'error';
30
+ message: string;
31
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { BrowserNavigationState, BrowserTab } from './tabs.js';
2
+ export interface BrowserStateUpdatePayload {
3
+ tabs?: BrowserTab[];
4
+ currentTabId?: string | null;
5
+ navigation?: BrowserNavigationStatePatch;
6
+ }
7
+ export interface BrowserNavigationStatePatch extends Partial<BrowserNavigationState> {
8
+ tabId: string;
9
+ }
10
+ export interface BrowserSessionResetPayload {
11
+ reason: 'host_crashed' | 'host_stopped' | 'host_restarted';
12
+ message?: string;
13
+ }
package/dist/state.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/tabs.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import type { DeviceProfile } from './viewport.js';
2
+ export type BrowserConnectionState = 'idle' | 'connecting' | 'connected' | 'host-starting' | 'error';
3
+ export interface BrowserTab {
4
+ id: string;
5
+ url: string;
6
+ title: string;
7
+ favicon?: string;
8
+ isLoading: boolean;
9
+ canGoBack: boolean;
10
+ canGoForward: boolean;
11
+ error?: string;
12
+ deviceProfile?: DeviceProfile;
13
+ }
14
+ export interface BrowserNavigationState {
15
+ url: string;
16
+ title: string;
17
+ isLoading: boolean;
18
+ canGoBack: boolean;
19
+ canGoForward: boolean;
20
+ }
21
+ export interface BrowserTabsPayload {
22
+ tabs: BrowserTab[];
23
+ currentTabId: string | null;
24
+ }
25
+ export interface BrowserNavigationStatePayload extends Partial<BrowserNavigationState> {
26
+ tabId: string;
27
+ }
28
+ export interface BrowserTabId {
29
+ id: string;
30
+ }
package/dist/tabs.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ export interface BrowserViewport {
2
+ width: number;
3
+ height: number;
4
+ }
5
+ export interface BrowserBounds {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ mobile?: boolean;
11
+ deviceScaleFactor?: number;
12
+ }
13
+ export interface BrowserSessionBounds extends BrowserBounds {
14
+ sessionId?: string;
15
+ }
16
+ export interface FrameViewport {
17
+ offsetTop: number;
18
+ pageScaleFactor: number;
19
+ deviceWidth: number;
20
+ deviceHeight: number;
21
+ }
22
+ export type DeviceFormFactor = 'desktop' | 'mobile';
23
+ export interface DeviceProfile {
24
+ formFactor: DeviceFormFactor;
25
+ width: number;
26
+ height: number;
27
+ label: string;
28
+ }
29
+ export declare const DEVICE_PROFILES: Record<DeviceFormFactor, DeviceProfile>;
30
+ export declare function deviceProfileFor(formFactor: DeviceFormFactor): DeviceProfile;
@@ -0,0 +1,7 @@
1
+ export const DEVICE_PROFILES = {
2
+ desktop: { formFactor: 'desktop', width: 1280, height: 720, label: 'Desktop' },
3
+ mobile: { formFactor: 'mobile', width: 390, height: 844, label: 'Mobile' },
4
+ };
5
+ export function deviceProfileFor(formFactor) {
6
+ return DEVICE_PROFILES[formFactor];
7
+ }
@@ -0,0 +1,32 @@
1
+ export type WebrtcConnectionState = 'negotiating' | 'connected' | 'failed' | 'closed';
2
+ export type SelectedCandidateType = 'host' | 'srflx' | 'prflx' | 'relay' | null;
3
+ export interface RTCIceServerLike {
4
+ urls: string | string[];
5
+ username?: string;
6
+ credential?: string;
7
+ }
8
+ export interface IceCandidateInit {
9
+ candidate?: string;
10
+ sdpMLineIndex?: number | null;
11
+ sdpMid?: string | null;
12
+ usernameFragment?: string | null;
13
+ }
14
+ export type BrowserSignalEnvelope = {
15
+ kind: 'offer';
16
+ sessionId: string;
17
+ sdp: string;
18
+ } | {
19
+ kind: 'answer';
20
+ sessionId: string;
21
+ sdp: string;
22
+ } | {
23
+ kind: 'ice';
24
+ sessionId: string;
25
+ candidate: IceCandidateInit | null;
26
+ } | {
27
+ kind: 'state';
28
+ sessionId: string;
29
+ state: WebrtcConnectionState;
30
+ reason?: string;
31
+ selectedCandidateType?: SelectedCandidateType;
32
+ };
package/dist/webrtc.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@minionry/browser-types",
3
+ "version": "0.1.8",
4
+ "description": "Shared types used by Minionry packages.",
5
+ "license": "SEE LICENSE IN LICENSE",
6
+ "publishConfig": {
7
+ "registry": "https://registry.npmjs.org/",
8
+ "access": "public"
9
+ },
10
+ "type": "module",
11
+ "main": "./dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js",
17
+ "default": "./dist/index.js"
18
+ },
19
+ "./tabs": {
20
+ "types": "./dist/tabs.d.ts",
21
+ "import": "./dist/tabs.js",
22
+ "default": "./dist/tabs.js"
23
+ },
24
+ "./input": {
25
+ "types": "./dist/input.d.ts",
26
+ "import": "./dist/input.js",
27
+ "default": "./dist/input.js"
28
+ },
29
+ "./webrtc": {
30
+ "types": "./dist/webrtc.d.ts",
31
+ "import": "./dist/webrtc.js",
32
+ "default": "./dist/webrtc.js"
33
+ },
34
+ "./preflight": {
35
+ "types": "./dist/preflight.d.ts",
36
+ "import": "./dist/preflight.js",
37
+ "default": "./dist/preflight.js"
38
+ },
39
+ "./viewport": {
40
+ "types": "./dist/viewport.d.ts",
41
+ "import": "./dist/viewport.js",
42
+ "default": "./dist/viewport.js"
43
+ },
44
+ "./state": {
45
+ "types": "./dist/state.d.ts",
46
+ "import": "./dist/state.js",
47
+ "default": "./dist/state.js"
48
+ },
49
+ "./message-types": {
50
+ "types": "./dist/message-types.d.ts",
51
+ "import": "./dist/message-types.js",
52
+ "default": "./dist/message-types.js"
53
+ }
54
+ },
55
+ "files": [
56
+ "dist"
57
+ ],
58
+ "gitHead": "b790f8b643da7b63c57bf12e804dd4a0eba7f312"
59
+ }