@aiscene/core 1.7.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.
Files changed (279) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/es/agent/agent.mjs +749 -0
  4. package/dist/es/agent/agent.mjs.map +1 -0
  5. package/dist/es/agent/common.mjs +0 -0
  6. package/dist/es/agent/execution-session.mjs +41 -0
  7. package/dist/es/agent/execution-session.mjs.map +1 -0
  8. package/dist/es/agent/index.mjs +6 -0
  9. package/dist/es/agent/task-builder.mjs +332 -0
  10. package/dist/es/agent/task-builder.mjs.map +1 -0
  11. package/dist/es/agent/task-cache.mjs +214 -0
  12. package/dist/es/agent/task-cache.mjs.map +1 -0
  13. package/dist/es/agent/tasks.mjs +426 -0
  14. package/dist/es/agent/tasks.mjs.map +1 -0
  15. package/dist/es/agent/ui-utils.mjs +91 -0
  16. package/dist/es/agent/ui-utils.mjs.map +1 -0
  17. package/dist/es/agent/utils.mjs +198 -0
  18. package/dist/es/agent/utils.mjs.map +1 -0
  19. package/dist/es/ai-model/auto-glm/actions.mjs +237 -0
  20. package/dist/es/ai-model/auto-glm/actions.mjs.map +1 -0
  21. package/dist/es/ai-model/auto-glm/index.mjs +6 -0
  22. package/dist/es/ai-model/auto-glm/parser.mjs +239 -0
  23. package/dist/es/ai-model/auto-glm/parser.mjs.map +1 -0
  24. package/dist/es/ai-model/auto-glm/planning.mjs +71 -0
  25. package/dist/es/ai-model/auto-glm/planning.mjs.map +1 -0
  26. package/dist/es/ai-model/auto-glm/prompt.mjs +222 -0
  27. package/dist/es/ai-model/auto-glm/prompt.mjs.map +1 -0
  28. package/dist/es/ai-model/auto-glm/util.mjs +9 -0
  29. package/dist/es/ai-model/auto-glm/util.mjs.map +1 -0
  30. package/dist/es/ai-model/conversation-history.mjs +195 -0
  31. package/dist/es/ai-model/conversation-history.mjs.map +1 -0
  32. package/dist/es/ai-model/index.mjs +11 -0
  33. package/dist/es/ai-model/inspect.mjs +394 -0
  34. package/dist/es/ai-model/inspect.mjs.map +1 -0
  35. package/dist/es/ai-model/llm-planning.mjs +233 -0
  36. package/dist/es/ai-model/llm-planning.mjs.map +1 -0
  37. package/dist/es/ai-model/prompt/common.mjs +7 -0
  38. package/dist/es/ai-model/prompt/common.mjs.map +1 -0
  39. package/dist/es/ai-model/prompt/describe.mjs +66 -0
  40. package/dist/es/ai-model/prompt/describe.mjs.map +1 -0
  41. package/dist/es/ai-model/prompt/extraction.mjs +129 -0
  42. package/dist/es/ai-model/prompt/extraction.mjs.map +1 -0
  43. package/dist/es/ai-model/prompt/llm-locator.mjs +51 -0
  44. package/dist/es/ai-model/prompt/llm-locator.mjs.map +1 -0
  45. package/dist/es/ai-model/prompt/llm-planning.mjs +568 -0
  46. package/dist/es/ai-model/prompt/llm-planning.mjs.map +1 -0
  47. package/dist/es/ai-model/prompt/llm-section-locator.mjs +44 -0
  48. package/dist/es/ai-model/prompt/llm-section-locator.mjs.map +1 -0
  49. package/dist/es/ai-model/prompt/order-sensitive-judge.mjs +35 -0
  50. package/dist/es/ai-model/prompt/order-sensitive-judge.mjs.map +1 -0
  51. package/dist/es/ai-model/prompt/playwright-generator.mjs +117 -0
  52. package/dist/es/ai-model/prompt/playwright-generator.mjs.map +1 -0
  53. package/dist/es/ai-model/prompt/ui-tars-planning.mjs +36 -0
  54. package/dist/es/ai-model/prompt/ui-tars-planning.mjs.map +1 -0
  55. package/dist/es/ai-model/prompt/util.mjs +59 -0
  56. package/dist/es/ai-model/prompt/util.mjs.map +1 -0
  57. package/dist/es/ai-model/prompt/yaml-generator.mjs +219 -0
  58. package/dist/es/ai-model/prompt/yaml-generator.mjs.map +1 -0
  59. package/dist/es/ai-model/service-caller/codex-app-server.mjs +575 -0
  60. package/dist/es/ai-model/service-caller/codex-app-server.mjs.map +1 -0
  61. package/dist/es/ai-model/service-caller/image-detail.mjs +6 -0
  62. package/dist/es/ai-model/service-caller/image-detail.mjs.map +1 -0
  63. package/dist/es/ai-model/service-caller/index.mjs +473 -0
  64. package/dist/es/ai-model/service-caller/index.mjs.map +1 -0
  65. package/dist/es/ai-model/ui-tars-planning.mjs +249 -0
  66. package/dist/es/ai-model/ui-tars-planning.mjs.map +1 -0
  67. package/dist/es/common.mjs +371 -0
  68. package/dist/es/common.mjs.map +1 -0
  69. package/dist/es/device/device-options.mjs +0 -0
  70. package/dist/es/device/index.mjs +341 -0
  71. package/dist/es/device/index.mjs.map +1 -0
  72. package/dist/es/dump/html-utils.mjs +284 -0
  73. package/dist/es/dump/html-utils.mjs.map +1 -0
  74. package/dist/es/dump/image-restoration.mjs +43 -0
  75. package/dist/es/dump/image-restoration.mjs.map +1 -0
  76. package/dist/es/dump/index.mjs +3 -0
  77. package/dist/es/index.mjs +15 -0
  78. package/dist/es/index.mjs.map +1 -0
  79. package/dist/es/report-generator.mjs +162 -0
  80. package/dist/es/report-generator.mjs.map +1 -0
  81. package/dist/es/report.mjs +137 -0
  82. package/dist/es/report.mjs.map +1 -0
  83. package/dist/es/screenshot-item.mjs +105 -0
  84. package/dist/es/screenshot-item.mjs.map +1 -0
  85. package/dist/es/service/index.mjs +274 -0
  86. package/dist/es/service/index.mjs.map +1 -0
  87. package/dist/es/service/utils.mjs +15 -0
  88. package/dist/es/service/utils.mjs.map +1 -0
  89. package/dist/es/skill/index.mjs +38 -0
  90. package/dist/es/skill/index.mjs.map +1 -0
  91. package/dist/es/task-runner.mjs +263 -0
  92. package/dist/es/task-runner.mjs.map +1 -0
  93. package/dist/es/task-timing.mjs +12 -0
  94. package/dist/es/task-timing.mjs.map +1 -0
  95. package/dist/es/tree.mjs +13 -0
  96. package/dist/es/tree.mjs.map +1 -0
  97. package/dist/es/types.mjs +199 -0
  98. package/dist/es/types.mjs.map +1 -0
  99. package/dist/es/utils.mjs +229 -0
  100. package/dist/es/utils.mjs.map +1 -0
  101. package/dist/es/yaml/builder.mjs +13 -0
  102. package/dist/es/yaml/builder.mjs.map +1 -0
  103. package/dist/es/yaml/index.mjs +4 -0
  104. package/dist/es/yaml/player.mjs +434 -0
  105. package/dist/es/yaml/player.mjs.map +1 -0
  106. package/dist/es/yaml/utils.mjs +102 -0
  107. package/dist/es/yaml/utils.mjs.map +1 -0
  108. package/dist/es/yaml.mjs +0 -0
  109. package/dist/lib/agent/agent.js +797 -0
  110. package/dist/lib/agent/agent.js.map +1 -0
  111. package/dist/lib/agent/common.js +5 -0
  112. package/dist/lib/agent/execution-session.js +75 -0
  113. package/dist/lib/agent/execution-session.js.map +1 -0
  114. package/dist/lib/agent/index.js +81 -0
  115. package/dist/lib/agent/index.js.map +1 -0
  116. package/dist/lib/agent/task-builder.js +369 -0
  117. package/dist/lib/agent/task-builder.js.map +1 -0
  118. package/dist/lib/agent/task-cache.js +266 -0
  119. package/dist/lib/agent/task-cache.js.map +1 -0
  120. package/dist/lib/agent/tasks.js +469 -0
  121. package/dist/lib/agent/tasks.js.map +1 -0
  122. package/dist/lib/agent/ui-utils.js +143 -0
  123. package/dist/lib/agent/ui-utils.js.map +1 -0
  124. package/dist/lib/agent/utils.js +275 -0
  125. package/dist/lib/agent/utils.js.map +1 -0
  126. package/dist/lib/ai-model/auto-glm/actions.js +271 -0
  127. package/dist/lib/ai-model/auto-glm/actions.js.map +1 -0
  128. package/dist/lib/ai-model/auto-glm/index.js +66 -0
  129. package/dist/lib/ai-model/auto-glm/index.js.map +1 -0
  130. package/dist/lib/ai-model/auto-glm/parser.js +282 -0
  131. package/dist/lib/ai-model/auto-glm/parser.js.map +1 -0
  132. package/dist/lib/ai-model/auto-glm/planning.js +105 -0
  133. package/dist/lib/ai-model/auto-glm/planning.js.map +1 -0
  134. package/dist/lib/ai-model/auto-glm/prompt.js +259 -0
  135. package/dist/lib/ai-model/auto-glm/prompt.js.map +1 -0
  136. package/dist/lib/ai-model/auto-glm/util.js +46 -0
  137. package/dist/lib/ai-model/auto-glm/util.js.map +1 -0
  138. package/dist/lib/ai-model/conversation-history.js +229 -0
  139. package/dist/lib/ai-model/conversation-history.js.map +1 -0
  140. package/dist/lib/ai-model/index.js +125 -0
  141. package/dist/lib/ai-model/index.js.map +1 -0
  142. package/dist/lib/ai-model/inspect.js +440 -0
  143. package/dist/lib/ai-model/inspect.js.map +1 -0
  144. package/dist/lib/ai-model/llm-planning.js +270 -0
  145. package/dist/lib/ai-model/llm-planning.js.map +1 -0
  146. package/dist/lib/ai-model/prompt/common.js +41 -0
  147. package/dist/lib/ai-model/prompt/common.js.map +1 -0
  148. package/dist/lib/ai-model/prompt/describe.js +100 -0
  149. package/dist/lib/ai-model/prompt/describe.js.map +1 -0
  150. package/dist/lib/ai-model/prompt/extraction.js +169 -0
  151. package/dist/lib/ai-model/prompt/extraction.js.map +1 -0
  152. package/dist/lib/ai-model/prompt/llm-locator.js +88 -0
  153. package/dist/lib/ai-model/prompt/llm-locator.js.map +1 -0
  154. package/dist/lib/ai-model/prompt/llm-planning.js +605 -0
  155. package/dist/lib/ai-model/prompt/llm-planning.js.map +1 -0
  156. package/dist/lib/ai-model/prompt/llm-section-locator.js +81 -0
  157. package/dist/lib/ai-model/prompt/llm-section-locator.js.map +1 -0
  158. package/dist/lib/ai-model/prompt/order-sensitive-judge.js +72 -0
  159. package/dist/lib/ai-model/prompt/order-sensitive-judge.js.map +1 -0
  160. package/dist/lib/ai-model/prompt/playwright-generator.js +178 -0
  161. package/dist/lib/ai-model/prompt/playwright-generator.js.map +1 -0
  162. package/dist/lib/ai-model/prompt/ui-tars-planning.js +73 -0
  163. package/dist/lib/ai-model/prompt/ui-tars-planning.js.map +1 -0
  164. package/dist/lib/ai-model/prompt/util.js +105 -0
  165. package/dist/lib/ai-model/prompt/util.js.map +1 -0
  166. package/dist/lib/ai-model/prompt/yaml-generator.js +280 -0
  167. package/dist/lib/ai-model/prompt/yaml-generator.js.map +1 -0
  168. package/dist/lib/ai-model/service-caller/codex-app-server.js +624 -0
  169. package/dist/lib/ai-model/service-caller/codex-app-server.js.map +1 -0
  170. package/dist/lib/ai-model/service-caller/image-detail.js +40 -0
  171. package/dist/lib/ai-model/service-caller/image-detail.js.map +1 -0
  172. package/dist/lib/ai-model/service-caller/index.js +538 -0
  173. package/dist/lib/ai-model/service-caller/index.js.map +1 -0
  174. package/dist/lib/ai-model/ui-tars-planning.js +283 -0
  175. package/dist/lib/ai-model/ui-tars-planning.js.map +1 -0
  176. package/dist/lib/common.js +480 -0
  177. package/dist/lib/common.js.map +1 -0
  178. package/dist/lib/device/device-options.js +20 -0
  179. package/dist/lib/device/device-options.js.map +1 -0
  180. package/dist/lib/device/index.js +468 -0
  181. package/dist/lib/device/index.js.map +1 -0
  182. package/dist/lib/dump/html-utils.js +357 -0
  183. package/dist/lib/dump/html-utils.js.map +1 -0
  184. package/dist/lib/dump/image-restoration.js +77 -0
  185. package/dist/lib/dump/image-restoration.js.map +1 -0
  186. package/dist/lib/dump/index.js +60 -0
  187. package/dist/lib/dump/index.js.map +1 -0
  188. package/dist/lib/index.js +146 -0
  189. package/dist/lib/index.js.map +1 -0
  190. package/dist/lib/report-generator.js +200 -0
  191. package/dist/lib/report-generator.js.map +1 -0
  192. package/dist/lib/report.js +171 -0
  193. package/dist/lib/report.js.map +1 -0
  194. package/dist/lib/screenshot-item.js +139 -0
  195. package/dist/lib/screenshot-item.js.map +1 -0
  196. package/dist/lib/service/index.js +308 -0
  197. package/dist/lib/service/index.js.map +1 -0
  198. package/dist/lib/service/utils.js +49 -0
  199. package/dist/lib/service/utils.js.map +1 -0
  200. package/dist/lib/skill/index.js +72 -0
  201. package/dist/lib/skill/index.js.map +1 -0
  202. package/dist/lib/task-runner.js +300 -0
  203. package/dist/lib/task-runner.js.map +1 -0
  204. package/dist/lib/task-timing.js +46 -0
  205. package/dist/lib/task-timing.js.map +1 -0
  206. package/dist/lib/tree.js +53 -0
  207. package/dist/lib/tree.js.map +1 -0
  208. package/dist/lib/types.js +288 -0
  209. package/dist/lib/types.js.map +1 -0
  210. package/dist/lib/utils.js +308 -0
  211. package/dist/lib/utils.js.map +1 -0
  212. package/dist/lib/yaml/builder.js +57 -0
  213. package/dist/lib/yaml/builder.js.map +1 -0
  214. package/dist/lib/yaml/index.js +81 -0
  215. package/dist/lib/yaml/index.js.map +1 -0
  216. package/dist/lib/yaml/player.js +468 -0
  217. package/dist/lib/yaml/player.js.map +1 -0
  218. package/dist/lib/yaml/utils.js +155 -0
  219. package/dist/lib/yaml/utils.js.map +1 -0
  220. package/dist/lib/yaml.js +20 -0
  221. package/dist/lib/yaml.js.map +1 -0
  222. package/dist/types/agent/agent.d.ts +205 -0
  223. package/dist/types/agent/common.d.ts +0 -0
  224. package/dist/types/agent/execution-session.d.ts +36 -0
  225. package/dist/types/agent/index.d.ts +10 -0
  226. package/dist/types/agent/task-builder.d.ts +34 -0
  227. package/dist/types/agent/task-cache.d.ts +49 -0
  228. package/dist/types/agent/tasks.d.ts +69 -0
  229. package/dist/types/agent/ui-utils.d.ts +14 -0
  230. package/dist/types/agent/utils.d.ts +31 -0
  231. package/dist/types/ai-model/auto-glm/actions.d.ts +78 -0
  232. package/dist/types/ai-model/auto-glm/index.d.ts +6 -0
  233. package/dist/types/ai-model/auto-glm/parser.d.ts +18 -0
  234. package/dist/types/ai-model/auto-glm/planning.d.ts +12 -0
  235. package/dist/types/ai-model/auto-glm/prompt.d.ts +27 -0
  236. package/dist/types/ai-model/auto-glm/util.d.ts +13 -0
  237. package/dist/types/ai-model/conversation-history.d.ts +105 -0
  238. package/dist/types/ai-model/index.d.ts +14 -0
  239. package/dist/types/ai-model/inspect.d.ts +67 -0
  240. package/dist/types/ai-model/llm-planning.d.ts +19 -0
  241. package/dist/types/ai-model/prompt/common.d.ts +2 -0
  242. package/dist/types/ai-model/prompt/describe.d.ts +1 -0
  243. package/dist/types/ai-model/prompt/extraction.d.ts +7 -0
  244. package/dist/types/ai-model/prompt/llm-locator.d.ts +3 -0
  245. package/dist/types/ai-model/prompt/llm-planning.d.ts +10 -0
  246. package/dist/types/ai-model/prompt/llm-section-locator.d.ts +3 -0
  247. package/dist/types/ai-model/prompt/order-sensitive-judge.d.ts +2 -0
  248. package/dist/types/ai-model/prompt/playwright-generator.d.ts +26 -0
  249. package/dist/types/ai-model/prompt/ui-tars-planning.d.ts +2 -0
  250. package/dist/types/ai-model/prompt/util.d.ts +33 -0
  251. package/dist/types/ai-model/prompt/yaml-generator.d.ts +100 -0
  252. package/dist/types/ai-model/service-caller/codex-app-server.d.ts +42 -0
  253. package/dist/types/ai-model/service-caller/image-detail.d.ts +2 -0
  254. package/dist/types/ai-model/service-caller/index.d.ts +49 -0
  255. package/dist/types/ai-model/ui-tars-planning.d.ts +72 -0
  256. package/dist/types/common.d.ts +288 -0
  257. package/dist/types/device/device-options.d.ts +142 -0
  258. package/dist/types/device/index.d.ts +2528 -0
  259. package/dist/types/dump/html-utils.d.ts +63 -0
  260. package/dist/types/dump/image-restoration.d.ts +6 -0
  261. package/dist/types/dump/index.d.ts +5 -0
  262. package/dist/types/index.d.ts +17 -0
  263. package/dist/types/report-generator.d.ts +66 -0
  264. package/dist/types/report.d.ts +22 -0
  265. package/dist/types/screenshot-item.d.ts +66 -0
  266. package/dist/types/service/index.d.ts +24 -0
  267. package/dist/types/service/utils.d.ts +2 -0
  268. package/dist/types/skill/index.d.ts +25 -0
  269. package/dist/types/task-runner.d.ts +50 -0
  270. package/dist/types/task-timing.d.ts +8 -0
  271. package/dist/types/tree.d.ts +4 -0
  272. package/dist/types/types.d.ts +669 -0
  273. package/dist/types/utils.d.ts +40 -0
  274. package/dist/types/yaml/builder.d.ts +2 -0
  275. package/dist/types/yaml/index.d.ts +4 -0
  276. package/dist/types/yaml/player.d.ts +34 -0
  277. package/dist/types/yaml/utils.d.ts +9 -0
  278. package/dist/types/yaml.d.ts +217 -0
  279. package/package.json +130 -0
@@ -0,0 +1,2 @@
1
+ import type { MidsceneYamlScriptWebEnv, MidsceneYamlTask } from '../types';
2
+ export declare function buildYaml(env: MidsceneYamlScriptWebEnv, tasks: MidsceneYamlTask[]): string;
@@ -0,0 +1,4 @@
1
+ export * from '../yaml';
2
+ export * from './player';
3
+ export * from './builder';
4
+ export * from './utils';
@@ -0,0 +1,34 @@
1
+ import type { Agent } from '../agent/agent';
2
+ import type { FreeFn, MidsceneYamlScript, MidsceneYamlScriptEnv, ScriptPlayerStatusValue, ScriptPlayerTaskStatus } from '../types';
3
+ export declare class ScriptPlayer<T extends MidsceneYamlScriptEnv> {
4
+ private script;
5
+ private setupAgent;
6
+ onTaskStatusChange?: ((taskStatus: ScriptPlayerTaskStatus) => void) | undefined;
7
+ currentTaskIndex?: number;
8
+ taskStatusList: ScriptPlayerTaskStatus[];
9
+ status: ScriptPlayerStatusValue;
10
+ reportFile?: string | null;
11
+ result: Record<string, any>;
12
+ private unnamedResultIndex;
13
+ output?: string | null;
14
+ unstableLogContent?: string | null;
15
+ errorInSetup?: Error;
16
+ private interfaceAgent;
17
+ agentStatusTip?: string;
18
+ target?: MidsceneYamlScriptEnv;
19
+ private actionSpace;
20
+ private scriptPath?;
21
+ constructor(script: MidsceneYamlScript, setupAgent: (platform: T) => Promise<{
22
+ agent: Agent;
23
+ freeFn: FreeFn[];
24
+ }>, onTaskStatusChange?: ((taskStatus: ScriptPlayerTaskStatus) => void) | undefined, scriptPath?: string);
25
+ private setResult;
26
+ private setPlayerStatus;
27
+ private notifyCurrentTaskStatusChange;
28
+ private setTaskStatus;
29
+ private setTaskIndex;
30
+ private flushResult;
31
+ private flushUnstableLogContent;
32
+ playTask(taskStatus: ScriptPlayerTaskStatus, agent: Agent): Promise<void>;
33
+ run(): Promise<void>;
34
+ }
@@ -0,0 +1,9 @@
1
+ import type { TUserPrompt } from '../common';
2
+ import type { DetailedLocateParam, LocateOption, MidsceneYamlScript } from '../types';
3
+ export declare function interpolateEnvVars(content: string): string;
4
+ export declare function parseYamlScript(content: string, filePath?: string): MidsceneYamlScript;
5
+ export declare function buildDetailedLocateParam(locatePrompt: TUserPrompt, opt?: LocateOption): DetailedLocateParam | undefined;
6
+ export declare function buildDetailedLocateParamAndRestParams(locatePrompt: TUserPrompt, opt: LocateOption | undefined, excludeKeys?: string[]): {
7
+ locateParam: DetailedLocateParam | undefined;
8
+ restParams: Record<string, any>;
9
+ };
@@ -0,0 +1,217 @@
1
+ import type { TMultimodalPrompt, TUserPrompt } from './common';
2
+ import type { AndroidDeviceOpt, IOSDeviceOpt } from './device';
3
+ import type { AgentOpt, LocateResultElement } from './types';
4
+ import type { UIContext } from './types';
5
+ export interface LocateOption extends Partial<TMultimodalPrompt> {
6
+ prompt?: TUserPrompt;
7
+ deepLocate?: boolean;
8
+ /** @deprecated Use `deepLocate` instead. Kept for backward compatibility. */
9
+ deepThink?: boolean;
10
+ cacheable?: boolean;
11
+ xpath?: string;
12
+ uiContext?: UIContext;
13
+ fileChooserAccept?: string | string[];
14
+ }
15
+ export interface ServiceExtractOption {
16
+ domIncluded?: boolean | 'visible-only';
17
+ screenshotIncluded?: boolean;
18
+ /** 当为 true 时,强制 aiBoolean 只根据截图判断,不过度联想值判断错误 */
19
+ strictBoolean?: boolean;
20
+ [key: string]: unknown;
21
+ }
22
+ export interface DetailedLocateParam extends Omit<LocateOption, 'deepThink' | keyof TMultimodalPrompt> {
23
+ prompt: TUserPrompt;
24
+ }
25
+ export type ScrollType = 'singleAction' | 'scrollToBottom' | 'scrollToTop' | 'scrollToRight' | 'scrollToLeft' | 'once' | 'untilBottom' | 'untilTop' | 'untilRight' | 'untilLeft';
26
+ export type ActionScrollParam = {
27
+ direction?: 'down' | 'up' | 'right' | 'left';
28
+ scrollType?: ScrollType;
29
+ distance?: number | null;
30
+ locate?: LocateResultElement;
31
+ };
32
+ export type ScrollParam = Omit<ActionScrollParam, 'locate'>;
33
+ export interface MidsceneYamlScript {
34
+ target?: MidsceneYamlScriptWebEnv;
35
+ web?: MidsceneYamlScriptWebEnv;
36
+ android?: MidsceneYamlScriptAndroidEnv;
37
+ ios?: MidsceneYamlScriptIOSEnv;
38
+ computer?: MidsceneYamlScriptComputerEnv;
39
+ interface?: MidsceneYamlScriptEnvGeneralInterface;
40
+ config?: MidsceneYamlScriptConfig;
41
+ agent?: MidsceneYamlScriptAgentOpt;
42
+ tasks: MidsceneYamlTask[];
43
+ }
44
+ export interface MidsceneYamlTask {
45
+ name: string;
46
+ flow: MidsceneYamlFlowItem[];
47
+ continueOnError?: boolean;
48
+ }
49
+ /**
50
+ * Agent configuration options that can be specified in YAML scripts.
51
+ *
52
+ * This type includes serializable fields from AgentOpt, excluding non-serializable
53
+ * fields like functions and complex objects. All fields are optional.
54
+ *
55
+ * @remarks
56
+ * - testId priority: CLI parameter > YAML agent.testId > filename
57
+ * - These settings apply to all platforms (Web, Android, iOS, Generic Interface)
58
+ * - modelConfig is configured through environment variables, not in YAML
59
+ *
60
+ * @example
61
+ * ```yaml
62
+ * agent:
63
+ * testId: "checkout-test"
64
+ * groupName: "E2E Test Suite"
65
+ * generateReport: true
66
+ * replanningCycleLimit: 30
67
+ * cache:
68
+ * id: "checkout-cache"
69
+ * strategy: "read-write"
70
+ * ```
71
+ */
72
+ export type MidsceneYamlScriptAgentOpt = Pick<AgentOpt, 'testId' | 'groupName' | 'groupDescription' | 'generateReport' | 'autoPrintReportMsg' | 'reportFileName' | 'replanningCycleLimit' | 'aiActContext' | 'aiActionContext' | 'cache' | 'screenshotShrinkFactor'>;
73
+ export interface MidsceneYamlScriptConfig {
74
+ output?: string;
75
+ unstableLogContent?: boolean | string;
76
+ }
77
+ export interface MidsceneYamlScriptEnvGeneralInterface {
78
+ module: string;
79
+ export?: string;
80
+ param?: Record<string, any>;
81
+ }
82
+ export interface MidsceneYamlScriptWebEnv extends MidsceneYamlScriptConfig, MidsceneYamlScriptAgentOpt {
83
+ serve?: string;
84
+ url: string;
85
+ userAgent?: string;
86
+ acceptInsecureCerts?: boolean;
87
+ viewportWidth?: number;
88
+ viewportHeight?: number;
89
+ deviceScaleFactor?: number;
90
+ waitForNetworkIdle?: {
91
+ timeout?: number;
92
+ continueOnNetworkIdleError?: boolean;
93
+ };
94
+ cookie?: string;
95
+ forceSameTabNavigation?: boolean;
96
+ /**
97
+ * Custom Chrome launch arguments (Puppeteer only, not supported in bridge mode).
98
+ *
99
+ * Allows passing custom command-line arguments to Chrome/Chromium when launching the browser.
100
+ * This is useful for testing scenarios that require specific browser configurations.
101
+ *
102
+ * ⚠️ Security Warning: Some arguments (e.g., --no-sandbox, --disable-web-security) may
103
+ * reduce browser security. Use only in controlled testing environments.
104
+ *
105
+ * @example
106
+ * ```yaml
107
+ * web:
108
+ * url: https://example.com
109
+ * chromeArgs:
110
+ * - '--disable-features=ThirdPartyCookiePhaseout'
111
+ * - '--disable-features=SameSiteByDefaultCookies'
112
+ * - '--window-size=1920,1080'
113
+ * ```
114
+ */
115
+ chromeArgs?: string[];
116
+ bridgeMode?: false | 'newTabWithUrl' | 'currentTab';
117
+ closeNewTabsAfterDisconnect?: boolean;
118
+ /**
119
+ * CDP (Chrome DevTools Protocol) endpoint URL.
120
+ * When specified, connects to an existing Chrome browser via CDP instead of launching a new one.
121
+ *
122
+ * @example
123
+ * ```yaml
124
+ * web:
125
+ * url: https://example.com
126
+ * cdpEndpoint: ws://localhost:9222/devtools/browser/xxxx
127
+ * ```
128
+ */
129
+ cdpEndpoint?: string;
130
+ }
131
+ export interface MidsceneYamlScriptAndroidEnv extends MidsceneYamlScriptConfig, Omit<AndroidDeviceOpt, 'customActions'> {
132
+ deviceId?: string;
133
+ launch?: string;
134
+ }
135
+ export interface MidsceneYamlScriptIOSEnv extends MidsceneYamlScriptConfig, Omit<IOSDeviceOpt, 'customActions'> {
136
+ launch?: string;
137
+ }
138
+ export interface MidsceneYamlScriptComputerEnv extends MidsceneYamlScriptConfig {
139
+ displayId?: string;
140
+ }
141
+ export type MidsceneYamlScriptEnv = MidsceneYamlScriptWebEnv | MidsceneYamlScriptAndroidEnv | MidsceneYamlScriptIOSEnv | MidsceneYamlScriptComputerEnv;
142
+ export interface MidsceneYamlFlowItemAIAction {
143
+ aiAction?: string;
144
+ ai?: string;
145
+ aiAct?: string;
146
+ aiActionProgressTips?: string[];
147
+ cacheable?: boolean;
148
+ [key: string]: unknown;
149
+ }
150
+ export interface MidsceneYamlFlowItemAIAssert extends ServiceExtractOption {
151
+ aiAssert: string;
152
+ errorMessage?: string;
153
+ name?: string;
154
+ }
155
+ export interface MidsceneYamlFlowItemAIWaitFor extends ServiceExtractOption {
156
+ aiWaitFor: string;
157
+ timeout?: number;
158
+ }
159
+ export interface MidsceneYamlFlowItemEvaluateJavaScript {
160
+ javascript: string;
161
+ name?: string;
162
+ }
163
+ export interface MidsceneYamlFlowItemSleep {
164
+ sleep: number;
165
+ }
166
+ export interface MidsceneYamlFlowItemLogScreenshot {
167
+ logScreenshot?: string;
168
+ recordToReport?: string;
169
+ content?: string;
170
+ }
171
+ export type MidsceneYamlFlowItem = MidsceneYamlFlowItemAIAction | MidsceneYamlFlowItemAIAssert | MidsceneYamlFlowItemAIWaitFor | MidsceneYamlFlowItemEvaluateJavaScript | MidsceneYamlFlowItemSleep | MidsceneYamlFlowItemLogScreenshot;
172
+ export interface FreeFn {
173
+ name: string;
174
+ fn: () => void;
175
+ }
176
+ export interface ScriptPlayerTaskStatus extends MidsceneYamlTask {
177
+ status: ScriptPlayerStatusValue;
178
+ currentStep?: number;
179
+ totalSteps: number;
180
+ error?: Error;
181
+ }
182
+ export type ScriptPlayerStatusValue = 'init' | 'running' | 'done' | 'error';
183
+ export interface MidsceneYamlConfig {
184
+ concurrent?: number;
185
+ continueOnError?: boolean;
186
+ summary?: string;
187
+ shareBrowserContext?: boolean;
188
+ web?: MidsceneYamlScriptWebEnv;
189
+ android?: MidsceneYamlScriptAndroidEnv;
190
+ ios?: MidsceneYamlScriptIOSEnv;
191
+ files: string[];
192
+ headed?: boolean;
193
+ keepWindow?: boolean;
194
+ dotenvOverride?: boolean;
195
+ dotenvDebug?: boolean;
196
+ }
197
+ export interface MidsceneYamlConfigOutput {
198
+ format?: 'json';
199
+ path?: string;
200
+ }
201
+ export interface MidsceneYamlConfigResult {
202
+ file: string;
203
+ success: boolean;
204
+ executed: boolean;
205
+ output?: string | null;
206
+ report?: string | null;
207
+ error?: string;
208
+ duration?: number;
209
+ /**
210
+ * Type of result:
211
+ * - 'success': All tasks completed successfully
212
+ * - 'failed': Execution failed (player error)
213
+ * - 'partialFailed': Some tasks failed but execution continued (continueOnError)
214
+ * - 'notExecuted': Not executed due to previous failures
215
+ */
216
+ resultType?: 'success' | 'failed' | 'partialFailed' | 'notExecuted';
217
+ }
package/package.json ADDED
@@ -0,0 +1,130 @@
1
+ {
2
+ "name": "@aiscene/core",
3
+ "description": "Automate browser actions, extract data, and perform assertions using AI. It offers JavaScript SDK, Chrome extension, and support for scripting in YAML. See https://midscenejs.com/ for details.",
4
+ "version": "1.7.0",
5
+ "repository": "https://github.com/web-infra-dev/midscene",
6
+ "homepage": "https://midscenejs.com/",
7
+ "main": "./dist/lib/index.js",
8
+ "types": "./dist/types/index.d.ts",
9
+ "module": "./dist/es/index.mjs",
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/types/index.d.ts",
17
+ "import": "./dist/es/index.mjs",
18
+ "require": "./dist/lib/index.js"
19
+ },
20
+ "./utils": {
21
+ "types": "./dist/types/utils.d.ts",
22
+ "import": "./dist/es/utils.mjs",
23
+ "require": "./dist/lib/utils.js"
24
+ },
25
+ "./ai-model": {
26
+ "types": "./dist/types/ai-model/index.d.ts",
27
+ "import": "./dist/es/ai-model/index.mjs",
28
+ "require": "./dist/lib/ai-model/index.js"
29
+ },
30
+ "./tree": {
31
+ "types": "./dist/types/tree.d.ts",
32
+ "import": "./dist/es/tree.mjs",
33
+ "require": "./dist/lib/tree.js"
34
+ },
35
+ "./device": {
36
+ "types": "./dist/types/device/index.d.ts",
37
+ "import": "./dist/es/device/index.mjs",
38
+ "require": "./dist/lib/device/index.js"
39
+ },
40
+ "./agent": {
41
+ "types": "./dist/types/agent/index.d.ts",
42
+ "import": "./dist/es/agent/index.mjs",
43
+ "require": "./dist/lib/agent/index.js"
44
+ },
45
+ "./yaml": {
46
+ "types": "./dist/types/yaml/index.d.ts",
47
+ "import": "./dist/es/yaml/index.mjs",
48
+ "require": "./dist/lib/yaml/index.js"
49
+ },
50
+ "./report": {
51
+ "types": "./dist/types/report.d.ts",
52
+ "import": "./dist/es/report.mjs",
53
+ "require": "./dist/lib/report.js"
54
+ },
55
+ "./skill": {
56
+ "types": "./dist/types/skill/index.d.ts",
57
+ "import": "./dist/es/skill/index.mjs",
58
+ "require": "./dist/lib/skill/index.js"
59
+ }
60
+ },
61
+ "typesVersions": {
62
+ "*": {
63
+ ".": [
64
+ "./dist/types/index.d.ts"
65
+ ],
66
+ "utils": [
67
+ "./dist/types/utils.d.ts"
68
+ ],
69
+ "ai-model": [
70
+ "./dist/types/ai-model.d.ts"
71
+ ],
72
+ "tree": [
73
+ "./dist/types/tree.d.ts"
74
+ ],
75
+ "device": [
76
+ "./dist/types/device.d.ts"
77
+ ],
78
+ "agent": [
79
+ "./dist/types/agent.d.ts"
80
+ ],
81
+ "yaml": [
82
+ "./dist/types/yaml.d.ts"
83
+ ],
84
+ "mcp": [
85
+ "./dist/types/skill/index.d.ts"
86
+ ]
87
+ }
88
+ },
89
+ "dependencies": {
90
+ "@ui-tars/action-parser": "1.2.3",
91
+ "dayjs": "^1.11.11",
92
+ "dotenv": "^16.4.5",
93
+ "fetch-socks": "^1.3.0",
94
+ "js-yaml": "4.1.0",
95
+ "jsonrepair": "3.12.0",
96
+ "openai": "6.3.0",
97
+ "semver": "7.5.2",
98
+ "undici": "^6.0.0",
99
+ "zod": "3.24.3",
100
+ "@midscene/shared": "1.6.0"
101
+ },
102
+ "devDependencies": {
103
+ "@rslib/core": "^0.18.3",
104
+ "@types/js-yaml": "4.0.9",
105
+ "@types/node": "^18.0.0",
106
+ "@types/node-fetch": "2.6.11",
107
+ "@types/semver": "7.7.0",
108
+ "langsmith": "^0.3.74",
109
+ "typescript": "^5.8.3",
110
+ "vitest": "3.0.5"
111
+ },
112
+ "engines": {
113
+ "node": ">=18.19.0"
114
+ },
115
+ "publishConfig": {
116
+ "access": "public",
117
+ "registry": "https://registry.npmjs.org"
118
+ },
119
+ "license": "MIT",
120
+ "scripts": {
121
+ "dev": "npm run build:watch",
122
+ "build": "rslib build",
123
+ "build:watch": "USE_DEV_REPORT=1 rslib build --watch --no-clean",
124
+ "test": "vitest --run",
125
+ "test:u": "vitest --run -u",
126
+ "test:ai": "AITEST=true npm run test",
127
+ "computer": "TEST_COMPUTER=true npm run test:ai -- tests/ai/evaluate/computer.test.ts",
128
+ "test:parse-action": "npm run test:ai -- tests/ai/parse-action.test.ts"
129
+ }
130
+ }