misoai-web 1.0.1 → 1.0.3

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 (82) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -8
  3. package/bin/midscene-playground +2 -2
  4. package/package.json +23 -24
  5. package/dist/es/agent.js +0 -2451
  6. package/dist/es/agent.js.map +0 -1
  7. package/dist/es/bridge-mode-browser.js +0 -908
  8. package/dist/es/bridge-mode-browser.js.map +0 -1
  9. package/dist/es/bridge-mode.js +0 -2812
  10. package/dist/es/bridge-mode.js.map +0 -1
  11. package/dist/es/chrome-extension.js +0 -3152
  12. package/dist/es/chrome-extension.js.map +0 -1
  13. package/dist/es/index.js +0 -3052
  14. package/dist/es/index.js.map +0 -1
  15. package/dist/es/midscene-playground.js +0 -2781
  16. package/dist/es/midscene-playground.js.map +0 -1
  17. package/dist/es/midscene-server.js +0 -247
  18. package/dist/es/midscene-server.js.map +0 -1
  19. package/dist/es/playground.js +0 -2552
  20. package/dist/es/playground.js.map +0 -1
  21. package/dist/es/playwright-report.js +0 -120
  22. package/dist/es/playwright-report.js.map +0 -1
  23. package/dist/es/playwright.js +0 -2997
  24. package/dist/es/playwright.js.map +0 -1
  25. package/dist/es/puppeteer-agent-launcher.js +0 -2947
  26. package/dist/es/puppeteer-agent-launcher.js.map +0 -1
  27. package/dist/es/puppeteer.js +0 -2794
  28. package/dist/es/puppeteer.js.map +0 -1
  29. package/dist/es/ui-utils.js +0 -106
  30. package/dist/es/ui-utils.js.map +0 -1
  31. package/dist/es/utils.js +0 -197
  32. package/dist/es/utils.js.map +0 -1
  33. package/dist/es/yaml.js +0 -333
  34. package/dist/es/yaml.js.map +0 -1
  35. package/dist/lib/agent.js +0 -2466
  36. package/dist/lib/agent.js.map +0 -1
  37. package/dist/lib/bridge-mode-browser.js +0 -942
  38. package/dist/lib/bridge-mode-browser.js.map +0 -1
  39. package/dist/lib/bridge-mode.js +0 -2832
  40. package/dist/lib/bridge-mode.js.map +0 -1
  41. package/dist/lib/chrome-extension.js +0 -3169
  42. package/dist/lib/chrome-extension.js.map +0 -1
  43. package/dist/lib/index.js +0 -3071
  44. package/dist/lib/index.js.map +0 -1
  45. package/dist/lib/midscene-playground.js +0 -2785
  46. package/dist/lib/midscene-playground.js.map +0 -1
  47. package/dist/lib/midscene-server.js +0 -273
  48. package/dist/lib/midscene-server.js.map +0 -1
  49. package/dist/lib/playground.js +0 -2571
  50. package/dist/lib/playground.js.map +0 -1
  51. package/dist/lib/playwright-report.js +0 -148
  52. package/dist/lib/playwright-report.js.map +0 -1
  53. package/dist/lib/playwright.js +0 -3017
  54. package/dist/lib/playwright.js.map +0 -1
  55. package/dist/lib/puppeteer-agent-launcher.js +0 -2963
  56. package/dist/lib/puppeteer-agent-launcher.js.map +0 -1
  57. package/dist/lib/puppeteer.js +0 -2808
  58. package/dist/lib/puppeteer.js.map +0 -1
  59. package/dist/lib/ui-utils.js +0 -137
  60. package/dist/lib/ui-utils.js.map +0 -1
  61. package/dist/lib/utils.js +0 -235
  62. package/dist/lib/utils.js.map +0 -1
  63. package/dist/lib/yaml.js +0 -372
  64. package/dist/lib/yaml.js.map +0 -1
  65. package/dist/types/agent.d.ts +0 -254
  66. package/dist/types/bridge-mode-browser.d.ts +0 -9
  67. package/dist/types/bridge-mode.d.ts +0 -40
  68. package/dist/types/browser-d447695b.d.ts +0 -37
  69. package/dist/types/chrome-extension.d.ts +0 -18
  70. package/dist/types/index.d.ts +0 -16
  71. package/dist/types/midscene-playground.d.ts +0 -2
  72. package/dist/types/midscene-server.d.ts +0 -31
  73. package/dist/types/page-b8ada1f3.d.ts +0 -322
  74. package/dist/types/playground.d.ts +0 -17
  75. package/dist/types/playwright-report.d.ts +0 -11
  76. package/dist/types/playwright.d.ts +0 -87
  77. package/dist/types/puppeteer-agent-launcher.d.ts +0 -40
  78. package/dist/types/puppeteer.d.ts +0 -17
  79. package/dist/types/ui-utils.d.ts +0 -14
  80. package/dist/types/utils-badc824e.d.ts +0 -34
  81. package/dist/types/utils.d.ts +0 -8
  82. package/dist/types/yaml.d.ts +0 -15
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":["resolve","yaml","import_utils","import_js_yaml"],"ignoreList":[],"sources":["../../src/yaml/index.ts","../../src/yaml/player.ts","../../src/yaml/builder.ts","../../src/yaml/utils.ts"],"sourcesContent":["export * from './player';\nexport * from './builder';\nexport * from './utils';\n","import { existsSync, mkdirSync, writeFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport { assert, ifInBrowser } from 'misoai-shared/utils';\n\nimport type { PageAgent } from '@/common/agent';\nimport type {\n FreeFn,\n MidsceneYamlFlowItemAIAction,\n MidsceneYamlFlowItemAIAssert,\n MidsceneYamlFlowItemAIBoolean,\n MidsceneYamlFlowItemAIHover,\n MidsceneYamlFlowItemAIInput,\n MidsceneYamlFlowItemAIKeyboardPress,\n MidsceneYamlFlowItemAILocate,\n MidsceneYamlFlowItemAINString,\n MidsceneYamlFlowItemAINumber,\n MidsceneYamlFlowItemAIQuery,\n MidsceneYamlFlowItemAIScroll,\n MidsceneYamlFlowItemAITap,\n MidsceneYamlFlowItemAIWaitFor,\n MidsceneYamlFlowItemEvaluateJavaScript,\n MidsceneYamlFlowItemSleep,\n MidsceneYamlScript,\n MidsceneYamlScriptEnv,\n ScriptPlayerStatusValue,\n ScriptPlayerTaskStatus,\n} from 'misoai-core';\nimport { getMidsceneRunSubDir } from 'misoai-shared/common';\n\nexport class ScriptPlayer<T extends MidsceneYamlScriptEnv> {\n public currentTaskIndex?: number;\n public taskStatusList: ScriptPlayerTaskStatus[] = [];\n public status: ScriptPlayerStatusValue = 'init';\n public reportFile?: string | null;\n public result: Record<string, any>;\n private unnamedResultIndex = 0;\n public output?: string | null;\n public errorInSetup?: Error;\n private pageAgent: PageAgent | null = null;\n public agentStatusTip?: string;\n constructor(\n private script: MidsceneYamlScript,\n private setupAgent: (platform: T) => Promise<{\n agent: PageAgent;\n freeFn: FreeFn[];\n }>,\n public onTaskStatusChange?: (taskStatus: ScriptPlayerTaskStatus) => void,\n ) {\n this.result = {};\n\n if (ifInBrowser) {\n this.output = undefined;\n } else if (script.target?.output) {\n this.output = resolve(process.cwd(), script.target.output);\n } else {\n this.output = join(getMidsceneRunSubDir('output'), `${process.pid}.json`);\n }\n\n this.taskStatusList = (script.tasks || []).map((task, taskIndex) => ({\n ...task,\n index: taskIndex,\n status: 'init',\n totalSteps: task.flow?.length || 0,\n }));\n }\n\n private setResult(key: string | undefined, value: any) {\n const keyToUse = key || this.unnamedResultIndex++;\n if (this.result[keyToUse]) {\n console.warn(`result key ${keyToUse} already exists, will overwrite`);\n }\n this.result[keyToUse] = value;\n\n this.flushResult();\n }\n\n private setPlayerStatus(status: ScriptPlayerStatusValue, error?: Error) {\n this.status = status;\n this.errorInSetup = error;\n }\n\n private notifyCurrentTaskStatusChange(taskIndex?: number) {\n const taskIndexToNotify =\n typeof taskIndex === 'number' ? taskIndex : this.currentTaskIndex;\n\n if (typeof taskIndexToNotify !== 'number') {\n return;\n }\n\n const taskStatus = this.taskStatusList[taskIndexToNotify];\n if (this.onTaskStatusChange) {\n this.onTaskStatusChange(taskStatus);\n }\n }\n\n private async setTaskStatus(\n index: number,\n statusValue: ScriptPlayerStatusValue,\n error?: Error,\n ) {\n this.taskStatusList[index].status = statusValue;\n if (error) {\n this.taskStatusList[index].error = error;\n }\n\n this.notifyCurrentTaskStatusChange(index);\n }\n\n private setTaskIndex(taskIndex: number) {\n this.currentTaskIndex = taskIndex;\n }\n\n private flushResult() {\n if (Object.keys(this.result).length && this.output) {\n const output = resolve(process.cwd(), this.output);\n const outputDir = dirname(output);\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n writeFileSync(output, JSON.stringify(this.result, undefined, 2));\n }\n }\n\n async playTask(taskStatus: ScriptPlayerTaskStatus, agent: PageAgent) {\n const { flow } = taskStatus;\n assert(flow, 'missing flow in task');\n\n for (const flowItemIndex in flow) {\n const currentStep = Number.parseInt(flowItemIndex, 10);\n taskStatus.currentStep = currentStep;\n const flowItem = flow[flowItemIndex];\n if (\n 'aiAction' in (flowItem as MidsceneYamlFlowItemAIAction) ||\n 'ai' in (flowItem as MidsceneYamlFlowItemAIAction)\n ) {\n const actionTask = flowItem as MidsceneYamlFlowItemAIAction;\n const prompt = actionTask.aiAction || actionTask.ai;\n assert(prompt, 'missing prompt for ai (aiAction)');\n assert(\n typeof prompt === 'string',\n 'prompt for aiAction must be a string',\n );\n await agent.aiAction(prompt);\n } else if ('aiAssert' in (flowItem as MidsceneYamlFlowItemAIAssert)) {\n const assertTask = flowItem as MidsceneYamlFlowItemAIAssert;\n const prompt = assertTask.aiAssert;\n assert(prompt, 'missing prompt for aiAssert');\n assert(\n typeof prompt === 'string',\n 'prompt for aiAssert must be a string',\n );\n await agent.aiAssert(prompt);\n } else if ('aiQuery' in (flowItem as MidsceneYamlFlowItemAIQuery)) {\n const queryTask = flowItem as MidsceneYamlFlowItemAIQuery;\n const prompt = queryTask.aiQuery;\n assert(prompt, 'missing prompt for aiQuery');\n assert(\n typeof prompt === 'string',\n 'prompt for aiQuery must be a string',\n );\n const queryResult = await agent.aiQuery(prompt);\n this.setResult(queryTask.name, queryResult);\n } else if ('aiNumber' in (flowItem as MidsceneYamlFlowItemAINumber)) {\n const numberTask = flowItem as MidsceneYamlFlowItemAINumber;\n const prompt = numberTask.aiNumber;\n assert(prompt, 'missing prompt for number');\n assert(\n typeof prompt === 'string',\n 'prompt for number must be a string',\n );\n const numberResult = await agent.aiNumber(prompt);\n this.setResult(numberTask.name, numberResult);\n } else if ('aiString' in (flowItem as MidsceneYamlFlowItemAINString)) {\n const stringTask = flowItem as MidsceneYamlFlowItemAINString;\n const prompt = stringTask.aiString;\n assert(prompt, 'missing prompt for string');\n assert(\n typeof prompt === 'string',\n 'prompt for string must be a string',\n );\n const stringResult = await agent.aiString(prompt);\n this.setResult(stringTask.name, stringResult);\n } else if ('aiBoolean' in (flowItem as MidsceneYamlFlowItemAIBoolean)) {\n const booleanTask = flowItem as MidsceneYamlFlowItemAIBoolean;\n const prompt = booleanTask.aiBoolean;\n assert(prompt, 'missing prompt for boolean');\n assert(\n typeof prompt === 'string',\n 'prompt for boolean must be a string',\n );\n const booleanResult = await agent.aiBoolean(prompt);\n this.setResult(booleanTask.name, booleanResult);\n } else if ('aiLocate' in (flowItem as MidsceneYamlFlowItemAILocate)) {\n const locateTask = flowItem as MidsceneYamlFlowItemAILocate;\n const prompt = locateTask.aiLocate;\n assert(prompt, 'missing prompt for aiLocate');\n assert(\n typeof prompt === 'string',\n 'prompt for aiLocate must be a string',\n );\n const locateResult = await agent.aiLocate(prompt);\n this.setResult(locateTask.name, locateResult);\n } else if ('aiWaitFor' in (flowItem as MidsceneYamlFlowItemAIWaitFor)) {\n const waitForTask = flowItem as MidsceneYamlFlowItemAIWaitFor;\n const prompt = waitForTask.aiWaitFor;\n assert(prompt, 'missing prompt for aiWaitFor');\n assert(\n typeof prompt === 'string',\n 'prompt for aiWaitFor must be a string',\n );\n const timeout = waitForTask.timeout;\n await agent.aiWaitFor(prompt, { timeoutMs: timeout });\n } else if ('sleep' in (flowItem as MidsceneYamlFlowItemSleep)) {\n const sleepTask = flowItem as MidsceneYamlFlowItemSleep;\n const ms = sleepTask.sleep;\n let msNumber = ms;\n if (typeof ms === 'string') {\n msNumber = Number.parseInt(ms, 10);\n }\n assert(\n msNumber && msNumber > 0,\n `ms for sleep must be greater than 0, but got ${ms}`,\n );\n await new Promise((resolve) => setTimeout(resolve, msNumber));\n } else if ('aiTap' in (flowItem as MidsceneYamlFlowItemAITap)) {\n const tapTask = flowItem as MidsceneYamlFlowItemAITap;\n await agent.aiTap(tapTask.aiTap, tapTask);\n } else if ('aiHover' in (flowItem as MidsceneYamlFlowItemAIHover)) {\n const hoverTask = flowItem as MidsceneYamlFlowItemAIHover;\n await agent.aiHover(hoverTask.aiHover, hoverTask);\n } else if ('aiInput' in (flowItem as MidsceneYamlFlowItemAIInput)) {\n // may be input empty string ''\n const inputTask = flowItem as MidsceneYamlFlowItemAIInput;\n await agent.aiInput(inputTask.aiInput, inputTask.locate, inputTask);\n } else if (\n 'aiKeyboardPress' in (flowItem as MidsceneYamlFlowItemAIKeyboardPress)\n ) {\n const keyboardPressTask =\n flowItem as MidsceneYamlFlowItemAIKeyboardPress;\n await agent.aiKeyboardPress(\n keyboardPressTask.aiKeyboardPress,\n keyboardPressTask.locate,\n keyboardPressTask,\n );\n } else if ('aiScroll' in (flowItem as MidsceneYamlFlowItemAIScroll)) {\n const scrollTask = flowItem as MidsceneYamlFlowItemAIScroll;\n await agent.aiScroll(scrollTask, scrollTask.locate, scrollTask);\n } else if (\n 'javascript' in (flowItem as MidsceneYamlFlowItemEvaluateJavaScript)\n ) {\n const evaluateJavaScriptTask =\n flowItem as MidsceneYamlFlowItemEvaluateJavaScript;\n\n const result = await agent.evaluateJavaScript(\n evaluateJavaScriptTask.javascript,\n );\n this.setResult(evaluateJavaScriptTask.name, result);\n } else {\n throw new Error(`unknown flowItem: ${JSON.stringify(flowItem)}`);\n }\n }\n this.reportFile = agent.reportFile;\n }\n\n async run() {\n const { target, web, android, tasks } = this.script;\n const webEnv = web || target;\n const androidEnv = android;\n const platform = webEnv || androidEnv;\n\n this.setPlayerStatus('running');\n\n let agent: PageAgent | null = null;\n let freeFn: FreeFn[] = [];\n try {\n const { agent: newAgent, freeFn: newFreeFn } = await this.setupAgent(\n platform as T,\n );\n agent = newAgent;\n const originalOnTaskStartTip = agent.onTaskStartTip;\n agent.onTaskStartTip = (tip) => {\n if (this.status === 'running') {\n this.agentStatusTip = tip;\n }\n originalOnTaskStartTip?.(tip);\n };\n freeFn = [\n ...(newFreeFn || []),\n {\n name: 'restore-agent-onTaskStartTip',\n fn: () => {\n if (agent) {\n agent.onTaskStartTip = originalOnTaskStartTip;\n }\n },\n },\n ];\n } catch (e) {\n this.setPlayerStatus('error', e as Error);\n return;\n }\n this.pageAgent = agent;\n\n let taskIndex = 0;\n this.setPlayerStatus('running');\n let errorFlag = false;\n while (taskIndex < tasks.length) {\n const taskStatus = this.taskStatusList[taskIndex];\n this.setTaskStatus(taskIndex, 'running' as any);\n this.setTaskIndex(taskIndex);\n\n try {\n await this.playTask(taskStatus, this.pageAgent);\n this.setTaskStatus(taskIndex, 'done' as any);\n } catch (e) {\n this.setTaskStatus(taskIndex, 'error' as any, e as Error);\n\n if (taskStatus.continueOnError) {\n // nothing more to do\n } else {\n this.reportFile = agent.reportFile;\n errorFlag = true;\n break;\n }\n }\n this.reportFile = agent.reportFile;\n taskIndex++;\n }\n\n if (errorFlag) {\n this.setPlayerStatus('error');\n } else {\n this.setPlayerStatus('done');\n }\n this.agentStatusTip = '';\n\n // free the resources\n for (const fn of freeFn) {\n try {\n // console.log('freeing', fn.name);\n await fn.fn();\n // console.log('freed', fn.name);\n } catch (e) {\n // console.error('error freeing', fn.name, e);\n }\n }\n }\n}\n","import type {\n MidsceneYamlScript,\n MidsceneYamlScriptWebEnv,\n MidsceneYamlTask,\n} from 'misoai-core';\nimport yaml from 'js-yaml';\n\nexport function buildYaml(\n env: MidsceneYamlScriptWebEnv,\n tasks: MidsceneYamlTask[],\n) {\n const result: MidsceneYamlScript = {\n target: env,\n tasks,\n };\n\n return yaml.dump(result, {\n indent: 2,\n });\n}\n","import { assert } from 'misoai-shared/utils';\nimport yaml from 'js-yaml';\n\nimport type { MidsceneYamlScript } from 'misoai-core';\n\nfunction interpolateEnvVars(content: string): string {\n return content.replace(/\\$\\{([^}]+)\\}/g, (_, envVar) => {\n const value = process.env[envVar.trim()];\n if (value === undefined) {\n throw new Error(`Environment variable \"${envVar.trim()}\" is not defined`);\n }\n return value;\n });\n}\n\nexport function parseYamlScript(\n content: string,\n filePath?: string,\n ignoreCheckingTarget?: boolean,\n): MidsceneYamlScript {\n const interpolatedContent = interpolateEnvVars(content);\n const obj = yaml.load(interpolatedContent) as MidsceneYamlScript;\n const pathTip = filePath ? `, failed to load ${filePath}` : '';\n const android =\n typeof obj.android !== 'undefined'\n ? Object.assign({}, obj.android || {})\n : undefined;\n const webConfig = obj.web || obj.target; // no need to handle null case, because web has required parameters url\n const web =\n typeof webConfig !== 'undefined'\n ? Object.assign({}, webConfig || {})\n : undefined;\n\n if (!ignoreCheckingTarget) {\n // make sure at least one of target/web/android is provided\n assert(\n web || android,\n `at least one of \"target\", \"web\", or \"android\" properties is required in yaml script${pathTip}`,\n );\n\n // make sure only one of target/web/android is provided\n assert(\n (web && !android) || (!web && android),\n `only one of \"target\", \"web\", or \"android\" properties is allowed in yaml script${pathTip}`,\n );\n\n // make sure the config is valid\n if (web || android) {\n assert(\n typeof web === 'object' || typeof android === 'object',\n `property \"target/web/android\" must be an object${pathTip}`,\n );\n }\n }\n\n assert(obj.tasks, `property \"tasks\" is required in yaml script ${pathTip}`);\n assert(\n Array.isArray(obj.tasks),\n `property \"tasks\" must be an array in yaml script, but got ${obj.tasks}`,\n );\n return obj;\n}\n"]}
@@ -1,254 +0,0 @@
1
- import { W as WebPage, d as WebElementInfo, e as WebUIContext } from './page-b8ada1f3.js';
2
- import { Insight, ExecutionTaskProgressOptions, Executor, PlanningAction, 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
- private convertPlanToExecutable;
65
- private setupPlanningContext;
66
- loadYamlFlowAsPlanning(userInstruction: string, yamlString: string): Promise<{
67
- executor: Executor;
68
- }>;
69
- private planningTaskFromPrompt;
70
- private planningTaskToGoal;
71
- runPlans(title: string, plans: PlanningAction[]): Promise<ExecutionResult>;
72
- action(userPrompt: string, actionContext?: string): Promise<ExecutionResult<{
73
- yamlFlow?: MidsceneYamlFlowItem[];
74
- } | undefined>>;
75
- actionToGoal(userPrompt: string): Promise<ExecutionResult<{
76
- yamlFlow?: MidsceneYamlFlowItem[];
77
- } | undefined>>;
78
- private createTypeQueryTask;
79
- query(demand: InsightExtractParam): Promise<ExecutionResult>;
80
- boolean(prompt: string): Promise<ExecutionResult<boolean>>;
81
- number(prompt: string): Promise<ExecutionResult<number>>;
82
- string(prompt: string): Promise<ExecutionResult<string>>;
83
- assert(assertion: string): Promise<ExecutionResult<InsightAssertionResponse>>;
84
- /**
85
- * Append a message to the conversation history
86
- * For user messages with images:
87
- * - Keep max 4 user image messages in history
88
- * - Remove oldest user image message when limit reached
89
- * For assistant messages:
90
- * - Simply append to history
91
- * @param conversationHistory Message to append
92
- */
93
- private appendConversationHistory;
94
- private appendErrorPlan;
95
- waitFor(assertion: string, opt: PlanningActionParamWaitFor): Promise<ExecutionResult<void>>;
96
- }
97
-
98
- /**
99
- * Metadata for AI task execution
100
- */
101
- interface AITaskMetadata {
102
- /** Status of the task (pending, running, finished, failed, cancelled) */
103
- status?: string;
104
- /** Timestamp when the task started */
105
- start?: number;
106
- /** Timestamp when the task ended */
107
- end?: number;
108
- /** Total time taken to execute the task in milliseconds */
109
- totalTime?: number;
110
- /** Cache information */
111
- cache?: {
112
- hit: boolean;
113
- };
114
- /** Token usage information */
115
- usage?: {
116
- prompt_tokens: number;
117
- completion_tokens: number;
118
- total_tokens: number;
119
- [key: string]: any;
120
- };
121
- /** DeepThink information */
122
- deepthink?: {
123
- used: boolean;
124
- mode: string;
125
- [key: string]: any;
126
- };
127
- /** AI's thought process */
128
- thought?: string;
129
- /** Element location information */
130
- locate?: any;
131
- /** Action plans */
132
- plan?: any;
133
- /** Planning information */
134
- planning?: {
135
- type: string;
136
- description: string;
137
- steps: string[];
138
- };
139
- /** Insight information */
140
- insight?: {
141
- type: string;
142
- description: string;
143
- elements: string[];
144
- };
145
- /** Action information */
146
- action?: {
147
- type: string;
148
- description: string;
149
- result: any;
150
- };
151
- /** Action details */
152
- actionDetails?: Array<{
153
- type: string;
154
- subType?: string;
155
- status: string;
156
- thought?: string;
157
- }>;
158
- /** Task details */
159
- tasks?: Array<{
160
- type: string;
161
- subType?: string;
162
- status: string;
163
- thought?: string;
164
- locate?: any;
165
- timing?: any;
166
- usage?: any;
167
- cache?: any;
168
- error?: string;
169
- }>;
170
- }
171
- /**
172
- * Result of an AI task with metadata
173
- */
174
- interface AITaskResult<T = any> {
175
- /** The actual result of the operation */
176
- result: T;
177
- /** Metadata about the task execution */
178
- metadata: AITaskMetadata;
179
- }
180
-
181
- interface PageAgentOpt {
182
- forceSameTabNavigation?: boolean;
183
- testId?: string;
184
- cacheId?: string;
185
- groupName?: string;
186
- groupDescription?: string;
187
- generateReport?: boolean;
188
- autoPrintReportMsg?: boolean;
189
- onTaskStartTip?: OnTaskStartTip;
190
- aiActionContext?: string;
191
- waitForNavigationTimeout?: number;
192
- waitForNetworkIdleTimeout?: number;
193
- }
194
- declare class PageAgent<PageType extends WebPage = WebPage> {
195
- page: PageType;
196
- insight: Insight<WebElementInfo, WebUIContext>;
197
- dump: GroupedActionDump;
198
- reportFile?: string | null;
199
- reportFileName?: string;
200
- taskExecutor: PageTaskExecutor;
201
- opts: PageAgentOpt;
202
- /**
203
- * If true, the agent will not perform any actions
204
- */
205
- dryMode: boolean;
206
- onTaskStartTip?: OnTaskStartTip;
207
- taskCache?: TaskCache;
208
- constructor(page: PageType, opts?: PageAgentOpt);
209
- getUIContext(action?: InsightAction): Promise<WebUIContext>;
210
- private _callInsightCaptcha;
211
- setAIActionContext(prompt: string): Promise<void>;
212
- resetDump(): GroupedActionDump;
213
- appendExecutionDump(execution: ExecutionDump): void;
214
- dumpDataString(): string;
215
- reportHTMLString(): string;
216
- writeOutActionDumps(): void;
217
- private callbackOnTaskStartTip;
218
- private afterTaskRunning;
219
- private buildDetailedLocateParam;
220
- aiTap(locatePrompt: string, opt?: LocateOption): Promise<AITaskResult>;
221
- aiHover(locatePrompt: string, opt?: LocateOption): Promise<AITaskResult>;
222
- aiInput(value: string, locatePrompt: string, opt?: LocateOption): Promise<AITaskResult>;
223
- aiKeyboardPress(keyName: string, locatePrompt?: string, opt?: LocateOption): Promise<AITaskResult>;
224
- aiScroll(scrollParam: PlanningActionParamScroll, locatePrompt?: string, opt?: LocateOption): Promise<AITaskResult>;
225
- aiAction(taskPrompt: string, opt?: {
226
- cacheable?: boolean;
227
- }): Promise<AITaskResult>;
228
- aiQuery(demand: any): Promise<AITaskResult>;
229
- aiBoolean(prompt: string): Promise<AITaskResult<boolean>>;
230
- aiNumber(prompt: string): Promise<AITaskResult<number>>;
231
- aiString(prompt: string): Promise<AITaskResult<string>>;
232
- describeElementAtPoint(center: [number, number], opt?: {
233
- verifyPrompt?: boolean;
234
- retryLimit?: number;
235
- deepThink?: boolean;
236
- } & LocatorValidatorOption): Promise<AgentDescribeElementAtPointResult>;
237
- verifyLocator(prompt: string, locateOpt: LocateOption | undefined, expectCenter: [number, number], verifyLocateOption?: LocatorValidatorOption): Promise<LocateValidatorResult>;
238
- aiLocate(prompt: string, opt?: LocateOption): Promise<AITaskResult<Pick<LocateResultElement, 'rect' | 'center'>>>;
239
- aiAssert(assertion: string, msg?: string, opt?: AgentAssertOpt): Promise<AITaskResult<any>>;
240
- aiCaptcha(options?: {
241
- deepThink?: boolean;
242
- autoDetectComplexity?: boolean;
243
- }): Promise<AITaskResult<any>>;
244
- aiWaitFor(assertion: string, opt?: AgentWaitForOpt): Promise<AITaskResult>;
245
- ai(taskPrompt: string, type?: string, options?: {
246
- deepThink?: boolean;
247
- autoDetectComplexity?: boolean;
248
- }): Promise<AITaskResult>;
249
- runYaml(yamlScriptContent: string): Promise<AITaskResult<Record<string, any>>>;
250
- evaluateJavaScript(script: string): Promise<any>;
251
- destroy(): Promise<void>;
252
- }
253
-
254
- export { type AITaskMetadata, type AITaskResult, PageAgent, type PageAgentOpt };
@@ -1,9 +0,0 @@
1
- export { E as ExtensionBridgePageBrowserSide } from './browser-d447695b.js';
2
- import './page-b8ada1f3.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/.';
@@ -1,40 +0,0 @@
1
- import { PageAgent, PageAgentOpt, AITaskResult } from './agent.js';
2
- import { B as BridgeConnectTabOptions, E as ExtensionBridgePageBrowserSide } from './browser-d447695b.js';
3
- export { allConfigFromEnv, overrideAIConfig } from 'misoai-shared/env';
4
- import './page-b8ada1f3.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 };
@@ -1,37 +0,0 @@
1
- import { C as ChromeExtensionProxyPage, f as ChromePageDestroyOptions } from './page-b8ada1f3.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 };
@@ -1,18 +0,0 @@
1
- import { C as ChromeExtensionProxyPage } from './page-b8ada1f3.js';
2
- export { E as ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED } from './page-b8ada1f3.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 };
@@ -1,16 +0,0 @@
1
- export { PlayWrightAiFixtureType, PlaywrightAgent, PlaywrightAiFixture } from './playwright.js';
2
- export { a as AbstractPage, A as AndroidDevicePage, W as WebPage, p as parseContextFromWebPage } from './page-b8ada1f3.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';
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,31 +0,0 @@
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-b8ada1f3.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 };