autoglm.js 0.0.1
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.
- package/LICENSE.md +230 -0
- package/README.md +283 -0
- package/dist/check-Ox_8ktAc.mjs +17887 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +372 -0
- package/dist/index.d.mts +42 -0
- package/dist/index.mjs +36 -0
- package/dist/prompt-Bq8BVVJJ.mjs +847 -0
- package/package.json +82 -0
- package/schema/agent-config.schema.json +69 -0
package/dist/cli.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/dist/cli.mjs
ADDED
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { _ as __commonJSMin, c as Se, d as xe, f as pD, g as cyan, h as bold, i as spinner_default, l as he, m as setAgentConfig, n as checkSystemRequirements, o as Ce, p as $t, r as PhoneAgent, s as Ie, t as checkModelApi, u as ve, v as __toESM } from "./check-Ox_8ktAc.mjs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import process from "node:process";
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import cfonts from "cfonts";
|
|
7
|
+
|
|
8
|
+
//#region node_modules/.pnpm/minimist@1.2.8/node_modules/minimist/index.js
|
|
9
|
+
var require_minimist = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
10
|
+
function hasKey(obj, keys) {
|
|
11
|
+
var o = obj;
|
|
12
|
+
keys.slice(0, -1).forEach(function(key) {
|
|
13
|
+
o = o[key] || {};
|
|
14
|
+
});
|
|
15
|
+
return keys[keys.length - 1] in o;
|
|
16
|
+
}
|
|
17
|
+
function isNumber(x) {
|
|
18
|
+
if (typeof x === "number") return true;
|
|
19
|
+
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
|
20
|
+
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
21
|
+
}
|
|
22
|
+
function isConstructorOrProto(obj, key) {
|
|
23
|
+
return key === "constructor" && typeof obj[key] === "function" || key === "__proto__";
|
|
24
|
+
}
|
|
25
|
+
module.exports = function(args, opts) {
|
|
26
|
+
if (!opts) opts = {};
|
|
27
|
+
var flags = {
|
|
28
|
+
bools: {},
|
|
29
|
+
strings: {},
|
|
30
|
+
unknownFn: null
|
|
31
|
+
};
|
|
32
|
+
if (typeof opts.unknown === "function") flags.unknownFn = opts.unknown;
|
|
33
|
+
if (typeof opts.boolean === "boolean" && opts.boolean) flags.allBools = true;
|
|
34
|
+
else [].concat(opts.boolean).filter(Boolean).forEach(function(key$1) {
|
|
35
|
+
flags.bools[key$1] = true;
|
|
36
|
+
});
|
|
37
|
+
var aliases = {};
|
|
38
|
+
function aliasIsBoolean(key$1) {
|
|
39
|
+
return aliases[key$1].some(function(x) {
|
|
40
|
+
return flags.bools[x];
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
Object.keys(opts.alias || {}).forEach(function(key$1) {
|
|
44
|
+
aliases[key$1] = [].concat(opts.alias[key$1]);
|
|
45
|
+
aliases[key$1].forEach(function(x) {
|
|
46
|
+
aliases[x] = [key$1].concat(aliases[key$1].filter(function(y) {
|
|
47
|
+
return x !== y;
|
|
48
|
+
}));
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
[].concat(opts.string).filter(Boolean).forEach(function(key$1) {
|
|
52
|
+
flags.strings[key$1] = true;
|
|
53
|
+
if (aliases[key$1]) [].concat(aliases[key$1]).forEach(function(k) {
|
|
54
|
+
flags.strings[k] = true;
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
var defaults = opts.default || {};
|
|
58
|
+
var argv = { _: [] };
|
|
59
|
+
function argDefined(key$1, arg$1) {
|
|
60
|
+
return flags.allBools && /^--[^=]+$/.test(arg$1) || flags.strings[key$1] || flags.bools[key$1] || aliases[key$1];
|
|
61
|
+
}
|
|
62
|
+
function setKey(obj, keys, value$1) {
|
|
63
|
+
var o = obj;
|
|
64
|
+
for (var i$1 = 0; i$1 < keys.length - 1; i$1++) {
|
|
65
|
+
var key$1 = keys[i$1];
|
|
66
|
+
if (isConstructorOrProto(o, key$1)) return;
|
|
67
|
+
if (o[key$1] === void 0) o[key$1] = {};
|
|
68
|
+
if (o[key$1] === Object.prototype || o[key$1] === Number.prototype || o[key$1] === String.prototype) o[key$1] = {};
|
|
69
|
+
if (o[key$1] === Array.prototype) o[key$1] = [];
|
|
70
|
+
o = o[key$1];
|
|
71
|
+
}
|
|
72
|
+
var lastKey = keys[keys.length - 1];
|
|
73
|
+
if (isConstructorOrProto(o, lastKey)) return;
|
|
74
|
+
if (o === Object.prototype || o === Number.prototype || o === String.prototype) o = {};
|
|
75
|
+
if (o === Array.prototype) o = [];
|
|
76
|
+
if (o[lastKey] === void 0 || flags.bools[lastKey] || typeof o[lastKey] === "boolean") o[lastKey] = value$1;
|
|
77
|
+
else if (Array.isArray(o[lastKey])) o[lastKey].push(value$1);
|
|
78
|
+
else o[lastKey] = [o[lastKey], value$1];
|
|
79
|
+
}
|
|
80
|
+
function setArg(key$1, val, arg$1) {
|
|
81
|
+
if (arg$1 && flags.unknownFn && !argDefined(key$1, arg$1)) {
|
|
82
|
+
if (flags.unknownFn(arg$1) === false) return;
|
|
83
|
+
}
|
|
84
|
+
var value$1 = !flags.strings[key$1] && isNumber(val) ? Number(val) : val;
|
|
85
|
+
setKey(argv, key$1.split("."), value$1);
|
|
86
|
+
(aliases[key$1] || []).forEach(function(x) {
|
|
87
|
+
setKey(argv, x.split("."), value$1);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
Object.keys(flags.bools).forEach(function(key$1) {
|
|
91
|
+
setArg(key$1, defaults[key$1] === void 0 ? false : defaults[key$1]);
|
|
92
|
+
});
|
|
93
|
+
var notFlags = [];
|
|
94
|
+
if (args.indexOf("--") !== -1) {
|
|
95
|
+
notFlags = args.slice(args.indexOf("--") + 1);
|
|
96
|
+
args = args.slice(0, args.indexOf("--"));
|
|
97
|
+
}
|
|
98
|
+
for (var i = 0; i < args.length; i++) {
|
|
99
|
+
var arg = args[i];
|
|
100
|
+
var key;
|
|
101
|
+
var next;
|
|
102
|
+
if (/^--.+=/.test(arg)) {
|
|
103
|
+
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
104
|
+
key = m[1];
|
|
105
|
+
var value = m[2];
|
|
106
|
+
if (flags.bools[key]) value = value !== "false";
|
|
107
|
+
setArg(key, value, arg);
|
|
108
|
+
} else if (/^--no-.+/.test(arg)) {
|
|
109
|
+
key = arg.match(/^--no-(.+)/)[1];
|
|
110
|
+
setArg(key, false, arg);
|
|
111
|
+
} else if (/^--.+/.test(arg)) {
|
|
112
|
+
key = arg.match(/^--(.+)/)[1];
|
|
113
|
+
next = args[i + 1];
|
|
114
|
+
if (next !== void 0 && !/^(-|--)[^-]/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
115
|
+
setArg(key, next, arg);
|
|
116
|
+
i += 1;
|
|
117
|
+
} else if (/^(true|false)$/.test(next)) {
|
|
118
|
+
setArg(key, next === "true", arg);
|
|
119
|
+
i += 1;
|
|
120
|
+
} else setArg(key, flags.strings[key] ? "" : true, arg);
|
|
121
|
+
} else if (/^-[^-]+/.test(arg)) {
|
|
122
|
+
var letters = arg.slice(1, -1).split("");
|
|
123
|
+
var broken = false;
|
|
124
|
+
for (var j = 0; j < letters.length; j++) {
|
|
125
|
+
next = arg.slice(j + 2);
|
|
126
|
+
if (next === "-") {
|
|
127
|
+
setArg(letters[j], next, arg);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (/[A-Za-z]/.test(letters[j]) && next[0] === "=") {
|
|
131
|
+
setArg(letters[j], next.slice(1), arg);
|
|
132
|
+
broken = true;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
136
|
+
setArg(letters[j], next, arg);
|
|
137
|
+
broken = true;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
if (letters[j + 1] && letters[j + 1].match(/\W/)) {
|
|
141
|
+
setArg(letters[j], arg.slice(j + 2), arg);
|
|
142
|
+
broken = true;
|
|
143
|
+
break;
|
|
144
|
+
} else setArg(letters[j], flags.strings[letters[j]] ? "" : true, arg);
|
|
145
|
+
}
|
|
146
|
+
key = arg.slice(-1)[0];
|
|
147
|
+
if (!broken && key !== "-") if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
148
|
+
setArg(key, args[i + 1], arg);
|
|
149
|
+
i += 1;
|
|
150
|
+
} else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) {
|
|
151
|
+
setArg(key, args[i + 1] === "true", arg);
|
|
152
|
+
i += 1;
|
|
153
|
+
} else setArg(key, flags.strings[key] ? "" : true, arg);
|
|
154
|
+
} else {
|
|
155
|
+
if (!flags.unknownFn || flags.unknownFn(arg) !== false) argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));
|
|
156
|
+
if (opts.stopEarly) {
|
|
157
|
+
argv._.push.apply(argv._, args.slice(i + 1));
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
Object.keys(defaults).forEach(function(k) {
|
|
163
|
+
if (!hasKey(argv, k.split("."))) {
|
|
164
|
+
setKey(argv, k.split("."), defaults[k]);
|
|
165
|
+
(aliases[k] || []).forEach(function(x) {
|
|
166
|
+
setKey(argv, x.split("."), defaults[k]);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
if (opts["--"]) argv["--"] = notFlags.slice();
|
|
171
|
+
else notFlags.forEach(function(k) {
|
|
172
|
+
argv._.push(k);
|
|
173
|
+
});
|
|
174
|
+
return argv;
|
|
175
|
+
};
|
|
176
|
+
}));
|
|
177
|
+
|
|
178
|
+
//#endregion
|
|
179
|
+
//#region package.json
|
|
180
|
+
var import_minimist = /* @__PURE__ */ __toESM(require_minimist(), 1);
|
|
181
|
+
var version = "0.0.1";
|
|
182
|
+
|
|
183
|
+
//#endregion
|
|
184
|
+
//#region src/cli/helpMessage.ts
|
|
185
|
+
const helpMessage = `
|
|
186
|
+
AutoGLM.js CLI v${version}
|
|
187
|
+
|
|
188
|
+
Usage:
|
|
189
|
+
$ autoglm [options] <message>
|
|
190
|
+
|
|
191
|
+
Options:
|
|
192
|
+
--help, -h Show this help message
|
|
193
|
+
--config, -c Path to configuration file (JSON format)
|
|
194
|
+
`;
|
|
195
|
+
|
|
196
|
+
//#endregion
|
|
197
|
+
//#region src/cli/config/loader.ts
|
|
198
|
+
/**
|
|
199
|
+
* 加载并解析配置文件
|
|
200
|
+
*/
|
|
201
|
+
function loadConfigFile(configPath) {
|
|
202
|
+
let resolvedPath;
|
|
203
|
+
if (path.isAbsolute(configPath)) resolvedPath = configPath;
|
|
204
|
+
else resolvedPath = path.resolve(process.cwd(), configPath);
|
|
205
|
+
if (!fs.existsSync(resolvedPath)) throw new Error($t("config.errors.fileNotFound") + resolvedPath);
|
|
206
|
+
const ext = path.extname(resolvedPath).toLowerCase();
|
|
207
|
+
if (ext !== ".json") throw new Error($t("config.errors.invalidFormat") + ext);
|
|
208
|
+
try {
|
|
209
|
+
const fileContent = fs.readFileSync(resolvedPath, "utf-8");
|
|
210
|
+
return JSON.parse(fileContent);
|
|
211
|
+
} catch (error) {
|
|
212
|
+
throw new Error($t("config.errors.genericReadError") + (error instanceof Error ? error.message : String(error)));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region src/cli/action.ts
|
|
218
|
+
const actions = {
|
|
219
|
+
help: () => {
|
|
220
|
+
console.log(helpMessage);
|
|
221
|
+
process.exit(0);
|
|
222
|
+
},
|
|
223
|
+
config: (configPath) => {
|
|
224
|
+
return loadConfigFile(configPath);
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
function commandAction(argv) {
|
|
228
|
+
if (argv.help) actions.help();
|
|
229
|
+
if (argv.config) return actions.config(argv.config);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
//#endregion
|
|
233
|
+
//#region src/cli/banner.ts
|
|
234
|
+
function printBanner() {
|
|
235
|
+
cfonts.say("AutoGLM.js", {
|
|
236
|
+
font: "block",
|
|
237
|
+
align: "left",
|
|
238
|
+
colors: ["blue", "cyan"],
|
|
239
|
+
background: "transparent",
|
|
240
|
+
letterSpacing: 1,
|
|
241
|
+
lineHeight: 1,
|
|
242
|
+
space: true,
|
|
243
|
+
maxLength: "0",
|
|
244
|
+
gradient: false,
|
|
245
|
+
independentGradient: false,
|
|
246
|
+
transitionGradient: false,
|
|
247
|
+
rawMode: false,
|
|
248
|
+
env: "node"
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
//#endregion
|
|
253
|
+
//#region src/cli/config/prompts/agent.ts
|
|
254
|
+
async function maxSteps() {
|
|
255
|
+
const result = await he({
|
|
256
|
+
message: $t("prompt.maxSteps"),
|
|
257
|
+
placeholder: "100",
|
|
258
|
+
defaultValue: "100"
|
|
259
|
+
});
|
|
260
|
+
return typeof result === "string" ? Number.parseInt(result, 10) : 100;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
//#endregion
|
|
264
|
+
//#region src/cli/config/prompts/cancel.ts
|
|
265
|
+
function printCancel() {
|
|
266
|
+
xe($t("prompt.cancel"));
|
|
267
|
+
process.exit(0);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
//#endregion
|
|
271
|
+
//#region src/cli/config/prompts/language.ts
|
|
272
|
+
var language_default = async () => {
|
|
273
|
+
const lang = await ve({
|
|
274
|
+
message: "Please select the language:",
|
|
275
|
+
options: [{
|
|
276
|
+
value: "cn",
|
|
277
|
+
label: "中文"
|
|
278
|
+
}, {
|
|
279
|
+
value: "en",
|
|
280
|
+
label: "English"
|
|
281
|
+
}]
|
|
282
|
+
});
|
|
283
|
+
setAgentConfig({ lang });
|
|
284
|
+
return lang;
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
//#endregion
|
|
288
|
+
//#region src/cli/config/prompts/model.ts
|
|
289
|
+
function model() {
|
|
290
|
+
return he({
|
|
291
|
+
message: $t("prompt.model"),
|
|
292
|
+
placeholder: "autoglm-phone",
|
|
293
|
+
defaultValue: "autoglm-phone"
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
function baseUrl() {
|
|
297
|
+
return he({
|
|
298
|
+
message: $t("prompt.baseURL"),
|
|
299
|
+
placeholder: "https://open.bigmodel.cn/api/paas/v4/",
|
|
300
|
+
defaultValue: "https://open.bigmodel.cn/api/paas/v4/"
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
function apiKey() {
|
|
304
|
+
return he({
|
|
305
|
+
message: $t("prompt.apiKey"),
|
|
306
|
+
placeholder: ""
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
//#endregion
|
|
311
|
+
//#region src/cli/config/prompts/index.ts
|
|
312
|
+
async function getConfig() {
|
|
313
|
+
Ie(cyan(`Config Your AutoGLM.js`));
|
|
314
|
+
const config = await Ce({
|
|
315
|
+
lang: language_default,
|
|
316
|
+
model,
|
|
317
|
+
baseUrl,
|
|
318
|
+
apiKey,
|
|
319
|
+
maxSteps
|
|
320
|
+
}, { onCancel() {
|
|
321
|
+
printCancel();
|
|
322
|
+
} });
|
|
323
|
+
spinner_default.start($t("prompt.checking"));
|
|
324
|
+
return config;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
//#endregion
|
|
328
|
+
//#region src/cli.ts
|
|
329
|
+
/**
|
|
330
|
+
* AutoGLM.js CLI
|
|
331
|
+
*/
|
|
332
|
+
async function main() {
|
|
333
|
+
printBanner();
|
|
334
|
+
const config = commandAction((0, import_minimist.default)(process.argv.slice(2), { alias: {
|
|
335
|
+
help: "h",
|
|
336
|
+
config: "c"
|
|
337
|
+
} })) || await getConfig();
|
|
338
|
+
setAgentConfig({
|
|
339
|
+
...config,
|
|
340
|
+
mode: "cli"
|
|
341
|
+
});
|
|
342
|
+
await checkSystemRequirements();
|
|
343
|
+
await checkModelApi();
|
|
344
|
+
if (!config) {
|
|
345
|
+
spinner_default.stop($t("prompt.checking"));
|
|
346
|
+
Se($t("prompt.done"));
|
|
347
|
+
}
|
|
348
|
+
const agent = new PhoneAgent();
|
|
349
|
+
Ie(bold(cyan(`🤖 ${$t("prompt.interactiveMode")}`)));
|
|
350
|
+
let isFirstTask = true;
|
|
351
|
+
while (true) {
|
|
352
|
+
const task = await he({
|
|
353
|
+
message: bold(`💬 ${$t("prompt.task")}`),
|
|
354
|
+
placeholder: isFirstTask ? $t("prompt.placeholder") : void 0
|
|
355
|
+
});
|
|
356
|
+
if (pD(task)) {
|
|
357
|
+
xe($t("prompt.cancel"));
|
|
358
|
+
process.exit(0);
|
|
359
|
+
}
|
|
360
|
+
if (task) {
|
|
361
|
+
await agent.run(task);
|
|
362
|
+
isFirstTask = false;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
main().catch((error) => {
|
|
367
|
+
console.error("CLI执行错误:", error);
|
|
368
|
+
process.exit(1);
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
//#endregion
|
|
372
|
+
export { };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as mitt0 from "mitt";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/events.d.ts
|
|
4
|
+
interface EventData {
|
|
5
|
+
message: any;
|
|
6
|
+
time: string;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/config/types.d.ts
|
|
10
|
+
interface AgentConfigType {
|
|
11
|
+
mode: 'cli' | 'api';
|
|
12
|
+
maxSteps: number;
|
|
13
|
+
lang: 'cn' | 'en';
|
|
14
|
+
deviceId?: string;
|
|
15
|
+
systemPrompt?: string;
|
|
16
|
+
baseUrl: string;
|
|
17
|
+
apiKey: string;
|
|
18
|
+
model: string;
|
|
19
|
+
maxTokens: number;
|
|
20
|
+
temperature: number;
|
|
21
|
+
topP: number;
|
|
22
|
+
frequencyPenalty: number;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/index.d.ts
|
|
26
|
+
declare class AutoGLM {
|
|
27
|
+
private phoneAgent;
|
|
28
|
+
private constructor();
|
|
29
|
+
static createAgent(config: AgentConfigType): Promise<AutoGLM>;
|
|
30
|
+
run(task: string): mitt0.Emitter<{
|
|
31
|
+
thinking: EventData;
|
|
32
|
+
action: EventData;
|
|
33
|
+
task_complete: EventData;
|
|
34
|
+
}>;
|
|
35
|
+
checkModelApi(): Promise<void>;
|
|
36
|
+
checkSystemRequirements(): Promise<{
|
|
37
|
+
success: boolean;
|
|
38
|
+
message: string;
|
|
39
|
+
} | undefined>;
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { AutoGLM };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { a as emitter, m as setAgentConfig, n as checkSystemRequirements, r as PhoneAgent, t as checkModelApi } from "./check-Ox_8ktAc.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/index.ts
|
|
4
|
+
var AutoGLM = class AutoGLM {
|
|
5
|
+
phoneAgent;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
config && setAgentConfig({
|
|
8
|
+
...config,
|
|
9
|
+
mode: "api"
|
|
10
|
+
});
|
|
11
|
+
this.phoneAgent = new PhoneAgent();
|
|
12
|
+
}
|
|
13
|
+
static async createAgent(config) {
|
|
14
|
+
setAgentConfig({
|
|
15
|
+
...config,
|
|
16
|
+
mode: "api"
|
|
17
|
+
});
|
|
18
|
+
const instance = new AutoGLM();
|
|
19
|
+
await checkSystemRequirements();
|
|
20
|
+
await checkModelApi();
|
|
21
|
+
return instance;
|
|
22
|
+
}
|
|
23
|
+
run(task) {
|
|
24
|
+
this.phoneAgent.run(task);
|
|
25
|
+
return emitter;
|
|
26
|
+
}
|
|
27
|
+
checkModelApi() {
|
|
28
|
+
return checkModelApi();
|
|
29
|
+
}
|
|
30
|
+
checkSystemRequirements() {
|
|
31
|
+
return checkSystemRequirements();
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { AutoGLM };
|