aweshare 0.3.6 → 0.3.8
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 +29 -11
- package/apps/agent/dist/cli.js +1 -1
- package/apps/agent/dist/cli.js.map +1 -1
- package/apps/agent/dist/hub.d.ts +3 -0
- package/apps/agent/dist/hub.js +6 -0
- package/apps/agent/dist/hub.js.map +1 -1
- package/apps/hub/dist/admin.js +5 -5
- package/apps/hub/dist/admin.js.map +1 -1
- package/apps/hub/dist/cli.js +179 -24
- package/apps/hub/dist/cli.js.map +1 -1
- package/apps/hub/dist/db.d.ts +20 -14
- package/apps/hub/dist/db.js +55 -28
- package/apps/hub/dist/db.js.map +1 -1
- package/apps/hub/dist/invites.js +74 -32
- package/apps/hub/dist/invites.js.map +1 -1
- package/apps/hub/dist/table.d.ts +49 -2
- package/apps/hub/dist/table.js +56 -5
- package/apps/hub/dist/table.js.map +1 -1
- package/bin/aweshare.mjs +1 -1
- package/package.json +1 -1
package/apps/hub/dist/table.d.ts
CHANGED
|
@@ -4,18 +4,65 @@ export declare function formatTable(headers: string[], rows: string[][]): string
|
|
|
4
4
|
export declare function fmtTime(iso: string | null | undefined): string;
|
|
5
5
|
export interface InviteListRow {
|
|
6
6
|
id: number;
|
|
7
|
+
role: 'producer' | 'consumer';
|
|
7
8
|
name: string | null;
|
|
8
9
|
created_at: string;
|
|
9
10
|
expires_at: string | null;
|
|
10
11
|
revoked_at: string | null;
|
|
11
12
|
redeemed_at: string | null;
|
|
12
13
|
producer_id: number | null;
|
|
13
|
-
|
|
14
|
+
consumer_id: number | null;
|
|
15
|
+
/** Suspension state of the identity this invite redeemed (NULL while pending). */
|
|
14
16
|
producer_revoked_at?: string | null;
|
|
15
|
-
|
|
17
|
+
consumer_revoked_at?: string | null;
|
|
18
|
+
/** The token this invite minted (NULL while pending) — shown with --token. */
|
|
16
19
|
producer_name?: string | null;
|
|
17
20
|
producer_last_seen_at?: string | null;
|
|
21
|
+
consumer_name?: string | null;
|
|
22
|
+
consumer_last_seen_at?: string | null;
|
|
18
23
|
/** Present only with --reveal — codes stay recoverable, tokens never were. */
|
|
19
24
|
code?: string | null;
|
|
20
25
|
}
|
|
21
26
|
export declare function renderInvites(invites: InviteListRow[], reveal?: boolean, tokens?: boolean): string;
|
|
27
|
+
/** Rows of GET /admin/v1/tokens (hash-only view of the identity tables). */
|
|
28
|
+
export interface ProducerListRow {
|
|
29
|
+
id: number;
|
|
30
|
+
name: string;
|
|
31
|
+
email: string | null;
|
|
32
|
+
created_at: string;
|
|
33
|
+
revoked_at: string | null;
|
|
34
|
+
last_seen_at: string | null;
|
|
35
|
+
}
|
|
36
|
+
export interface ConsumerListRow {
|
|
37
|
+
id: number;
|
|
38
|
+
name: string;
|
|
39
|
+
created_at: string;
|
|
40
|
+
revoked_at: string | null;
|
|
41
|
+
last_seen_at: string | null;
|
|
42
|
+
}
|
|
43
|
+
export declare function renderProducers(rows: ProducerListRow[]): string;
|
|
44
|
+
export declare function renderConsumers(rows: ConsumerListRow[]): string;
|
|
45
|
+
/** Rows of GET /admin/v1/usage (one per proxied request; zero content stored). */
|
|
46
|
+
export interface UsageRow {
|
|
47
|
+
id: number;
|
|
48
|
+
at: string;
|
|
49
|
+
consumer_id: number;
|
|
50
|
+
producer_id: number;
|
|
51
|
+
alias: string;
|
|
52
|
+
upstream_model: string;
|
|
53
|
+
protocol: string;
|
|
54
|
+
streaming: number;
|
|
55
|
+
status: number | null;
|
|
56
|
+
error_code: string | null;
|
|
57
|
+
duration_ms: number;
|
|
58
|
+
bytes_in: number;
|
|
59
|
+
bytes_out: number;
|
|
60
|
+
prompt_tokens: number | null;
|
|
61
|
+
completion_tokens: number | null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Newest-first usage log; the CLI maps consumer ids to names via the roster
|
|
65
|
+
* (fallback '#id'). Token counts are best-effort — NULL (Ollama streams)
|
|
66
|
+
* renders as '-'.
|
|
67
|
+
*/
|
|
68
|
+
export declare function renderUsage(rows: UsageRow[], consumerName: (id: number) => string): string;
|
package/apps/hub/dist/table.js
CHANGED
|
@@ -13,12 +13,14 @@ export function fmtTime(iso) {
|
|
|
13
13
|
return iso ? `${iso.slice(0, 16).replace('T', ' ')}Z` : '-';
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Lifecycle derived from timestamps: a redeemed code mirrors its
|
|
16
|
+
* Lifecycle derived from timestamps: a redeemed code mirrors its identity's
|
|
17
17
|
* suspension (used > suspended), then revoked, then expired, else pending.
|
|
18
18
|
*/
|
|
19
19
|
function inviteStatus(inv, now) {
|
|
20
|
-
if (inv.redeemed_at)
|
|
21
|
-
|
|
20
|
+
if (inv.redeemed_at) {
|
|
21
|
+
const suspended = inv.producer_revoked_at ?? inv.consumer_revoked_at;
|
|
22
|
+
return suspended ? 'suspended' : 'used';
|
|
23
|
+
}
|
|
22
24
|
if (inv.revoked_at)
|
|
23
25
|
return 'revoked';
|
|
24
26
|
if (inv.expires_at && Date.parse(inv.expires_at) <= now)
|
|
@@ -31,6 +33,7 @@ export function renderInvites(invites, reveal = false, tokens = false) {
|
|
|
31
33
|
const now = Date.now();
|
|
32
34
|
return formatTable([
|
|
33
35
|
'ID',
|
|
36
|
+
'ROLE',
|
|
34
37
|
'BOUND TO',
|
|
35
38
|
'CREATED',
|
|
36
39
|
'EXPIRES',
|
|
@@ -39,17 +42,65 @@ export function renderInvites(invites, reveal = false, tokens = false) {
|
|
|
39
42
|
...(reveal ? ['CODE'] : []),
|
|
40
43
|
], invites.map((i) => [
|
|
41
44
|
String(i.id),
|
|
45
|
+
i.role,
|
|
42
46
|
i.name ?? '-',
|
|
43
47
|
fmtTime(i.created_at),
|
|
44
48
|
fmtTime(i.expires_at),
|
|
45
49
|
inviteStatus(i, now),
|
|
46
50
|
...(tokens
|
|
47
51
|
? [
|
|
48
|
-
i.producer_id !== null
|
|
49
|
-
|
|
52
|
+
i.producer_id !== null
|
|
53
|
+
? `#${i.producer_id} ${i.producer_name ?? '-'}`
|
|
54
|
+
: i.consumer_id !== null
|
|
55
|
+
? `#${i.consumer_id} ${i.consumer_name ?? '-'}`
|
|
56
|
+
: '-',
|
|
57
|
+
fmtTime(i.producer_last_seen_at ?? i.consumer_last_seen_at),
|
|
50
58
|
]
|
|
51
59
|
: []),
|
|
52
60
|
...(reveal ? [i.code ?? '-'] : []),
|
|
53
61
|
]));
|
|
54
62
|
}
|
|
63
|
+
export function renderProducers(rows) {
|
|
64
|
+
if (rows.length === 0)
|
|
65
|
+
return 'no producers — mint invites with: aweshare hub invite --name NAME';
|
|
66
|
+
return formatTable(['ID', 'NAME', 'EMAIL', 'STATUS', 'LAST SEEN', 'CREATED'], rows.map((p) => [
|
|
67
|
+
String(p.id),
|
|
68
|
+
p.name,
|
|
69
|
+
p.email ?? '-',
|
|
70
|
+
p.revoked_at ? 'suspended' : 'active',
|
|
71
|
+
fmtTime(p.last_seen_at),
|
|
72
|
+
fmtTime(p.created_at),
|
|
73
|
+
]));
|
|
74
|
+
}
|
|
75
|
+
export function renderConsumers(rows) {
|
|
76
|
+
if (rows.length === 0)
|
|
77
|
+
return 'no consumers — invite one with: aweshare hub invite --role consumer --name NAME';
|
|
78
|
+
return formatTable(['ID', 'NAME', 'STATUS', 'LAST SEEN', 'CREATED'], rows.map((c) => [
|
|
79
|
+
String(c.id),
|
|
80
|
+
c.name,
|
|
81
|
+
c.revoked_at ? 'suspended' : 'active',
|
|
82
|
+
fmtTime(c.last_seen_at),
|
|
83
|
+
fmtTime(c.created_at),
|
|
84
|
+
]));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Newest-first usage log; the CLI maps consumer ids to names via the roster
|
|
88
|
+
* (fallback '#id'). Token counts are best-effort — NULL (Ollama streams)
|
|
89
|
+
* renders as '-'.
|
|
90
|
+
*/
|
|
91
|
+
export function renderUsage(rows, consumerName) {
|
|
92
|
+
if (rows.length === 0)
|
|
93
|
+
return 'no usage yet — rows appear after the first consumer request';
|
|
94
|
+
return formatTable(['TIME', 'CONSUMER', 'ALIAS', 'MODEL', 'STATUS', 'TOOK', 'TOKENS'], rows.map((r) => [
|
|
95
|
+
fmtTime(r.at),
|
|
96
|
+
consumerName(r.consumer_id),
|
|
97
|
+
r.alias,
|
|
98
|
+
r.upstream_model,
|
|
99
|
+
r.error_code ? `${r.status ?? '-'} ${r.error_code}` : String(r.status ?? '-'),
|
|
100
|
+
`${r.duration_ms}ms`,
|
|
101
|
+
r.prompt_tokens === null && r.completion_tokens === null
|
|
102
|
+
? '-'
|
|
103
|
+
: `${r.prompt_tokens ?? 0}+${r.completion_tokens ?? 0}`,
|
|
104
|
+
]));
|
|
105
|
+
}
|
|
55
106
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,OAAiB,EAAE,IAAgB;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/F,MAAM,IAAI,GAAG,CAAC,KAAe,EAAU,EAAE,CACvC,KAAK;SACF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SACvC,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CAAA;IACd,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,OAAO,CAAC,GAA8B;IACpD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;AAC7D,CAAC;
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
|
package/bin/aweshare.mjs
CHANGED
|
@@ -27,7 +27,7 @@ Options:
|
|
|
27
27
|
-h, --help Show this message and exit.
|
|
28
28
|
|
|
29
29
|
Commands:
|
|
30
|
-
hub <command> Run the hub: init, serve, invite, list, revoke, restore.
|
|
30
|
+
hub <command> Run the hub: init, serve, invite, list, limits, usage, revoke, restore.
|
|
31
31
|
agent <command> Run the producer agent: init, join, config, doctor, start, grant, revoke, list.
|
|
32
32
|
self-update Update the aweshare CLI itself.`)
|
|
33
33
|
return
|