ysagc-agent 0.6.0 → 0.7.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/README.md +80 -14
- package/dist/agent.d.ts +5 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +29 -2
- package/dist/agent.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +201 -13
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +38 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +132 -23
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/onboarding.d.ts +38 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +218 -0
- package/dist/onboarding.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.isInteractiveStdin = isInteractiveStdin;
|
|
40
|
+
exports.generateDeviceId = generateDeviceId;
|
|
41
|
+
exports.generateDeviceToken = generateDeviceToken;
|
|
42
|
+
exports.prompt = prompt;
|
|
43
|
+
exports.promptMasked = promptMasked;
|
|
44
|
+
exports.runOnboarding = runOnboarding;
|
|
45
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
46
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
47
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
48
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
49
|
+
const readline = __importStar(require("node:readline"));
|
|
50
|
+
const readlinePromises = __importStar(require("node:readline/promises"));
|
|
51
|
+
const config_1 = require("./config");
|
|
52
|
+
/** Whether stdin is an interactive terminal (used to avoid hanging in piped runs). */
|
|
53
|
+
function isInteractiveStdin() {
|
|
54
|
+
return process.stdin.isTTY === true;
|
|
55
|
+
}
|
|
56
|
+
/** A fresh, stable device identifier used for pairing with the platform. */
|
|
57
|
+
function generateDeviceId() {
|
|
58
|
+
return `device-${node_crypto_1.default.randomBytes(6).toString('hex')}`;
|
|
59
|
+
}
|
|
60
|
+
/** A fresh device token value sent in the hello frame. */
|
|
61
|
+
function generateDeviceToken() {
|
|
62
|
+
return node_crypto_1.default.randomBytes(18).toString('hex');
|
|
63
|
+
}
|
|
64
|
+
/** Prompt with an echoed line for interactive terminals. */
|
|
65
|
+
async function prompt(question, opts = {}) {
|
|
66
|
+
const rl = readlinePromises.createInterface({
|
|
67
|
+
input: process.stdin,
|
|
68
|
+
output: process.stdout,
|
|
69
|
+
});
|
|
70
|
+
try {
|
|
71
|
+
const label = opts.default !== undefined ? `${question} [${opts.default}]: ` : `${question}: `;
|
|
72
|
+
const answer = await rl.question(label);
|
|
73
|
+
return answer.trim();
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
rl.close();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Prompt for a secret WITHOUT echoing (masks each typed character as `*`).
|
|
81
|
+
* Uses raw-mode keypress handling — no external dependency.
|
|
82
|
+
*/
|
|
83
|
+
function promptMasked(question) {
|
|
84
|
+
const input = process.stdin;
|
|
85
|
+
const output = process.stdout;
|
|
86
|
+
return new Promise((resolve) => {
|
|
87
|
+
if (input.isTTY !== true) {
|
|
88
|
+
// Not a TTY: never hang. Return empty so onboarding can derive a token.
|
|
89
|
+
output.write(`${question}\n`);
|
|
90
|
+
resolve('');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
readline.emitKeypressEvents(input);
|
|
94
|
+
const setRaw = input.setRawMode;
|
|
95
|
+
if (typeof setRaw === 'function')
|
|
96
|
+
setRaw.call(input, true);
|
|
97
|
+
input.resume();
|
|
98
|
+
let value = '';
|
|
99
|
+
let done = false;
|
|
100
|
+
const finish = () => {
|
|
101
|
+
if (done)
|
|
102
|
+
return;
|
|
103
|
+
done = true;
|
|
104
|
+
input.removeListener('keypress', onKeypress);
|
|
105
|
+
if (typeof setRaw === 'function')
|
|
106
|
+
setRaw.call(input, false);
|
|
107
|
+
output.write('\n');
|
|
108
|
+
resolve(value);
|
|
109
|
+
};
|
|
110
|
+
const onKeypress = (str, key) => {
|
|
111
|
+
if (key) {
|
|
112
|
+
if (key.name === 'return' || key.name === 'enter') {
|
|
113
|
+
finish();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (key.name === 'backspace') {
|
|
117
|
+
if (value.length > 0) {
|
|
118
|
+
value = value.slice(0, -1);
|
|
119
|
+
output.write('\b \b');
|
|
120
|
+
}
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (key.ctrl && (key.name === 'c' || key.name === 'd')) {
|
|
124
|
+
finish();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (str && (!key || (!key.ctrl && !key.meta))) {
|
|
129
|
+
value += str;
|
|
130
|
+
output.write('*');
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
input.on('keypress', onKeypress);
|
|
134
|
+
output.write(question);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/** Resolve a root path, creating it if missing and rejecting non-directories. */
|
|
138
|
+
function resolveAndValidateRoot(raw) {
|
|
139
|
+
const t = (raw ?? '').trim();
|
|
140
|
+
let abs;
|
|
141
|
+
if (!t)
|
|
142
|
+
abs = process.cwd();
|
|
143
|
+
else if (t === '~')
|
|
144
|
+
abs = node_os_1.default.homedir();
|
|
145
|
+
else if (t.startsWith('~/') || t.startsWith('~\\'))
|
|
146
|
+
abs = node_path_1.default.join(node_os_1.default.homedir(), t.slice(2));
|
|
147
|
+
else
|
|
148
|
+
abs = node_path_1.default.resolve(t);
|
|
149
|
+
try {
|
|
150
|
+
if (!node_fs_1.default.existsSync(abs))
|
|
151
|
+
node_fs_1.default.mkdirSync(abs, { recursive: true });
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
throw new config_1.ConfigError(`无法创建工作区目录 ${abs}${err instanceof Error ? ` (${err.message})` : ''}`);
|
|
155
|
+
}
|
|
156
|
+
if (!node_fs_1.default.statSync(abs).isDirectory()) {
|
|
157
|
+
throw new config_1.ConfigError(`工作区路径不是目录: ${abs}`);
|
|
158
|
+
}
|
|
159
|
+
return abs;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Interactive first-run onboarding. Prompts for the platform address (server),
|
|
163
|
+
* the device token (masked) and the workspace root, then returns a fully
|
|
164
|
+
* resolved {@link AgentConfig}. Any value present in {@link inputs} (from CLI /
|
|
165
|
+
* env) is used as-is and its prompt is skipped; an empty device token falls back
|
|
166
|
+
* to a freshly-generated device id + token with a short pairing hint.
|
|
167
|
+
*/
|
|
168
|
+
async function runOnboarding(inputs = {}) {
|
|
169
|
+
const out = process.stdout;
|
|
170
|
+
// 1) Platform address (server URL) — http(s) normalised to ws(s).
|
|
171
|
+
let server;
|
|
172
|
+
if (inputs.server && inputs.server.trim() !== '') {
|
|
173
|
+
server = (0, config_1.normalizeServerUrl)(inputs.server);
|
|
174
|
+
out.write(`\n平台地址: ${server}\n`);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const raw = await prompt('平台地址', { default: config_1.DEFAULT_SERVER });
|
|
178
|
+
server = (0, config_1.normalizeServerUrl)(raw || config_1.DEFAULT_SERVER);
|
|
179
|
+
}
|
|
180
|
+
// 2) Device token — masked. Empty => derive a fresh device id + token.
|
|
181
|
+
let token = (inputs.token ?? '').trim();
|
|
182
|
+
let deviceId = (inputs.deviceId ?? '').trim() || undefined;
|
|
183
|
+
if (!token) {
|
|
184
|
+
out.write('\n从工作台的『如何连接』复制你的设备 Token 粘贴到这里\n');
|
|
185
|
+
token = await promptMasked('设备 Token(留空则以本机设备 ID 配对): ');
|
|
186
|
+
if (!token) {
|
|
187
|
+
deviceId = deviceId ?? generateDeviceId();
|
|
188
|
+
token = generateDeviceToken();
|
|
189
|
+
out.write('\n未提供设备 Token。');
|
|
190
|
+
out.write(`已生成本机设备 ID: ${deviceId}\n`);
|
|
191
|
+
out.write('请到平台工作台的『设备』页绑定该设备 ID(并复制 Token 填入)后重试。\n');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (!deviceId)
|
|
195
|
+
deviceId = generateDeviceId();
|
|
196
|
+
// 3) Workspace root — default cwd, validated (created if missing).
|
|
197
|
+
let root;
|
|
198
|
+
if (inputs.root && inputs.root.trim() !== '') {
|
|
199
|
+
root = resolveAndValidateRoot(inputs.root);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
const raw = await prompt('工作区目录', { default: process.cwd() });
|
|
203
|
+
root = resolveAndValidateRoot(raw || process.cwd());
|
|
204
|
+
}
|
|
205
|
+
return (0, config_1.loadConfig)({
|
|
206
|
+
server,
|
|
207
|
+
token,
|
|
208
|
+
deviceId,
|
|
209
|
+
root,
|
|
210
|
+
mode: inputs.mode,
|
|
211
|
+
preset: inputs.preset,
|
|
212
|
+
web: inputs.web,
|
|
213
|
+
timeoutMs: inputs.timeoutMs,
|
|
214
|
+
maxBytes: inputs.maxBytes,
|
|
215
|
+
logLevel: inputs.logLevel,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ysagc-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Local execution agent for ysagc: a state-agnostic, safety-bounded worker that connects to a platform backend over WebSocket, executes tool instructions inside an authorization root, and reports results back.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|