@mearl/provider 2.13.0 → 2.15.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/README.md +104 -83
- package/dist/generated-provider-actions.d.ts +1 -1
- package/dist/generated-provider-actions.js +0 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/provider-runtime.d.ts +5 -0
- package/dist/provider-runtime.js +527 -0
- package/dist/registry.d.ts +25 -11
- package/dist/registry.js +41 -25
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +1 -0
- package/dist/server.js +93 -123
- package/dist/types.d.ts +162 -29
- package/dist/types.js +1 -1
- package/package.json +3 -3
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { ProviderAction } from './generated-provider-actions.js';
|
|
2
|
-
export declare const MEARL_PROVIDER_PROTOCOL_VERSION =
|
|
2
|
+
export declare const MEARL_PROVIDER_PROTOCOL_VERSION = 2;
|
|
3
3
|
export type { ProviderAction } from './generated-provider-actions.js';
|
|
4
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
5
|
+
export type JsonValue = JsonPrimitive | JsonValue[] | JsonObject;
|
|
6
|
+
export interface JsonObject {
|
|
7
|
+
[key: string]: JsonValue;
|
|
8
|
+
}
|
|
4
9
|
export type ProviderScreenshotKind = 'native' | 'reconstructed' | 'none';
|
|
5
10
|
export interface ProviderCapabilities {
|
|
6
11
|
actions: ProviderAction[];
|
|
@@ -17,27 +22,118 @@ export interface ProviderDescriptor {
|
|
|
17
22
|
name: string;
|
|
18
23
|
version: string;
|
|
19
24
|
protocolVersion?: number;
|
|
25
|
+
builtin?: boolean;
|
|
20
26
|
}
|
|
21
|
-
export
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
export type ProviderInputComponent = 'cookie-sync' | 'switch';
|
|
28
|
+
export interface ProviderInputVisibility {
|
|
29
|
+
field: string;
|
|
30
|
+
empty: boolean;
|
|
31
|
+
}
|
|
32
|
+
interface ProviderSchemaBase {
|
|
33
|
+
title?: string;
|
|
26
34
|
description?: string;
|
|
35
|
+
default?: JsonValue;
|
|
36
|
+
/** Optional Mearl form component used to edit this schema value. */
|
|
37
|
+
component?: ProviderInputComponent;
|
|
38
|
+
/** Presentation-only default used by Mearl forms without changing runtime semantics. */
|
|
39
|
+
formDefault?: JsonValue;
|
|
40
|
+
/** Excludes an advanced runtime option from generated Mearl forms. */
|
|
41
|
+
formHidden?: boolean;
|
|
42
|
+
/** Places compact fields side by side in generated Mearl forms. */
|
|
43
|
+
formWidth?: 'half' | 'full';
|
|
44
|
+
/** Hides the optional badge without changing schema validation. */
|
|
45
|
+
formHideOptional?: boolean;
|
|
46
|
+
/** Conditionally displays and submits this field based on another form value. */
|
|
47
|
+
formVisibleWhen?: ProviderInputVisibility;
|
|
48
|
+
}
|
|
49
|
+
export interface ProviderStringSchema extends ProviderSchemaBase {
|
|
50
|
+
type: 'string';
|
|
51
|
+
secret?: boolean;
|
|
52
|
+
enum?: readonly string[];
|
|
53
|
+
minLength?: number;
|
|
54
|
+
maxLength?: number;
|
|
55
|
+
pattern?: string;
|
|
56
|
+
placeholder?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface ProviderNumberSchema extends ProviderSchemaBase {
|
|
59
|
+
type: 'number';
|
|
60
|
+
integer?: boolean;
|
|
61
|
+
minimum?: number;
|
|
62
|
+
maximum?: number;
|
|
63
|
+
}
|
|
64
|
+
export interface ProviderBooleanSchema extends ProviderSchemaBase {
|
|
65
|
+
type: 'boolean';
|
|
66
|
+
}
|
|
67
|
+
export interface ProviderArraySchema extends ProviderSchemaBase {
|
|
68
|
+
type: 'array';
|
|
69
|
+
items: ProviderInputSchema;
|
|
70
|
+
minItems?: number;
|
|
71
|
+
maxItems?: number;
|
|
72
|
+
}
|
|
73
|
+
export interface ProviderObjectSchema extends ProviderSchemaBase {
|
|
74
|
+
type: 'object';
|
|
75
|
+
properties: Record<string, ProviderInputSchema>;
|
|
76
|
+
required?: readonly string[];
|
|
77
|
+
oneOf?: readonly ProviderObjectSchema[];
|
|
78
|
+
not?: ProviderObjectSchema;
|
|
79
|
+
additionalProperties?: boolean;
|
|
80
|
+
}
|
|
81
|
+
export type ProviderInputSchema = ProviderStringSchema | ProviderNumberSchema | ProviderBooleanSchema | ProviderArraySchema | ProviderObjectSchema;
|
|
82
|
+
export interface ProviderConfigurationDefinition {
|
|
83
|
+
inputSchema: ProviderObjectSchema;
|
|
27
84
|
}
|
|
28
85
|
export interface ProviderBrowserType {
|
|
29
86
|
name: string;
|
|
30
|
-
|
|
87
|
+
documentationUrl?: string;
|
|
88
|
+
/** Provider-owned usage guidance rendered by `mearl <providerId>`. */
|
|
89
|
+
help?: readonly string[];
|
|
90
|
+
inputSchema: ProviderObjectSchema;
|
|
91
|
+
configuration?: ProviderConfigurationDefinition;
|
|
92
|
+
}
|
|
93
|
+
export type ProviderBrowserStatus = 'connected' | 'pairing' | 'running_disconnected' | 'stopped';
|
|
94
|
+
export type ProviderOwnership = 'owned' | 'attached';
|
|
95
|
+
export type ProviderPersistence = 'ephemeral' | 'persistent';
|
|
96
|
+
export type ProviderBrowserOperation = 'start' | 'close' | 'detach' | 'deleteData' | 'access' | 'syncCookies';
|
|
97
|
+
export type ProviderBrowserControl = {
|
|
98
|
+
kind: 'provider';
|
|
99
|
+
capabilities: ProviderCapabilities;
|
|
100
|
+
} | {
|
|
101
|
+
kind: 'host';
|
|
102
|
+
transport: 'extension' | 'cdp';
|
|
103
|
+
browserId: string;
|
|
104
|
+
capabilities?: ProviderCapabilities;
|
|
105
|
+
} | {
|
|
106
|
+
kind: 'none';
|
|
107
|
+
};
|
|
108
|
+
/** Common safe metadata; additional Provider-specific keys must also be non-secret JSON. */
|
|
109
|
+
export type ProviderBrowserDetails = JsonObject & {
|
|
110
|
+
headless?: boolean;
|
|
111
|
+
createdAt?: string;
|
|
112
|
+
cdpPort?: number;
|
|
113
|
+
copiedCookies?: {
|
|
114
|
+
domains: string[];
|
|
115
|
+
count: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export interface ProviderBrowserReference {
|
|
119
|
+
kind: string;
|
|
120
|
+
id: string;
|
|
121
|
+
label?: string;
|
|
31
122
|
}
|
|
32
123
|
export interface ProviderBrowser {
|
|
33
|
-
/** Stable within this provider. Mearl
|
|
124
|
+
/** Stable within this provider. Mearl adds the Provider namespace globally. */
|
|
34
125
|
browserId: string;
|
|
35
126
|
name: string;
|
|
36
|
-
status
|
|
127
|
+
status: ProviderBrowserStatus;
|
|
128
|
+
control: ProviderBrowserControl;
|
|
129
|
+
ownership?: ProviderOwnership;
|
|
130
|
+
persistence: ProviderPersistence;
|
|
131
|
+
operations: ProviderBrowserOperation[];
|
|
37
132
|
lastFocusedAt?: number;
|
|
38
|
-
capabilities: ProviderCapabilities;
|
|
39
|
-
/** Pairing metadata is valid only while status is pairing. */
|
|
40
133
|
pairing?: ProviderPairingInfo;
|
|
134
|
+
references?: ProviderBrowserReference[];
|
|
135
|
+
/** Safe, non-secret metadata suitable for browser_list and remote connectors. */
|
|
136
|
+
details?: ProviderBrowserDetails;
|
|
41
137
|
}
|
|
42
138
|
export interface InstalledProviderManifest extends ProviderDescriptor {
|
|
43
139
|
protocolVersion: number;
|
|
@@ -56,41 +152,78 @@ export interface ProviderPackageMetadata {
|
|
|
56
152
|
export interface ProviderActionRequest {
|
|
57
153
|
id: string;
|
|
58
154
|
action: string;
|
|
59
|
-
data?:
|
|
155
|
+
data?: JsonObject;
|
|
60
156
|
/** Provider-local browser id selected by the Mearl client. */
|
|
61
157
|
browserId?: string;
|
|
62
158
|
version?: string;
|
|
63
159
|
controlSource?: string;
|
|
160
|
+
host?: ProviderHostContextData;
|
|
64
161
|
}
|
|
65
162
|
export interface ProviderActionContext {
|
|
66
163
|
browserId: string;
|
|
67
164
|
action: ProviderAction;
|
|
68
|
-
data:
|
|
165
|
+
data: JsonObject;
|
|
69
166
|
controlSource?: string;
|
|
70
167
|
}
|
|
71
|
-
export
|
|
72
|
-
|
|
168
|
+
export interface ProviderHostServices {
|
|
169
|
+
request<T = JsonValue>(method: string, data?: JsonObject): Promise<T>;
|
|
170
|
+
}
|
|
171
|
+
/** Host-derived launch data carried over the local Provider protocol. */
|
|
172
|
+
export interface ProviderHostContextData {
|
|
173
|
+
cookies?: JsonObject[];
|
|
174
|
+
userAgent?: string;
|
|
175
|
+
}
|
|
176
|
+
export interface ProviderContext {
|
|
177
|
+
host?: ProviderHostServices;
|
|
178
|
+
controlSource?: string;
|
|
179
|
+
}
|
|
180
|
+
export interface ProviderInstanceRequest {
|
|
73
181
|
browserId: string;
|
|
74
|
-
name: string;
|
|
75
182
|
}
|
|
76
|
-
export
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
183
|
+
export interface ProviderCloseRequest extends ProviderInstanceRequest {
|
|
184
|
+
deleteData?: boolean;
|
|
185
|
+
}
|
|
186
|
+
export interface ProviderSyncCookiesRequest extends ProviderInstanceRequest {
|
|
187
|
+
scope: JsonObject;
|
|
188
|
+
}
|
|
189
|
+
export interface ProviderAccess {
|
|
190
|
+
kind: string;
|
|
191
|
+
url: string;
|
|
192
|
+
sensitive: true;
|
|
193
|
+
}
|
|
194
|
+
export interface BrowserProviderDefinition {
|
|
86
195
|
descriptor: ProviderDescriptor;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
196
|
+
browserType: ProviderBrowserType;
|
|
197
|
+
listBrowsers?: (context: ProviderContext) => ProviderBrowser[] | Promise<ProviderBrowser[]>;
|
|
198
|
+
launch: (options: JsonObject, context: ProviderContext) => Promise<ProviderBrowser>;
|
|
199
|
+
start?: (request: ProviderInstanceRequest, context: ProviderContext) => Promise<ProviderBrowser>;
|
|
200
|
+
close: (request: ProviderCloseRequest, context: ProviderContext) => Promise<unknown>;
|
|
201
|
+
detach?: (request: ProviderInstanceRequest, context: ProviderContext) => Promise<unknown>;
|
|
202
|
+
syncCookies?: (request: ProviderSyncCookiesRequest, context: ProviderContext) => Promise<unknown>;
|
|
203
|
+
getAccess?: (request: ProviderInstanceRequest, context: ProviderContext) => Promise<ProviderAccess>;
|
|
204
|
+
configure?: (options: JsonObject, context: ProviderContext) => Promise<unknown>;
|
|
205
|
+
handleAction?: (context: ProviderActionContext) => Promise<unknown>;
|
|
206
|
+
}
|
|
207
|
+
export interface ProviderRuntime {
|
|
208
|
+
readonly definition: BrowserProviderDefinition;
|
|
209
|
+
listBrowsers(context?: ProviderContext): Promise<ProviderBrowser[]>;
|
|
210
|
+
updateBrowsers(browsers: ProviderBrowser[]): void;
|
|
211
|
+
launch(options: JsonObject, context?: ProviderContext): Promise<ProviderBrowser>;
|
|
212
|
+
start(request: ProviderInstanceRequest, context?: ProviderContext): Promise<ProviderBrowser>;
|
|
213
|
+
close(request: ProviderCloseRequest, context?: ProviderContext): Promise<unknown>;
|
|
214
|
+
detach(request: ProviderInstanceRequest, context?: ProviderContext): Promise<unknown>;
|
|
215
|
+
syncCookies(request: ProviderSyncCookiesRequest, context?: ProviderContext): Promise<unknown>;
|
|
216
|
+
getAccess(request: ProviderInstanceRequest, context?: ProviderContext): Promise<ProviderAccess>;
|
|
217
|
+
configure(options: JsonObject, context?: ProviderContext): Promise<unknown>;
|
|
218
|
+
invokeAction(context: ProviderActionContext): Promise<unknown>;
|
|
219
|
+
}
|
|
220
|
+
export interface ProviderServerOptions {
|
|
221
|
+
definition: BrowserProviderDefinition;
|
|
90
222
|
socketPath?: string;
|
|
91
223
|
}
|
|
92
224
|
export interface ProviderServer {
|
|
93
225
|
readonly socketPath: string;
|
|
226
|
+
readonly runtime: ProviderRuntime;
|
|
94
227
|
start(): Promise<void>;
|
|
95
228
|
updateBrowsers(browsers: ProviderBrowser[]): void;
|
|
96
229
|
touchBrowser(browserId: string): void;
|
package/dist/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const MEARL_PROVIDER_PROTOCOL_VERSION =
|
|
1
|
+
export const MEARL_PROVIDER_PROTOCOL_VERSION = 2;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mearl/provider",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.15.0",
|
|
4
|
+
"description": "Unified contracts and runtime utilities for built-in and external Mearl browser providers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"registry": "https://registry.npmjs.org"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@mearl/daemon-core": "2.
|
|
38
|
+
"@mearl/daemon-core": "2.15.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/node": "^24.9.1",
|