aweshare 0.2.8 → 0.3.0

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 CHANGED
@@ -14,7 +14,7 @@
14
14
  <a href="https://ko-fi.com/mugpeng"><img src="https://img.shields.io/badge/Ko--fi-Buy%20me%20a%20coffee-FF5E5B?style=flat-square&logo=ko-fi&logoColor=white" alt="Ko-fi"></a>
15
15
  </p>
16
16
  <p>
17
- <a href="https://github.com/wehuman01/aweshare-source/releases"><img src="https://img.shields.io/badge/version-0.2.8-7C3AED?style=flat-square" alt="Version"></a>
17
+ <a href="https://github.com/wehuman01/aweshare-source/releases"><img src="https://img.shields.io/badge/version-0.3.0-7C3AED?style=flat-square" alt="Version"></a>
18
18
  <a href="https://github.com/wehuman01/aweshare"><img src="https://img.shields.io/badge/node-%E2%89%A522-0EA5E9?style=flat-square" alt="Node"></a>
19
19
  <a href="https://github.com/wehuman01/aweshare/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-proprietary-E34F26?style=flat-square" alt="License"></a>
20
20
  <a href="https://www.npmjs.com/package/aweshare"><img src="https://img.shields.io/badge/npm-aweshare-7C3AED?style=flat-square" alt="npm package"></a>
@@ -93,6 +93,19 @@ aweshare hub token issue --role producer --name peng # → asp_..., give to
93
93
  aweshare hub token issue --role consumer --name alice # → asc_..., give to the consumer
94
94
  ```
95
95
 
96
+ For producers there is also a self-service path — invite codes (`asi_…`, single use). Two modes:
97
+
98
+ ```bash
99
+ # bound: lock the code to a specific name ("inviting that user")
100
+ aweshare hub invite create --name peng [--expires-in 7d] # → asi_..., send to the producer
101
+
102
+ # unbound: batch hand-out; the producer submits name + email at redeem (stored on the hub)
103
+ aweshare hub invite create --count 10 [--expires-in 7d]
104
+
105
+ # the producer redeems it themselves (no token hand-off needed):
106
+ aweshare agent join --hub https://hub.example.com --code asi_... [--name NAME --email YOU@EXAMPLE.COM]
107
+ ```
108
+
96
109
  Three token roles, one per party:
97
110
 
98
111
  | Role | Who holds it | How it's used |
@@ -231,6 +244,40 @@ Error semantics: `401` invalid key · `403` not granted or `GRANT_EXPIRED` · `4
231
244
 
232
245
  Usage metering: one row per request (alias, real model, status, duration, byte counts, best-effort token counts), **zero content stored**. Producers list grants with `aweshare agent list`; query usage with `aweshare hub usage`.
233
246
 
247
+ ## Command reference
248
+
249
+ Both sides at a glance — details in the sections above.
250
+
251
+ **Hub (operator)** — needs the admin token from `aweshare hub init`; for a hub on another server, run these on the server or set `AWESHARE_HUB_URL`:
252
+
253
+ | Command | Purpose |
254
+ |---|---|
255
+ | `aweshare hub init` | create data dir + admin token (printed once) |
256
+ | `aweshare hub serve [--host H] [--port N]` | run the hub |
257
+ | `aweshare hub token issue --role producer\|consumer --name NAME` | issue a producer (`asp_…`) or consumer (`asc_…`) token |
258
+ | `aweshare hub token list` · `aweshare hub token revoke --role R --id N` | list / revoke tokens |
259
+ | `aweshare hub invite create [--name NAME] [--count N] [--expires-in 7d]` | create one-time invite codes (`asi_…`, shown once); with `--name` bound to that producer, without it the producer submits name + email at redeem |
260
+ | `aweshare hub invite list` · `aweshare hub invite revoke --id N` | list / revoke (unredeemed) invites |
261
+ | `aweshare hub grant add --alias ns/model --consumer NAME [--expires-in 7d]` | grant (or refresh) access to an alias |
262
+ | `aweshare hub grant list` · `aweshare hub grant remove --alias A --consumer NAME` | list / remove grants |
263
+ | `aweshare hub consumer limits --name NAME [--rps N] [--burst N] [--concurrency N] [--tpm N] [--max-total-tokens N] [--clear]` | per-consumer overrides (see Consumer limits) |
264
+ | `aweshare hub usage [--alias A] [--limit N]` | usage metering |
265
+
266
+ **Agent (producer)** — runs on the producer's machine (the one with the backends); consumers run no aweshare commands — they point a standard SDK at the hub (see Consumer tool configuration):
267
+
268
+ | Command | Purpose |
269
+ |---|---|
270
+ | `aweshare agent init [--hub URL] [--token asp_…]` | write config templates into `~/.aweshare` |
271
+ | `aweshare agent join --hub URL --code asi_… [--name NAME --email YOU@EXAMPLE.COM]` | redeem an invite code into a producer token and write it into the config (`--name`/`--email` for unbound codes) |
272
+ | `aweshare agent config path` · `config show` · `config edit` | locate / inspect (secrets redacted) / edit the config |
273
+ | `aweshare agent doctor` | pre-flight checks — fix the first FAIL, re-run |
274
+ | `aweshare agent grant --alias ns/model --consumer NAME [--expires-in 7d]` | grant a consumer access |
275
+ | `aweshare agent revoke --alias ns/model --consumer NAME` | revoke access |
276
+ | `aweshare agent list` | list grants for your namespace |
277
+ | `aweshare agent start` | connect and relay (long-running; run it in your own terminal) |
278
+
279
+ CLI maintenance: `aweshare self-update [--check]` updates the npm-installed CLI (`--check` only compares versions).
280
+
234
281
  ## Operations
235
282
 
236
283
  | Env var | Default | Purpose |
@@ -2,8 +2,9 @@
2
2
  import { spawn } from 'node:child_process';
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import { join } from 'node:path';
5
+ import { INVITE_PATTERN } from '../../../packages/protocol/dist/index.js';
5
6
  import pino from 'pino';
6
- import { agentDir, CONFIG_TEMPLATE, loadAgentConfig, redactConfig, SECRETS_TEMPLATE, writeFileAtomic, } from './config.js';
7
+ import { agentDir, applyJoinToConfig, CONFIG_TEMPLATE, loadAgentConfig, redactConfig, SECRETS_TEMPLATE, writeFileAtomic, } from './config.js';
7
8
  import { AgentConnection } from './connection.js';
8
9
  import { runDoctor } from './doctor.js';
9
10
  const VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version;
@@ -11,6 +12,10 @@ const USAGE = `aweshare agent — share local/authorized AI capacity through an
11
12
 
12
13
  Usage:
13
14
  aweshare agent init [--hub URL] [--token asp_...] write config template + empty secrets
15
+ aweshare agent join --hub URL --code asi_... [--name NAME] [--email YOU@EXAMPLE.COM]
16
+ redeem an invite into a producer token
17
+ (--name/--email: unbound codes ask the
18
+ producer to identify themselves)
14
19
  aweshare agent config path print config path
15
20
  aweshare agent config show show config with secrets redacted
16
21
  aweshare agent config edit open config in $VISUAL, $EDITOR, or vi
@@ -111,6 +116,59 @@ async function main() {
111
116
  console.log(' 5. aweshare agent start');
112
117
  return;
113
118
  }
119
+ case 'join': {
120
+ const hub = flags.get('hub');
121
+ const code = flags.get('code');
122
+ if (!hub || !/^https?:\/\//.test(hub))
123
+ fail('--hub must be an http(s) URL');
124
+ if (!code || !INVITE_PATTERN.test(code))
125
+ fail('--code must be an invite code (asi_...)');
126
+ // --name/--email ride along for unbound codes; bound codes ignore them
127
+ const redeemBody = { code };
128
+ if (flags.get('name'))
129
+ redeemBody.name = flags.get('name');
130
+ if (flags.get('email'))
131
+ redeemBody.email = flags.get('email');
132
+ const res = await fetch(`${hub.replace(/\/+$/, '')}/invites/v1/redeem`, {
133
+ method: 'POST',
134
+ headers: { 'content-type': 'application/json' },
135
+ body: JSON.stringify(redeemBody),
136
+ });
137
+ const data = (await res.json().catch(() => ({})));
138
+ if (!res.ok || !data.name || !data.token) {
139
+ fail(`${res.status} ${data.error?.message ?? res.statusText}`);
140
+ }
141
+ const name = data.name;
142
+ const token = data.token;
143
+ const configPath = join(dir, 'config.toml');
144
+ const secretsPath = join(dir, 'secrets.json');
145
+ if (!existsSync(configPath)) {
146
+ const filled = applyJoinToConfig(CONFIG_TEMPLATE, hub, token) ?? CONFIG_TEMPLATE;
147
+ writeFileAtomic(configPath, filled, 0o600);
148
+ console.log(`wrote ${configPath}`);
149
+ }
150
+ else {
151
+ const patched = applyJoinToConfig(readFileSync(configPath, 'utf8'), hub, token);
152
+ if (patched === null) {
153
+ // the invite is spent — hand over the token so nothing is lost
154
+ fail(`config exists but has no hubUrl/token lines to patch — edit ${configPath} manually; your producer token: ${token}`);
155
+ }
156
+ writeFileAtomic(configPath, patched, 0o600);
157
+ console.log(`updated ${configPath}`);
158
+ }
159
+ if (!existsSync(secretsPath)) {
160
+ writeFileAtomic(secretsPath, SECRETS_TEMPLATE, 0o600);
161
+ console.log(`wrote ${secretsPath}`);
162
+ }
163
+ console.log(`joined hub as producer '${name}' (namespace: ${name}/...)`);
164
+ console.log('\nnext steps:');
165
+ console.log(` 1. edit config.toml: backends + offerings (aliases must start with ${name}/)`);
166
+ console.log(' 2. put upstream keys in secrets.json (they never leave this machine)');
167
+ console.log(' 3. aweshare agent doctor # find the first failing link');
168
+ console.log(` 4. aweshare agent grant --alias ${name}/model --consumer NAME`);
169
+ console.log(' 5. aweshare agent start');
170
+ return;
171
+ }
114
172
  case 'config': {
115
173
  const sub = positional[0] ?? 'path';
116
174
  const configPath = join(dir, 'config.toml');
@@ -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":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAG7E,CAAC,OAAO,CAAA;AAET,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;8DAmBgD,CAAA;AAE9D,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAW,CAAA;QAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACZ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YAC5C,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5E,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAW,CAAC,CAAA;YAC5C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;AAC9B,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,+EAA+E;AAC/E,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAI,GAA+D,CAAC,KAAK,CAAA;QACpF,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAA;IAChF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC;AAED,uEAAuE;AACvE,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,CAAC,CAAC;QAAE,IAAI,CAAC,yDAAyD,GAAG,GAAG,CAAC,CAAA;IAC7E,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAA0B,CAAC,CAAA;IAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AAC5B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QACxC,OAAM;IACR,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAClB,OAAM;IACR,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAA;IAEtB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,IAAI,QAAQ,GAAG,eAAe,CAAA;gBAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,kCAAkC,EAClC,aAAa,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CACjC,CAAA;gBACH,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,oCAAoC,EACpC,YAAY,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAClC,CAAA;gBACH,CAAC;gBACD,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAC5C,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAA;YAC5C,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,eAAe,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBACrD,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;YACrC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAA;YAC7C,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAC5B,OAAO,CAAC,GAAG,CACT,oFAAoF,CACrF,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAA;YACrF,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;YACzE,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;YAC1E,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,8BAA8B,CAAC,CAAA;YAC3E,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,yCAAyC,CAAC,CAAA;YACxF,uEAAuE;YACvE,MAAM,UAAU,GAA2B,EAAE,IAAI,EAAE,CAAA;YACnD,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAW,CAAA;YACpE,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAW,CAAA;YACvE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,EAAE;gBACtE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;aACjC,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAI/C,CAAA;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;YAChE,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,eAAe,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,eAAe,CAAA;gBAChF,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;gBAC/E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,+DAA+D;oBAC/D,IAAI,CACF,+DAA+D,UAAU,mCAAmC,KAAK,EAAE,CACpH,CAAA;gBACH,CAAC;gBACD,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,eAAe,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBACrD,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;YACrC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,iBAAiB,IAAI,OAAO,CAAC,CAAA;YACxE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAC5B,OAAO,CAAC,GAAG,CAAC,wEAAwE,IAAI,IAAI,CAAC,CAAA;YAC7F,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAA;YACrF,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;YACzE,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,wBAAwB,CAAC,CAAA;YAC9E,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,MAAM,CAAA;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YAC7C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACzB,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,gBAAgB,UAAU,2CAA2C,CAAC,CAAA;gBAC7E,CAAC;gBACD,OAAO,CAAC,GAAG,CACT,YAAY,CACV,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,EAChC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CACxE,CACF,CAAA;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,0DAA0D;gBAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5B,eAAe,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;oBACnD,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;gBACpC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAA;gBAC5C,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC7B,eAAe,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;oBACrD,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;gBACrC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAA;gBAC7C,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,gBAAgB,UAAU,2CAA2C,CAAC,CAAA;gBAC7E,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAA;gBAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC/D,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnD,OAAO,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,8BAA8B,GAAG,sCAAsC,CAAC,CAAA;YAC/E,CAAC;YACD,OAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;YACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;YAC/E,CAAC;YACD,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iDAAiD,CACtF,CAAA;YACD,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;YAChD,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC;gBACrC,MAAM;gBACN,OAAO;gBACP,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,EAAE,CAAC;aACzD,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;gBACjC,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACpD,CAAC,CAAA;YACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC/B,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YACxB,OAAM;QACR,CAAC;QAED,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAA;YAC1B,MAAM,IAAI,GAAG,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAA;YAC5F,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBACtC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,qCAAqC,CAAC,CAAA;gBACpE,MAAM,IAAI,GAA2B,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBACxD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;gBACzC,IAAI,GAAG,KAAK,OAAO,IAAI,SAAS,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;gBAChF,CAAC;gBACD,MAAM,GAAG,GACP,GAAG,KAAK,OAAO;oBACb,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,kBAAkB,EAAE;wBACrC,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;qBAC3B,CAAC;oBACJ,CAAC,CAAC,MAAM,KAAK,CACT,GAAG,IAAI,0BAA0B,kBAAkB,CAAC,KAAK,CAAC,aAAa,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EACrG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CACpC,CAAA;gBACP,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAqC,CAAA;gBACrF,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;gBAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;gBACjC,OAAM;YACR,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACrE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAqC,CAAA;YACrF,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;YAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC1C,OAAM;QACR,CAAC;QAED;YACE,IAAI,CAAC,oBAAoB,GAAG,OAAO,KAAK,EAAE,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA"}
@@ -34,6 +34,12 @@ export declare function loadAgentConfig(dir: string): {
34
34
  };
35
35
  /** Redact secret values so config can be printed safely. */
36
36
  export declare function redactConfig(configToml: string, secretsJson: string | undefined): string;
37
+ /**
38
+ * Patch the hubUrl/token lines of an existing config body ('agent join').
39
+ * Returns null when either line is missing — a config without them is not a
40
+ * valid target for a mechanical patch and needs a manual edit instead.
41
+ */
42
+ export declare function applyJoinToConfig(content: string, hubUrl: string, token: string): string | null;
37
43
  /** tmp+rename atomic write with owner-only permissions. */
38
44
  export declare function writeFileAtomic(path: string, content: string, mode?: number): void;
39
45
  export declare const CONFIG_TEMPLATE = "# aweshare agent configuration (~/.aweshare/config.toml)\n# Secrets live in ~/.aweshare/secrets.json and never leave this machine.\n\nhubUrl = \"http://127.0.0.1:8787\"\ntoken = \"asp_PASTE_PRODUCER_TOKEN\"\n\n# Backends hold the upstream API. baseUrl follows the SDK convention:\n# openai-style (OpenAI/Ollama/vLLM/LM Studio) includes /v1, e.g. http://127.0.0.1:11434/v1\n# anthropic-style excludes /v1, e.g. https://api.anthropic.com\n# responses-style includes the version path, e.g. https://open.bigmodel.cn/api/v1\n[[backends]]\nid = \"ollama\"\nprotocol = \"openai\"\nbaseUrl = \"http://127.0.0.1:11434/v1\"\n# keyRef = \"ollama-key\" # optional; keys live in secrets.json\n\n[[backends]]\nid = \"openai\"\nprotocol = \"openai\"\nbaseUrl = \"https://api.openai.com/v1\"\nkeyRef = \"openai-key\"\n\n# Offerings map a public alias (namespace/name) to a backend model.\n# The namespace must match your producer name on the hub.\n[[offerings]]\nalias = \"YOUR_NAME/qwen2.5.7b\"\nbackend = \"ollama\"\nupstreamModel = \"qwen2.5:7b\" # must match 'ollama list' exactly, including the tag\nmaxConcurrency = 1 # start at 1 for local models\n\n[[offerings]]\nalias = \"YOUR_NAME/gpt-4o\"\nbackend = \"openai\"\nupstreamModel = \"gpt-4o-2024-11-20\"\nmaxConcurrency = 4\n";
@@ -109,6 +109,20 @@ export function redactConfig(configToml, secretsJson) {
109
109
  }
110
110
  return out;
111
111
  }
112
+ /**
113
+ * Patch the hubUrl/token lines of an existing config body ('agent join').
114
+ * Returns null when either line is missing — a config without them is not a
115
+ * valid target for a mechanical patch and needs a manual edit instead.
116
+ */
117
+ export function applyJoinToConfig(content, hubUrl, token) {
118
+ if (!/^hubUrl\s*=\s*".*"$/m.test(content) || !/^token\s*=\s*".*"$/m.test(content)) {
119
+ return null;
120
+ }
121
+ const esc = (s) => s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
122
+ return content
123
+ .replace(/^hubUrl\s*=\s*".*"$/m, `hubUrl = "${esc(hubUrl)}"`)
124
+ .replace(/^token\s*=\s*".*"$/m, `token = "${esc(token)}"`);
125
+ }
112
126
  /** tmp+rename atomic write with owner-only permissions. */
113
127
  export function writeFileAtomic(path, content, mode = 0o600) {
114
128
  mkdirSync(dirname(path), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -42,10 +42,17 @@ export function registerAdminRoutes(router, deps) {
42
42
  if (typeof body.name !== 'string' || !/^[a-z0-9][a-z0-9-]{1,31}$/.test(body.name)) {
43
43
  throw new HttpError(400, 'INVALID_NAME', 'name must match ^[a-z0-9][a-z0-9-]{1,31}$ (it becomes the alias namespace for producers)');
44
44
  }
45
+ let email = null;
46
+ if (body.email !== undefined) {
47
+ if (typeof body.email !== 'string' || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(body.email)) {
48
+ throw new HttpError(400, 'INVALID_EMAIL', 'email must look like user@example.com');
49
+ }
50
+ email = body.email;
51
+ }
45
52
  const token = generateToken(body.role);
46
53
  const tokenHash = hashToken(token, auth.pepper);
47
54
  const row = body.role === 'producer'
48
- ? insertProducer(db, body.name, tokenHash)
55
+ ? insertProducer(db, body.name, tokenHash, email)
49
56
  : insertConsumer(db, body.name, tokenHash);
50
57
  deps.log.info({ role: body.role, name: body.name }, 'token issued');
51
58
  sendJson(ctx.res, 201, { id: row.id, role: body.role, name: row.name, token });
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,15 @@ const USAGE = `aweshare hub — control plane for an aweshare hub
9
9
  Usage:
10
10
  aweshare hub init create data dir, pepper and admin token
11
11
  aweshare hub serve [--host H] [--port N] run the hub server
12
- aweshare hub token issue --role producer|consumer --name NAME
12
+ aweshare hub token issue --role producer|consumer --name NAME [--email USER@EXAMPLE.COM]
13
13
  aweshare hub token list
14
14
  aweshare hub token revoke --role producer|consumer --id N
15
+ aweshare hub invite create [--name NAME] [--count N] [--expires-in 7d|12h|30m]
16
+ --name binds the codes to that producer name; without it the
17
+ producer submits name + email at redeem. Codes print once;
18
+ producers redeem with 'agent join'
19
+ aweshare hub invite list
20
+ aweshare hub invite revoke --id N
15
21
  aweshare hub grant add --alias ALIAS --consumer NAME [--expires-in 7d|12h|30m|90s]
16
22
  aweshare hub grant remove --alias ALIAS --consumer NAME
17
23
  aweshare hub grant list
@@ -136,7 +142,10 @@ async function main() {
136
142
  fail('--role must be producer or consumer');
137
143
  if (!name)
138
144
  fail('--name is required');
139
- const out = (await api('POST', '/admin/v1/tokens', { role, name }));
145
+ const body = { role, name };
146
+ if (flags.get('email'))
147
+ body.email = flags.get('email');
148
+ const out = (await api('POST', '/admin/v1/tokens', body));
140
149
  console.log(out.token);
141
150
  return;
142
151
  }
@@ -157,6 +166,47 @@ async function main() {
157
166
  fail(`unknown token subcommand: ${sub ?? '(none)'}`);
158
167
  return;
159
168
  }
169
+ case 'invite': {
170
+ const api = adminApi();
171
+ const sub = positional[0];
172
+ if (sub === 'create') {
173
+ const name = flags.get('name');
174
+ const body = {};
175
+ if (name)
176
+ body.name = name;
177
+ const expiresIn = flags.get('expires-in');
178
+ if (expiresIn)
179
+ body.expiresAt = new Date(Date.now() + parseDuration(expiresIn)).toISOString();
180
+ const count = flags.get('count');
181
+ if (count) {
182
+ const n = Number(count);
183
+ if (!Number.isInteger(n) || n < 1 || n > 100) {
184
+ fail(`--count must be an integer between 1 and 100, got '${count}'`);
185
+ }
186
+ body.count = n;
187
+ }
188
+ const out = (await api('POST', '/admin/v1/invites', body));
189
+ for (const invite of out.invites)
190
+ console.log(invite.code);
191
+ console.error(name
192
+ ? '(save these now — codes are shown only once; redeem: aweshare agent join --hub URL --code CODE)'
193
+ : '(save these now — codes are shown only once; redeem: aweshare agent join --hub URL --code CODE --name NAME --email YOU@EXAMPLE.COM)');
194
+ return;
195
+ }
196
+ if (sub === 'list') {
197
+ console.log(JSON.stringify(await api('GET', '/admin/v1/invites'), null, 2));
198
+ return;
199
+ }
200
+ if (sub === 'revoke') {
201
+ const id = flags.get('id');
202
+ if (!id)
203
+ fail('--id is required');
204
+ console.log(JSON.stringify(await api('DELETE', `/admin/v1/invites/${id}`)));
205
+ return;
206
+ }
207
+ fail(`unknown invite subcommand: ${sub ?? '(none)'}`);
208
+ return;
209
+ }
160
210
  case 'grant': {
161
211
  const api = adminApi();
162
212
  const sub = positional[0];
@@ -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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"}
@@ -21,5 +21,7 @@ export declare function hubConfigFromEnv(env?: NodeJS.ProcessEnv): {
21
21
  /** No response bytes within this window after head -> 504 STREAM_IDLE_TIMEOUT. */
22
22
  idleTimeoutMs: number;
23
23
  maxBodyBytes: number;
24
+ /** Redeem attempts per minute on the unauthenticated invite endpoint. */
25
+ inviteRedeemPerMinute: number;
24
26
  };
25
27
  export type HubConfig = ReturnType<typeof hubConfigFromEnv>;
@@ -48,6 +48,8 @@ export function hubConfigFromEnv(env = process.env) {
48
48
  /** No response bytes within this window after head -> 504 STREAM_IDLE_TIMEOUT. */
49
49
  idleTimeoutMs: positiveNumber(env, 'AWESHARE_IDLE_TIMEOUT_MS', 300_000),
50
50
  maxBodyBytes: positiveNumber(env, 'AWESHARE_MAX_BODY_BYTES', 32 * 1024 * 1024),
51
+ /** Redeem attempts per minute on the unauthenticated invite endpoint. */
52
+ inviteRedeemPerMinute: positiveNumber(env, 'AWESHARE_INVITE_REDEEM_PER_MIN', 10),
51
53
  };
52
54
  }
53
55
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAUhC,MAAM,UAAU,YAAY,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAA;IAC7E,OAAO;QACL,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACnC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;KAC7C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,KAAe;IAC5C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,cAAc,CAAC,GAAsB,EAAE,GAAW,EAAE,QAAgB;IAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAA;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,oCAAoC,GAAG,GAAG,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;QACxC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC;QACpD,sDAAsD;QACtD,WAAW,EAAE,cAAc,CAAC,GAAG,EAAE,uBAAuB,EAAE,EAAE,CAAC;QAC7D,aAAa,EAAE,cAAc,CAAC,GAAG,EAAE,yBAAyB,EAAE,EAAE,CAAC;QACjE,qBAAqB,EAAE,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAC9E,iEAAiE;QACjE,aAAa,EAAE,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,OAAO,CAAC;QACvE,kFAAkF;QAClF,aAAa,EAAE,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,OAAO,CAAC;QACvE,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,yBAAyB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;KAC/E,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAUhC,MAAM,UAAU,YAAY,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAA;IAC7E,OAAO;QACL,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACnC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;KAC7C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,KAAe;IAC5C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,cAAc,CAAC,GAAsB,EAAE,GAAW,EAAE,QAAgB;IAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAA;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,oCAAoC,GAAG,GAAG,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;QACxC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC;QACpD,sDAAsD;QACtD,WAAW,EAAE,cAAc,CAAC,GAAG,EAAE,uBAAuB,EAAE,EAAE,CAAC;QAC7D,aAAa,EAAE,cAAc,CAAC,GAAG,EAAE,yBAAyB,EAAE,EAAE,CAAC;QACjE,qBAAqB,EAAE,cAAc,CAAC,GAAG,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAC9E,iEAAiE;QACjE,aAAa,EAAE,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,OAAO,CAAC;QACvE,kFAAkF;QAClF,aAAa,EAAE,cAAc,CAAC,GAAG,EAAE,0BAA0B,EAAE,OAAO,CAAC;QACvE,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,yBAAyB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;QAC9E,yEAAyE;QACzE,qBAAqB,EAAE,cAAc,CAAC,GAAG,EAAE,gCAAgC,EAAE,EAAE,CAAC;KACjF,CAAA;AACH,CAAC"}
@@ -6,6 +6,7 @@ export type ProducerRow = {
6
6
  token_hash: string;
7
7
  created_at: string;
8
8
  revoked_at: string | null;
9
+ email: string | null;
9
10
  };
10
11
  export type ConsumerRow = {
11
12
  id: number;
@@ -41,9 +42,20 @@ export type UsageEventRow = {
41
42
  prompt_tokens: number | null;
42
43
  completion_tokens: number | null;
43
44
  };
45
+ export type InviteRow = {
46
+ id: number;
47
+ code_hash: string;
48
+ /** Bound producer name; null = unbound, the producer submits it at redeem. */
49
+ name: string | null;
50
+ created_at: string;
51
+ expires_at: string | null;
52
+ revoked_at: string | null;
53
+ redeemed_at: string | null;
54
+ producer_id: number | null;
55
+ };
44
56
  export type NewUsageEvent = Omit<UsageEventRow, 'id' | 'at'>;
45
57
  export declare function openDb(dbFile: string): Database.Database;
46
- export declare function insertProducer(db: Database.Database, name: string, tokenHash: string): ProducerRow;
58
+ export declare function insertProducer(db: Database.Database, name: string, tokenHash: string, email?: string | null): ProducerRow;
47
59
  export declare function insertConsumer(db: Database.Database, name: string, tokenHash: string): ConsumerRow;
48
60
  export declare function getProducerById(db: Database.Database, id: number): ProducerRow;
49
61
  export declare function getConsumerById(db: Database.Database, id: number): ConsumerRow;
@@ -53,9 +65,26 @@ export declare function findProducerByHash(db: Database.Database, hash: string):
53
65
  export declare function findConsumerByHash(db: Database.Database, hash: string): ConsumerRow | undefined;
54
66
  export declare function listTokens(db: Database.Database): {
55
67
  producers: Omit<ProducerRow, "token_hash">[];
56
- consumers: Omit<ConsumerRow, "token_hash">[];
68
+ consumers: Omit<ConsumerRow, "token_hash" | "config">[];
57
69
  };
58
70
  export declare function revokeToken(db: Database.Database, role: 'producer' | 'consumer', id: number): void;
71
+ export declare function insertInvite(db: Database.Database, codeHash: string, name: string | null, expiresAt: string | null): InviteRow;
72
+ export declare function getInviteById(db: Database.Database, id: number): InviteRow;
73
+ export declare function findInviteByHash(db: Database.Database, hash: string): InviteRow | undefined;
74
+ export declare function listInvites(db: Database.Database): Omit<InviteRow, 'code_hash'>[];
75
+ /** Revoking is only meaningful before redeem; returns false when already spent or dead. */
76
+ export declare function revokeInvite(db: Database.Database, id: number): boolean;
77
+ /**
78
+ * Atomically consume the invite and create its producer: claim first, then
79
+ * insert, linking them inside one transaction. A name clash throws inside the
80
+ * transaction so the claim rolls back — the code survives a 409. The name comes
81
+ * from the invite when bound, from the redeeming producer when not. The
82
+ * producer token hash is minted by the caller and returned to them only once.
83
+ */
84
+ export declare function redeemInvite(db: Database.Database, invite: InviteRow, tokenHash: string, identity: {
85
+ name: string;
86
+ email: string | null;
87
+ }, now?: string): ProducerRow | 'already-redeemed' | 'name-taken';
59
88
  export declare function addGrant(db: Database.Database, producerId: number, consumerId: number, alias: string, expiresAt?: string | null): void;
60
89
  export declare function removeGrant(db: Database.Database, producerId: number, consumerId: number, alias: string): boolean;
61
90
  export type GrantRow = {
@@ -1,13 +1,14 @@
1
1
  import { mkdirSync } from 'node:fs';
2
2
  import { dirname } from 'node:path';
3
3
  import Database from 'better-sqlite3';
4
- const SCHEMA_V2 = `
4
+ const SCHEMA_V3 = `
5
5
  CREATE TABLE IF NOT EXISTS producers (
6
6
  id INTEGER PRIMARY KEY,
7
7
  name TEXT UNIQUE NOT NULL,
8
8
  token_hash TEXT UNIQUE NOT NULL,
9
9
  created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
10
- revoked_at TEXT
10
+ revoked_at TEXT,
11
+ email TEXT
11
12
  );
12
13
  CREATE TABLE IF NOT EXISTS consumers (
13
14
  id INTEGER PRIMARY KEY,
@@ -54,6 +55,16 @@ CREATE TABLE IF NOT EXISTS usage_events (
54
55
  CREATE INDEX IF NOT EXISTS idx_usage_at ON usage_events(at);
55
56
  CREATE INDEX IF NOT EXISTS idx_usage_consumer ON usage_events(consumer_id, at);
56
57
  CREATE INDEX IF NOT EXISTS idx_usage_producer ON usage_events(producer_id, at);
58
+ CREATE TABLE IF NOT EXISTS invites (
59
+ id INTEGER PRIMARY KEY,
60
+ code_hash TEXT UNIQUE NOT NULL,
61
+ name TEXT,
62
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
63
+ expires_at TEXT,
64
+ revoked_at TEXT,
65
+ redeemed_at TEXT,
66
+ producer_id INTEGER REFERENCES producers(id)
67
+ );
57
68
  `;
58
69
  export function openDb(dbFile) {
59
70
  mkdirSync(dirname(dbFile), { recursive: true });
@@ -62,22 +73,39 @@ export function openDb(dbFile) {
62
73
  db.pragma('foreign_keys = ON');
63
74
  const version = db.pragma('user_version', { simple: true });
64
75
  if (version < 1) {
65
- db.exec(SCHEMA_V2);
66
- db.pragma('user_version = 2');
76
+ db.exec(SCHEMA_V3);
77
+ db.pragma('user_version = 3');
67
78
  }
68
- else if (version < 2) {
69
- // v1 -> v2: grant expiry + per-consumer limit overrides
70
- db.exec('ALTER TABLE grants ADD COLUMN expires_at TEXT');
71
- db.exec('ALTER TABLE consumers ADD COLUMN config TEXT');
72
- db.pragma('user_version = 2');
79
+ else {
80
+ if (version < 2) {
81
+ // v1 -> v2: grant expiry + per-consumer limit overrides
82
+ db.exec('ALTER TABLE grants ADD COLUMN expires_at TEXT');
83
+ db.exec('ALTER TABLE consumers ADD COLUMN config TEXT');
84
+ }
85
+ if (version < 3) {
86
+ // v2 -> v3: invite codes (producer self-service admission; name NULL =
87
+ // unbound, the producer submits name + email at redeem) and producer email
88
+ db.exec(`CREATE TABLE IF NOT EXISTS invites (
89
+ id INTEGER PRIMARY KEY,
90
+ code_hash TEXT UNIQUE NOT NULL,
91
+ name TEXT,
92
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
93
+ expires_at TEXT,
94
+ revoked_at TEXT,
95
+ redeemed_at TEXT,
96
+ producer_id INTEGER REFERENCES producers(id)
97
+ )`);
98
+ db.exec('ALTER TABLE producers ADD COLUMN email TEXT');
99
+ }
100
+ db.pragma('user_version = 3');
73
101
  }
74
102
  return db;
75
103
  }
76
104
  // ---- tokens / identities ----
77
- export function insertProducer(db, name, tokenHash) {
105
+ export function insertProducer(db, name, tokenHash, email = null) {
78
106
  const info = db
79
- .prepare('INSERT INTO producers (name, token_hash) VALUES (?, ?)')
80
- .run(name, tokenHash);
107
+ .prepare('INSERT INTO producers (name, token_hash, email) VALUES (?, ?, ?)')
108
+ .run(name, tokenHash, email);
81
109
  return getProducerById(db, Number(info.lastInsertRowid));
82
110
  }
83
111
  export function insertConsumer(db, name, tokenHash) {
@@ -106,7 +134,7 @@ export function findConsumerByHash(db, hash) {
106
134
  }
107
135
  export function listTokens(db) {
108
136
  const producers = db
109
- .prepare('SELECT id, name, created_at, revoked_at FROM producers ORDER BY id')
137
+ .prepare('SELECT id, name, email, created_at, revoked_at FROM producers ORDER BY id')
110
138
  .all();
111
139
  const consumers = db
112
140
  .prepare('SELECT id, name, created_at, revoked_at FROM consumers ORDER BY id')
@@ -117,6 +145,63 @@ export function revokeToken(db, role, id) {
117
145
  const table = role === 'producer' ? 'producers' : 'consumers';
118
146
  db.prepare(`UPDATE ${table} SET revoked_at = strftime('%Y-%m-%dT%H:%M:%fZ','now') WHERE id = ?`).run(id);
119
147
  }
148
+ // ---- invites (producer self-service admission) ----
149
+ export function insertInvite(db, codeHash, name, expiresAt) {
150
+ const info = db
151
+ .prepare('INSERT INTO invites (code_hash, name, expires_at) VALUES (?, ?, ?)')
152
+ .run(codeHash, name, expiresAt);
153
+ return getInviteById(db, Number(info.lastInsertRowid));
154
+ }
155
+ export function getInviteById(db, id) {
156
+ return db.prepare('SELECT * FROM invites WHERE id = ?').get(id);
157
+ }
158
+ export function findInviteByHash(db, hash) {
159
+ return db.prepare('SELECT * FROM invites WHERE code_hash = ?').get(hash);
160
+ }
161
+ export function listInvites(db) {
162
+ return db
163
+ .prepare(`SELECT id, name, created_at, expires_at, revoked_at, redeemed_at, producer_id
164
+ FROM invites ORDER BY id DESC`)
165
+ .all();
166
+ }
167
+ /** Revoking is only meaningful before redeem; returns false when already spent or dead. */
168
+ export function revokeInvite(db, id) {
169
+ const info = db
170
+ .prepare(`UPDATE invites SET revoked_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')
171
+ WHERE id = ? AND redeemed_at IS NULL AND revoked_at IS NULL`)
172
+ .run(id);
173
+ return info.changes > 0;
174
+ }
175
+ /**
176
+ * Atomically consume the invite and create its producer: claim first, then
177
+ * insert, linking them inside one transaction. A name clash throws inside the
178
+ * transaction so the claim rolls back — the code survives a 409. The name comes
179
+ * from the invite when bound, from the redeeming producer when not. The
180
+ * producer token hash is minted by the caller and returned to them only once.
181
+ */
182
+ export function redeemInvite(db, invite, tokenHash, identity, now = new Date().toISOString()) {
183
+ const tx = db.transaction(() => {
184
+ const claim = db
185
+ .prepare('UPDATE invites SET redeemed_at = ? WHERE id = ? AND redeemed_at IS NULL')
186
+ .run(now, invite.id);
187
+ if (claim.changes === 0)
188
+ throw new Error('already-redeemed');
189
+ const producer = insertProducer(db, identity.name, tokenHash, identity.email);
190
+ db.prepare('UPDATE invites SET producer_id = ? WHERE id = ?').run(producer.id, invite.id);
191
+ return producer;
192
+ });
193
+ try {
194
+ return tx();
195
+ }
196
+ catch (err) {
197
+ if (err instanceof Error && err.message === 'already-redeemed')
198
+ return 'already-redeemed';
199
+ if (err.code?.startsWith('SQLITE_CONSTRAINT')) {
200
+ return 'name-taken';
201
+ }
202
+ throw err;
203
+ }
204
+ }
120
205
  // ---- grants ----
121
206
  export function addGrant(db, producerId, consumerId, alias, expiresAt) {
122
207
  // re-granting refreshes the expiry (INSERT OR IGNORE would keep a stale one)
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { Logger } from 'pino';
3
+ import type { AuthContext } from './auth.js';
4
+ import { type Router } from './http.js';
5
+ import type { FixedWindowLimiter } from './limiter.js';
6
+ export interface InviteDeps {
7
+ db: Database.Database;
8
+ auth: AuthContext;
9
+ log: Logger;
10
+ limiter: FixedWindowLimiter;
11
+ }
12
+ export declare function registerInviteRoutes(router: Router, deps: InviteDeps): void;
@@ -0,0 +1,133 @@
1
+ import { INVITE_PATTERN } from '../../../packages/protocol/dist/index.js';
2
+ import { requireAdmin } from './auth.js';
3
+ import { findInviteByHash, getProducerByName, insertInvite, listInvites, redeemInvite, revokeInvite, } from './db.js';
4
+ import { HttpError, readJson, sendJson } from './http.js';
5
+ import { generateInviteCode, generateToken, hashToken } from './tokens.js';
6
+ /**
7
+ * Producer admission by invite. Two modes:
8
+ * - bound: the admin allocates the name at create (the alias namespace stays a
9
+ * governance decision) — "inviting a specific user";
10
+ * - unbound: name and email are submitted by the producer at redeem and stored
11
+ * on the producer row — batch hand-out without pre-allocation.
12
+ * Either way the secret itself is self-served: the producer redeems the code
13
+ * over the public endpoint and receives the token — no admin round-trip. Codes
14
+ * are single-use, optionally expiring, revocable until redeemed; only their
15
+ * peppered hash is stored.
16
+ */
17
+ /** Namespace rules (same as admin token issuance; it becomes the alias prefix). */
18
+ const NAME_PATTERN = /^[a-z0-9][a-z0-9-]{1,31}$/;
19
+ /** Light shape check only — the email is self-reported contact info, not verification. */
20
+ const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
21
+ export function registerInviteRoutes(router, deps) {
22
+ const { db, auth, log } = deps;
23
+ router.add('POST', '/admin/v1/invites', async (ctx) => {
24
+ requireAdmin(ctx.req, auth);
25
+ const body = (await readJson(ctx.req, 64 * 1024));
26
+ let name = null;
27
+ if (body.name !== undefined && body.name !== null) {
28
+ if (typeof body.name !== 'string' || !NAME_PATTERN.test(body.name)) {
29
+ throw new HttpError(400, 'INVALID_NAME', 'name must match ^[a-z0-9][a-z0-9-]{1,31}$ (it becomes the alias namespace at redeem)');
30
+ }
31
+ if (getProducerByName(db, body.name)) {
32
+ throw new HttpError(409, 'NAME_TAKEN', `producer name '${body.name}' is already in use`);
33
+ }
34
+ name = body.name;
35
+ }
36
+ const count = body.count ?? 1;
37
+ if (!Number.isInteger(count) || count < 1 || count > 100) {
38
+ throw new HttpError(400, 'INVALID_COUNT', 'count must be an integer between 1 and 100');
39
+ }
40
+ let expiresAt = null;
41
+ if (body.expiresAt !== undefined) {
42
+ const t = Date.parse(body.expiresAt);
43
+ if (Number.isNaN(t)) {
44
+ throw new HttpError(400, 'INVALID_REQUEST', 'expiresAt must be an ISO-8601 timestamp');
45
+ }
46
+ if (t <= Date.now()) {
47
+ throw new HttpError(400, 'INVALID_REQUEST', 'expiresAt must be in the future');
48
+ }
49
+ // canonical UTC form — lexicographically comparable with SQLite 'now'
50
+ expiresAt = new Date(t).toISOString();
51
+ }
52
+ const created = [];
53
+ for (let i = 0; i < count; i++) {
54
+ const code = generateInviteCode();
55
+ const row = insertInvite(db, hashToken(code, auth.pepper), name, expiresAt);
56
+ created.push({ id: row.id, name: row.name, code, expiresAt });
57
+ }
58
+ log.info({ name, count, expiresAt }, 'invites created');
59
+ sendJson(ctx.res, 201, { invites: created });
60
+ });
61
+ router.add('GET', '/admin/v1/invites', (ctx) => {
62
+ requireAdmin(ctx.req, auth);
63
+ sendJson(ctx.res, 200, { invites: listInvites(db) });
64
+ });
65
+ router.add('DELETE', '/admin/v1/invites/:id', (ctx) => {
66
+ requireAdmin(ctx.req, auth);
67
+ const id = Number(ctx.params.id);
68
+ if (!Number.isInteger(id))
69
+ throw new HttpError(400, 'INVALID_ID', 'invite id must be an integer');
70
+ const revoked = revokeInvite(db, id);
71
+ if (revoked)
72
+ log.info({ id }, 'invite revoked');
73
+ sendJson(ctx.res, 200, { revoked, id });
74
+ });
75
+ router.add('POST', '/invites/v1/redeem', async (ctx) => {
76
+ // one shared bucket: behind a tunnel the origin cannot see real client IPs,
77
+ // and per-key buckets would let one script open many
78
+ if (!deps.limiter.allow('redeem')) {
79
+ throw new HttpError(429, 'RATE_LIMITED', 'too many redeem attempts, try again in a minute');
80
+ }
81
+ const body = (await readJson(ctx.req, 4 * 1024));
82
+ if (typeof body.code !== 'string' || !INVITE_PATTERN.test(body.code)) {
83
+ throw new HttpError(400, 'INVALID_CODE', 'code must be an invite code (asi_...)');
84
+ }
85
+ const invite = findInviteByHash(db, hashToken(body.code, auth.pepper));
86
+ if (!invite)
87
+ throw new HttpError(404, 'INVITE_NOT_FOUND', 'unknown invite code');
88
+ if (invite.revoked_at)
89
+ throw new HttpError(410, 'INVITE_REVOKED', 'this invite was revoked');
90
+ if (invite.expires_at && invite.expires_at <= new Date().toISOString()) {
91
+ throw new HttpError(410, 'INVITE_EXPIRED', 'this invite has expired');
92
+ }
93
+ // resolve the identity: bound invites own their name; unbound ones require
94
+ // the producer to submit name + email (the admin's only audit trail for them)
95
+ let name;
96
+ if (invite.name !== null) {
97
+ if (body.name !== undefined && body.name !== invite.name) {
98
+ throw new HttpError(400, 'INVALID_NAME', `this invite is bound to the name '${invite.name}'`);
99
+ }
100
+ name = invite.name;
101
+ }
102
+ else {
103
+ if (typeof body.name !== 'string' || !NAME_PATTERN.test(body.name)) {
104
+ throw new HttpError(400, 'INVALID_NAME', 'unbound invite: name is required and must match ^[a-z0-9][a-z0-9-]{1,31}$');
105
+ }
106
+ name = body.name;
107
+ }
108
+ let email = null;
109
+ if (body.email !== undefined) {
110
+ if (typeof body.email !== 'string' || !EMAIL_PATTERN.test(body.email)) {
111
+ throw new HttpError(400, 'INVALID_EMAIL', 'email must look like user@example.com');
112
+ }
113
+ email = body.email;
114
+ }
115
+ if (invite.name === null && email === null) {
116
+ throw new HttpError(400, 'INVALID_EMAIL', 'unbound invite: email is required');
117
+ }
118
+ // no name pre-check: the transaction below claims the invite first, so a
119
+ // spent code reports INVITE_REDEEMED even though its producer name exists,
120
+ // and a genuine name clash rolls the claim back to NAME_TAKEN
121
+ const token = generateToken('producer');
122
+ const result = redeemInvite(db, invite, hashToken(token, auth.pepper), { name, email });
123
+ if (result === 'already-redeemed') {
124
+ throw new HttpError(409, 'INVITE_REDEEMED', 'this invite code was already used');
125
+ }
126
+ if (result === 'name-taken') {
127
+ throw new HttpError(409, 'NAME_TAKEN', `producer name '${name}' is already in use`);
128
+ }
129
+ log.info({ name, email, inviteId: invite.id }, 'invite redeemed');
130
+ sendJson(ctx.res, 200, { name, token });
131
+ });
132
+ }
133
+ //# sourceMappingURL=invites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invites.js","sourceRoot":"","sources":["../src/invites.ts"],"names":[],"mappings":"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"}
@@ -33,3 +33,14 @@ export declare class AliasSlots {
33
33
  acquire(alias: string, maxConcurrency: number): boolean;
34
34
  release(alias: string): void;
35
35
  }
36
+ /**
37
+ * Fixed-window counter for unauthenticated endpoints (invite redeem). Keyed by
38
+ * whatever identity the caller has — behind a tunnel the origin only sees the
39
+ * tunnel's own address, so deployments there effectively get one shared bucket.
40
+ */
41
+ export declare class FixedWindowLimiter {
42
+ private readonly maxPerMinute;
43
+ private windows;
44
+ constructor(maxPerMinute: number);
45
+ allow(key: string, now?: number): boolean;
46
+ }
@@ -75,4 +75,26 @@ export class AliasSlots {
75
75
  this.active.set(alias, current - 1);
76
76
  }
77
77
  }
78
+ /**
79
+ * Fixed-window counter for unauthenticated endpoints (invite redeem). Keyed by
80
+ * whatever identity the caller has — behind a tunnel the origin only sees the
81
+ * tunnel's own address, so deployments there effectively get one shared bucket.
82
+ */
83
+ export class FixedWindowLimiter {
84
+ maxPerMinute;
85
+ windows = new Map();
86
+ constructor(maxPerMinute) {
87
+ this.maxPerMinute = maxPerMinute;
88
+ }
89
+ allow(key, now = Date.now()) {
90
+ const kept = (this.windows.get(key) ?? []).filter((t) => now - t < 60_000);
91
+ if (kept.length >= this.maxPerMinute) {
92
+ this.windows.set(key, kept);
93
+ return false;
94
+ }
95
+ kept.push(now);
96
+ this.windows.set(key, kept);
97
+ return true;
98
+ }
99
+ }
78
100
  //# sourceMappingURL=limiter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"limiter.js","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"limiter.js","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@ import { ensureDataDir, hubConfigFromEnv, readAdminToken, resolvePaths, } from '
5
5
  import { registerConsumerRoutes } from './consumer.js';
6
6
  import { openDb } from './db.js';
7
7
  import { Router, sendError, sendJson } from './http.js';
8
- import { AliasSlots, ConsumerLimiter, TokenWindow } from './limiter.js';
8
+ import { registerInviteRoutes } from './invites.js';
9
+ import { AliasSlots, ConsumerLimiter, FixedWindowLimiter, TokenWindow } from './limiter.js';
9
10
  import { loadOrCreateAdminToken, loadOrCreatePepper } from './tokens.js';
10
11
  import { Tunnel } from './tunnel.js';
11
12
  /** Assemble the hub: db + admin API + healthz. Tunnel and /v1 routes attach in later phases. */
@@ -21,6 +22,12 @@ export function createHubServer(opts = {}) {
21
22
  const router = new Router();
22
23
  router.add('GET', '/healthz', (ctx) => sendJson(ctx.res, 200, { ok: true }));
23
24
  registerAdminRoutes(router, { db, auth, log });
25
+ registerInviteRoutes(router, {
26
+ db,
27
+ auth,
28
+ log,
29
+ limiter: new FixedWindowLimiter(config.inviteRedeemPerMinute),
30
+ });
24
31
  const tunnel = new Tunnel(db, auth, config, log);
25
32
  registerConsumerRoutes(router, {
26
33
  db,
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import type { TokenRole } from 'aweshare-protocol';
2
2
  import type { HubPaths } from './config.js';
3
3
  /** 32 random bytes -> 43 base64url chars; matches TOKEN_PATTERN. */
4
4
  export declare function generateToken(role: TokenRole): string;
5
+ /** Invite codes share the token format but are consumed at redeem, never stored. */
6
+ export declare function generateInviteCode(): string;
5
7
  export declare function hashToken(token: string, pepper: string): string;
6
8
  export declare function loadOrCreatePepper(paths: HubPaths): string;
7
9
  /** Admin token lives only in a server-local file; shown once at init. */
@@ -1,10 +1,14 @@
1
1
  import { createHash, randomBytes, timingSafeEqual } from 'node:crypto';
2
2
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
3
- import { TOKEN_PREFIXES } from '../../../packages/protocol/dist/index.js';
3
+ import { INVITE_PREFIX, TOKEN_PREFIXES } from '../../../packages/protocol/dist/index.js';
4
4
  /** 32 random bytes -> 43 base64url chars; matches TOKEN_PATTERN. */
5
5
  export function generateToken(role) {
6
6
  return TOKEN_PREFIXES[role] + randomBytes(32).toString('base64url');
7
7
  }
8
+ /** Invite codes share the token format but are consumed at redeem, never stored. */
9
+ export function generateInviteCode() {
10
+ return INVITE_PREFIX + randomBytes(32).toString('base64url');
11
+ }
8
12
  export function hashToken(token, pepper) {
9
13
  return createHash('sha256').update(`${pepper}:${token}`).digest('hex');
10
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,MAAc;IACrD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAChD,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACtD,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9C,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,sBAAsB,CAAC,KAAe;IACpD,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACpC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAClE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS;IAC5C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzC,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGjE,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACrE,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,MAAc;IACrD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAChD,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACtD,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9C,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,sBAAsB,CAAC,KAAe;IACpD,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACpC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAClE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS;IAC5C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzC,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC"}
package/bin/aweshare.mjs CHANGED
@@ -18,18 +18,18 @@ async function main() {
18
18
  return
19
19
  }
20
20
  if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
21
- console.log(`aweshare local-first AI capability relay
21
+ console.log(`Usage: aweshare [options] [command]
22
22
 
23
- Usage:
24
- aweshare hub <command> hub side: init, serve, token, grant, consumer, usage
25
- aweshare agent <command> producer side: init, start, doctor, grant, revoke, list
26
- aweshare self-update [--check] update the aweshare CLI itself (npm registry)
23
+ Open-source, local-first AI capability relay
27
24
 
28
- Environment:
29
- AWESHARE_NO_UPDATE_CHECK=1 disable the passive update reminder
25
+ Options:
26
+ -v, --version output the version number
27
+ -h, --help Display help
30
28
 
31
- Install (published): npm install -g aweshare
32
- From source: pnpm install && pnpm build, then pnpm link --global`)
29
+ Commands:
30
+ hub <command> Run the hub: init, serve, token, grant, consumer, usage
31
+ agent <command> Run the producer agent: init, start, doctor, grant, revoke, list
32
+ self-update [options] Update the aweshare CLI itself`)
33
33
  return
34
34
  }
35
35
  if (cmd === 'self-update') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aweshare",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Open-source, local-first AI capability relay",
6
6
  "license": "UNLICENSED",
@@ -7,4 +7,10 @@ export declare const TOKEN_PREFIXES: {
7
7
  export type TokenRole = keyof typeof TOKEN_PREFIXES;
8
8
  /** Tokens are `prefix + base64url(32 random bytes)`; base64url alphabet is [-_A-Za-z0-9]. */
9
9
  export declare const TOKEN_PATTERN: RegExp;
10
+ /**
11
+ * Invite codes are not tokens: they carry no role, only the right to obtain a
12
+ * producer token, and they are consumed at redeem. Same entropy as tokens.
13
+ */
14
+ export declare const INVITE_PREFIX = "asi_";
15
+ export declare const INVITE_PATTERN: RegExp;
10
16
  export declare function roleForToken(token: string): TokenRole | null;
@@ -6,6 +6,12 @@ export const TOKEN_PREFIXES = {
6
6
  };
7
7
  /** Tokens are `prefix + base64url(32 random bytes)`; base64url alphabet is [-_A-Za-z0-9]. */
8
8
  export const TOKEN_PATTERN = /^as[pca]_[A-Za-z0-9_-]{43}$/;
9
+ /**
10
+ * Invite codes are not tokens: they carry no role, only the right to obtain a
11
+ * producer token, and they are consumed at redeem. Same entropy as tokens.
12
+ */
13
+ export const INVITE_PREFIX = 'asi_';
14
+ export const INVITE_PATTERN = /^asi_[A-Za-z0-9_-]{43}$/;
9
15
  export function roleForToken(token) {
10
16
  for (const [role, prefix] of Object.entries(TOKEN_PREFIXES)) {
11
17
  if (token.startsWith(prefix))
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;CACL,CAAA;AAIV,6FAA6F;AAC7F,MAAM,CAAC,MAAM,aAAa,GAAG,6BAA6B,CAAA;AAE1D,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAA0B,EAAE,CAAC;QACrF,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;IAC3C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;CACL,CAAA;AAIV,6FAA6F;AAC7F,MAAM,CAAC,MAAM,aAAa,GAAG,6BAA6B,CAAA;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAA;AAEvD,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAA0B,EAAE,CAAC;QACrF,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;IAC3C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}