misoai-web 1.0.3 → 1.0.4

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 (81) hide show
  1. package/dist/es/agent.js +2574 -0
  2. package/dist/es/agent.js.map +1 -0
  3. package/dist/es/bridge-mode-browser.js +955 -0
  4. package/dist/es/bridge-mode-browser.js.map +1 -0
  5. package/dist/es/bridge-mode.js +2935 -0
  6. package/dist/es/bridge-mode.js.map +1 -0
  7. package/dist/es/chrome-extension.js +3322 -0
  8. package/dist/es/chrome-extension.js.map +1 -0
  9. package/dist/es/index.js +3190 -0
  10. package/dist/es/index.js.map +1 -0
  11. package/dist/es/midscene-playground.js +2910 -0
  12. package/dist/es/midscene-playground.js.map +1 -0
  13. package/dist/es/midscene-server.js +247 -0
  14. package/dist/es/midscene-server.js.map +1 -0
  15. package/dist/es/playground.js +2681 -0
  16. package/dist/es/playground.js.map +1 -0
  17. package/dist/es/playwright-report.js +120 -0
  18. package/dist/es/playwright-report.js.map +1 -0
  19. package/dist/es/playwright.js +3135 -0
  20. package/dist/es/playwright.js.map +1 -0
  21. package/dist/es/puppeteer-agent-launcher.js +3085 -0
  22. package/dist/es/puppeteer-agent-launcher.js.map +1 -0
  23. package/dist/es/puppeteer.js +2932 -0
  24. package/dist/es/puppeteer.js.map +1 -0
  25. package/dist/es/ui-utils.js +106 -0
  26. package/dist/es/ui-utils.js.map +1 -0
  27. package/dist/es/utils.js +197 -0
  28. package/dist/es/utils.js.map +1 -0
  29. package/dist/es/yaml.js +351 -0
  30. package/dist/es/yaml.js.map +1 -0
  31. package/dist/lib/agent.js +2589 -0
  32. package/dist/lib/agent.js.map +1 -0
  33. package/dist/lib/bridge-mode-browser.js +989 -0
  34. package/dist/lib/bridge-mode-browser.js.map +1 -0
  35. package/dist/lib/bridge-mode.js +2955 -0
  36. package/dist/lib/bridge-mode.js.map +1 -0
  37. package/dist/lib/chrome-extension.js +3339 -0
  38. package/dist/lib/chrome-extension.js.map +1 -0
  39. package/dist/lib/index.js +3206 -0
  40. package/dist/lib/index.js.map +1 -0
  41. package/dist/lib/midscene-playground.js +2914 -0
  42. package/dist/lib/midscene-playground.js.map +1 -0
  43. package/dist/lib/midscene-server.js +273 -0
  44. package/dist/lib/midscene-server.js.map +1 -0
  45. package/dist/lib/playground.js +2700 -0
  46. package/dist/lib/playground.js.map +1 -0
  47. package/dist/lib/playwright-report.js +148 -0
  48. package/dist/lib/playwright-report.js.map +1 -0
  49. package/dist/lib/playwright.js +3152 -0
  50. package/dist/lib/playwright.js.map +1 -0
  51. package/dist/lib/puppeteer-agent-launcher.js +3098 -0
  52. package/dist/lib/puppeteer-agent-launcher.js.map +1 -0
  53. package/dist/lib/puppeteer.js +2943 -0
  54. package/dist/lib/puppeteer.js.map +1 -0
  55. package/dist/lib/ui-utils.js +137 -0
  56. package/dist/lib/ui-utils.js.map +1 -0
  57. package/dist/lib/utils.js +235 -0
  58. package/dist/lib/utils.js.map +1 -0
  59. package/dist/lib/yaml.js +390 -0
  60. package/dist/lib/yaml.js.map +1 -0
  61. package/dist/types/agent.d.ts +264 -0
  62. package/dist/types/bridge-mode-browser.d.ts +9 -0
  63. package/dist/types/bridge-mode.d.ts +40 -0
  64. package/dist/types/browser-a1877d18.d.ts +37 -0
  65. package/dist/types/chrome-extension.d.ts +18 -0
  66. package/dist/types/index.d.ts +16 -0
  67. package/dist/types/midscene-playground.d.ts +2 -0
  68. package/dist/types/midscene-server.d.ts +31 -0
  69. package/dist/types/page-663ece08.d.ts +333 -0
  70. package/dist/types/playground.d.ts +17 -0
  71. package/dist/types/playwright-report.d.ts +11 -0
  72. package/dist/types/playwright.d.ts +87 -0
  73. package/dist/types/puppeteer-agent-launcher.d.ts +40 -0
  74. package/dist/types/puppeteer.d.ts +17 -0
  75. package/dist/types/ui-utils.d.ts +14 -0
  76. package/dist/types/utils-badc824e.d.ts +34 -0
  77. package/dist/types/utils.d.ts +8 -0
  78. package/dist/types/yaml.d.ts +15 -0
  79. package/iife-script/htmlElement.js +99 -37
  80. package/iife-script/htmlElementDebug.js +92 -9
  81. package/package.json +2 -2
@@ -0,0 +1,264 @@
1
+ import { W as WebPage, d as WebElementInfo, e as WebUIContext } from './page-663ece08.js';
2
+ import { Insight, ExecutionTaskProgressOptions, PlanningAction, ExecutionTaskApply, Executor, MidsceneYamlFlowItem, InsightExtractParam, InsightAssertionResponse, PlanningActionParamWaitFor, OnTaskStartTip, GroupedActionDump, InsightAction, ExecutionDump, LocateOption, PlanningActionParamScroll, LocatorValidatorOption, AgentDescribeElementAtPointResult, LocateValidatorResult, LocateResultElement, AgentAssertOpt, AgentWaitForOpt } from 'misoai-core';
3
+ import { ChatCompletionMessageParam } from 'misoai-core/ai-model';
4
+ import 'playwright';
5
+ import 'misoai-shared/extractor';
6
+ import 'puppeteer';
7
+ import 'misoai-shared/logger';
8
+ import 'misoai-shared/constants';
9
+ import 'misoai-core/.';
10
+
11
+ interface PlanningCache {
12
+ type: 'plan';
13
+ prompt: string;
14
+ yamlWorkflow: string;
15
+ }
16
+ interface LocateCache {
17
+ type: 'locate';
18
+ prompt: string;
19
+ xpaths: string[];
20
+ }
21
+ interface MatchCacheResult<T extends PlanningCache | LocateCache> {
22
+ cacheContent: T;
23
+ updateFn: (cb: (cache: T) => void) => void;
24
+ }
25
+ type CacheFileContent = {
26
+ midsceneVersion: string;
27
+ cacheId: string;
28
+ caches: Array<PlanningCache | LocateCache>;
29
+ };
30
+ declare class TaskCache {
31
+ cacheId: string;
32
+ cacheFilePath?: string;
33
+ cache: CacheFileContent;
34
+ isCacheResultUsed: boolean;
35
+ cacheOriginalLength: number;
36
+ private matchedCacheIndices;
37
+ constructor(cacheId: string, isCacheResultUsed: boolean, cacheFilePath?: string);
38
+ matchCache(prompt: string, type: 'plan' | 'locate'): MatchCacheResult<PlanningCache | LocateCache> | undefined;
39
+ matchPlanCache(prompt: string): MatchCacheResult<PlanningCache> | undefined;
40
+ matchLocateCache(prompt: string): MatchCacheResult<LocateCache> | undefined;
41
+ appendCache(cache: PlanningCache | LocateCache): void;
42
+ loadCacheFromFile(): CacheFileContent | undefined;
43
+ flushCacheToFile(): void;
44
+ updateOrAppendCacheRecord(newRecord: PlanningCache | LocateCache, cachedRecord?: MatchCacheResult<PlanningCache | LocateCache>): void;
45
+ }
46
+
47
+ interface ExecutionResult<OutputType = any> {
48
+ output: OutputType;
49
+ executor: Executor;
50
+ }
51
+ declare class PageTaskExecutor {
52
+ page: WebPage;
53
+ insight: Insight<WebElementInfo, WebUIContext>;
54
+ taskCache?: TaskCache;
55
+ conversationHistory: ChatCompletionMessageParam[];
56
+ onTaskStartCallback?: ExecutionTaskProgressOptions['onTaskStart'];
57
+ constructor(page: WebPage, insight: Insight<WebElementInfo, WebUIContext>, opts: {
58
+ taskCache?: TaskCache;
59
+ onTaskStart?: ExecutionTaskProgressOptions['onTaskStart'];
60
+ });
61
+ private recordScreenshot;
62
+ private getElementXpath;
63
+ private prependExecutorWithScreenshot;
64
+ convertPlanToExecutable(plans: PlanningAction[], opts?: {
65
+ cacheable?: boolean;
66
+ }): Promise<{
67
+ tasks: ExecutionTaskApply<any, any, any, any>[];
68
+ }>;
69
+ private setupPlanningContext;
70
+ loadYamlFlowAsPlanning(userInstruction: string, yamlString: string): Promise<{
71
+ executor: Executor;
72
+ }>;
73
+ private planningTaskFromPrompt;
74
+ private planningTaskToGoal;
75
+ runPlans(title: string, plans: PlanningAction[], opts?: {
76
+ cacheable?: boolean;
77
+ }): Promise<ExecutionResult>;
78
+ action(userPrompt: string, actionContext?: string, opts?: {
79
+ cacheable?: boolean;
80
+ }): Promise<ExecutionResult<{
81
+ yamlFlow?: MidsceneYamlFlowItem[];
82
+ } | undefined>>;
83
+ actionToGoal(userPrompt: string, opts?: {
84
+ cacheable?: boolean;
85
+ }): Promise<ExecutionResult<{
86
+ yamlFlow?: MidsceneYamlFlowItem[];
87
+ } | undefined>>;
88
+ private createTypeQueryTask;
89
+ query(demand: InsightExtractParam): Promise<ExecutionResult>;
90
+ boolean(prompt: string): Promise<ExecutionResult<boolean>>;
91
+ number(prompt: string): Promise<ExecutionResult<number>>;
92
+ string(prompt: string): Promise<ExecutionResult<string>>;
93
+ assert(assertion: string): Promise<ExecutionResult<InsightAssertionResponse>>;
94
+ /**
95
+ * Append a message to the conversation history
96
+ * For user messages with images:
97
+ * - Keep max 4 user image messages in history
98
+ * - Remove oldest user image message when limit reached
99
+ * For assistant messages:
100
+ * - Simply append to history
101
+ * @param conversationHistory Message to append
102
+ */
103
+ private appendConversationHistory;
104
+ private appendErrorPlan;
105
+ waitFor(assertion: string, opt: PlanningActionParamWaitFor): Promise<ExecutionResult<void>>;
106
+ }
107
+
108
+ /**
109
+ * Metadata for AI task execution
110
+ */
111
+ interface AITaskMetadata {
112
+ /** Status of the task (pending, running, finished, failed, cancelled) */
113
+ status?: string;
114
+ /** Timestamp when the task started */
115
+ start?: number;
116
+ /** Timestamp when the task ended */
117
+ end?: number;
118
+ /** Total time taken to execute the task in milliseconds */
119
+ totalTime?: number;
120
+ /** Cache information */
121
+ cache?: {
122
+ hit: boolean;
123
+ };
124
+ /** Token usage information */
125
+ usage?: {
126
+ prompt_tokens: number;
127
+ completion_tokens: number;
128
+ total_tokens: number;
129
+ [key: string]: any;
130
+ };
131
+ /** DeepThink information */
132
+ deepthink?: {
133
+ used: boolean;
134
+ mode: string;
135
+ [key: string]: any;
136
+ };
137
+ /** AI's thought process */
138
+ thought?: string;
139
+ /** Element location information */
140
+ locate?: any;
141
+ /** Action plans */
142
+ plan?: any;
143
+ /** Planning information */
144
+ planning?: {
145
+ type: string;
146
+ description: string;
147
+ steps: string[];
148
+ };
149
+ /** Insight information */
150
+ insight?: {
151
+ type: string;
152
+ description: string;
153
+ elements: string[];
154
+ };
155
+ /** Action information */
156
+ action?: {
157
+ type: string;
158
+ description: string;
159
+ result: any;
160
+ };
161
+ /** Action details */
162
+ actionDetails?: Array<{
163
+ type: string;
164
+ subType?: string;
165
+ status: string;
166
+ thought?: string;
167
+ }>;
168
+ /** Task details */
169
+ tasks?: Array<{
170
+ type: string;
171
+ subType?: string;
172
+ status: string;
173
+ thought?: string;
174
+ locate?: any;
175
+ timing?: any;
176
+ usage?: any;
177
+ cache?: any;
178
+ error?: string;
179
+ }>;
180
+ }
181
+ /**
182
+ * Result of an AI task with metadata
183
+ */
184
+ interface AITaskResult<T = any> {
185
+ /** The actual result of the operation */
186
+ result: T;
187
+ /** Metadata about the task execution */
188
+ metadata: AITaskMetadata;
189
+ }
190
+
191
+ interface PageAgentOpt {
192
+ forceSameTabNavigation?: boolean;
193
+ testId?: string;
194
+ cacheId?: string;
195
+ groupName?: string;
196
+ groupDescription?: string;
197
+ generateReport?: boolean;
198
+ autoPrintReportMsg?: boolean;
199
+ onTaskStartTip?: OnTaskStartTip;
200
+ aiActionContext?: string;
201
+ waitForNavigationTimeout?: number;
202
+ waitForNetworkIdleTimeout?: number;
203
+ }
204
+ declare class PageAgent<PageType extends WebPage = WebPage> {
205
+ page: PageType;
206
+ insight: Insight<WebElementInfo, WebUIContext>;
207
+ dump: GroupedActionDump;
208
+ reportFile?: string | null;
209
+ reportFileName?: string;
210
+ taskExecutor: PageTaskExecutor;
211
+ opts: PageAgentOpt;
212
+ /**
213
+ * If true, the agent will not perform any actions
214
+ */
215
+ dryMode: boolean;
216
+ onTaskStartTip?: OnTaskStartTip;
217
+ taskCache?: TaskCache;
218
+ constructor(page: PageType, opts?: PageAgentOpt);
219
+ getUIContext(action?: InsightAction): Promise<WebUIContext>;
220
+ private _callInsightCaptcha;
221
+ setAIActionContext(prompt: string): Promise<void>;
222
+ resetDump(): GroupedActionDump;
223
+ appendExecutionDump(execution: ExecutionDump): void;
224
+ dumpDataString(): string;
225
+ reportHTMLString(): string;
226
+ writeOutActionDumps(): void;
227
+ private callbackOnTaskStartTip;
228
+ private afterTaskRunning;
229
+ private buildDetailedLocateParam;
230
+ aiTap(locatePrompt: string, opt?: LocateOption): Promise<AITaskResult>;
231
+ aiHover(locatePrompt: string, opt?: LocateOption): Promise<AITaskResult>;
232
+ aiInput(value: string, locatePrompt: string, opt?: LocateOption): Promise<AITaskResult>;
233
+ aiKeyboardPress(keyName: string, locatePrompt?: string, opt?: LocateOption): Promise<AITaskResult>;
234
+ aiScroll(scrollParam: PlanningActionParamScroll, locatePrompt?: string, opt?: LocateOption): Promise<AITaskResult>;
235
+ aiAction(taskPrompt: string, opt?: {
236
+ cacheable?: boolean;
237
+ }): Promise<AITaskResult>;
238
+ aiQuery(demand: any): Promise<AITaskResult>;
239
+ aiBoolean(prompt: string): Promise<AITaskResult<boolean>>;
240
+ aiNumber(prompt: string): Promise<AITaskResult<number>>;
241
+ aiString(prompt: string): Promise<AITaskResult<string>>;
242
+ describeElementAtPoint(center: [number, number], opt?: {
243
+ verifyPrompt?: boolean;
244
+ retryLimit?: number;
245
+ deepThink?: boolean;
246
+ } & LocatorValidatorOption): Promise<AgentDescribeElementAtPointResult>;
247
+ verifyLocator(prompt: string, locateOpt: LocateOption | undefined, expectCenter: [number, number], verifyLocateOption?: LocatorValidatorOption): Promise<LocateValidatorResult>;
248
+ aiLocate(prompt: string, opt?: LocateOption): Promise<AITaskResult<Pick<LocateResultElement, 'rect' | 'center'>>>;
249
+ aiAssert(assertion: string, msg?: string, opt?: AgentAssertOpt): Promise<AITaskResult<any>>;
250
+ aiCaptcha(options?: {
251
+ deepThink?: boolean;
252
+ autoDetectComplexity?: boolean;
253
+ }): Promise<AITaskResult<any>>;
254
+ aiWaitFor(assertion: string, opt?: AgentWaitForOpt): Promise<AITaskResult>;
255
+ ai(taskPrompt: string, type?: string, options?: {
256
+ deepThink?: boolean;
257
+ autoDetectComplexity?: boolean;
258
+ }): Promise<AITaskResult>;
259
+ runYaml(yamlScriptContent: string): Promise<AITaskResult<Record<string, any>>>;
260
+ evaluateJavaScript(script: string): Promise<any>;
261
+ destroy(): Promise<void>;
262
+ }
263
+
264
+ export { type AITaskMetadata, type AITaskResult, PageAgent, type PageAgentOpt };
@@ -0,0 +1,9 @@
1
+ export { E as ExtensionBridgePageBrowserSide } from './browser-a1877d18.js';
2
+ import './page-663ece08.js';
3
+ import 'playwright';
4
+ import 'misoai-core';
5
+ import 'misoai-shared/extractor';
6
+ import 'puppeteer';
7
+ import 'misoai-shared/logger';
8
+ import 'misoai-shared/constants';
9
+ import 'misoai-core/.';
@@ -0,0 +1,40 @@
1
+ import { PageAgent, PageAgentOpt, AITaskResult } from './agent.js';
2
+ import { B as BridgeConnectTabOptions, E as ExtensionBridgePageBrowserSide } from './browser-a1877d18.js';
3
+ export { allConfigFromEnv, overrideAIConfig } from 'misoai-shared/env';
4
+ import './page-663ece08.js';
5
+ import 'playwright';
6
+ import 'misoai-core';
7
+ import 'misoai-shared/extractor';
8
+ import 'puppeteer';
9
+ import 'misoai-shared/logger';
10
+ import 'misoai-shared/constants';
11
+ import 'misoai-core/.';
12
+ import 'misoai-core/ai-model';
13
+
14
+ interface ChromeExtensionPageCliSide extends ExtensionBridgePageBrowserSide {
15
+ showStatusMessage: (message: string) => Promise<void>;
16
+ }
17
+ declare class AgentOverChromeBridge extends PageAgent<ChromeExtensionPageCliSide> {
18
+ private destroyAfterDisconnectFlag?;
19
+ constructor(opts?: PageAgentOpt & {
20
+ closeNewTabsAfterDisconnect?: boolean;
21
+ serverListeningTimeout?: number | false;
22
+ closeConflictServer?: boolean;
23
+ });
24
+ setDestroyOptionsAfterConnect(): Promise<void>;
25
+ connectNewTabWithUrl(url: string, options?: BridgeConnectTabOptions): Promise<void>;
26
+ getBrowserTabList(): Promise<{
27
+ id: string;
28
+ title: string;
29
+ url: string;
30
+ currentActiveTab: boolean;
31
+ }[]>;
32
+ setActiveTabId(tabId: string): Promise<void>;
33
+ connectCurrentTab(options?: BridgeConnectTabOptions): Promise<void>;
34
+ aiAction(prompt: string, options?: any): Promise<AITaskResult<any>>;
35
+ destroy(closeNewTabsAfterDisconnect?: boolean): Promise<void>;
36
+ }
37
+
38
+ declare const killRunningServer: (port?: number) => Promise<void>;
39
+
40
+ export { AgentOverChromeBridge, killRunningServer };
@@ -0,0 +1,37 @@
1
+ import { C as ChromeExtensionProxyPage, f as ChromePageDestroyOptions } from './page-663ece08.js';
2
+
3
+ interface BridgeConnectTabOptions {
4
+ /**
5
+ * If true, the page will always track the active tab.
6
+ * @default true
7
+ */
8
+ forceSameTabNavigation?: boolean;
9
+ }
10
+
11
+ declare class BridgeClient {
12
+ endpoint: string;
13
+ onBridgeCall: (method: string, args: any[]) => Promise<any>;
14
+ onDisconnect?: (() => void) | undefined;
15
+ private socket;
16
+ serverVersion: string | null;
17
+ constructor(endpoint: string, onBridgeCall: (method: string, args: any[]) => Promise<any>, onDisconnect?: (() => void) | undefined);
18
+ connect(): Promise<unknown>;
19
+ disconnect(): void;
20
+ }
21
+
22
+ declare class ExtensionBridgePageBrowserSide extends ChromeExtensionProxyPage {
23
+ onDisconnect: () => void;
24
+ onLogMessage: (message: string, type: 'log' | 'status') => void;
25
+ bridgeClient: BridgeClient | null;
26
+ private destroyOptions?;
27
+ private newlyCreatedTabIds;
28
+ constructor(onDisconnect?: () => void, onLogMessage?: (message: string, type: 'log' | 'status') => void, forceSameTabNavigation?: boolean);
29
+ private setupBridgeClient;
30
+ connect(): Promise<void>;
31
+ connectNewTabWithUrl(url: string, options?: BridgeConnectTabOptions): Promise<void>;
32
+ connectCurrentTab(options?: BridgeConnectTabOptions): Promise<void>;
33
+ setDestroyOptions(options: ChromePageDestroyOptions): Promise<void>;
34
+ destroy(): Promise<void>;
35
+ }
36
+
37
+ export { type BridgeConnectTabOptions as B, ExtensionBridgePageBrowserSide as E };
@@ -0,0 +1,18 @@
1
+ import { C as ChromeExtensionProxyPage } from './page-663ece08.js';
2
+ export { E as ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED } from './page-663ece08.js';
3
+ import { PageAgent, PageAgentOpt } from './agent.js';
4
+ export { overrideAIConfig } from 'misoai-shared/env';
5
+ import 'playwright';
6
+ import 'misoai-core';
7
+ import 'misoai-shared/extractor';
8
+ import 'puppeteer';
9
+ import 'misoai-shared/logger';
10
+ import 'misoai-shared/constants';
11
+ import 'misoai-core/.';
12
+ import 'misoai-core/ai-model';
13
+
14
+ declare class ChromeExtensionProxyPageAgent extends PageAgent {
15
+ constructor(page: ChromeExtensionProxyPage, opts?: PageAgentOpt);
16
+ }
17
+
18
+ export { ChromeExtensionProxyPage, ChromeExtensionProxyPageAgent };
@@ -0,0 +1,16 @@
1
+ export { PlayWrightAiFixtureType, PlaywrightAgent, PlaywrightAiFixture } from './playwright.js';
2
+ export { a as AbstractPage, A as AndroidDevicePage, W as WebPage, p as parseContextFromWebPage } from './page-663ece08.js';
3
+ export { PageAgent, PageAgentOpt } from './agent.js';
4
+ export { PuppeteerAgent } from './puppeteer.js';
5
+ export { StaticPageAgent } from './playground.js';
6
+ export { S as ScriptPlayer, p as parseYamlScript } from './utils-badc824e.js';
7
+ import 'playwright';
8
+ import 'misoai-core';
9
+ import '@playwright/test';
10
+ import 'misoai-shared/env';
11
+ import 'misoai-shared/extractor';
12
+ import 'puppeteer';
13
+ import 'misoai-shared/logger';
14
+ import 'misoai-shared/constants';
15
+ import 'misoai-core/.';
16
+ import 'misoai-core/ai-model';
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,31 @@
1
+ import * as http from 'http';
2
+ import { Server } from 'node:http';
3
+ import express from 'express';
4
+ import { PageAgent } from './agent.js';
5
+ import { a as AbstractPage } from './page-663ece08.js';
6
+ import 'misoai-core';
7
+ import 'misoai-core/ai-model';
8
+ import 'playwright';
9
+ import 'misoai-shared/extractor';
10
+ import 'puppeteer';
11
+ import 'misoai-shared/logger';
12
+ import 'misoai-shared/constants';
13
+ import 'misoai-core/.';
14
+
15
+ declare class PlaygroundServer {
16
+ app: express.Application;
17
+ tmpDir: string;
18
+ server?: Server;
19
+ port?: number | null;
20
+ pageClass: new (...args: any[]) => AbstractPage;
21
+ agentClass: new (...args: any[]) => PageAgent;
22
+ staticPath?: string;
23
+ taskProgressTips: Record<string, string>;
24
+ constructor(pageClass: new (...args: any[]) => AbstractPage, agentClass: new (...args: any[]) => PageAgent, staticPath?: string);
25
+ filePathForUuid(uuid: string): string;
26
+ saveContextFile(uuid: string, context: string): string;
27
+ launch(port?: number): Promise<unknown>;
28
+ close(): Server<typeof http.IncomingMessage, typeof http.ServerResponse> | undefined;
29
+ }
30
+
31
+ export { PlaygroundServer as default };