@dudousxd/nestjs-agent-dashboard 0.7.0 → 0.9.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 +85 -2
- package/dist/client/agent-client.d.ts +48 -0
- package/dist/client/agent-client.d.ts.map +1 -1
- package/dist/client/agent-client.js +23 -0
- package/dist/client/agent-client.js.map +1 -1
- package/dist/server/index.cjs +1315 -192
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +177 -9
- package/dist/server/index.d.ts +177 -9
- package/dist/server/index.js +1278 -158
- package/dist/server/index.js.map +1 -1
- package/dist/spa/assets/index-C42SW8IV.js +1 -0
- package/dist/spa/assets/index-DMBWMAsE.css +1 -0
- package/dist/spa/assets/index-DZVPxvtJ.js +49 -0
- package/dist/spa/assets/{preview-A3jHlGra.js → preview-DhDnTjWH.js} +1 -1
- package/dist/spa/index.html +3 -3
- package/dist/spa/preview.html +3 -3
- package/package.json +7 -3
- package/dist/spa/assets/index-BjIcXlBO.js +0 -1
- package/dist/spa/assets/index-CES4RqI4.js +0 -49
- package/dist/spa/assets/index-CVcgbps5.css +0 -1
package/README.md
CHANGED
|
@@ -39,8 +39,91 @@ The controllers are **path-relative and guard-frontable** — front `basePath`/`
|
|
|
39
39
|
|
|
40
40
|
```ts
|
|
41
41
|
AgentDashboardModule.forRoot({
|
|
42
|
-
basePath?: string;
|
|
43
|
-
apiBasePath?: string;
|
|
42
|
+
basePath?: string; // where the SPA is served. Default '/ai-gateway'
|
|
43
|
+
apiBasePath?: string; // where the JSON/SSE API is mounted. Default '<basePath>/api'
|
|
44
|
+
guards?: Type<CanActivate>[]; // bring-your-own auth — see "Console auth" below
|
|
45
|
+
dashboardAuth?: DashboardAuthOptions; // built-in login screen — see "Console auth" below
|
|
46
|
+
imports?: DynamicModule['imports'];
|
|
47
|
+
approvalActorRef?: (req) => string | undefined;
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Console auth
|
|
52
|
+
|
|
53
|
+
The console has no auth of its own by default — pick one of three postures, or combine them:
|
|
54
|
+
|
|
55
|
+
| Posture | When to use | Setup |
|
|
56
|
+
| ------- | ----------- | ----- |
|
|
57
|
+
| **Open** (default) | Local dev only. Never mount this way in production. | Omit both `guards` and `dashboardAuth`. |
|
|
58
|
+
| **`guards`** | You already have auth the console can reuse — an existing cookie-session guard, an SSO/OIDC session, a header your reverse proxy injects. | Pass guard classes; see below. |
|
|
59
|
+
| **`dashboardAuth`** | You have no ready-made guard for the console — e.g. your app authenticates with a header-only Bearer token a browser navigation can't attach — and want the simplest path to a protected console with zero SSO setup. | Pass `{ secret, login }`; see below. |
|
|
60
|
+
|
|
61
|
+
Both `guards` and `dashboardAuth` can be set together — **AND semantics**: a request must pass BOTH. `dashboardAuth`'s own gate runs first; a denied request never reaches your `guards`.
|
|
62
|
+
|
|
63
|
+
### Option A — `guards` (bring your own)
|
|
64
|
+
|
|
65
|
+
Front `basePath`/`apiBasePath` with a guard that reads YOUR app's session. A full-page navigation to `basePath` carries only cookies (never an `Authorization` header), so the guard must be able to authenticate from a cookie:
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import { CanActivate, ExecutionContext, Injectable, Module } from '@nestjs/common';
|
|
69
|
+
import { AgentDashboardModule } from '@dudousxd/nestjs-agent-dashboard';
|
|
70
|
+
|
|
71
|
+
@Injectable()
|
|
72
|
+
class ConsoleSessionGuard implements CanActivate {
|
|
73
|
+
constructor(private readonly sessions: SessionService) {}
|
|
74
|
+
|
|
75
|
+
async canActivate(context: ExecutionContext): Promise<boolean> {
|
|
76
|
+
const request = context.switchToHttp().getRequest();
|
|
77
|
+
const session = await this.sessions.verify(request.cookies?.appSession);
|
|
78
|
+
return session?.roles.includes('admin') ?? false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@Module({
|
|
83
|
+
imports: [
|
|
84
|
+
AgentDashboardModule.forRoot({
|
|
85
|
+
guards: [ConsoleSessionGuard],
|
|
86
|
+
imports: [SessionModule], // resolves ConsoleSessionGuard's own dependencies
|
|
87
|
+
}),
|
|
88
|
+
],
|
|
89
|
+
})
|
|
90
|
+
export class AppModule {}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Option B — `dashboardAuth` (built-in login screen)
|
|
94
|
+
|
|
95
|
+
Gates the console behind a stateless, signed session cookie (HMAC-SHA256, `node:crypto` only — no JWT dependency, no session store, mirrors `@dudousxd/nestjs-telescope`'s `dashboardAuth`). An unauthenticated page visit is redirected (302) to a built-in login form at `<basePath>/auth/login`; an unauthenticated API call gets `401`.
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
AgentDashboardModule.forRoot({
|
|
99
|
+
dashboardAuth: {
|
|
100
|
+
secret: process.env.AI_GATEWAY_AUTH_SECRET, // REQUIRED — 32+ bytes recommended. Missing => boot error.
|
|
101
|
+
ttl: '8h', // optional, default '8h'; sliding renewal past 50% TTL
|
|
102
|
+
login: async (username, password) => {
|
|
103
|
+
const user = await users.verify(username, password);
|
|
104
|
+
return user ? { id: user.id, name: user.name, roles: user.roles } : null; // null => generic failure
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Open `/ai-gateway`, enter the credentials, and you're in. Bad credentials get a **uniform** redirect back to the login page — the response is identical for an unknown user and a wrong password, so the endpoint never reveals which one was wrong. `POST <basePath>/auth/logout` clears the cookie.
|
|
111
|
+
|
|
112
|
+
Need the `login` hook to reach a DB (e.g. an `EntityManager`)? Use `forRootAsync` — `basePath`/`apiBasePath`/`guards` stay static (needed at module-build time for routing), only the auth config is resolved through DI:
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
AgentDashboardModule.forRootAsync({
|
|
116
|
+
imports: [DatabaseModule],
|
|
117
|
+
inject: [EntityManager],
|
|
118
|
+
useDashboardAuth: (em: EntityManager) => ({
|
|
119
|
+
secret: process.env.AI_GATEWAY_AUTH_SECRET,
|
|
120
|
+
login: async (username, password) => {
|
|
121
|
+
const admin = await em.findOne(AdminUser, { username });
|
|
122
|
+
return admin && (await admin.verifyPassword(password))
|
|
123
|
+
? { id: admin.id, name: admin.name, roles: ['admin'] }
|
|
124
|
+
: null;
|
|
125
|
+
},
|
|
126
|
+
}),
|
|
44
127
|
});
|
|
45
128
|
```
|
|
46
129
|
|
|
@@ -120,6 +120,48 @@ export interface ApprovalDecisionInput {
|
|
|
120
120
|
approved: boolean;
|
|
121
121
|
reason?: string;
|
|
122
122
|
}
|
|
123
|
+
/** Neutral paged query for the governance list reads (mirrors core's `GovernancePageQuery`). */
|
|
124
|
+
export interface GovernancePageQuery<TWhere> {
|
|
125
|
+
/** 1-based. */
|
|
126
|
+
page: number;
|
|
127
|
+
/** Rows per page, clamped server-side to 1..200. */
|
|
128
|
+
pageSize: number;
|
|
129
|
+
/** Equality/range filters; absent field = no constraint. */
|
|
130
|
+
where?: TWhere;
|
|
131
|
+
}
|
|
132
|
+
/** One page of a governance list read (mirrors core's `GovernancePage`). */
|
|
133
|
+
export interface GovernancePage<TRow> {
|
|
134
|
+
rows: TRow[];
|
|
135
|
+
total: number;
|
|
136
|
+
page: number;
|
|
137
|
+
pageSize: number;
|
|
138
|
+
}
|
|
139
|
+
/** Filters for `GET tool-calls-page` (the Runs & tools tool-calls table). */
|
|
140
|
+
export interface ToolCallWhere {
|
|
141
|
+
toolName?: string;
|
|
142
|
+
toolType?: string;
|
|
143
|
+
status?: string;
|
|
144
|
+
threadId?: string;
|
|
145
|
+
/** Inclusive UTC day bounds, `YYYY-MM-DD`. */
|
|
146
|
+
fromDay?: string;
|
|
147
|
+
toDay?: string;
|
|
148
|
+
}
|
|
149
|
+
/** Filters for `GET threads-page` (the Runs & tools threads table). */
|
|
150
|
+
export interface ThreadWhere {
|
|
151
|
+
actorRef?: string;
|
|
152
|
+
/** Substring match on the title (case-insensitive). */
|
|
153
|
+
title?: string;
|
|
154
|
+
fromDay?: string;
|
|
155
|
+
toDay?: string;
|
|
156
|
+
}
|
|
157
|
+
/** Filters for `GET runs-page` (the Reliability recent-runs table). */
|
|
158
|
+
export interface RunWhere {
|
|
159
|
+
agentName?: string;
|
|
160
|
+
status?: string;
|
|
161
|
+
errorCode?: string;
|
|
162
|
+
fromDay?: string;
|
|
163
|
+
toDay?: string;
|
|
164
|
+
}
|
|
123
165
|
/** Governance rollup for one tool over a range, for the Tools section. */
|
|
124
166
|
export interface ToolStatRow {
|
|
125
167
|
toolName: string;
|
|
@@ -185,6 +227,8 @@ export declare const agentClient: {
|
|
|
185
227
|
runs(limit?: number): Promise<RecentRunRow[]>;
|
|
186
228
|
/** Most recent tool calls (default 50). */
|
|
187
229
|
toolCalls(limit?: number): Promise<ToolCallActivityRow[]>;
|
|
230
|
+
/** A page of tool calls, filtered by `where` — the Runs & tools tool-calls table. */
|
|
231
|
+
toolCallsPage(query: GovernancePageQuery<ToolCallWhere>): Promise<GovernancePage<ToolCallActivityRow>>;
|
|
188
232
|
/** Tool calls sitting `pending_approval`, oldest first (default 50) — the approvals inbox. */
|
|
189
233
|
approvals(limit?: number): Promise<PendingApprovalRow[]>;
|
|
190
234
|
/**
|
|
@@ -197,6 +241,10 @@ export declare const agentClient: {
|
|
|
197
241
|
toolStats(range: GovernanceRange): Promise<ToolStatRow[]>;
|
|
198
242
|
/** Most recent threads (default 50). */
|
|
199
243
|
threads(limit?: number): Promise<ThreadActivityRow[]>;
|
|
244
|
+
/** A page of threads, filtered by `where` — the Runs & tools threads table. */
|
|
245
|
+
threadsPage(query: GovernancePageQuery<ThreadWhere>): Promise<GovernancePage<ThreadActivityRow>>;
|
|
246
|
+
/** A page of runs, filtered by `where` — the Reliability recent-runs table. */
|
|
247
|
+
runsPage(query: GovernancePageQuery<RunWhere>): Promise<GovernancePage<RecentRunRow>>;
|
|
200
248
|
/** Current price row per model. 501s if the host has no pricing store bound. */
|
|
201
249
|
pricing(): Promise<ModelPrice[]>;
|
|
202
250
|
/** Set a model's current price. 501s if the host has no pricing store bound. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-client.d.ts","sourceRoot":"","sources":["../../src/client/agent-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-client.d.ts","sourceRoot":"","sources":["../../src/client/agent-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,17 @@ async function http(path, init) {
|
|
|
13
13
|
throw new Error(`${res.status} ${res.statusText}`);
|
|
14
14
|
return (await res.json());
|
|
15
15
|
}
|
|
16
|
+
/** `page`/`limit`/`where[field]=value` query params for a paged governance read. */
|
|
17
|
+
function pageQueryParams(query) {
|
|
18
|
+
const params = new URLSearchParams({ page: `${query.page}`, limit: `${query.pageSize}` });
|
|
19
|
+
if (query.where !== undefined) {
|
|
20
|
+
for (const [field, value] of Object.entries(query.where)) {
|
|
21
|
+
if (typeof value === 'string' && value !== '')
|
|
22
|
+
params.set(`where[${field}]`, value);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return params;
|
|
26
|
+
}
|
|
16
27
|
export const agentClient = {
|
|
17
28
|
/** Spend/usage overview for a day range: `{ byModel, byActor, trend }`. */
|
|
18
29
|
spend(range) {
|
|
@@ -37,6 +48,10 @@ export const agentClient = {
|
|
|
37
48
|
toolCalls(limit = 50) {
|
|
38
49
|
return http(`/tool-calls?limit=${limit}`);
|
|
39
50
|
},
|
|
51
|
+
/** A page of tool calls, filtered by `where` — the Runs & tools tool-calls table. */
|
|
52
|
+
toolCallsPage(query) {
|
|
53
|
+
return http(`/tool-calls-page?${pageQueryParams(query)}`);
|
|
54
|
+
},
|
|
40
55
|
/** Tool calls sitting `pending_approval`, oldest first (default 50) — the approvals inbox. */
|
|
41
56
|
approvals(limit = 50) {
|
|
42
57
|
return http(`/approvals?limit=${limit}`);
|
|
@@ -64,6 +79,14 @@ export const agentClient = {
|
|
|
64
79
|
threads(limit = 50) {
|
|
65
80
|
return http(`/threads?limit=${limit}`);
|
|
66
81
|
},
|
|
82
|
+
/** A page of threads, filtered by `where` — the Runs & tools threads table. */
|
|
83
|
+
threadsPage(query) {
|
|
84
|
+
return http(`/threads-page?${pageQueryParams(query)}`);
|
|
85
|
+
},
|
|
86
|
+
/** A page of runs, filtered by `where` — the Reliability recent-runs table. */
|
|
87
|
+
runsPage(query) {
|
|
88
|
+
return http(`/runs-page?${pageQueryParams(query)}`);
|
|
89
|
+
},
|
|
67
90
|
/** Current price row per model. 501s if the host has no pricing store bound. */
|
|
68
91
|
pricing() {
|
|
69
92
|
return http('/pricing');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-client.js","sourceRoot":"","sources":["../../src/client/agent-client.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,uGAAuG;AACvG,gFAAgF;
|
|
1
|
+
{"version":3,"file":"agent-client.js","sourceRoot":"","sources":["../../src/client/agent-client.ts"],"names":[],"mappings":"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"}
|