aweshare 0.3.4 → 0.3.6
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 +39 -34
- package/apps/agent/dist/cli.js +275 -217
- package/apps/agent/dist/cli.js.map +1 -1
- package/apps/agent/dist/connection.js +2 -1
- package/apps/agent/dist/connection.js.map +1 -1
- package/apps/agent/dist/doctor.js +9 -5
- package/apps/agent/dist/doctor.js.map +1 -1
- package/apps/agent/dist/hub.d.ts +35 -0
- package/apps/agent/dist/hub.js +145 -0
- package/apps/agent/dist/hub.js.map +1 -0
- package/apps/hub/dist/admin.js +4 -11
- package/apps/hub/dist/admin.js.map +1 -1
- package/apps/hub/dist/auth.js +2 -2
- package/apps/hub/dist/auth.js.map +1 -1
- package/apps/hub/dist/cli.js +141 -200
- package/apps/hub/dist/cli.js.map +1 -1
- package/apps/hub/dist/db.d.ts +3 -0
- package/apps/hub/dist/db.js +2 -3
- package/apps/hub/dist/db.js.map +1 -1
- package/apps/hub/dist/invites.js +2 -2
- package/apps/hub/dist/invites.js.map +1 -1
- package/apps/hub/dist/server.js +6 -1
- package/apps/hub/dist/server.js.map +1 -1
- package/apps/hub/dist/table.d.ts +5 -31
- package/apps/hub/dist/table.js +17 -69
- package/apps/hub/dist/table.js.map +1 -1
- package/apps/hub/dist/tunnel.js +1 -1
- package/apps/hub/dist/tunnel.js.map +1 -1
- package/bin/aweshare.mjs +7 -7
- package/package.json +1 -1
package/apps/agent/dist/cli.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
// Command set: init, join, config (path|show|edit), doctor, start, grant,
|
|
3
|
+
// revoke, list. `config init` remains as a hidden redirect to `init`.
|
|
4
|
+
// Everything that talks to the hub goes through src/hub.ts (one UA, one
|
|
5
|
+
// timeout policy, one error shape).
|
|
2
6
|
import { spawn } from 'node:child_process';
|
|
3
7
|
import { existsSync, readFileSync } from 'node:fs';
|
|
4
8
|
import { join } from 'node:path';
|
|
@@ -7,38 +11,95 @@ import pino from 'pino';
|
|
|
7
11
|
import { agentDir, applyJoinToConfig, CONFIG_TEMPLATE, loadAgentConfig, redactConfig, SECRETS_TEMPLATE, writeFileAtomic, } from './config.js';
|
|
8
12
|
import { AgentConnection } from './connection.js';
|
|
9
13
|
import { runDoctor } from './doctor.js';
|
|
14
|
+
import { assertWireCompatible, errorMessage, hostIsLocal, plainHttpHost, probeHub, producerApi, redeemInvite, } from './hub.js';
|
|
10
15
|
import { renderGrants } from './table.js';
|
|
11
16
|
const VERSION = JSON.parse(readFileSync(new URL('../../../package.json', import.meta.url), 'utf8')).version;
|
|
12
|
-
|
|
17
|
+
// One-liners only; flags per command live in their own -h, everything else in README.
|
|
18
|
+
const USAGE = `Usage: aweshare agent [OPTIONS] COMMAND [ARGS]...
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
Share local/authorized AI capacity through an aweshare hub.
|
|
15
21
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
redeem an invite into a producer token
|
|
20
|
-
(unbound codes ask for --name/--email)
|
|
22
|
+
Options:
|
|
23
|
+
-v, --version Show the version and exit.
|
|
24
|
+
-h, --help Show this message and exit.
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
config edit
|
|
26
|
-
|
|
26
|
+
Commands:
|
|
27
|
+
init Write the config template and empty secrets.
|
|
28
|
+
join Redeem an invite code into a producer token.
|
|
29
|
+
config Show or edit the config (path | show | edit).
|
|
30
|
+
doctor Pre-flight checks: config, backends, hub.
|
|
31
|
+
start Connect, register offerings, relay requests.
|
|
32
|
+
grant Allow a consumer to call your offering.
|
|
33
|
+
revoke Remove a grant.
|
|
34
|
+
list List grants for your namespace.`;
|
|
35
|
+
const COMMAND_HELP = {
|
|
36
|
+
init: `Usage: aweshare agent init [OPTIONS]
|
|
27
37
|
|
|
28
|
-
|
|
29
|
-
start connect, register offerings, relay
|
|
30
|
-
doctor pre-flight checks (direct replay first, hub last)
|
|
38
|
+
Write the config template and empty secrets (kept if they exist).
|
|
31
39
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
Options:
|
|
41
|
+
--hub URL Pre-fill the hub URL in the template.
|
|
42
|
+
--token ASP Pre-fill a producer token (asp_...) in the template.
|
|
43
|
+
-h, --help Show this message and exit.`,
|
|
44
|
+
join: `Usage: aweshare agent join [OPTIONS]
|
|
37
45
|
|
|
38
|
-
|
|
46
|
+
Redeem an invite code into a producer token and write the config.
|
|
47
|
+
Probes the hub first (reachable, a real hub, wire-compatible) — the code
|
|
48
|
+
only burns after the probe passes.
|
|
39
49
|
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
Options:
|
|
51
|
+
--hub URL The hub to join (required, http(s) URL).
|
|
52
|
+
--code CODE The invite code from the hub operator (asi_..., required).
|
|
53
|
+
--name NAME Your producer name (unbound codes only — bound ones ignore it).
|
|
54
|
+
--email EMAIL Your contact email (unbound codes only).
|
|
55
|
+
--allow-http Proceed with a plain-HTTP hub outside your LAN (the producer
|
|
56
|
+
token would cross the network unencrypted).
|
|
57
|
+
-h, --help Show this message and exit.`,
|
|
58
|
+
config: `Usage: aweshare agent config [COMMAND]
|
|
59
|
+
|
|
60
|
+
Show or edit the config (default: path).
|
|
61
|
+
|
|
62
|
+
Commands:
|
|
63
|
+
path Print the config path.
|
|
64
|
+
show Show the config with secrets redacted.
|
|
65
|
+
edit Open the config in $VISUAL, $EDITOR or vi.`,
|
|
66
|
+
doctor: `Usage: aweshare agent doctor
|
|
67
|
+
|
|
68
|
+
Pre-flight checks: config validity, backend reachability, hub connectivity.
|
|
69
|
+
|
|
70
|
+
Options:
|
|
71
|
+
-h, --help Show this message and exit.`,
|
|
72
|
+
start: `Usage: aweshare agent start
|
|
73
|
+
|
|
74
|
+
Connect to the hub, register offerings, relay requests (runs in the foreground).
|
|
75
|
+
|
|
76
|
+
Options:
|
|
77
|
+
-h, --help Show this message and exit.`,
|
|
78
|
+
grant: `Usage: aweshare agent grant [OPTIONS]
|
|
79
|
+
|
|
80
|
+
Allow a consumer to call your offering.
|
|
81
|
+
|
|
82
|
+
Options:
|
|
83
|
+
--alias ALIAS The offering alias, e.g. your-name/model (required).
|
|
84
|
+
--consumer NAME Who may call it (required).
|
|
85
|
+
--expires-in D Optional expiry: 90s, 30m, 12h or 7d.
|
|
86
|
+
-h, --help Show this message and exit.`,
|
|
87
|
+
revoke: `Usage: aweshare agent revoke [OPTIONS]
|
|
88
|
+
|
|
89
|
+
Remove a grant.
|
|
90
|
+
|
|
91
|
+
Options:
|
|
92
|
+
--alias ALIAS The offering alias (required).
|
|
93
|
+
--consumer NAME Whose grant to remove (required).
|
|
94
|
+
-h, --help Show this message and exit.`,
|
|
95
|
+
list: `Usage: aweshare agent list [OPTIONS]
|
|
96
|
+
|
|
97
|
+
List grants for your namespace.
|
|
98
|
+
|
|
99
|
+
Options:
|
|
100
|
+
--json Print the raw API response instead of a table.
|
|
101
|
+
-h, --help Show this message and exit.`,
|
|
102
|
+
};
|
|
42
103
|
function parseFlags(argv) {
|
|
43
104
|
const positional = [];
|
|
44
105
|
const flags = new Map();
|
|
@@ -66,13 +127,11 @@ function fail(message) {
|
|
|
66
127
|
console.error(`error: ${message}`);
|
|
67
128
|
process.exit(1);
|
|
68
129
|
}
|
|
69
|
-
/**
|
|
70
|
-
function
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
return String(err);
|
|
130
|
+
/** Only `config` takes a positional (its subcommand); every other command is flags-only. */
|
|
131
|
+
function noPositionals(cmd, positional) {
|
|
132
|
+
const arg = positional[0];
|
|
133
|
+
if (arg)
|
|
134
|
+
fail(`unexpected argument '${arg}' — this command takes flags only (see: aweshare agent ${cmd} -h)`);
|
|
76
135
|
}
|
|
77
136
|
/** Parse a human duration like 90s, 30m, 12h, 7d into milliseconds. */
|
|
78
137
|
function parseDuration(raw) {
|
|
@@ -82,6 +141,170 @@ function parseDuration(raw) {
|
|
|
82
141
|
const unit = { s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[m[2]];
|
|
83
142
|
return Number(m[1]) * unit;
|
|
84
143
|
}
|
|
144
|
+
// --- commands (one function each; hub errors bubble to main's catch) ---
|
|
145
|
+
async function runInit(flags, dir) {
|
|
146
|
+
const configPath = join(dir, 'config.toml');
|
|
147
|
+
const secretsPath = join(dir, 'secrets.json');
|
|
148
|
+
if (!existsSync(configPath)) {
|
|
149
|
+
let template = CONFIG_TEMPLATE;
|
|
150
|
+
if (flags.get('hub')) {
|
|
151
|
+
template = template.replace('hubUrl = "http://127.0.0.1:8787"', `hubUrl = "${flags.get('hub')}"`);
|
|
152
|
+
}
|
|
153
|
+
if (flags.get('token')) {
|
|
154
|
+
template = template.replace('token = "asp_PASTE_PRODUCER_TOKEN"', `token = "${flags.get('token')}"`);
|
|
155
|
+
}
|
|
156
|
+
writeFileAtomic(configPath, template, 0o600);
|
|
157
|
+
console.log(`wrote ${configPath}`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(`exists, kept: ${configPath}`);
|
|
161
|
+
}
|
|
162
|
+
if (!existsSync(secretsPath)) {
|
|
163
|
+
writeFileAtomic(secretsPath, SECRETS_TEMPLATE, 0o600);
|
|
164
|
+
console.log(`wrote ${secretsPath}`);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
console.log(`exists, kept: ${secretsPath}`);
|
|
168
|
+
}
|
|
169
|
+
console.log('\nnext steps:');
|
|
170
|
+
console.log(' 1. edit config.toml: backends + offerings (namespace must be your producer name)');
|
|
171
|
+
console.log(' 2. put upstream keys in secrets.json (they never leave this machine)');
|
|
172
|
+
console.log(' 3. aweshare agent doctor # find the first failing link');
|
|
173
|
+
console.log(' 4. aweshare agent grant --alias YOU/model --consumer NAME');
|
|
174
|
+
console.log(' 5. aweshare agent start');
|
|
175
|
+
}
|
|
176
|
+
/** Refuse silent plain-HTTP pairing with a non-local hub: the producer token
|
|
177
|
+
* would cross the network unencrypted. */
|
|
178
|
+
function guardPlainHttp(hub, flags) {
|
|
179
|
+
const host = plainHttpHost(hub);
|
|
180
|
+
if (host === null || hostIsLocal(host))
|
|
181
|
+
return;
|
|
182
|
+
if (flags.get('allow-http') !== 'true') {
|
|
183
|
+
fail(`${hub} uses plain HTTP — the producer token would cross the network unencrypted\n` +
|
|
184
|
+
'fix: use an https:// hub URL (e.g. via a Cloudflare tunnel) or an http:// address on your LAN, or pass --allow-http to proceed anyway');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
async function runJoin(flags, dir) {
|
|
188
|
+
const hub = flags.get('hub');
|
|
189
|
+
const code = flags.get('code');
|
|
190
|
+
if (!hub || !/^https?:\/\//.test(hub))
|
|
191
|
+
fail('--hub must be an http(s) URL');
|
|
192
|
+
if (!code || !INVITE_PATTERN.test(code))
|
|
193
|
+
fail('--code must be an invite code (asi_...)');
|
|
194
|
+
guardPlainHttp(hub, flags);
|
|
195
|
+
// Probe before burning the one-time invite; hub errors below carry the fix.
|
|
196
|
+
const info = await probeHub(hub);
|
|
197
|
+
assertWireCompatible(hub, info);
|
|
198
|
+
// --name/--email ride along for unbound codes; bound codes ignore them
|
|
199
|
+
const redeemBody = { code };
|
|
200
|
+
if (flags.get('name'))
|
|
201
|
+
redeemBody.name = flags.get('name');
|
|
202
|
+
if (flags.get('email'))
|
|
203
|
+
redeemBody.email = flags.get('email');
|
|
204
|
+
const { name, token } = await redeemInvite(hub, redeemBody);
|
|
205
|
+
const configPath = join(dir, 'config.toml');
|
|
206
|
+
const secretsPath = join(dir, 'secrets.json');
|
|
207
|
+
if (!existsSync(configPath)) {
|
|
208
|
+
const filled = applyJoinToConfig(CONFIG_TEMPLATE, hub, token) ?? CONFIG_TEMPLATE;
|
|
209
|
+
writeFileAtomic(configPath, filled, 0o600);
|
|
210
|
+
console.log(`wrote ${configPath}`);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
const patched = applyJoinToConfig(readFileSync(configPath, 'utf8'), hub, token);
|
|
214
|
+
if (patched === null) {
|
|
215
|
+
// the invite is spent — hand over the token so nothing is lost
|
|
216
|
+
fail(`config exists but has no hubUrl/token lines to patch — edit ${configPath} manually; your producer token: ${token}`);
|
|
217
|
+
}
|
|
218
|
+
writeFileAtomic(configPath, patched, 0o600);
|
|
219
|
+
console.log(`updated ${configPath}`);
|
|
220
|
+
}
|
|
221
|
+
if (!existsSync(secretsPath)) {
|
|
222
|
+
writeFileAtomic(secretsPath, SECRETS_TEMPLATE, 0o600);
|
|
223
|
+
console.log(`wrote ${secretsPath}`);
|
|
224
|
+
}
|
|
225
|
+
const where = info.version ? `hub v${info.version}` : 'hub';
|
|
226
|
+
console.log(`joined ${where} as producer '${name}' (namespace: ${name}/...)`);
|
|
227
|
+
console.log('\nnext steps:');
|
|
228
|
+
console.log(` 1. edit config.toml: backends + offerings (aliases must start with ${name}/)`);
|
|
229
|
+
console.log(' 2. put upstream keys in secrets.json (they never leave this machine)');
|
|
230
|
+
console.log(' 3. aweshare agent doctor # find the first failing link');
|
|
231
|
+
console.log(` 4. aweshare agent grant --alias ${name}/model --consumer NAME`);
|
|
232
|
+
console.log(' 5. aweshare agent start');
|
|
233
|
+
}
|
|
234
|
+
async function runConfig(dir, positional) {
|
|
235
|
+
const sub = positional[0] ?? 'path';
|
|
236
|
+
const configPath = join(dir, 'config.toml');
|
|
237
|
+
const secretsPath = join(dir, 'secrets.json');
|
|
238
|
+
if (sub === 'path') {
|
|
239
|
+
console.log(configPath);
|
|
240
|
+
}
|
|
241
|
+
else if (sub === 'show') {
|
|
242
|
+
if (!existsSync(configPath)) {
|
|
243
|
+
fail(`no config at ${configPath} — run 'aweshare agent init' first`);
|
|
244
|
+
}
|
|
245
|
+
console.log(redactConfig(readFileSync(configPath, 'utf8'), existsSync(secretsPath) ? readFileSync(secretsPath, 'utf8') : undefined));
|
|
246
|
+
}
|
|
247
|
+
else if (sub === 'init') {
|
|
248
|
+
fail(`config init is now 'aweshare agent init' (same behavior, plus --hub/--token pre-fill)`);
|
|
249
|
+
}
|
|
250
|
+
else if (sub === 'edit') {
|
|
251
|
+
if (!existsSync(configPath)) {
|
|
252
|
+
fail(`no config at ${configPath} — run 'aweshare agent init' first`);
|
|
253
|
+
}
|
|
254
|
+
const editor = process.env.VISUAL ?? process.env.EDITOR ?? 'vi';
|
|
255
|
+
const child = spawn(editor, [configPath], { stdio: 'inherit' });
|
|
256
|
+
child.on('exit', (code) => process.exit(code ?? 1));
|
|
257
|
+
return await new Promise(() => { });
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
fail(`unknown config subcommand: ${sub} (expected path, show or edit)`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
async function printDoctorReport(dir) {
|
|
264
|
+
const report = await runDoctor(dir);
|
|
265
|
+
for (const check of report.checks) {
|
|
266
|
+
console.log(`${check.ok ? ' ok ' : 'FAIL '} ${check.name}: ${check.detail}`);
|
|
267
|
+
}
|
|
268
|
+
console.log(report.ok ? '\ndoctor: all green' : '\ndoctor: fix the first FAIL above, then re-run');
|
|
269
|
+
process.exitCode = report.ok ? 0 : 1;
|
|
270
|
+
}
|
|
271
|
+
async function runStart(dir) {
|
|
272
|
+
const { config, secrets } = loadAgentConfig(dir);
|
|
273
|
+
const connection = new AgentConnection({
|
|
274
|
+
config,
|
|
275
|
+
secrets,
|
|
276
|
+
log: pino({ level: process.env.AWESHARE_LOG ?? 'info' }),
|
|
277
|
+
});
|
|
278
|
+
const shutdown = () => {
|
|
279
|
+
console.error('\nshutting down…');
|
|
280
|
+
void connection.stop().then(() => process.exit(0));
|
|
281
|
+
};
|
|
282
|
+
process.on('SIGINT', shutdown);
|
|
283
|
+
process.on('SIGTERM', shutdown);
|
|
284
|
+
await connection.start();
|
|
285
|
+
}
|
|
286
|
+
async function runGrants(cmd, flags) {
|
|
287
|
+
const { config } = loadAgentConfig(agentDir());
|
|
288
|
+
const api = producerApi(config.hubUrl, config.token);
|
|
289
|
+
if (cmd === 'grant' || cmd === 'revoke') {
|
|
290
|
+
const alias = flags.get('alias');
|
|
291
|
+
const consumer = flags.get('consumer');
|
|
292
|
+
if (!alias || !consumer)
|
|
293
|
+
fail('--alias and --consumer are required');
|
|
294
|
+
const body = { alias, consumer };
|
|
295
|
+
const expiresIn = flags.get('expires-in');
|
|
296
|
+
if (cmd === 'grant' && expiresIn) {
|
|
297
|
+
body.expiresAt = new Date(Date.now() + parseDuration(expiresIn)).toISOString();
|
|
298
|
+
}
|
|
299
|
+
const data = cmd === 'grant'
|
|
300
|
+
? await api('PUT', '/admin/v1/grants', body)
|
|
301
|
+
: await api('DELETE', `/admin/v1/grants?alias=${encodeURIComponent(alias)}&consumer=${encodeURIComponent(consumer)}`);
|
|
302
|
+
console.log(JSON.stringify(data));
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
const data = await api('GET', '/admin/v1/grants');
|
|
306
|
+
console.log(flags.get('json') === 'true' ? JSON.stringify(data, null, 2) : renderGrants(data));
|
|
307
|
+
}
|
|
85
308
|
async function main() {
|
|
86
309
|
const [cmd, ...rest] = process.argv.slice(2);
|
|
87
310
|
const { positional, flags } = parseFlags(rest);
|
|
@@ -89,202 +312,37 @@ async function main() {
|
|
|
89
312
|
console.log(`aweshare agent ${VERSION}`);
|
|
90
313
|
return;
|
|
91
314
|
}
|
|
92
|
-
if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h'
|
|
315
|
+
if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
|
|
93
316
|
console.log(USAGE);
|
|
94
317
|
return;
|
|
95
318
|
}
|
|
319
|
+
const help = COMMAND_HELP[cmd];
|
|
320
|
+
if (help && (positional.includes('-h') || flags.get('help') === 'true')) {
|
|
321
|
+
console.log(help);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
96
324
|
const dir = agentDir();
|
|
97
325
|
switch (cmd) {
|
|
98
|
-
case 'init':
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (flags.get('token')) {
|
|
107
|
-
template = template.replace('token = "asp_PASTE_PRODUCER_TOKEN"', `token = "${flags.get('token')}"`);
|
|
108
|
-
}
|
|
109
|
-
writeFileAtomic(configPath, template, 0o600);
|
|
110
|
-
console.log(`wrote ${configPath}`);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
console.log(`exists, kept: ${configPath}`);
|
|
114
|
-
}
|
|
115
|
-
if (!existsSync(secretsPath)) {
|
|
116
|
-
writeFileAtomic(secretsPath, SECRETS_TEMPLATE, 0o600);
|
|
117
|
-
console.log(`wrote ${secretsPath}`);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
console.log(`exists, kept: ${secretsPath}`);
|
|
121
|
-
}
|
|
122
|
-
console.log('\nnext steps:');
|
|
123
|
-
console.log(' 1. edit config.toml: backends + offerings (namespace must be your producer name)');
|
|
124
|
-
console.log(' 2. put upstream keys in secrets.json (they never leave this machine)');
|
|
125
|
-
console.log(' 3. aweshare agent doctor # find the first failing link');
|
|
126
|
-
console.log(' 4. aweshare agent grant --alias YOU/model --consumer NAME');
|
|
127
|
-
console.log(' 5. aweshare agent start');
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
case 'join': {
|
|
131
|
-
const hub = flags.get('hub');
|
|
132
|
-
const code = flags.get('code');
|
|
133
|
-
if (!hub || !/^https?:\/\//.test(hub))
|
|
134
|
-
fail('--hub must be an http(s) URL');
|
|
135
|
-
if (!code || !INVITE_PATTERN.test(code))
|
|
136
|
-
fail('--code must be an invite code (asi_...)');
|
|
137
|
-
// --name/--email ride along for unbound codes; bound codes ignore them
|
|
138
|
-
const redeemBody = { code };
|
|
139
|
-
if (flags.get('name'))
|
|
140
|
-
redeemBody.name = flags.get('name');
|
|
141
|
-
if (flags.get('email'))
|
|
142
|
-
redeemBody.email = flags.get('email');
|
|
143
|
-
const res = await fetch(`${hub.replace(/\/+$/, '')}/invites/v1/redeem`, {
|
|
144
|
-
method: 'POST',
|
|
145
|
-
headers: { 'content-type': 'application/json' },
|
|
146
|
-
body: JSON.stringify(redeemBody),
|
|
147
|
-
});
|
|
148
|
-
const data = (await res.json().catch(() => ({})));
|
|
149
|
-
if (!res.ok || !data.name || !data.token) {
|
|
150
|
-
fail(`${res.status} ${data.error?.message ?? res.statusText}`);
|
|
151
|
-
}
|
|
152
|
-
const name = data.name;
|
|
153
|
-
const token = data.token;
|
|
154
|
-
const configPath = join(dir, 'config.toml');
|
|
155
|
-
const secretsPath = join(dir, 'secrets.json');
|
|
156
|
-
if (!existsSync(configPath)) {
|
|
157
|
-
const filled = applyJoinToConfig(CONFIG_TEMPLATE, hub, token) ?? CONFIG_TEMPLATE;
|
|
158
|
-
writeFileAtomic(configPath, filled, 0o600);
|
|
159
|
-
console.log(`wrote ${configPath}`);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
const patched = applyJoinToConfig(readFileSync(configPath, 'utf8'), hub, token);
|
|
163
|
-
if (patched === null) {
|
|
164
|
-
// the invite is spent — hand over the token so nothing is lost
|
|
165
|
-
fail(`config exists but has no hubUrl/token lines to patch — edit ${configPath} manually; your producer token: ${token}`);
|
|
166
|
-
}
|
|
167
|
-
writeFileAtomic(configPath, patched, 0o600);
|
|
168
|
-
console.log(`updated ${configPath}`);
|
|
169
|
-
}
|
|
170
|
-
if (!existsSync(secretsPath)) {
|
|
171
|
-
writeFileAtomic(secretsPath, SECRETS_TEMPLATE, 0o600);
|
|
172
|
-
console.log(`wrote ${secretsPath}`);
|
|
173
|
-
}
|
|
174
|
-
console.log(`joined hub as producer '${name}' (namespace: ${name}/...)`);
|
|
175
|
-
console.log('\nnext steps:');
|
|
176
|
-
console.log(` 1. edit config.toml: backends + offerings (aliases must start with ${name}/)`);
|
|
177
|
-
console.log(' 2. put upstream keys in secrets.json (they never leave this machine)');
|
|
178
|
-
console.log(' 3. aweshare agent doctor # find the first failing link');
|
|
179
|
-
console.log(` 4. aweshare agent grant --alias ${name}/model --consumer NAME`);
|
|
180
|
-
console.log(' 5. aweshare agent start');
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
case 'config': {
|
|
184
|
-
const sub = positional[0] ?? 'path';
|
|
185
|
-
const configPath = join(dir, 'config.toml');
|
|
186
|
-
const secretsPath = join(dir, 'secrets.json');
|
|
187
|
-
if (sub === 'path') {
|
|
188
|
-
console.log(configPath);
|
|
189
|
-
}
|
|
190
|
-
else if (sub === 'show') {
|
|
191
|
-
if (!existsSync(configPath)) {
|
|
192
|
-
fail(`no config at ${configPath} — run 'aweshare agent config init' first`);
|
|
193
|
-
}
|
|
194
|
-
console.log(redactConfig(readFileSync(configPath, 'utf8'), existsSync(secretsPath) ? readFileSync(secretsPath, 'utf8') : undefined));
|
|
195
|
-
}
|
|
196
|
-
else if (sub === 'init') {
|
|
197
|
-
// same as top-level init: write templates only if missing
|
|
198
|
-
if (!existsSync(configPath)) {
|
|
199
|
-
writeFileAtomic(configPath, CONFIG_TEMPLATE, 0o600);
|
|
200
|
-
console.log(`wrote ${configPath}`);
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
console.log(`exists, kept: ${configPath}`);
|
|
204
|
-
}
|
|
205
|
-
if (!existsSync(secretsPath)) {
|
|
206
|
-
writeFileAtomic(secretsPath, SECRETS_TEMPLATE, 0o600);
|
|
207
|
-
console.log(`wrote ${secretsPath}`);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
console.log(`exists, kept: ${secretsPath}`);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
else if (sub === 'edit') {
|
|
214
|
-
if (!existsSync(configPath)) {
|
|
215
|
-
fail(`no config at ${configPath} — run 'aweshare agent config init' first`);
|
|
216
|
-
}
|
|
217
|
-
const editor = process.env.VISUAL ?? process.env.EDITOR ?? 'vi';
|
|
218
|
-
const child = spawn(editor, [configPath], { stdio: 'inherit' });
|
|
219
|
-
child.on('exit', (code) => process.exit(code ?? 1));
|
|
220
|
-
return await new Promise(() => { });
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
fail(`unknown config subcommand: ${sub} (expected path, show, edit or init)`);
|
|
224
|
-
}
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
326
|
+
case 'init':
|
|
327
|
+
noPositionals(cmd, positional);
|
|
328
|
+
return await runInit(flags, dir);
|
|
329
|
+
case 'join':
|
|
330
|
+
noPositionals(cmd, positional);
|
|
331
|
+
return await runJoin(flags, dir);
|
|
332
|
+
case 'config':
|
|
333
|
+
return await runConfig(dir, positional);
|
|
227
334
|
case 'doctor': {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
console.log(`${check.ok ? ' ok ' : 'FAIL '} ${check.name}: ${check.detail}`);
|
|
231
|
-
}
|
|
232
|
-
console.log(report.ok ? '\ndoctor: all green' : '\ndoctor: fix the first FAIL above, then re-run');
|
|
233
|
-
process.exitCode = report.ok ? 0 : 1;
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
case 'start': {
|
|
237
|
-
const { config, secrets } = loadAgentConfig(dir);
|
|
238
|
-
const connection = new AgentConnection({
|
|
239
|
-
config,
|
|
240
|
-
secrets,
|
|
241
|
-
log: pino({ level: process.env.AWESHARE_LOG ?? 'info' }),
|
|
242
|
-
});
|
|
243
|
-
const shutdown = () => {
|
|
244
|
-
console.error('\nshutting down…');
|
|
245
|
-
void connection.stop().then(() => process.exit(0));
|
|
246
|
-
};
|
|
247
|
-
process.on('SIGINT', shutdown);
|
|
248
|
-
process.on('SIGTERM', shutdown);
|
|
249
|
-
await connection.start();
|
|
250
|
-
return;
|
|
335
|
+
noPositionals(cmd, positional);
|
|
336
|
+
return await printDoctorReport(dir);
|
|
251
337
|
}
|
|
338
|
+
case 'start':
|
|
339
|
+
noPositionals(cmd, positional);
|
|
340
|
+
return await runStart(dir);
|
|
252
341
|
case 'grant':
|
|
253
342
|
case 'revoke':
|
|
254
|
-
case 'list':
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
const auth = { authorization: `Bearer ${config.token}`, 'content-type': 'application/json' };
|
|
258
|
-
if (cmd === 'grant' || cmd === 'revoke') {
|
|
259
|
-
const alias = flags.get('alias');
|
|
260
|
-
const consumer = flags.get('consumer');
|
|
261
|
-
if (!alias || !consumer)
|
|
262
|
-
fail('--alias and --consumer are required');
|
|
263
|
-
const body = { alias, consumer };
|
|
264
|
-
const expiresIn = flags.get('expires-in');
|
|
265
|
-
if (cmd === 'grant' && expiresIn) {
|
|
266
|
-
body.expiresAt = new Date(Date.now() + parseDuration(expiresIn)).toISOString();
|
|
267
|
-
}
|
|
268
|
-
const res = cmd === 'grant'
|
|
269
|
-
? await fetch(`${base}/admin/v1/grants`, {
|
|
270
|
-
method: 'PUT',
|
|
271
|
-
headers: auth,
|
|
272
|
-
body: JSON.stringify(body),
|
|
273
|
-
})
|
|
274
|
-
: await fetch(`${base}/admin/v1/grants?alias=${encodeURIComponent(alias)}&consumer=${encodeURIComponent(consumer)}`, { method: 'DELETE', headers: auth });
|
|
275
|
-
const data = (await res.json().catch(() => ({})));
|
|
276
|
-
if (!res.ok)
|
|
277
|
-
fail(`${res.status} ${data.error?.message ?? res.statusText}`);
|
|
278
|
-
console.log(JSON.stringify(data));
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
const res = await fetch(`${base}/admin/v1/grants`, { headers: auth });
|
|
282
|
-
const data = (await res.json().catch(() => ({})));
|
|
283
|
-
if (!res.ok)
|
|
284
|
-
fail(`${res.status} ${data.error?.message ?? res.statusText}`);
|
|
285
|
-
console.log(flags.get('json') === 'true' ? JSON.stringify(data, null, 2) : renderGrants(data));
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
343
|
+
case 'list':
|
|
344
|
+
noPositionals(cmd, positional);
|
|
345
|
+
return await runGrants(cmd, flags);
|
|
288
346
|
default:
|
|
289
347
|
fail(`unknown command: ${cmd}\n\n${USAGE}`);
|
|
290
348
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import pino, {} from 'pino';
|
|
|
3
3
|
import { WebSocket } from 'ws';
|
|
4
4
|
import { buildUpstreamRequest } from './adapters.js';
|
|
5
5
|
import { classifyStatus, HealthGate } from './health.js';
|
|
6
|
+
import { USER_AGENT } from './hub.js';
|
|
6
7
|
const RECONNECT_BASE_MS = 1500;
|
|
7
8
|
const RECONNECT_MAX_MS = 15_000;
|
|
8
9
|
const HEARTBEAT_INTERVAL_MS = 15_000;
|
|
@@ -200,7 +201,7 @@ export class AgentConnection {
|
|
|
200
201
|
const wsUrl = `${config.hubUrl.replace(/^http/, 'ws')}/ws/v1/producer`;
|
|
201
202
|
return new Promise((resolve) => {
|
|
202
203
|
const ws = new WebSocket(wsUrl, {
|
|
203
|
-
headers: { authorization: `Bearer ${config.token}
|
|
204
|
+
headers: { authorization: `Bearer ${config.token}`, 'user-agent': USER_AGENT },
|
|
204
205
|
maxPayload: 256 * 1024,
|
|
205
206
|
});
|
|
206
207
|
this.ws = ws;
|