@aixnn/aixautots 0.5.2 → 0.5.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 (57) hide show
  1. package/README.md +23 -40
  2. package/dist/{chunk-MRQ7VJFJ.js → chunk-BSHHYM72.js} +2 -2
  3. package/dist/{chunk-PUPVZRKZ.js → chunk-IJVNII5N.js} +1 -1
  4. package/dist/{chunk-EHF2WQUR.js → chunk-O34SNDQB.js} +4 -4
  5. package/dist/{chunk-GKEPMDXO.js → chunk-OXIM6EYO.js} +1 -1
  6. package/dist/{chunk-AIUOLJZA.js → chunk-SVK2AY3J.js} +2 -2
  7. package/dist/{chunk-PCYERBNZ.js → chunk-TATL3HTE.js} +11 -64
  8. package/dist/{chunk-SUKFJ73W.js → chunk-UINEPEIE.js} +2 -2
  9. package/dist/{chunk-H7MHGYF3.js → chunk-V4MXFPDX.js} +3 -3
  10. package/dist/{chunk-6YUAACW6.js → chunk-XNKC6HU3.js} +3 -3
  11. package/dist/{chunk-536WVCTB.js → chunk-YOT7HZBU.js} +5 -5
  12. package/dist/core/index.js +4 -4
  13. package/dist/device-session-W7I3WQXF.js +2 -0
  14. package/dist/react/index.js +6 -6
  15. package/dist/ui/billing.js +6 -6
  16. package/dist/ui/device-create.js +7 -7
  17. package/dist/ui/device-mirror.js +7 -7
  18. package/dist/ui/devices.js +9 -9
  19. package/dist/ui/editor.js +7 -7
  20. package/dist/ui/index.js +20 -31
  21. package/dist/ui/inspector.js +6 -6
  22. package/dist/ui/market.js +6 -6
  23. package/dist/ui/script-studio.js +7 -7
  24. package/dist/ui/scripts.js +6 -6
  25. package/dist/ui/tasks.js +9 -9
  26. package/package.json +1 -2
  27. package/styles.css +1 -1
  28. package/tailwind-preset.cjs +3 -3
  29. package/dist/ScriptStudio-DaCqOF5H.d.ts +0 -43
  30. package/dist/agent-runner-V60B0is1.d.ts +0 -57
  31. package/dist/automation-queue-8HqRJV_K.d.ts +0 -72
  32. package/dist/config-Bm1hmXhD.d.ts +0 -1380
  33. package/dist/coords-LPR_MPyp.d.ts +0 -22
  34. package/dist/core/index.d.ts +0 -135
  35. package/dist/device-normalize-BaThgnH7.d.ts +0 -43
  36. package/dist/device-session-KZVGLPOI.js +0 -2
  37. package/dist/i18n/index.d.ts +0 -30
  38. package/dist/mirror-session-C_1vFkRV.d.ts +0 -108
  39. package/dist/nav/index.d.ts +0 -19
  40. package/dist/react/index.d.ts +0 -487
  41. package/dist/script-debugger-Cw5jVRoz.d.ts +0 -114
  42. package/dist/task-agent-runner-eD9-SCJz.d.ts +0 -160
  43. package/dist/types-C2WXVcam.d.ts +0 -1005
  44. package/dist/ui/billing.d.ts +0 -48
  45. package/dist/ui/device-create.d.ts +0 -55
  46. package/dist/ui/device-mirror.d.ts +0 -42
  47. package/dist/ui/devices.d.ts +0 -223
  48. package/dist/ui/editor.d.ts +0 -64
  49. package/dist/ui/index.d.ts +0 -104
  50. package/dist/ui/inspector.d.ts +0 -5
  51. package/dist/ui/market.d.ts +0 -10
  52. package/dist/ui/mirror.d.ts +0 -52
  53. package/dist/ui/primitives/index.d.ts +0 -101
  54. package/dist/ui/script-studio.d.ts +0 -85
  55. package/dist/ui/scripts.d.ts +0 -18
  56. package/dist/ui/tasks.d.ts +0 -10
  57. package/dist/use-script-run-Diay7ibY.d.ts +0 -50
package/README.md CHANGED
@@ -1,21 +1,4 @@
1
- # @aixnn/aixautots
2
-
3
- 发布包已迁移到 npm 用户 `aixnn` 的 scope,完整包名为 `@aixnn/aixautots`。本仓库目录仍为 `aixautots/`,各子包入口保持不变,例如 `@aixnn/aixautots/core`。
4
-
5
- ```sh
6
- npm install @aixnn/aixautots
7
- ```
8
-
9
- 发布(在 `aixautots/` 目录,使用有权限的 npm 账号):
10
-
11
- ```sh
12
- npm run typecheck
13
- npm test
14
- npm run build
15
- python3 ../scripts/npm-with-access-key.py publish --access public
16
- ```
17
-
18
- 发布脚本读取 `~/.aixenv` 的 `NPM_ACCESS_KEY`,通过临时 npm 配置使用令牌,结束后删除临时配置,不修改全局登录配置。令牌需拥有 `@aixnn/aixautots` 的发布权限;第三方项目也可使用自身 npm 凭据执行 `npm publish --access public`。若令牌未允许绕过双重验证,npm 仍可能要求一次性验证码。
1
+ # aixautots
19
2
 
20
3
  aixautobot 的 TypeScript 客户端 SDK。core/react 是 headless 的数据/传输/鉴权层;ui 既提供细粒度
21
4
  部件,也提供**开箱即用的成品页面**(设备/任务/市场/脚本/编辑器/检查器)+ 一套可换肤主题,
@@ -25,47 +8,47 @@ aixautobot 的 TypeScript 客户端 SDK。core/react 是 headless 的数据/传
25
8
 
26
9
  | 子包 | 职责 |
27
10
  |---|---|
28
- | `@aixnn/aixautots/core` | 资源 REST 客户端(`AixClient`)+ 会话层(设备通道 / Flow / 镜像)+ 类型 + 错误 |
29
- | `@aixnn/aixautots/react` | 上述能力的 React hooks(`AixProvider` + 资源/会话 hooks) |
30
- | `@aixnn/aixautots/ui` | 设备向细粒度部件(`MirrorView`/`ControlBar`/`ScriptEditor`/`DebugConsole`/`ScriptPanel`) |
31
- | `@aixnn/aixautots/ui/primitives` | 基础件(`Button`/`Input`/`Select`/`Badge`/`Dialog`/`Popover`) |
32
- | `@aixnn/aixautots/ui/{devices,tasks,market,scripts,editor,inspector}` | 成品页面组件 |
33
- | `@aixnn/aixautots/nav` | 路由无关导航注入(`AixNavProvider`/`useAixNav`) |
34
- | `@aixnn/aixautots/i18n` | 内置 i18n(`AixI18nProvider`/`useAixT`,en/zh,无 i18next 依赖) |
35
- | `@aixnn/aixautots/tailwind-preset` · `@aixnn/aixautots/styles.css` | Tailwind 预设 + 主题 token |
11
+ | `aixautots/core` | 资源 REST 客户端(`AixClient`)+ 会话层(设备通道 / Flow / 镜像)+ 类型 + 错误 |
12
+ | `aixautots/react` | 上述能力的 React hooks(`AixProvider` + 资源/会话 hooks) |
13
+ | `aixautots/ui` | 设备向细粒度部件(`MirrorView`/`ControlBar`/`ScriptEditor`/`DebugConsole`/`ScriptPanel`) |
14
+ | `aixautots/ui/primitives` | 基础件(`Button`/`Input`/`Select`/`Badge`/`Dialog`/`Popover`) |
15
+ | `aixautots/ui/{devices,tasks,market,scripts,editor,inspector}` | 成品页面组件 |
16
+ | `aixautots/nav` | 路由无关导航注入(`AixNavProvider`/`useAixNav`) |
17
+ | `aixautots/i18n` | 内置 i18n(`AixI18nProvider`/`useAixT`,en/zh,无 i18next 依赖) |
18
+ | `aixautots/tailwind-preset` · `aixautots/styles.css` | Tailwind 预设 + 主题 token |
36
19
 
37
20
  ```bash
38
- npm i @aixnn/aixautots # peer: react(react 子包用);ui 子包另需 @uiw/react-codemirror
21
+ npm i aixautots # peer: react(react 子包用);ui 子包另需 @uiw/react-codemirror
39
22
  ```
40
23
 
41
24
  ## 接入(三步)
42
25
 
43
- 用到 `@aixnn/aixautots/ui` 的成品页面/部件时,按以下三步接入样式与运行时上下文:
26
+ 用到 `aixautots/ui` 的成品页面/部件时,按以下三步接入样式与运行时上下文:
44
27
 
45
28
  **1) 样式** —— Tailwind 预设 + 主题 token + content 扫描:
46
29
 
47
30
  ```js
48
31
  // tailwind.config.js
49
32
  module.exports = {
50
- presets: [require('@aixnn/aixautots/tailwind-preset')],
33
+ presets: [require('aixautots/tailwind-preset')],
51
34
  content: [
52
35
  './src/**/*.{ts,tsx}',
53
- './node_modules/@aixnn/aixautots/dist/**/*.js', // 关键:否则 aixautots 组件的类名不会被生成
36
+ './node_modules/aixautots/dist/**/*.js', // 关键:否则 aixautots 组件的类名不会被生成
54
37
  ],
55
38
  }
56
39
  ```
57
40
 
58
41
  ```css
59
42
  /* 入口 CSS */
60
- @import "@aixnn/aixautots/styles.css"; /* :root 浅色 + .dark 深色 token,可覆盖换肤 */
43
+ @import "aixautots/styles.css"; /* :root 浅色 + .dark 深色 token,可覆盖换肤 */
61
44
  ```
62
45
 
63
46
  **2) Provider** —— 在 `AixProvider` 内注入导航与语言:
64
47
 
65
48
  ```tsx
66
- import { AixProvider } from '@aixnn/aixautots/react'
67
- import { AixNavProvider } from '@aixnn/aixautots/nav'
68
- import { AixI18nProvider } from '@aixnn/aixautots/i18n'
49
+ import { AixProvider } from 'aixautots/react'
50
+ import { AixNavProvider } from 'aixautots/nav'
51
+ import { AixI18nProvider } from 'aixautots/i18n'
69
52
  import { useNavigate } from 'react-router-dom' // 任意路由库都行
70
53
 
71
54
  function Providers({ children }) {
@@ -83,8 +66,8 @@ function Providers({ children }) {
83
66
  **3) 用页面** —— 直接挂成品页面,路由参数以 props 传入:
84
67
 
85
68
  ```tsx
86
- import { DevicesPage } from '@aixnn/aixautots/ui/devices'
87
- import { ScriptEditorPage } from '@aixnn/aixautots/ui/editor'
69
+ import { DevicesPage } from 'aixautots/ui/devices'
70
+ import { ScriptEditorPage } from 'aixautots/ui/editor'
88
71
 
89
72
  <DevicesPage />
90
73
  <ScriptEditorPage scriptId={params.id} />
@@ -93,7 +76,7 @@ import { ScriptEditorPage } from '@aixnn/aixautots/ui/editor'
93
76
  ## Quickstart
94
77
 
95
78
  ```ts
96
- import { AixClient } from '@aixnn/aixautots/core'
79
+ import { AixClient } from 'aixautots/core'
97
80
 
98
81
  const client = new AixClient({
99
82
  baseUrl: 'https://aixautobot.com',
@@ -107,7 +90,7 @@ const { run_id } = await client.fleet.start({ flow, device_ids: [devices[0].id]
107
90
  React:
108
91
 
109
92
  ```tsx
110
- import { AixProvider, useDevices } from '@aixnn/aixautots/react'
93
+ import { AixProvider, useDevices } from 'aixautots/react'
111
94
 
112
95
  function App() {
113
96
  return (
@@ -153,7 +136,7 @@ auth: [
153
136
  第三方前端(浏览器不持 project secret):后端铸 user JWT,前端用 `createCachedUserCredential` 自动缓存/刷新(按 `expiresIn` 或 JWT `exp`,并发去重):
154
137
 
155
138
  ```ts
156
- import { createCachedUserCredential } from '@aixnn/aixautots/core'
139
+ import { createCachedUserCredential } from 'aixautots/core'
157
140
 
158
141
  const auth = createCachedUserCredential({
159
142
  mint: () => fetch('/mint-token').then((r) => r.json()), // 你的后端 → { token, expiresIn? } 或 token 字符串
@@ -221,7 +204,7 @@ React:`useLlm()` → `{ generate, refine, explain, test }`(参考实现见 f
221
204
  ## 镜像
222
205
 
223
206
  ```ts
224
- import { MirrorSession } from '@aixnn/aixautots/core'
207
+ import { MirrorSession } from 'aixautots/core'
225
208
  const s = await MirrorSession.join(cfg, deviceId)
226
209
  s.onStream((stream) => { videoEl.srcObject = stream })
227
210
  s.sendInput({ t: 'tap', x, y }) // 归一坐标 [0,1]
@@ -1,6 +1,6 @@
1
1
  import { cn, Select, Dialog, Button, Input, Badge } from './chunk-EVHTAXQG.js';
2
- import { useNodes, useDevices } from './chunk-EHF2WQUR.js';
3
- import { useClient } from './chunk-SUKFJ73W.js';
2
+ import { useNodes, useDevices } from './chunk-O34SNDQB.js';
3
+ import { useClient } from './chunk-UINEPEIE.js';
4
4
  import { useMemo, useEffect, useState, useCallback } from 'react';
5
5
  import { Server, RefreshCw, Smartphone, Usb, Wifi, Info } from 'lucide-react';
6
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { joinUrl, AixAuthError, AixError, AixClient, resolveConfig, DevicesApi, RestClient, ReconnectingSocket } from './chunk-PCYERBNZ.js';
1
+ import { joinUrl, AixAuthError, AixError, AixClient, resolveConfig, DevicesApi, RestClient, ReconnectingSocket } from './chunk-TATL3HTE.js';
2
2
 
3
3
  // src/core/webrtc-rest.ts
4
4
  async function getIceServers(cfg) {
@@ -1,7 +1,7 @@
1
- import { MirrorSession, normalizeDevices, submitBatch } from './chunk-H7MHGYF3.js';
2
- import { useDevice, useAixConfig, useClient, useQuery } from './chunk-SUKFJ73W.js';
3
- import { FlowRun } from './chunk-GKEPMDXO.js';
4
- import { isFleetRunTerminal, resolveConfig, joinUrl, AixAuthError, AixError, detectEnvOs, EnvRun, summarizeEnv, ReconnectingSocket, executionWsTicketUrl } from './chunk-PCYERBNZ.js';
1
+ import { MirrorSession, normalizeDevices, submitBatch } from './chunk-V4MXFPDX.js';
2
+ import { useDevice, useAixConfig, useClient, useQuery } from './chunk-UINEPEIE.js';
3
+ import { FlowRun } from './chunk-OXIM6EYO.js';
4
+ import { isFleetRunTerminal, resolveConfig, joinUrl, AixAuthError, AixError, detectEnvOs, EnvRun, summarizeEnv, ReconnectingSocket, executionWsTicketUrl } from './chunk-TATL3HTE.js';
5
5
  import { createContext, useState, useRef, useEffect, useCallback, useMemo, createElement, useContext } from 'react';
6
6
 
7
7
  function useCommands(deviceId) {
@@ -1,4 +1,4 @@
1
- import { joinUrl, AixAuthError, AixLocked, AixError, resolveConfig, ReconnectingSocket, AixTimeout, parseIncoming, isRetFrame, errorFromRet, isFridaEventFrame, isScriptletEventFrame, isStatusFrame, executionWsTicketUrl, isExecutionFrame, executionStreamEventsAfter } from './chunk-PCYERBNZ.js';
1
+ import { joinUrl, AixAuthError, AixLocked, AixError, resolveConfig, ReconnectingSocket, AixTimeout, parseIncoming, isRetFrame, errorFromRet, isFridaEventFrame, isScriptletEventFrame, isStatusFrame, executionWsTicketUrl, isExecutionFrame, executionStreamEventsAfter } from './chunk-TATL3HTE.js';
2
2
 
3
3
  // src/core/ws-access.ts
4
4
  async function mintDeviceAccess(cfg, deviceId) {
@@ -1,6 +1,6 @@
1
1
  import { MirrorView, ControlBar } from './chunk-CVV7FOMQ.js';
2
- import { useMirror, useDevices } from './chunk-EHF2WQUR.js';
3
- import { useClient } from './chunk-SUKFJ73W.js';
2
+ import { useMirror, useDevices } from './chunk-O34SNDQB.js';
3
+ import { useClient } from './chunk-UINEPEIE.js';
4
4
  import { useState, useRef, useEffect, useCallback, useMemo } from 'react';
5
5
  import { RotateCw, Minimize2, Maximize2, X } from 'lucide-react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -286,9 +286,7 @@ var ReconnectingSocket = class {
286
286
  this.attempt++;
287
287
  this.reconnectTimer = setTimeout(() => {
288
288
  this.reconnectTimer = null;
289
- void this.connect().catch(() => {
290
- if (!this.closed) this.scheduleReconnect();
291
- });
289
+ void this.connect();
292
290
  }, exp + jitter);
293
291
  }
294
292
  send(text) {
@@ -327,8 +325,6 @@ var EnvRun = class _EnvRun {
327
325
  this.doneFired = false;
328
326
  this.last = null;
329
327
  this.cursor = 0;
330
- this.pollTimer = null;
331
- this.closed = false;
332
328
  // `start()` opens the socket before callers can register listeners. Keep
333
329
  // frames received in that small window so the first Started/Step events do
334
330
  // not disappear and leave progress UIs stuck at 0%.
@@ -353,26 +349,17 @@ var EnvRun = class _EnvRun {
353
349
  let run = null;
354
350
  let cursor = 0;
355
351
  let processing = Promise.resolve();
356
- const applyFrame = (frame) => {
357
- if (frame.run_id !== data.req_id) return;
358
- if (typeof frame.cursor !== "number") {
359
- run?.onMessage(JSON.stringify(frame.event));
360
- return;
361
- }
362
- if (frame.cursor <= cursor) return;
363
- cursor = frame.cursor;
364
- run?.onMessage(JSON.stringify({ cursor: frame.cursor, ...frame.event }));
365
- };
352
+ let processFrame;
366
353
  const fetchCatchup = async (after) => {
367
354
  let nextAfter = after;
368
355
  do {
369
356
  const page = await executionStreamEventsAfter(resolved, data.req_id, nextAfter);
370
- for (const event of page.events) applyFrame(event);
357
+ for (const event of page.events) await processFrame(event);
371
358
  nextAfter = page.next_cursor ?? cursor;
372
359
  if (!page.has_more) break;
373
360
  } while (true);
374
361
  };
375
- const processFrame = async (frame) => {
362
+ processFrame = async (frame) => {
376
363
  if (frame.run_id !== data.req_id) return;
377
364
  if (typeof frame.cursor !== "number") {
378
365
  run?.onMessage(JSON.stringify(frame.event));
@@ -381,8 +368,10 @@ var EnvRun = class _EnvRun {
381
368
  if (frame.cursor <= cursor) return;
382
369
  if (frame.cursor > cursor + 1) {
383
370
  await fetchCatchup(cursor);
371
+ return processFrame(frame);
384
372
  }
385
- applyFrame(frame);
373
+ cursor = frame.cursor;
374
+ run?.onMessage(JSON.stringify({ cursor: frame.cursor, ...frame.event }));
386
375
  };
387
376
  const socket = new ReconnectingSocket({
388
377
  // Fetch a new one-time ticket after every stream reconnect and resume
@@ -404,34 +393,7 @@ var EnvRun = class _EnvRun {
404
393
  }
405
394
  });
406
395
  run = new _EnvRun(data.req_id, data.stream ?? `/ws/execution/${data.req_id}`, socket);
407
- const currentRun = run;
408
- let failures = 0;
409
- const poll = async () => {
410
- if (currentRun.closed) return;
411
- try {
412
- await (processing = processing.catch(() => void 0).then(() => fetchCatchup(cursor)));
413
- failures = 0;
414
- } catch (error) {
415
- if (++failures >= 3 && !currentRun.closed) {
416
- currentRun.onMessage(JSON.stringify({
417
- kind: "finished",
418
- ok: false,
419
- error: `Environment progress connection failed: ${String(error)}`,
420
- hint: "The node may still be installing. Check its status before starting setup again."
421
- }));
422
- }
423
- }
424
- if (!currentRun.closed) currentRun.pollTimer = setTimeout(() => {
425
- void poll();
426
- }, 3e3);
427
- };
428
- currentRun.pollTimer = setTimeout(() => {
429
- void poll();
430
- }, 3e3);
431
- try {
432
- await socket.start();
433
- } catch {
434
- }
396
+ await socket.start();
435
397
  return run;
436
398
  }
437
399
  on(event, cb) {
@@ -473,15 +435,10 @@ var EnvRun = class _EnvRun {
473
435
  this.doneFired = true;
474
436
  this.last = ev;
475
437
  for (const cb of this.doneListeners) cb(this.last);
476
- this.close();
438
+ this.socket.close();
477
439
  }
478
440
  }
479
441
  close() {
480
- this.closed = true;
481
- if (this.pollTimer !== null) {
482
- clearTimeout(this.pollTimer);
483
- this.pollTimer = null;
484
- }
485
442
  this.socket.close();
486
443
  }
487
444
  };
@@ -496,17 +453,7 @@ function summarizeEnv(events) {
496
453
  for (const e of events) {
497
454
  if (e.kind === "started") {
498
455
  total = e.total;
499
- e.steps.forEach((s, i) => {
500
- meta.set(i, s);
501
- const existing = steps.get(i);
502
- steps.set(i, existing ? { ...existing, label: s.label } : {
503
- index: i,
504
- id: s.id,
505
- label: s.label,
506
- state: "pending",
507
- pct: 0
508
- });
509
- });
456
+ e.steps.forEach((s, i) => meta.set(i, s));
510
457
  } else if (e.kind === "step") {
511
458
  const m = meta.get(e.index);
512
459
  steps.set(e.index, {
@@ -1553,7 +1500,7 @@ var AixClient = class {
1553
1500
  * 即可,不必回依赖 client 实例)。
1554
1501
  */
1555
1502
  async deviceSession(deviceId, opts = {}) {
1556
- const { DeviceSession } = await import('./device-session-KZVGLPOI.js');
1503
+ const { DeviceSession } = await import('./device-session-W7I3WQXF.js');
1557
1504
  return DeviceSession.open(this.cfg, deviceId, opts);
1558
1505
  }
1559
1506
  };
@@ -1,5 +1,5 @@
1
- import { DeviceChannel, ScriptDebugger } from './chunk-GKEPMDXO.js';
2
- import { resolveConfig, AixClient, EnvRun } from './chunk-PCYERBNZ.js';
1
+ import { DeviceChannel, ScriptDebugger } from './chunk-OXIM6EYO.js';
2
+ import { resolveConfig, AixClient, EnvRun } from './chunk-TATL3HTE.js';
3
3
  import React, { createContext, useContext, useState, useRef, useEffect, useMemo, useCallback } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,6 +1,6 @@
1
- import { getIceServers, mintViewerToken } from './chunk-PUPVZRKZ.js';
2
- import { FlowRun } from './chunk-GKEPMDXO.js';
3
- import { resolveConfig, ReconnectingSocket, joinUrl } from './chunk-PCYERBNZ.js';
1
+ import { getIceServers, mintViewerToken } from './chunk-IJVNII5N.js';
2
+ import { FlowRun } from './chunk-OXIM6EYO.js';
3
+ import { resolveConfig, ReconnectingSocket, joinUrl } from './chunk-TATL3HTE.js';
4
4
 
5
5
  // src/core/automation-queue.ts
6
6
  async function submitBatch(cfg, config) {
@@ -1,8 +1,8 @@
1
1
  import { LogConsole } from './chunk-FW23FLAF.js';
2
2
  import { cn, Button, Select } from './chunk-EVHTAXQG.js';
3
- import { useDevices, useScripts, useScriptRun } from './chunk-EHF2WQUR.js';
4
- import { variablesToSchema, normalizeDevices, schemaToVariables } from './chunk-H7MHGYF3.js';
5
- import { useClient } from './chunk-SUKFJ73W.js';
3
+ import { useDevices, useScripts, useScriptRun } from './chunk-O34SNDQB.js';
4
+ import { variablesToSchema, normalizeDevices, schemaToVariables } from './chunk-V4MXFPDX.js';
5
+ import { useClient } from './chunk-UINEPEIE.js';
6
6
  import { useMemo, useState, useEffect, useRef, useCallback } from 'react';
7
7
  import { Trash2, Plus, Play, Pause, Square, ArrowDownToLine, WrapText, ChevronRight, Save, XCircle, CheckCircle2, Loader2, Circle } from 'lucide-react';
8
8
  import CodeMirror, { EditorView } from '@uiw/react-codemirror';
@@ -1,12 +1,12 @@
1
1
  import { useAixT } from './chunk-64Q7BBIQ.js';
2
2
  import { LogConsole } from './chunk-FW23FLAF.js';
3
- import { MirrorSurface, DeviceMirror } from './chunk-AIUOLJZA.js';
3
+ import { MirrorSurface, DeviceMirror } from './chunk-SVK2AY3J.js';
4
4
  import { ControlBar, MirrorView } from './chunk-CVV7FOMQ.js';
5
- import { createProxyProbeGuard, proxySummaryFromDevice, isProxyApplyStatus, proxyCapabilityReason, proxyProbeExitIp, proxyProbeMessage, DeviceCreate, isProxyProbeUnsupported, isRedactedProxyUrl, isSupportedProxyUrl, redactProxyUrl } from './chunk-MRQ7VJFJ.js';
5
+ import { createProxyProbeGuard, proxySummaryFromDevice, isProxyApplyStatus, proxyCapabilityReason, proxyProbeExitIp, proxyProbeMessage, DeviceCreate, isProxyProbeUnsupported, isRedactedProxyUrl, isSupportedProxyUrl, redactProxyUrl } from './chunk-BSHHYM72.js';
6
6
  import { cn, Badge, Button, Dialog, Input, Popover, Select, useToast, ToastViewport, Drawer } from './chunk-EVHTAXQG.js';
7
- import { useDevicesView, useShortcutsView, GROUP_MIRROR_MAX, useGroupMirror, useScripts, useFleetRun, useTaskAgentRun, preflightTaskAgentDevice, createAgentTaskRunner, useNodesView } from './chunk-EHF2WQUR.js';
8
- import { DeviceSession, pushFile, pullFile } from './chunk-PUPVZRKZ.js';
9
- import { useClient } from './chunk-SUKFJ73W.js';
7
+ import { useDevicesView, useShortcutsView, GROUP_MIRROR_MAX, useGroupMirror, useScripts, useFleetRun, useTaskAgentRun, preflightTaskAgentDevice, createAgentTaskRunner, useNodesView } from './chunk-O34SNDQB.js';
8
+ import { DeviceSession, pushFile, pullFile } from './chunk-IJVNII5N.js';
9
+ import { useClient } from './chunk-UINEPEIE.js';
10
10
  import { useState, useRef, useCallback, useEffect, useMemo, useLayoutEffect } from 'react';
11
11
  import * as Icons from 'lucide-react';
12
12
  import { Monitor, Eye, Play, Power, RefreshCw, Server, Pencil, Trash2, FolderPlus, Upload, ArrowUp, Folder, File, Download, Dices, ShieldCheck, AlertTriangle, X, Crown, RotateCcw, Square, Plus, Search, LayoutGrid, List, ChevronLeft, Link, Link2Off, Terminal as Terminal$1, PackagePlus, MonitorPlay, ChevronRight, ChevronDown, PlusSquare, Maximize2, Info, ChevronsLeft, ChevronsRight, Check, Copy, Tablet, Smartphone } from 'lucide-react';
@@ -1,5 +1,5 @@
1
- export { AutomationQueue, MirrorSession, SCHEMA_KEY, SCRCPY_PROFILES, normalizeDevices, qualityMessage, schemaDefaults, schemaToVariables, submitBatch, targetParam, variablesToSchema } from '../chunk-H7MHGYF3.js';
2
- export { DeviceSession, getIceServers, mintViewerToken, pullFile, pushFile } from '../chunk-PUPVZRKZ.js';
3
- export { DeviceChannel, DeviceTunnel, FlowRun, ScriptDebugger, mintDeviceAccess, wsUrlFromAccess } from '../chunk-GKEPMDXO.js';
4
- export { AdminApi, AixAuthError, AixClient, AixDeviceOffline, AixError, AixLocked, AixProtocolError, AixTimeout, ApiTokensApi, AuthApi, BillingApi, ClustersApi, DevicesApi, EnvRun, FleetApi, ImagesApi, LlmApi, LocalNodeController, LocatorsApi, NodesApi, ProjectsApi, ReconnectingSocket, RestClient, ScriptsApi, ShortcutsApi, TasksApi, UsersApi, WebhooksApi, authHeader, buildAuthProvider, createCachedUserCredential, createClient, detectEnvOs, envBlocker, errorFromRet, executionStreamEventsAfter, executionWsTicketUrl, executionWsUrl, getLocale, isEnvEventFrame, isExecutionFrame, isFleetRunTerminal, isFridaEventFrame, isRetFrame, isScriptletEventFrame, isStatusFrame, joinUrl, parseIncoming, resolveConfig, restClient, runEnvToFinish, setLocale, summarizeEnv, t } from '../chunk-PCYERBNZ.js';
1
+ export { AutomationQueue, MirrorSession, SCHEMA_KEY, SCRCPY_PROFILES, normalizeDevices, qualityMessage, schemaDefaults, schemaToVariables, submitBatch, targetParam, variablesToSchema } from '../chunk-V4MXFPDX.js';
2
+ export { DeviceSession, getIceServers, mintViewerToken, pullFile, pushFile } from '../chunk-IJVNII5N.js';
3
+ export { DeviceChannel, DeviceTunnel, FlowRun, ScriptDebugger, mintDeviceAccess, wsUrlFromAccess } from '../chunk-OXIM6EYO.js';
4
+ export { AdminApi, AixAuthError, AixClient, AixDeviceOffline, AixError, AixLocked, AixProtocolError, AixTimeout, ApiTokensApi, AuthApi, BillingApi, ClustersApi, DevicesApi, EnvRun, FleetApi, ImagesApi, LlmApi, LocalNodeController, LocatorsApi, NodesApi, ProjectsApi, ReconnectingSocket, RestClient, ScriptsApi, ShortcutsApi, TasksApi, UsersApi, WebhooksApi, authHeader, buildAuthProvider, createCachedUserCredential, createClient, detectEnvOs, envBlocker, errorFromRet, executionStreamEventsAfter, executionWsTicketUrl, executionWsUrl, getLocale, isEnvEventFrame, isExecutionFrame, isFleetRunTerminal, isFridaEventFrame, isRetFrame, isScriptletEventFrame, isStatusFrame, joinUrl, parseIncoming, resolveConfig, restClient, runEnvToFinish, setLocale, summarizeEnv, t } from '../chunk-TATL3HTE.js';
5
5
  export { classifyDrag, mapKey, toDevicePoint } from '../chunk-NWFYTFMI.js';
@@ -0,0 +1,2 @@
1
+ export { DeviceSession, pullFile, pushFile } from './chunk-IJVNII5N.js';
2
+ import './chunk-TATL3HTE.js';
@@ -1,7 +1,7 @@
1
- export { DevicesProvider, GROUP_MIRROR_MAX, InspectorProvider, NodesProvider, ShortcutsProvider, mapDevice, preflightTaskAgentDevice, useAdmin, useApiTokens, useAuth, useAutomationQueue, useBilling, useClusters, useCommands, useDeviceActions, useDevices, useDevicesView, useEnvGate, useFleetRun, useFlowRun, useGroupMirror, useImages, useInspector, useInspectorView, useLlm, useLocators, useMirror, useNodes, useNodesView, useProjects, useScriptRun, useScripts, useShortcutsView, useTaskAgentRun, useTaskStatus, useTasks, useWebhooks } from '../chunk-EHF2WQUR.js';
2
- import '../chunk-H7MHGYF3.js';
3
- import '../chunk-PUPVZRKZ.js';
4
- export { AixProvider, useAixConfig, useClient, useDevice, useEnvRun, useQuery, useScript } from '../chunk-SUKFJ73W.js';
5
- import '../chunk-GKEPMDXO.js';
6
- import '../chunk-PCYERBNZ.js';
1
+ export { DevicesProvider, GROUP_MIRROR_MAX, InspectorProvider, NodesProvider, ShortcutsProvider, mapDevice, preflightTaskAgentDevice, useAdmin, useApiTokens, useAuth, useAutomationQueue, useBilling, useClusters, useCommands, useDeviceActions, useDevices, useDevicesView, useEnvGate, useFleetRun, useFlowRun, useGroupMirror, useImages, useInspector, useInspectorView, useLlm, useLocators, useMirror, useNodes, useNodesView, useProjects, useScriptRun, useScripts, useShortcutsView, useTaskAgentRun, useTaskStatus, useTasks, useWebhooks } from '../chunk-O34SNDQB.js';
2
+ import '../chunk-V4MXFPDX.js';
3
+ import '../chunk-IJVNII5N.js';
4
+ export { AixProvider, useAixConfig, useClient, useDevice, useEnvRun, useQuery, useScript } from '../chunk-UINEPEIE.js';
5
+ import '../chunk-OXIM6EYO.js';
6
+ import '../chunk-TATL3HTE.js';
7
7
  import '../chunk-NWFYTFMI.js';
@@ -1,11 +1,11 @@
1
1
  import { useAixT } from '../chunk-64Q7BBIQ.js';
2
2
  import { cn, Button, Badge, Input } from '../chunk-EVHTAXQG.js';
3
- import { useBilling } from '../chunk-EHF2WQUR.js';
4
- import '../chunk-H7MHGYF3.js';
5
- import '../chunk-PUPVZRKZ.js';
6
- import { useClient } from '../chunk-SUKFJ73W.js';
7
- import '../chunk-GKEPMDXO.js';
8
- import '../chunk-PCYERBNZ.js';
3
+ import { useBilling } from '../chunk-O34SNDQB.js';
4
+ import '../chunk-V4MXFPDX.js';
5
+ import '../chunk-IJVNII5N.js';
6
+ import { useClient } from '../chunk-UINEPEIE.js';
7
+ import '../chunk-OXIM6EYO.js';
8
+ import '../chunk-TATL3HTE.js';
9
9
  import '../chunk-NWFYTFMI.js';
10
10
  import { useState, useEffect } from 'react';
11
11
  import { SlidersHorizontal, Server, CalendarClock, Smartphone, ArrowUpCircle, ArrowDownCircle, HeadphonesIcon, Wallet, X, RefreshCw } from 'lucide-react';
@@ -1,9 +1,9 @@
1
- export { AddWirelessDeviceDialog, DeviceCreate, NodePicker, ProxySpoofStep, RealDiscoverStep, VirtualSpecStep } from '../chunk-MRQ7VJFJ.js';
1
+ export { AddWirelessDeviceDialog, DeviceCreate, NodePicker, ProxySpoofStep, RealDiscoverStep, VirtualSpecStep } from '../chunk-BSHHYM72.js';
2
2
  import '../chunk-EVHTAXQG.js';
3
- import '../chunk-EHF2WQUR.js';
4
- import '../chunk-H7MHGYF3.js';
5
- import '../chunk-PUPVZRKZ.js';
6
- import '../chunk-SUKFJ73W.js';
7
- import '../chunk-GKEPMDXO.js';
8
- import '../chunk-PCYERBNZ.js';
3
+ import '../chunk-O34SNDQB.js';
4
+ import '../chunk-V4MXFPDX.js';
5
+ import '../chunk-IJVNII5N.js';
6
+ import '../chunk-UINEPEIE.js';
7
+ import '../chunk-OXIM6EYO.js';
8
+ import '../chunk-TATL3HTE.js';
9
9
  import '../chunk-NWFYTFMI.js';
@@ -1,10 +1,10 @@
1
- export { DeviceBootSplash, DeviceMirror, MirrorSurface } from '../chunk-AIUOLJZA.js';
1
+ export { DeviceBootSplash, DeviceMirror, MirrorSurface } from '../chunk-SVK2AY3J.js';
2
2
  import '../chunk-OEZFYKL6.js';
3
3
  import '../chunk-CVV7FOMQ.js';
4
- import '../chunk-EHF2WQUR.js';
5
- import '../chunk-H7MHGYF3.js';
6
- import '../chunk-PUPVZRKZ.js';
7
- import '../chunk-SUKFJ73W.js';
8
- import '../chunk-GKEPMDXO.js';
9
- import '../chunk-PCYERBNZ.js';
4
+ import '../chunk-O34SNDQB.js';
5
+ import '../chunk-V4MXFPDX.js';
6
+ import '../chunk-IJVNII5N.js';
7
+ import '../chunk-UINEPEIE.js';
8
+ import '../chunk-OXIM6EYO.js';
9
+ import '../chunk-TATL3HTE.js';
10
10
  import '../chunk-NWFYTFMI.js';
@@ -1,15 +1,15 @@
1
- export { BulkInstallAppsDialog, DeleteDeviceDialog, DeviceCard, DeviceConnect, DeviceDetailDrawer, DeviceEditDialog, DeviceSelector, DeviceTerminal, DevicesPage, FileManager, FingerprintPanel, GroupMirrorModal, NodeRegister, RecycleBinPanel, RefreshParamsButton, RunScriptDialog, ScriptParamForm, SharedParamsForm, ShortcutBar, ShortcutEditDialog, ShortcutRunDialog, TagEditor, TaskAgentDialog, resolveSharedRow, variablesToParams } from '../chunk-536WVCTB.js';
1
+ export { BulkInstallAppsDialog, DeleteDeviceDialog, DeviceCard, DeviceConnect, DeviceDetailDrawer, DeviceEditDialog, DeviceSelector, DeviceTerminal, DevicesPage, FileManager, FingerprintPanel, GroupMirrorModal, NodeRegister, RecycleBinPanel, RefreshParamsButton, RunScriptDialog, ScriptParamForm, SharedParamsForm, ShortcutBar, ShortcutEditDialog, ShortcutRunDialog, TagEditor, TaskAgentDialog, resolveSharedRow, variablesToParams } from '../chunk-YOT7HZBU.js';
2
2
  import '../chunk-64Q7BBIQ.js';
3
3
  import '../chunk-FW23FLAF.js';
4
- import '../chunk-AIUOLJZA.js';
4
+ import '../chunk-SVK2AY3J.js';
5
5
  import '../chunk-OEZFYKL6.js';
6
6
  import '../chunk-CVV7FOMQ.js';
7
- import '../chunk-MRQ7VJFJ.js';
7
+ import '../chunk-BSHHYM72.js';
8
8
  import '../chunk-EVHTAXQG.js';
9
- export { createAgentTaskRunner, preflightTaskAgentDevice } from '../chunk-EHF2WQUR.js';
10
- import '../chunk-H7MHGYF3.js';
11
- import '../chunk-PUPVZRKZ.js';
12
- import '../chunk-SUKFJ73W.js';
13
- import '../chunk-GKEPMDXO.js';
14
- import '../chunk-PCYERBNZ.js';
9
+ export { createAgentTaskRunner, preflightTaskAgentDevice } from '../chunk-O34SNDQB.js';
10
+ import '../chunk-V4MXFPDX.js';
11
+ import '../chunk-IJVNII5N.js';
12
+ import '../chunk-UINEPEIE.js';
13
+ import '../chunk-OXIM6EYO.js';
14
+ import '../chunk-TATL3HTE.js';
15
15
  import '../chunk-NWFYTFMI.js';
package/dist/ui/editor.js CHANGED
@@ -1,14 +1,14 @@
1
- import { ScriptStudio } from '../chunk-6YUAACW6.js';
1
+ import { ScriptStudio } from '../chunk-XNKC6HU3.js';
2
2
  import { useAixNav } from '../chunk-5BMFMDQR.js';
3
3
  import { useAixT } from '../chunk-64Q7BBIQ.js';
4
4
  import '../chunk-FW23FLAF.js';
5
5
  import { Select, cn } from '../chunk-EVHTAXQG.js';
6
- import '../chunk-EHF2WQUR.js';
7
- import '../chunk-H7MHGYF3.js';
8
- import '../chunk-PUPVZRKZ.js';
9
- import { useClient } from '../chunk-SUKFJ73W.js';
10
- import '../chunk-GKEPMDXO.js';
11
- import '../chunk-PCYERBNZ.js';
6
+ import '../chunk-O34SNDQB.js';
7
+ import '../chunk-V4MXFPDX.js';
8
+ import '../chunk-IJVNII5N.js';
9
+ import { useClient } from '../chunk-UINEPEIE.js';
10
+ import '../chunk-OXIM6EYO.js';
11
+ import '../chunk-TATL3HTE.js';
12
12
  import '../chunk-NWFYTFMI.js';
13
13
  import { useState, useEffect, useRef, useCallback } from 'react';
14
14
  import { jsxs, jsx } from 'react/jsx-runtime';