@testin-official/xagent 0.3.7

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 (212) hide show
  1. package/README.md +157 -0
  2. package/dist/action/client.d.ts +13 -0
  3. package/dist/action/client.d.ts.map +1 -0
  4. package/dist/action/client.js +28 -0
  5. package/dist/action/client.js.map +1 -0
  6. package/dist/action/mcp-content.d.ts +2 -0
  7. package/dist/action/mcp-content.d.ts.map +1 -0
  8. package/dist/action/mcp-content.js +116 -0
  9. package/dist/action/mcp-content.js.map +1 -0
  10. package/dist/action/protocol.d.ts +36 -0
  11. package/dist/action/protocol.d.ts.map +1 -0
  12. package/dist/action/protocol.js +29 -0
  13. package/dist/action/protocol.js.map +1 -0
  14. package/dist/assets/contracts/app-list.schema.json +31 -0
  15. package/dist/assets/contracts/app-upload.schema.json +45 -0
  16. package/dist/assets/contracts/app.schema.json +18 -0
  17. package/dist/assets/contracts/authoring-attempt-create.schema.json +12 -0
  18. package/dist/assets/contracts/authoring-attempt.schema.json +56 -0
  19. package/dist/assets/contracts/authoring-complete.schema.json +13 -0
  20. package/dist/assets/contracts/authoring-draft-attempt-create.schema.json +12 -0
  21. package/dist/assets/contracts/authoring-observation.schema.json +28 -0
  22. package/dist/assets/contracts/authoring-revision-create.schema.json +13 -0
  23. package/dist/assets/contracts/authoring-revision.schema.json +19 -0
  24. package/dist/assets/contracts/authoring-session-create.schema.json +11 -0
  25. package/dist/assets/contracts/authoring-session.schema.json +54 -0
  26. package/dist/assets/contracts/canonical-script.schema.json +219 -0
  27. package/dist/assets/contracts/compat-script.schema.json +380 -0
  28. package/dist/assets/contracts/device-list.schema.json +19 -0
  29. package/dist/assets/contracts/error.schema.json +47 -0
  30. package/dist/assets/contracts/execution-target.schema.json +55 -0
  31. package/dist/assets/contracts/fixtures/authoring-attempt-create.valid.json +4 -0
  32. package/dist/assets/contracts/fixtures/authoring-attempt.passed.json +16 -0
  33. package/dist/assets/contracts/fixtures/authoring-draft-attempt-create.valid.json +10 -0
  34. package/dist/assets/contracts/fixtures/authoring-observation.valid.json +7 -0
  35. package/dist/assets/contracts/fixtures/authoring-revision.valid.json +16 -0
  36. package/dist/assets/contracts/fixtures/authoring-session.active.json +12 -0
  37. package/dist/assets/contracts/fixtures/canonical-script.valid.json +17 -0
  38. package/dist/assets/contracts/fixtures/ci-exit-status-cases.json +44 -0
  39. package/dist/assets/contracts/fixtures/command-mutual-exclusion-cases.json +20 -0
  40. package/dist/assets/contracts/fixtures/compat-script.all-platform-actions.yaml +227 -0
  41. package/dist/assets/contracts/fixtures/execution-target.both.invalid.json +7 -0
  42. package/dist/assets/contracts/fixtures/execution-target.concurrency-two.invalid.json +4 -0
  43. package/dist/assets/contracts/fixtures/execution-target.count-two.invalid.json +6 -0
  44. package/dist/assets/contracts/fixtures/execution-target.dynamic.valid.json +12 -0
  45. package/dist/assets/contracts/fixtures/execution-target.fixed.valid.json +4 -0
  46. package/dist/assets/contracts/fixtures/execution-target.multiple-devices.invalid.json +4 -0
  47. package/dist/assets/contracts/fixtures/execution-target.multiple-filters.invalid.json +7 -0
  48. package/dist/assets/contracts/fixtures/execution-target.strategy-all.invalid.json +6 -0
  49. package/dist/assets/contracts/fixtures/idempotency.conflict.json +26 -0
  50. package/dist/assets/contracts/fixtures/idempotency.same-request.json +26 -0
  51. package/dist/assets/contracts/fixtures/principal.personal.json +23 -0
  52. package/dist/assets/contracts/fixtures/principal.project-ci.json +20 -0
  53. package/dist/assets/contracts/fixtures/project-config.no-default.valid.json +9 -0
  54. package/dist/assets/contracts/fixtures/project-config.secret.invalid.json +10 -0
  55. package/dist/assets/contracts/fixtures/project-config.target-name.invalid.json +10 -0
  56. package/dist/assets/contracts/fixtures/project-config.valid.json +22 -0
  57. package/dist/assets/contracts/fixtures/public-script.all-cli-actions.yaml +39 -0
  58. package/dist/assets/contracts/fixtures/public-script.invalid.json +8 -0
  59. package/dist/assets/contracts/fixtures/public-script.valid.json +17 -0
  60. package/dist/assets/contracts/fixtures/run-create-v2.device-id.invalid.json +16 -0
  61. package/dist/assets/contracts/fixtures/run-create.personal-upload.valid.json +20 -0
  62. package/dist/assets/contracts/fixtures/run-create.single-device.json +19 -0
  63. package/dist/assets/contracts/fixtures/run-create.target.valid.json +22 -0
  64. package/dist/assets/contracts/fixtures/run.queued.json +19 -0
  65. package/dist/assets/contracts/fixtures/run.target.queued.json +38 -0
  66. package/dist/assets/contracts/fixtures/skill-catalog.valid.json +19 -0
  67. package/dist/assets/contracts/fixtures/skill-reference.valid.json +9 -0
  68. package/dist/assets/contracts/fixtures/skill.valid.json +10 -0
  69. package/dist/assets/contracts/fixtures/target-hash-cases.json +30 -0
  70. package/dist/assets/contracts/fixtures/target-preview.hash-mismatch.error.json +8 -0
  71. package/dist/assets/contracts/fixtures/target-preview.no-match.error.json +9 -0
  72. package/dist/assets/contracts/fixtures/target-preview.request.valid.json +9 -0
  73. package/dist/assets/contracts/fixtures/target-preview.success.json +18 -0
  74. package/dist/assets/contracts/fixtures/target-preview.unavailable.json +18 -0
  75. package/dist/assets/contracts/principal.schema.json +72 -0
  76. package/dist/assets/contracts/project-config.schema.json +23 -0
  77. package/dist/assets/contracts/public-script.schema.json +397 -0
  78. package/dist/assets/contracts/run-create-v2.schema.json +78 -0
  79. package/dist/assets/contracts/run-create.schema.json +70 -0
  80. package/dist/assets/contracts/run.schema.json +137 -0
  81. package/dist/assets/contracts/skill-catalog.schema.json +15 -0
  82. package/dist/assets/contracts/skill-reference.schema.json +17 -0
  83. package/dist/assets/contracts/skill-summary.schema.json +28 -0
  84. package/dist/assets/contracts/skill.schema.json +30 -0
  85. package/dist/assets/contracts/target-preview.schema.json +75 -0
  86. package/dist/assets/integrations/manifest.json +17 -0
  87. package/dist/assets/integrations/xagent-skill/SKILL.md +28 -0
  88. package/dist/assets/integrations/xagent-skill/agents/openai.yaml +4 -0
  89. package/dist/assets/integrations/xagent-skill/references/cli-mcp-interop.md +10 -0
  90. package/dist/assets/integrations/xagent-skill/references/host-adapters.md +9 -0
  91. package/dist/assets/integrations/xagent-skill/references/installation.md +10 -0
  92. package/dist/assets/integrations/xagent-skill/references/privacy.md +3 -0
  93. package/dist/assets/integrations/xagent-skill/references/routing.md +32 -0
  94. package/dist/assets/integrations/xagent-skill/scripts/install-cli.ps1 +5 -0
  95. package/dist/assets/integrations/xagent-skill/scripts/install-cli.sh +6 -0
  96. package/dist/assets/skills/xagent-analyze-failure/SKILL.md +13 -0
  97. package/dist/assets/skills/xagent-analyze-failure/agents/openai.yaml +4 -0
  98. package/dist/assets/skills/xagent-analyze-failure/references/failure-classification.md +20 -0
  99. package/dist/assets/skills/xagent-author-test/SKILL.md +19 -0
  100. package/dist/assets/skills/xagent-author-test/agents/openai.yaml +4 -0
  101. package/dist/assets/skills/xagent-author-test/references/authoring-workflow.md +41 -0
  102. package/dist/assets/skills/xagent-author-test/references/host-interaction-adapters.md +81 -0
  103. package/dist/assets/skills/xagent-author-test/references/interaction-modes.md +97 -0
  104. package/dist/assets/skills/xagent-author-test/references/interactive-steering.md +57 -0
  105. package/dist/assets/skills/xagent-author-test/references/script-actions.md +34 -0
  106. package/dist/assets/skills/xagent-author-test/references/script-format.md +100 -0
  107. package/dist/assets/skills/xagent-cli/SKILL.md +31 -0
  108. package/dist/assets/skills/xagent-cli/agents/openai.yaml +4 -0
  109. package/dist/assets/skills/xagent-cli/references/capability-routing.md +36 -0
  110. package/dist/assets/skills/xagent-cli/references/cli-commands.md +23 -0
  111. package/dist/assets/skills/xagent-cli/references/failure-routing.md +18 -0
  112. package/dist/assets/skills/xagent-cli/references/host-modes.md +21 -0
  113. package/dist/assets/skills/xagent-cli/references/mcp-tools.md +26 -0
  114. package/dist/assets/skills/xagent-cli/references/permissions.md +17 -0
  115. package/dist/assets/skills/xagent-explore-device/SKILL.md +26 -0
  116. package/dist/assets/skills/xagent-explore-device/agents/openai.yaml +4 -0
  117. package/dist/assets/skills/xagent-explore-device/references/actions.md +24 -0
  118. package/dist/assets/skills/xagent-explore-device/references/single-action-protocol.md +59 -0
  119. package/dist/assets/skills/xagent-explore-device/references/tool-adapters.md +32 -0
  120. package/dist/assets/skills/xagent-repair-test/SKILL.md +16 -0
  121. package/dist/assets/skills/xagent-repair-test/agents/openai.yaml +4 -0
  122. package/dist/assets/skills/xagent-repair-test/references/repair-workflow.md +21 -0
  123. package/dist/assets/skills/xagent-run-test/SKILL.md +16 -0
  124. package/dist/assets/skills/xagent-run-test/agents/openai.yaml +4 -0
  125. package/dist/assets/skills/xagent-run-test/references/execution-modes.md +23 -0
  126. package/dist/assets/skills/xagent-run-test/references/result-status.md +13 -0
  127. package/dist/assets/skills/xagent-test-report/SKILL.md +20 -0
  128. package/dist/assets/skills/xagent-test-report/agents/openai.yaml +4 -0
  129. package/dist/assets/skills/xagent-test-report/references/evidence-policy.md +20 -0
  130. package/dist/assets/skills/xagent-test-report/references/report-template.md +41 -0
  131. package/dist/assets/skills/xagent-test-report/references/result-classification.md +13 -0
  132. package/dist/authoring/draft-store.d.ts +19 -0
  133. package/dist/authoring/draft-store.d.ts.map +1 -0
  134. package/dist/authoring/draft-store.js +104 -0
  135. package/dist/authoring/draft-store.js.map +1 -0
  136. package/dist/authoring/session-lease.d.ts +64 -0
  137. package/dist/authoring/session-lease.d.ts.map +1 -0
  138. package/dist/authoring/session-lease.js +190 -0
  139. package/dist/authoring/session-lease.js.map +1 -0
  140. package/dist/cli.d.ts +3 -0
  141. package/dist/cli.d.ts.map +1 -0
  142. package/dist/cli.js +529 -0
  143. package/dist/cli.js.map +1 -0
  144. package/dist/config/credentials.d.ts +16 -0
  145. package/dist/config/credentials.d.ts.map +1 -0
  146. package/dist/config/credentials.js +93 -0
  147. package/dist/config/credentials.js.map +1 -0
  148. package/dist/config/store.d.ts +37 -0
  149. package/dist/config/store.d.ts.map +1 -0
  150. package/dist/config/store.js +142 -0
  151. package/dist/config/store.js.map +1 -0
  152. package/dist/core/assets.d.ts +5 -0
  153. package/dist/core/assets.d.ts.map +1 -0
  154. package/dist/core/assets.js +46 -0
  155. package/dist/core/assets.js.map +1 -0
  156. package/dist/core/errors.d.ts +19 -0
  157. package/dist/core/errors.d.ts.map +1 -0
  158. package/dist/core/errors.js +36 -0
  159. package/dist/core/errors.js.map +1 -0
  160. package/dist/core/interrupt.d.ts +8 -0
  161. package/dist/core/interrupt.d.ts.map +1 -0
  162. package/dist/core/interrupt.js +54 -0
  163. package/dist/core/interrupt.js.map +1 -0
  164. package/dist/core/json.d.ts +5 -0
  165. package/dist/core/json.d.ts.map +1 -0
  166. package/dist/core/json.js +21 -0
  167. package/dist/core/json.js.map +1 -0
  168. package/dist/core/version.d.ts +8 -0
  169. package/dist/core/version.d.ts.map +1 -0
  170. package/dist/core/version.js +8 -0
  171. package/dist/core/version.js.map +1 -0
  172. package/dist/integrations/manager.d.ts +12 -0
  173. package/dist/integrations/manager.d.ts.map +1 -0
  174. package/dist/integrations/manager.js +218 -0
  175. package/dist/integrations/manager.js.map +1 -0
  176. package/dist/integrations/routing.d.ts +105 -0
  177. package/dist/integrations/routing.d.ts.map +1 -0
  178. package/dist/integrations/routing.js +85 -0
  179. package/dist/integrations/routing.js.map +1 -0
  180. package/dist/mcp/server.d.ts +4 -0
  181. package/dist/mcp/server.d.ts.map +1 -0
  182. package/dist/mcp/server.js +69 -0
  183. package/dist/mcp/server.js.map +1 -0
  184. package/dist/mcp/tools.d.ts +30 -0
  185. package/dist/mcp/tools.d.ts.map +1 -0
  186. package/dist/mcp/tools.js +345 -0
  187. package/dist/mcp/tools.js.map +1 -0
  188. package/dist/project/config.d.ts +15 -0
  189. package/dist/project/config.d.ts.map +1 -0
  190. package/dist/project/config.js +46 -0
  191. package/dist/project/config.js.map +1 -0
  192. package/dist/run/progress.d.ts +5 -0
  193. package/dist/run/progress.d.ts.map +1 -0
  194. package/dist/run/progress.js +29 -0
  195. package/dist/run/progress.js.map +1 -0
  196. package/dist/script/service.d.ts +42 -0
  197. package/dist/script/service.d.ts.map +1 -0
  198. package/dist/script/service.js +457 -0
  199. package/dist/script/service.js.map +1 -0
  200. package/dist/sdk/authoring.d.ts +19 -0
  201. package/dist/sdk/authoring.d.ts.map +1 -0
  202. package/dist/sdk/authoring.js +43 -0
  203. package/dist/sdk/authoring.js.map +1 -0
  204. package/dist/sdk/client.d.ts +49 -0
  205. package/dist/sdk/client.d.ts.map +1 -0
  206. package/dist/sdk/client.js +241 -0
  207. package/dist/sdk/client.js.map +1 -0
  208. package/dist/skills/catalog.d.ts +7 -0
  209. package/dist/skills/catalog.d.ts.map +1 -0
  210. package/dist/skills/catalog.js +59 -0
  211. package/dist/skills/catalog.js.map +1 -0
  212. package/package.json +45 -0
@@ -0,0 +1,457 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import Ajv2020Module from "ajv/dist/2020.js";
4
+ import { isMap, LineCounter, parseDocument } from "yaml";
5
+ import { contractRoot } from "../core/assets.js";
6
+ import { hashJson, sha256Text } from "../core/json.js";
7
+ export const PUBLIC_SCRIPT_SCHEMA_VERSION = "xagent-script/v1";
8
+ export const COMPAT_SCRIPT_SCHEMA_VERSION = "xagent-compat-script/v1";
9
+ export const CANONICAL_SCRIPT_SCHEMA_VERSION = "xagent-canonical/v1";
10
+ export const COMPILER_VERSION = "xagent-compiler/1";
11
+ let validators;
12
+ async function getValidators() {
13
+ if (!validators) {
14
+ validators = (async () => {
15
+ const root = await contractRoot();
16
+ const [publicSchema, compatSchema, canonicalSchema] = await Promise.all([
17
+ readFile(path.join(root, "public-script.schema.json"), "utf8").then(JSON.parse),
18
+ readFile(path.join(root, "compat-script.schema.json"), "utf8").then(JSON.parse),
19
+ readFile(path.join(root, "canonical-script.schema.json"), "utf8").then(JSON.parse),
20
+ ]);
21
+ const Ajv2020 = Ajv2020Module;
22
+ const ajv = new Ajv2020({ allErrors: true, strict: false });
23
+ ajv.addSchema(publicSchema);
24
+ const topLevel = structuredClone(publicSchema);
25
+ delete topLevel.$id;
26
+ topLevel.properties.steps.items = true;
27
+ const actions = {};
28
+ for (const action of [
29
+ "install", "appLaunch", "uninstall", "click", "input", "scroll", "scroll_between", "drag",
30
+ "screenshot", "extract", "waitFor", "assert", "if", "appStop", "appClean", "set", "randomVar",
31
+ "for", "throw", "break", "press_key", "press_home",
32
+ "press_back", "press_enter",
33
+ ]) {
34
+ const actionSchema = structuredClone(publicSchema.$defs[action]);
35
+ if (action === "if") {
36
+ actionSchema.properties.then.items = true;
37
+ actionSchema.properties.else.items = true;
38
+ }
39
+ if (action === "for")
40
+ actionSchema.properties.steps.items = true;
41
+ actions[action] = ajv.compile(actionSchema);
42
+ }
43
+ return { publicTopLevel: ajv.compile(topLevel), compat: ajv.compile(compatSchema), canonical: ajv.compile(canonicalSchema), actions };
44
+ })();
45
+ }
46
+ return validators;
47
+ }
48
+ function pathString(segments) {
49
+ return segments.reduce((result, segment) => typeof segment === "number" ? `${result}[${segment}]` : `${result}.${segment}`, "$<ROOT>").replace("$<ROOT>", "$");
50
+ }
51
+ function errorSegments(error) {
52
+ const segments = error.instancePath.split("/").slice(1).map((item) => /^\d+$/.test(item) ? Number(item) : item.replaceAll("~1", "/").replaceAll("~0", "~"));
53
+ if (error.keyword === "required") {
54
+ const missing = String(error.params.missingProperty ?? "");
55
+ segments.push(missing);
56
+ }
57
+ return segments;
58
+ }
59
+ function errorMessage(error) {
60
+ if (error.keyword === "required")
61
+ return `'${String(error.params.missingProperty)}' is a required property`;
62
+ return error.message ?? "schema validation failed";
63
+ }
64
+ function issueFromAjv(error, prefix = []) {
65
+ const segments = [...prefix, ...errorSegments(error)];
66
+ return { code: error.keyword, message: errorMessage(error), path: pathString(segments) };
67
+ }
68
+ function plain(value) {
69
+ if (Array.isArray(value))
70
+ return value.map(plain);
71
+ if (value !== null && typeof value === "object") {
72
+ return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, plain(v)]));
73
+ }
74
+ return value;
75
+ }
76
+ function locate(document, lineCounter, segments) {
77
+ let node;
78
+ const last = segments.at(-1);
79
+ const parent = segments.length ? document.getIn(segments.slice(0, -1), true) : document.contents;
80
+ if (typeof last === "string" && isMap(parent)) {
81
+ const pair = parent.items.find((item) => String(item.key?.value ?? item.key) === last);
82
+ node = pair?.key ?? parent;
83
+ }
84
+ else
85
+ node = document.getIn(segments, true) ?? parent;
86
+ const range = node?.range;
87
+ if (!range)
88
+ return {};
89
+ const position = lineCounter.linePos(range[0]);
90
+ return { line: position.line, column: position.col };
91
+ }
92
+ export async function parseYaml(content) {
93
+ const sourceHash = sha256Text(content);
94
+ const lineCounter = new LineCounter();
95
+ const document = parseDocument(content, { uniqueKeys: true, prettyErrors: false, lineCounter });
96
+ const syntaxIssues = document.errors.map((error) => ({
97
+ code: "yaml_syntax",
98
+ message: error.message,
99
+ path: "$",
100
+ }));
101
+ const value = plain(document.toJS());
102
+ const rawScript = value !== null && typeof value === "object" && !Array.isArray(value)
103
+ ? value
104
+ : {};
105
+ const inputSchemaVersion = typeof rawScript.schema_version === "string" ? rawScript.schema_version : undefined;
106
+ if (syntaxIssues.length)
107
+ return { script: rawScript, inputSchemaVersion, sourceHash, issues: syntaxIssues, valid: false };
108
+ if (inputSchemaVersion === COMPAT_SCRIPT_SCHEMA_VERSION) {
109
+ const compatIssues = await compatValidationIssues(rawScript, document, lineCounter);
110
+ if (compatIssues.length)
111
+ return { script: rawScript, inputSchemaVersion, sourceHash, issues: compatIssues, valid: false };
112
+ let script;
113
+ try {
114
+ script = compileCompatScript(rawScript);
115
+ }
116
+ catch (error) {
117
+ const message = error instanceof Error ? error.message : String(error);
118
+ return { script: rawScript, inputSchemaVersion, sourceHash, issues: [{ code: "compat_compile", message, path: "$" }], valid: false };
119
+ }
120
+ const issues = await validationIssues(script);
121
+ return { script, inputSchemaVersion, sourceHash, issues, valid: issues.length === 0 };
122
+ }
123
+ const issues = await validationIssues(rawScript, document, lineCounter);
124
+ return { script: rawScript, inputSchemaVersion, sourceHash, issues, valid: issues.length === 0 };
125
+ }
126
+ async function compatValidationIssues(script, document, lineCounter) {
127
+ const { compat } = await getValidators();
128
+ compat(script);
129
+ return deduplicate((compat.errors ?? []).map((error) => {
130
+ const segments = errorSegments(error);
131
+ return { ...issueFromAjv(error), ...locate(document, lineCounter, segments) };
132
+ }));
133
+ }
134
+ const COMPAT_EDITOR_FIELDS = new Set([
135
+ "stepIdFront", "userText", "desc", "frontStepType", "descVisible", "isEdit", "actionLocked",
136
+ "children", "elseIfChildren", "elseChildren", "judge", "ai_content", "smartWaitDisplay",
137
+ "smart_wait_display", "postWaitCondition", "post_wait_condition", "stepIndex",
138
+ ]);
139
+ const COMPAT_PUBLIC_ACTION_FIELDS = Object.fromEntries(Object.entries({
140
+ click: ["action", "target", "type", "duration"],
141
+ input: ["action", "text", "target", "clearFirst", "inputMode", "keyboardLayout"],
142
+ scroll: [
143
+ "action", "direction", "distance", "target", "condition", "maxSwipes", "scope",
144
+ "containerRole", "containerAnchor", "containerHint", "scrollAreaTarget", "untilScope",
145
+ "stopMode", "untilMatchMode", "spatialConstraints",
146
+ ],
147
+ install: ["action", "appPackage"],
148
+ uninstall: ["action", "appPackage", "appName"],
149
+ appLaunch: ["action", "appPackage", "appName", "launchPath"],
150
+ appStop: ["action", "appPackage", "appName"],
151
+ appClean: ["action", "appPackage", "appName"],
152
+ waitFor: ["action", "time", "condition", "timeout"],
153
+ assert: ["action", "condition", "conditionType", "target", "text", "message"],
154
+ screenshot: ["action", "var"],
155
+ set: ["action", "varName", "value"],
156
+ press_back: ["action"],
157
+ press_home: ["action"],
158
+ }).map(([action, fields]) => [action, new Set([...fields, "description"])]));
159
+ function compatFrontType(step) {
160
+ const value = String(step.frontStepType ?? "").trim().toLowerCase();
161
+ if (value)
162
+ return value;
163
+ return ["if", "else-if", "else"].includes(String(step.action ?? "")) ? String(step.action) : "step";
164
+ }
165
+ function compatCondition(step, path) {
166
+ const value = String(step.userText ?? step.condition ?? "").trim();
167
+ if (!value)
168
+ throw new Error(`${path} 缺少 userText 或 condition`);
169
+ return value;
170
+ }
171
+ function compatDescription(step) {
172
+ const value = typeof step.desc === "string" ? step.desc.trim() : "";
173
+ return value ? { description: value } : {};
174
+ }
175
+ function compileCompatScript(script) {
176
+ const variables = script.variables ?? [];
177
+ let publicVariables;
178
+ if (Array.isArray(variables)) {
179
+ publicVariables = {};
180
+ variables.forEach((definition, index) => {
181
+ if (!definition || typeof definition !== "object" || Array.isArray(definition))
182
+ throw new Error(`variables[${index}] 必须是对象`);
183
+ const item = definition;
184
+ const key = String(item.key ?? "").trim();
185
+ if (!key)
186
+ throw new Error(`variables[${index}].key 不能为空`);
187
+ if (!("defaultValue" in item))
188
+ throw new Error(`variables[${index}] (${key}) 缺少 defaultValue,CLI 无法确定变量值`);
189
+ publicVariables[key] = structuredClone(item.defaultValue);
190
+ });
191
+ }
192
+ else if (variables && typeof variables === "object") {
193
+ publicVariables = structuredClone(variables);
194
+ }
195
+ else {
196
+ throw new Error("variables 必须是对象或数组");
197
+ }
198
+ const contentFields = script.content_fields && typeof script.content_fields === "object" && !Array.isArray(script.content_fields)
199
+ ? script.content_fields
200
+ : {};
201
+ const packageId = script.package_id ?? contentFields.package_id;
202
+ return {
203
+ schema_version: PUBLIC_SCRIPT_SCHEMA_VERSION,
204
+ ...(typeof script.name === "string" && script.name.trim() ? { name: script.name.trim() } : {}),
205
+ ...(packageId !== undefined ? { package_id: packageId } : {}),
206
+ ...(Object.keys(publicVariables).length ? { variables: publicVariables } : {}),
207
+ steps: compileCompatEditorSteps(script.steps, "steps"),
208
+ };
209
+ }
210
+ function compileCompatEditorSteps(nodes, path) {
211
+ if (!Array.isArray(nodes))
212
+ throw new Error(`${path} 必须是数组`);
213
+ const result = [];
214
+ for (let index = 0; index < nodes.length; index += 1) {
215
+ const raw = nodes[index];
216
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
217
+ throw new Error(`${path}[${index}] 必须是对象`);
218
+ const step = raw;
219
+ const frontType = compatFrontType(step);
220
+ if (frontType === "paragraph") {
221
+ result.push(...compileCompatEditorSteps(step.children ?? [], `${path}[${index}].children`));
222
+ continue;
223
+ }
224
+ if (frontType === "else-if" || frontType === "else")
225
+ throw new Error(`${path}[${index}] ${frontType} 前面缺少同级 if`);
226
+ if (frontType !== "if") {
227
+ result.push(compileCompatAction(step));
228
+ continue;
229
+ }
230
+ const elseIfBranches = Array.isArray(step.elseIfChildren) ? [...step.elseIfChildren] : [];
231
+ let elseBranch;
232
+ if (Array.isArray(step.elseChildren) && step.elseChildren.length) {
233
+ const first = step.elseChildren[0];
234
+ elseBranch = first && typeof first === "object" && compatFrontType(first) === "else"
235
+ ? first
236
+ : { frontStepType: "else", children: step.elseChildren };
237
+ }
238
+ while (index + 1 < nodes.length) {
239
+ const sibling = nodes[index + 1];
240
+ if (!sibling || typeof sibling !== "object" || Array.isArray(sibling))
241
+ break;
242
+ const siblingType = compatFrontType(sibling);
243
+ if (siblingType === "else-if") {
244
+ elseIfBranches.push(sibling);
245
+ index += 1;
246
+ continue;
247
+ }
248
+ if (siblingType === "else") {
249
+ elseBranch = sibling;
250
+ index += 1;
251
+ }
252
+ break;
253
+ }
254
+ const ifIndex = index;
255
+ let compiledElse = elseBranch
256
+ ? compileCompatEditorSteps(elseBranch.children ?? [], `${path}[${ifIndex}].elseChildren`)
257
+ : undefined;
258
+ for (let branchIndex = elseIfBranches.length - 1; branchIndex >= 0; branchIndex -= 1) {
259
+ const branch = elseIfBranches[branchIndex];
260
+ const nested = {
261
+ action: "if",
262
+ condition: compatCondition(branch, `${path}[${ifIndex}].elseIfChildren[${branchIndex}]`),
263
+ then: compileCompatEditorSteps(branch.children ?? [], `${path}[${ifIndex}].elseIfChildren[${branchIndex}].children`),
264
+ ...compatDescription(branch),
265
+ };
266
+ if (compiledElse?.length)
267
+ nested.else = compiledElse;
268
+ compiledElse = [nested];
269
+ }
270
+ const compiled = {
271
+ action: "if",
272
+ condition: compatCondition(step, `${path}[${ifIndex}]`),
273
+ then: compileCompatEditorSteps(step.children ?? [], `${path}[${ifIndex}].children`),
274
+ ...compatDescription(step),
275
+ };
276
+ if (compiledElse?.length)
277
+ compiled.else = compiledElse;
278
+ result.push(compiled);
279
+ }
280
+ return result;
281
+ }
282
+ function compileCompatAction(source) {
283
+ const step = structuredClone(source);
284
+ if (!step.condition && step.judge && typeof step.judge.raw === "string" && step.judge.raw.trim())
285
+ step.condition = step.judge.raw.trim();
286
+ if (step.action === "click" && String(step.type ?? "").trim().toLowerCase() === "text")
287
+ delete step.type;
288
+ if (step.action === "input" && !step.text && step.content !== undefined)
289
+ step.text = step.content;
290
+ if (step.action === "input" && ["normal", "smart"].includes(step.inputMode))
291
+ delete step.inputMode;
292
+ if (step.action === "waitFor" && !step.condition && step.time === undefined)
293
+ step.condition = step.task ?? step.target;
294
+ if (step.action === "assert" && !step.condition && !step.target && step.task)
295
+ step.condition = step.task;
296
+ if (["appLaunch", "appStop", "appClean", "uninstall"].includes(step.action) && !step.appName)
297
+ step.appName = step.task ?? step.target;
298
+ if (step.action === "press_key" && !step.key)
299
+ step.key = step.content ?? step.task;
300
+ const aliases = {
301
+ from: ["from_target", "fromTarget", "fromName", "source"],
302
+ to: ["to_target", "toTarget", "toName", "dist", "destination"],
303
+ appPackage: ["packageName", "package_name"],
304
+ };
305
+ for (const [target, candidates] of Object.entries(aliases)) {
306
+ if (step[target] === undefined || step[target] === "") {
307
+ const alias = candidates.find((candidate) => step[candidate] !== undefined && step[candidate] !== "");
308
+ if (alias)
309
+ step[target] = step[alias];
310
+ }
311
+ candidates.forEach((candidate) => delete step[candidate]);
312
+ }
313
+ const description = compatDescription(source);
314
+ for (const key of Object.keys(step)) {
315
+ if (COMPAT_EDITOR_FIELDS.has(key) || key.endsWith("Ast"))
316
+ delete step[key];
317
+ }
318
+ if (step.action === "input" && step.text !== undefined)
319
+ delete step.content;
320
+ if (["click", "scroll"].includes(step.action))
321
+ ["content", "task", "text", "element", "actionText"].forEach((key) => delete step[key]);
322
+ if (["appLaunch", "appStop", "appClean", "uninstall"].includes(step.action))
323
+ ["task", "target"].forEach((key) => delete step[key]);
324
+ const compiled = { ...step, ...description };
325
+ const allowed = COMPAT_PUBLIC_ACTION_FIELDS[String(step.action ?? "")];
326
+ if (!allowed)
327
+ return compiled;
328
+ return Object.fromEntries(Object.entries(compiled).filter(([key]) => allowed.has(key)));
329
+ }
330
+ export async function validateScript(script) {
331
+ const { publicTopLevel: validator } = await getValidators();
332
+ const valid = validator(script);
333
+ return { valid: Boolean(valid), errors: validator.errors ?? [] };
334
+ }
335
+ async function validationIssues(script, document, lineCounter) {
336
+ const set = await getValidators();
337
+ const issues = [];
338
+ set.publicTopLevel(script);
339
+ for (const error of set.publicTopLevel.errors ?? []) {
340
+ const segments = errorSegments(error);
341
+ issues.push({ ...issueFromAjv(error), ...(document && lineCounter ? locate(document, lineCounter, segments) : {}) });
342
+ }
343
+ if (!script || typeof script !== "object" || Array.isArray(script) || !Array.isArray(script.steps))
344
+ return deduplicate(issues);
345
+ const visit = (steps, prefix, loopDepth = 0) => {
346
+ steps.forEach((raw, index) => {
347
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
348
+ return;
349
+ const step = raw;
350
+ const stepPrefix = [...prefix, index];
351
+ if (typeof step.action !== "string" || !step.action) {
352
+ const segments = [...stepPrefix, "action"];
353
+ issues.push({ code: "required", message: "action is required", path: pathString(segments), ...(document && lineCounter ? locate(document, lineCounter, segments) : {}) });
354
+ return;
355
+ }
356
+ const validator = set.actions[step.action];
357
+ if (!validator) {
358
+ const segments = [...stepPrefix, "action"];
359
+ issues.push({ code: "action_unsupported", message: `unsupported action: ${step.action}`, path: pathString(segments), ...(document && lineCounter ? locate(document, lineCounter, segments) : {}) });
360
+ return;
361
+ }
362
+ if (step.action === "break" && loopDepth === 0) {
363
+ const segments = [...stepPrefix, "action"];
364
+ issues.push({ code: "break_outside_loop", message: "break is only valid inside for.steps", path: pathString(segments), ...(document && lineCounter ? locate(document, lineCounter, segments) : {}) });
365
+ }
366
+ validator(step);
367
+ for (const error of validator.errors ?? []) {
368
+ const relative = errorSegments(error);
369
+ const segments = [...stepPrefix, ...relative];
370
+ issues.push({ ...issueFromAjv(error, stepPrefix), ...(document && lineCounter ? locate(document, lineCounter, segments) : {}) });
371
+ }
372
+ if (step.action === "if") {
373
+ if (Array.isArray(step.then))
374
+ visit(step.then, [...stepPrefix, "then"], loopDepth);
375
+ if (Array.isArray(step.else))
376
+ visit(step.else, [...stepPrefix, "else"], loopDepth);
377
+ }
378
+ if (step.action === "for" && Array.isArray(step.steps))
379
+ visit(step.steps, [...stepPrefix, "steps"], loopDepth + 1);
380
+ });
381
+ };
382
+ visit(script.steps, ["steps"]);
383
+ return deduplicate(issues);
384
+ }
385
+ function deduplicate(issues) {
386
+ const seen = new Set();
387
+ return issues.filter((issue) => { const key = `${issue.code}\0${issue.path}\0${issue.message}`; if (seen.has(key))
388
+ return false; seen.add(key); return true; });
389
+ }
390
+ export async function compileScript(script, options = {}) {
391
+ const parsedIssues = await validationIssues(script);
392
+ const sourceHash = options.sourceHash ?? hashJson(script);
393
+ if (parsedIssues.length)
394
+ return { canonicalScript: null, sourceHash, canonicalHash: null, schemaVersion: PUBLIC_SCRIPT_SCHEMA_VERSION, compilerVersion: COMPILER_VERSION, issues: parsedIssues, valid: false };
395
+ const issues = [];
396
+ const resolvedPackage = String(options.appPackage ?? "").trim();
397
+ const resolvedDownloadUrl = String(options.appDownloadUrl ?? "").trim();
398
+ const compileSteps = (steps, prefix) => steps.map((raw, index) => {
399
+ let step = structuredClone(raw);
400
+ const current = `${prefix}[${index}]`;
401
+ const action = step.action;
402
+ const packageValue = String(step.appPackage ?? "").trim();
403
+ if (["install", "appLaunch", "uninstall", "appStop", "appClean"].includes(action) && resolvedPackage && packageValue && packageValue !== resolvedPackage) {
404
+ issues.push({ code: "package_scope_mismatch", message: `${action} appPackage does not match the package selected by package_id`, path: `${current}.appPackage` });
405
+ }
406
+ if (action === "install") {
407
+ if (!resolvedDownloadUrl)
408
+ issues.push({ code: "compile_context_required", message: "install requires a package download URL from package_id", path: `${current}.appDownloadUrl` });
409
+ else
410
+ step.appDownloadUrl = resolvedDownloadUrl;
411
+ }
412
+ if (action === "input") {
413
+ const layout = step.keyboardLayout;
414
+ delete step.keyboardLayout;
415
+ if (step.inputMode === "normal")
416
+ delete step.inputMode;
417
+ if (layout !== undefined) {
418
+ const input = structuredClone(step);
419
+ const targetLayout = layout === "numeric" ? "数字" : "字母";
420
+ step = {
421
+ action: "if",
422
+ condition: `当前输入键盘不是${targetLayout}布局`,
423
+ then: [
424
+ { action: "click", target: "当前输入键盘的字母数字布局切换键", type: "click" },
425
+ input,
426
+ ],
427
+ else: [structuredClone(input)],
428
+ ...(typeof input.description === "string" ? { description: input.description } : {}),
429
+ };
430
+ }
431
+ }
432
+ if (action === "appLaunch") {
433
+ if (!step.appName && options.appName)
434
+ step.appName = options.appName;
435
+ if (!step.launchPath && options.launchPath)
436
+ step.launchPath = options.launchPath;
437
+ }
438
+ if (action === "if") {
439
+ step.then = compileSteps(step.then, `${current}.then`);
440
+ if (step.else)
441
+ step.else = compileSteps(step.else, `${current}.else`);
442
+ }
443
+ if (action === "for")
444
+ step.steps = compileSteps(step.steps, `${current}.steps`);
445
+ return step;
446
+ });
447
+ if (issues.length)
448
+ return { canonicalScript: null, sourceHash, canonicalHash: null, schemaVersion: PUBLIC_SCRIPT_SCHEMA_VERSION, compilerVersion: COMPILER_VERSION, issues, valid: false };
449
+ const canonical = { schema_version: CANONICAL_SCRIPT_SCHEMA_VERSION, version: 1, variables: { ...(script.variables ?? {}), ...(options.runtimeVariables ?? {}) }, steps: [{ action: "prepareDevice" }, ...compileSteps(script.steps, "$.steps")] };
450
+ const { canonical: validator } = await getValidators();
451
+ if (!validator(canonical)) {
452
+ const canonicalIssues = (validator.errors ?? []).map((error) => issueFromAjv(error));
453
+ return { canonicalScript: null, sourceHash, canonicalHash: null, schemaVersion: PUBLIC_SCRIPT_SCHEMA_VERSION, compilerVersion: COMPILER_VERSION, issues: canonicalIssues, valid: false };
454
+ }
455
+ return { canonicalScript: canonical, sourceHash, canonicalHash: hashJson(canonical), schemaVersion: PUBLIC_SCRIPT_SCHEMA_VERSION, compilerVersion: COMPILER_VERSION, issues: [], valid: true };
456
+ }
457
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/script/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { XAgentClient } from "./client.js";
2
+ export declare class AuthoringClient {
3
+ private readonly client;
4
+ constructor(client: XAgentClient);
5
+ listDevices(query?: Record<string, string | number | boolean | undefined>): Promise<Record<string, any>>;
6
+ createSession(deviceId: string, idempotencyKey: string): Promise<Record<string, any>>;
7
+ acquireDevice(deviceId: string, idempotencyKey: string): Promise<Record<string, any>>;
8
+ getSession(sessionId: string): Promise<Record<string, any>>;
9
+ renewSession(sessionId: string): Promise<Record<string, any>>;
10
+ createRevision(sessionId: string, script: Record<string, unknown>, source: "user" | "agent", idempotencyKey: string, baseRevisionId?: string): Promise<Record<string, any>>;
11
+ getRevision(sessionId: string, revisionId: string): Promise<Record<string, any>>;
12
+ observe(sessionId: string): Promise<Record<string, any>>;
13
+ executeStep(sessionId: string, revisionId: string, stepIndex: number, idempotencyKey: string): Promise<Record<string, any>>;
14
+ executeDraftStep(sessionId: string, script: Record<string, unknown>, stepIndex: number, idempotencyKey: string): Promise<Record<string, any>>;
15
+ getAttempt(attemptId: string): Promise<Record<string, any>>;
16
+ complete(sessionId: string, revisionId: string, idempotencyKey: string): Promise<Record<string, any>>;
17
+ cancel(sessionId: string, idempotencyKey: string): Promise<Record<string, any>>;
18
+ }
19
+ //# sourceMappingURL=authoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../../src/sdk/authoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IACjD,WAAW,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAM;IAO7E,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAGtD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAGtD,UAAU,CAAC,SAAS,EAAE,MAAM;IAC5B,YAAY,CAAC,SAAS,EAAE,MAAM;IAG9B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAG5I,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IACjD,OAAO,CAAC,SAAS,EAAE,MAAM;IACzB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAG5F,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAG9G,UAAU,CAAC,SAAS,EAAE,MAAM;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAGtE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAGjD"}
@@ -0,0 +1,43 @@
1
+ export class AuthoringClient {
2
+ client;
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ listDevices(query = {}) {
7
+ const params = new URLSearchParams();
8
+ for (const [key, value] of Object.entries(query))
9
+ if (value !== undefined)
10
+ params.set(key, String(value));
11
+ const suffix = params.toString() ? `?${params.toString()}` : "";
12
+ return this.client.request("GET", `/agent/api/developer/v1/devices${suffix}`);
13
+ }
14
+ createSession(deviceId, idempotencyKey) {
15
+ return this.client.request("POST", "/agent/api/developer/v1/authoring/sessions", { json: { device_id: deviceId }, idempotencyKey, timeoutMs: 90_000 });
16
+ }
17
+ acquireDevice(deviceId, idempotencyKey) {
18
+ return this.client.request("POST", "/agent/api/developer/v1/authoring/devices/acquire", { json: { device_id: deviceId }, idempotencyKey, timeoutMs: 90_000 });
19
+ }
20
+ getSession(sessionId) { return this.client.request("GET", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}`); }
21
+ renewSession(sessionId) {
22
+ return this.client.request("POST", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/renew`, { json: {}, timeoutMs: 90_000 });
23
+ }
24
+ createRevision(sessionId, script, source, idempotencyKey, baseRevisionId) {
25
+ return this.client.request("POST", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/revisions`, { json: { script, source, base_revision_id: baseRevisionId ?? null }, idempotencyKey });
26
+ }
27
+ getRevision(sessionId, revisionId) { return this.client.request("GET", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/revisions/${encodeURIComponent(revisionId)}`); }
28
+ observe(sessionId) { return this.client.request("GET", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/observe`); }
29
+ executeStep(sessionId, revisionId, stepIndex, idempotencyKey) {
30
+ return this.client.request("POST", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/attempts`, { json: { revision_id: revisionId, step_index: stepIndex }, idempotencyKey, timeoutMs: 300_000 });
31
+ }
32
+ executeDraftStep(sessionId, script, stepIndex, idempotencyKey) {
33
+ return this.client.request("POST", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/draft-attempts`, { json: { script, step_index: stepIndex }, idempotencyKey, timeoutMs: 300_000 });
34
+ }
35
+ getAttempt(attemptId) { return this.client.request("GET", `/agent/api/developer/v1/authoring/attempts/${encodeURIComponent(attemptId)}`); }
36
+ complete(sessionId, revisionId, idempotencyKey) {
37
+ return this.client.request("POST", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/complete`, { json: { revision_id: revisionId }, idempotencyKey, timeoutMs: 90_000 });
38
+ }
39
+ cancel(sessionId, idempotencyKey) {
40
+ return this.client.request("POST", `/agent/api/developer/v1/authoring/sessions/${encodeURIComponent(sessionId)}/cancel`, { json: {}, idempotencyKey, timeoutMs: 90_000 });
41
+ }
42
+ }
43
+ //# sourceMappingURL=authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../../src/sdk/authoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { DeviceActionClient } from "../action/client.js";
2
+ import { AuthoringClient } from "./authoring.js";
3
+ type RequestOptions = {
4
+ json?: unknown;
5
+ body?: BodyInit;
6
+ headers?: Record<string, string>;
7
+ timeoutMs?: number;
8
+ idempotencyKey?: string;
9
+ };
10
+ export type Principal = {
11
+ schema_version: string;
12
+ token_type: string;
13
+ eid: number;
14
+ project_id: number;
15
+ subject: {
16
+ type: string;
17
+ id: string;
18
+ };
19
+ capabilities: string[];
20
+ };
21
+ export declare class XAgentClient {
22
+ readonly baseUrl: string;
23
+ private readonly token;
24
+ readonly uploadBaseUrl?: string | undefined;
25
+ readonly timeoutMs: number;
26
+ readonly uploadTimeoutMs: number;
27
+ readonly authoring: AuthoringClient;
28
+ readonly action: DeviceActionClient;
29
+ constructor(baseUrl: string, token: string, uploadBaseUrl?: string | undefined, timeoutMs?: number, uploadTimeoutMs?: number);
30
+ getPrincipal(): Promise<Principal>;
31
+ listEffectiveSkills(): Promise<Record<string, any>>;
32
+ getEffectiveSkill(name: string): Promise<Record<string, any>>;
33
+ getEffectiveSkillReference(name: string, referencePath: string): Promise<Record<string, any>>;
34
+ createRun(request: Record<string, unknown>, idempotencyKey?: string): Promise<Record<string, any>>;
35
+ previewTarget(request: Record<string, unknown>): Promise<Record<string, any>>;
36
+ getRun(runId: string): Promise<Record<string, any>>;
37
+ cancelRun(runId: string): Promise<Record<string, any>>;
38
+ listApps(query?: Record<string, string | number | undefined>): Promise<Record<string, any>>;
39
+ getApp(packageId: number): Promise<Record<string, any>>;
40
+ releaseApp(uploadId: string): Promise<Record<string, any>>;
41
+ /** `signal` aborts the wait itself; the Run keeps going server-side unless the caller also cancels it. */
42
+ waitRun(runId: string, timeoutSeconds?: number, pollInterval?: number, onUpdate?: (run: Record<string, any>) => void, signal?: AbortSignal): Promise<Record<string, any>>;
43
+ request(method: string, route: string, options?: RequestOptions): Promise<Record<string, any>>;
44
+ uploadApp(apkPath: string, progress?: (current: number, total: number) => void): Promise<Record<string, any>>;
45
+ private directRequest;
46
+ private fetchRequest;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,KAAK,cAAc,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzI,MAAM,MAAM,SAAS,GAAG;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,qBAAa,YAAY;IAGX,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM;IAAE,QAAQ,CAAC,SAAS;IAAW,QAAQ,CAAC,eAAe;IAF5J,QAAQ,CAAC,SAAS,kBAA6B;IAC/C,QAAQ,CAAC,MAAM,qBAAgC;gBAC1B,OAAO,EAAE,MAAM,EAAmB,KAAK,EAAE,MAAM,EAAW,aAAa,CAAC,EAAE,MAAM,YAAA,EAAW,SAAS,SAAS,EAAW,eAAe,SAAU;IAQtK,YAAY,IAAwE,OAAO,CAAC,SAAS,CAAC;IACtG,mBAAmB;IACnB,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAC9B,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAC9D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM;IACnE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,MAAM;IACpB,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,QAAQ,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAM;IAMhE,MAAM,CAAC,SAAS,EAAE,MAAM;IAIxB,UAAU,CAAC,QAAQ,EAAE,MAAM;IAE3B,0GAA0G;IACpG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,SAAM,EAAE,YAAY,SAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAyBjK,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAkBlG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YA2CrG,aAAa;YAgBb,YAAY;CAe3B"}