@agentforge-io/nest 0.2.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 +486 -0
- package/dist/agent-forge.module.d.ts +21 -0
- package/dist/agent-forge.module.js +144 -0
- package/dist/agent-forge.module.js.map +1 -0
- package/dist/auth/current-user.decorator.d.ts +8 -0
- package/dist/auth/current-user.decorator.js +9 -0
- package/dist/auth/current-user.decorator.js.map +1 -0
- package/dist/auth/public.decorator.d.ts +2 -0
- package/dist/auth/public.decorator.js +8 -0
- package/dist/auth/public.decorator.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/agent-runner.service.d.ts +1 -0
- package/dist/core/agent-runner.service.js +6 -0
- package/dist/core/agent-runner.service.js.map +1 -0
- package/dist/core/orchestrator.service.d.ts +2 -0
- package/dist/core/orchestrator.service.js +7 -0
- package/dist/core/orchestrator.service.js.map +1 -0
- package/dist/core/tool-registry.service.d.ts +1 -0
- package/dist/core/tool-registry.service.js +6 -0
- package/dist/core/tool-registry.service.js.map +1 -0
- package/dist/database/entities/auth-identity.entity.d.ts +1 -0
- package/dist/database/entities/auth-identity.entity.js +6 -0
- package/dist/database/entities/auth-identity.entity.js.map +1 -0
- package/dist/database/entities/conversation.entity.d.ts +1 -0
- package/dist/database/entities/conversation.entity.js +6 -0
- package/dist/database/entities/conversation.entity.js.map +1 -0
- package/dist/database/entities/email-token.entity.d.ts +1 -0
- package/dist/database/entities/email-token.entity.js +6 -0
- package/dist/database/entities/email-token.entity.js.map +1 -0
- package/dist/database/entities/index.d.ts +7 -0
- package/dist/database/entities/index.js +16 -0
- package/dist/database/entities/index.js.map +1 -0
- package/dist/database/entities/message.entity.d.ts +1 -0
- package/dist/database/entities/message.entity.js +6 -0
- package/dist/database/entities/message.entity.js.map +1 -0
- package/dist/database/entities/refresh-token.entity.d.ts +1 -0
- package/dist/database/entities/refresh-token.entity.js +6 -0
- package/dist/database/entities/refresh-token.entity.js.map +1 -0
- package/dist/database/entities/subscription.entity.d.ts +1 -0
- package/dist/database/entities/subscription.entity.js +6 -0
- package/dist/database/entities/subscription.entity.js.map +1 -0
- package/dist/database/entities/usage-record.entity.d.ts +1 -0
- package/dist/database/entities/usage-record.entity.js +6 -0
- package/dist/database/entities/usage-record.entity.js.map +1 -0
- package/dist/database/entities/user.entity.d.ts +1 -0
- package/dist/database/entities/user.entity.js +6 -0
- package/dist/database/entities/user.entity.js.map +1 -0
- package/dist/decorators/agent-tool.decorator.d.ts +21 -0
- package/dist/decorators/agent-tool.decorator.js +12 -0
- package/dist/decorators/agent-tool.decorator.js.map +1 -0
- package/dist/decorators/rate-limit.decorator.d.ts +9 -0
- package/dist/decorators/rate-limit.decorator.js +11 -0
- package/dist/decorators/rate-limit.decorator.js.map +1 -0
- package/dist/decorators/require-plan.decorator.d.ts +2 -0
- package/dist/decorators/require-plan.decorator.js +8 -0
- package/dist/decorators/require-plan.decorator.js.map +1 -0
- package/dist/filters/agentforge-exception.filter.d.ts +5 -0
- package/dist/filters/agentforge-exception.filter.js +40 -0
- package/dist/filters/agentforge-exception.filter.js.map +1 -0
- package/dist/guards/rate-limit.guard.d.ts +10 -0
- package/dist/guards/rate-limit.guard.js +73 -0
- package/dist/guards/rate-limit.guard.js.map +1 -0
- package/dist/guards/usage-limit.guard.d.ts +11 -0
- package/dist/guards/usage-limit.guard.js +57 -0
- package/dist/guards/usage-limit.guard.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/usage-tracking.interceptor.d.ts +6 -0
- package/dist/interceptors/usage-tracking.interceptor.js +30 -0
- package/dist/interceptors/usage-tracking.interceptor.js.map +1 -0
- package/dist/modules/admin/admin-plans.controller.d.ts +11 -0
- package/dist/modules/admin/admin-plans.controller.js +97 -0
- package/dist/modules/admin/admin-plans.controller.js.map +1 -0
- package/dist/modules/admin/admin-tenant-agents.controller.d.ts +61 -0
- package/dist/modules/admin/admin-tenant-agents.controller.js +424 -0
- package/dist/modules/admin/admin-tenant-agents.controller.js.map +1 -0
- package/dist/modules/admin/admin-tenant-billing.controller.d.ts +51 -0
- package/dist/modules/admin/admin-tenant-billing.controller.js +119 -0
- package/dist/modules/admin/admin-tenant-billing.controller.js.map +1 -0
- package/dist/modules/admin/admin-tenants.controller.d.ts +43 -0
- package/dist/modules/admin/admin-tenants.controller.js +178 -0
- package/dist/modules/admin/admin-tenants.controller.js.map +1 -0
- package/dist/modules/admin/admin-users.controller.d.ts +41 -0
- package/dist/modules/admin/admin-users.controller.js +121 -0
- package/dist/modules/admin/admin-users.controller.js.map +1 -0
- package/dist/modules/admin/admin.module.d.ts +2 -0
- package/dist/modules/admin/admin.module.js +26 -0
- package/dist/modules/admin/admin.module.js.map +1 -0
- package/dist/modules/admin/platform-admin.guard.d.ts +7 -0
- package/dist/modules/admin/platform-admin.guard.js +52 -0
- package/dist/modules/admin/platform-admin.guard.js.map +1 -0
- package/dist/modules/agent/agent.controller.d.ts +34 -0
- package/dist/modules/agent/agent.controller.js +178 -0
- package/dist/modules/agent/agent.controller.js.map +1 -0
- package/dist/modules/agent/agent.module.d.ts +2 -0
- package/dist/modules/agent/agent.module.js +23 -0
- package/dist/modules/agent/agent.module.js.map +1 -0
- package/dist/modules/agent/agent.service.d.ts +2 -0
- package/dist/modules/agent/agent.service.js +7 -0
- package/dist/modules/agent/agent.service.js.map +1 -0
- package/dist/modules/agent/dto/create-conversation.dto.d.ts +8 -0
- package/dist/modules/agent/dto/create-conversation.dto.js +48 -0
- package/dist/modules/agent/dto/create-conversation.dto.js.map +1 -0
- package/dist/modules/agent/dto/send-message.dto.d.ts +12 -0
- package/dist/modules/agent/dto/send-message.dto.js +42 -0
- package/dist/modules/agent/dto/send-message.dto.js.map +1 -0
- package/dist/modules/agent/in-memory-prepared-stream.store.d.ts +1 -0
- package/dist/modules/agent/in-memory-prepared-stream.store.js +6 -0
- package/dist/modules/agent/in-memory-prepared-stream.store.js.map +1 -0
- package/dist/modules/agent/prepared-stream.service.d.ts +1 -0
- package/dist/modules/agent/prepared-stream.service.js +7 -0
- package/dist/modules/agent/prepared-stream.service.js.map +1 -0
- package/dist/modules/agent/prepared-stream.types.d.ts +1 -0
- package/dist/modules/agent/prepared-stream.types.js +6 -0
- package/dist/modules/agent/prepared-stream.types.js.map +1 -0
- package/dist/modules/agent/redis-prepared-stream.store.d.ts +9 -0
- package/dist/modules/agent/redis-prepared-stream.store.js +48 -0
- package/dist/modules/agent/redis-prepared-stream.store.js.map +1 -0
- package/dist/modules/auth/auth.controller.d.ts +63 -0
- package/dist/modules/auth/auth.controller.js +255 -0
- package/dist/modules/auth/auth.controller.js.map +1 -0
- package/dist/modules/auth/auth.module.d.ts +4 -0
- package/dist/modules/auth/auth.module.js +71 -0
- package/dist/modules/auth/auth.module.js.map +1 -0
- package/dist/modules/auth/auth.service.d.ts +2 -0
- package/dist/modules/auth/auth.service.js +7 -0
- package/dist/modules/auth/auth.service.js.map +1 -0
- package/dist/modules/auth/decorators/current-user.decorator.d.ts +8 -0
- package/dist/modules/auth/decorators/current-user.decorator.js +12 -0
- package/dist/modules/auth/decorators/current-user.decorator.js.map +1 -0
- package/dist/modules/auth/decorators/public.decorator.d.ts +2 -0
- package/dist/modules/auth/decorators/public.decorator.js +8 -0
- package/dist/modules/auth/decorators/public.decorator.js.map +1 -0
- package/dist/modules/auth/dto/login.dto.d.ts +4 -0
- package/dist/modules/auth/dto/login.dto.js +29 -0
- package/dist/modules/auth/dto/login.dto.js.map +1 -0
- package/dist/modules/auth/dto/register.dto.d.ts +5 -0
- package/dist/modules/auth/dto/register.dto.js +36 -0
- package/dist/modules/auth/dto/register.dto.js.map +1 -0
- package/dist/modules/auth/guards/jwt-auth.guard.d.ts +9 -0
- package/dist/modules/auth/guards/jwt-auth.guard.js +37 -0
- package/dist/modules/auth/guards/jwt-auth.guard.js.map +1 -0
- package/dist/modules/auth/guards/local-auth.guard.d.ts +4 -0
- package/dist/modules/auth/guards/local-auth.guard.js +18 -0
- package/dist/modules/auth/guards/local-auth.guard.js.map +1 -0
- package/dist/modules/auth/guards/oauth-configured.guard.d.ts +11 -0
- package/dist/modules/auth/guards/oauth-configured.guard.js +51 -0
- package/dist/modules/auth/guards/oauth-configured.guard.js.map +1 -0
- package/dist/modules/auth/oauth.controller.d.ts +20 -0
- package/dist/modules/auth/oauth.controller.js +208 -0
- package/dist/modules/auth/oauth.controller.js.map +1 -0
- package/dist/modules/auth/refresh-token.service.d.ts +2 -0
- package/dist/modules/auth/refresh-token.service.js +7 -0
- package/dist/modules/auth/refresh-token.service.js.map +1 -0
- package/dist/modules/auth/strategies/github.strategy.d.ts +12 -0
- package/dist/modules/auth/strategies/github.strategy.js +57 -0
- package/dist/modules/auth/strategies/github.strategy.js.map +1 -0
- package/dist/modules/auth/strategies/google.strategy.d.ts +19 -0
- package/dist/modules/auth/strategies/google.strategy.js +56 -0
- package/dist/modules/auth/strategies/google.strategy.js.map +1 -0
- package/dist/modules/auth/strategies/jwt.strategy.d.ts +18 -0
- package/dist/modules/auth/strategies/jwt.strategy.js +49 -0
- package/dist/modules/auth/strategies/jwt.strategy.js.map +1 -0
- package/dist/modules/auth/strategies/local.strategy.d.ts +11 -0
- package/dist/modules/auth/strategies/local.strategy.js +31 -0
- package/dist/modules/auth/strategies/local.strategy.js.map +1 -0
- package/dist/modules/billing/adapters/billing-adapter.interface.d.ts +1 -0
- package/dist/modules/billing/adapters/billing-adapter.interface.js +6 -0
- package/dist/modules/billing/adapters/billing-adapter.interface.js.map +1 -0
- package/dist/modules/billing/adapters/stripe/stripe.adapter.d.ts +19 -0
- package/dist/modules/billing/adapters/stripe/stripe.adapter.js +118 -0
- package/dist/modules/billing/adapters/stripe/stripe.adapter.js.map +1 -0
- package/dist/modules/billing/billing.controller.d.ts +54 -0
- package/dist/modules/billing/billing.controller.js +180 -0
- package/dist/modules/billing/billing.controller.js.map +1 -0
- package/dist/modules/billing/billing.module.d.ts +2 -0
- package/dist/modules/billing/billing.module.js +57 -0
- package/dist/modules/billing/billing.module.js.map +1 -0
- package/dist/modules/billing/billing.service.d.ts +2 -0
- package/dist/modules/billing/billing.service.js +7 -0
- package/dist/modules/billing/billing.service.js.map +1 -0
- package/dist/modules/billing/usage.service.d.ts +2 -0
- package/dist/modules/billing/usage.service.js +6 -0
- package/dist/modules/billing/usage.service.js.map +1 -0
- package/dist/modules/connectors/connectors.controller.d.ts +16 -0
- package/dist/modules/connectors/connectors.controller.js +142 -0
- package/dist/modules/connectors/connectors.controller.js.map +1 -0
- package/dist/modules/connectors/connectors.module.d.ts +2 -0
- package/dist/modules/connectors/connectors.module.js +20 -0
- package/dist/modules/connectors/connectors.module.js.map +1 -0
- package/dist/modules/conversation/conversation.module.d.ts +2 -0
- package/dist/modules/conversation/conversation.module.js +17 -0
- package/dist/modules/conversation/conversation.module.js.map +1 -0
- package/dist/modules/conversation/conversation.service.d.ts +1 -0
- package/dist/modules/conversation/conversation.service.js +7 -0
- package/dist/modules/conversation/conversation.service.js.map +1 -0
- package/dist/modules/email/adapters/email-adapter.interface.d.ts +1 -0
- package/dist/modules/email/adapters/email-adapter.interface.js +6 -0
- package/dist/modules/email/adapters/email-adapter.interface.js.map +1 -0
- package/dist/modules/email/adapters/noop.adapter.d.ts +1 -0
- package/dist/modules/email/adapters/noop.adapter.js +6 -0
- package/dist/modules/email/adapters/noop.adapter.js.map +1 -0
- package/dist/modules/email/adapters/resend.adapter.d.ts +1 -0
- package/dist/modules/email/adapters/resend.adapter.js +6 -0
- package/dist/modules/email/adapters/resend.adapter.js.map +1 -0
- package/dist/modules/email/email.module.d.ts +2 -0
- package/dist/modules/email/email.module.js +17 -0
- package/dist/modules/email/email.module.js.map +1 -0
- package/dist/modules/email/email.service.d.ts +1 -0
- package/dist/modules/email/email.service.js +6 -0
- package/dist/modules/email/email.service.js.map +1 -0
- package/dist/modules/email/templates/transactional.template.d.ts +18 -0
- package/dist/modules/email/templates/transactional.template.js +43 -0
- package/dist/modules/email/templates/transactional.template.js.map +1 -0
- package/dist/modules/mcp/mcp-admin.controller.d.ts +35 -0
- package/dist/modules/mcp/mcp-admin.controller.js +111 -0
- package/dist/modules/mcp/mcp-admin.controller.js.map +1 -0
- package/dist/modules/mcp/mcp.module.d.ts +8 -0
- package/dist/modules/mcp/mcp.module.js +38 -0
- package/dist/modules/mcp/mcp.module.js.map +1 -0
- package/dist/modules/public-chat/public-chat.controller.d.ts +54 -0
- package/dist/modules/public-chat/public-chat.controller.js +279 -0
- package/dist/modules/public-chat/public-chat.controller.js.map +1 -0
- package/dist/modules/public-chat/public-chat.module.d.ts +2 -0
- package/dist/modules/public-chat/public-chat.module.js +20 -0
- package/dist/modules/public-chat/public-chat.module.js.map +1 -0
- package/dist/modules/queue/jobs.controller.d.ts +23 -0
- package/dist/modules/queue/jobs.controller.js +98 -0
- package/dist/modules/queue/jobs.controller.js.map +1 -0
- package/dist/modules/queue/processors/agent.processor.d.ts +12 -0
- package/dist/modules/queue/processors/agent.processor.js +65 -0
- package/dist/modules/queue/processors/agent.processor.js.map +1 -0
- package/dist/modules/queue/queue.module.d.ts +5 -0
- package/dist/modules/queue/queue.module.js +55 -0
- package/dist/modules/queue/queue.module.js.map +1 -0
- package/dist/modules/queue/queue.service.d.ts +15 -0
- package/dist/modules/queue/queue.service.js +86 -0
- package/dist/modules/queue/queue.service.js.map +1 -0
- package/dist/providers/repositories.providers.d.ts +3 -0
- package/dist/providers/repositories.providers.js +35 -0
- package/dist/providers/repositories.providers.js.map +1 -0
- package/dist/providers/services.providers.d.ts +4 -0
- package/dist/providers/services.providers.js +142 -0
- package/dist/providers/services.providers.js.map +1 -0
- package/dist/redis/redis.provider.d.ts +3 -0
- package/dist/redis/redis.provider.js +48 -0
- package/dist/redis/redis.provider.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var UsageTrackingInterceptor_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.UsageTrackingInterceptor = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const rxjs_1 = require("rxjs");
|
|
13
|
+
let UsageTrackingInterceptor = UsageTrackingInterceptor_1 = class UsageTrackingInterceptor {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.logger = new common_1.Logger(UsageTrackingInterceptor_1.name);
|
|
16
|
+
}
|
|
17
|
+
intercept(context, next) {
|
|
18
|
+
const start = Date.now();
|
|
19
|
+
const req = context.switchToHttp().getRequest();
|
|
20
|
+
return next.handle().pipe((0, rxjs_1.tap)(() => {
|
|
21
|
+
const duration = Date.now() - start;
|
|
22
|
+
this.logger.debug(`${req.method} ${req.url} - ${duration}ms`);
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.UsageTrackingInterceptor = UsageTrackingInterceptor;
|
|
27
|
+
exports.UsageTrackingInterceptor = UsageTrackingInterceptor = UsageTrackingInterceptor_1 = __decorate([
|
|
28
|
+
(0, common_1.Injectable)()
|
|
29
|
+
], UsageTrackingInterceptor);
|
|
30
|
+
//# sourceMappingURL=usage-tracking.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-tracking.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/usage-tracking.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAMwB;AACxB,+BAAuC;AAOhC,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IAA9B;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,CAAC;IAatE,CAAC;IAXC,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAmC,CAAC;QAEjF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC,GAAG,EAAE;YACP,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,QAAQ,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAdY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;GACA,wBAAwB,CAcpC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PlanService } from '@agentforge/core';
|
|
2
|
+
import type { NewPlan, PlanPatch } from '@agentforge/core';
|
|
3
|
+
export declare class AdminPlansController {
|
|
4
|
+
private readonly plans;
|
|
5
|
+
constructor(plans: PlanService);
|
|
6
|
+
listAll(): Promise<import("@agentforge/core").Plan[]>;
|
|
7
|
+
get(planId: string): Promise<import("@agentforge/core").Plan>;
|
|
8
|
+
create(body: NewPlan): Promise<import("@agentforge/core").Plan>;
|
|
9
|
+
update(planId: string, patch: PlanPatch): Promise<import("@agentforge/core").Plan>;
|
|
10
|
+
deactivate(planId: string): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AdminPlansController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const core_1 = require("@agentforge/core");
|
|
19
|
+
const platform_admin_guard_1 = require("./platform-admin.guard");
|
|
20
|
+
let AdminPlansController = class AdminPlansController {
|
|
21
|
+
constructor(plans) {
|
|
22
|
+
this.plans = plans;
|
|
23
|
+
}
|
|
24
|
+
listAll() {
|
|
25
|
+
return this.plans.listAll();
|
|
26
|
+
}
|
|
27
|
+
async get(planId) {
|
|
28
|
+
const plan = await this.plans.getPlan(planId);
|
|
29
|
+
if (!plan)
|
|
30
|
+
throw new common_1.NotFoundException(`Plan "${planId}" not found`);
|
|
31
|
+
return plan;
|
|
32
|
+
}
|
|
33
|
+
async create(body) {
|
|
34
|
+
if (!body?.id || !body?.name || !body?.limits) {
|
|
35
|
+
throw new common_1.BadRequestException('id, name, limits are required');
|
|
36
|
+
}
|
|
37
|
+
return this.plans.create(body);
|
|
38
|
+
}
|
|
39
|
+
async update(planId, patch) {
|
|
40
|
+
return this.plans.update(planId, patch ?? {});
|
|
41
|
+
}
|
|
42
|
+
async deactivate(planId) {
|
|
43
|
+
await this.plans.deactivate(planId);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.AdminPlansController = AdminPlansController;
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, common_1.Get)(),
|
|
49
|
+
(0, swagger_1.ApiOperation)({ summary: 'List every plan, including inactive ones' }),
|
|
50
|
+
__metadata("design:type", Function),
|
|
51
|
+
__metadata("design:paramtypes", []),
|
|
52
|
+
__metadata("design:returntype", void 0)
|
|
53
|
+
], AdminPlansController.prototype, "listAll", null);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, common_1.Get)(':planId'),
|
|
56
|
+
(0, swagger_1.ApiOperation)({ summary: 'Get a single plan by id' }),
|
|
57
|
+
__param(0, (0, common_1.Param)('planId')),
|
|
58
|
+
__metadata("design:type", Function),
|
|
59
|
+
__metadata("design:paramtypes", [String]),
|
|
60
|
+
__metadata("design:returntype", Promise)
|
|
61
|
+
], AdminPlansController.prototype, "get", null);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, common_1.Post)(),
|
|
64
|
+
(0, swagger_1.ApiOperation)({ summary: 'Create a plan' }),
|
|
65
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.CREATED),
|
|
66
|
+
__param(0, (0, common_1.Body)()),
|
|
67
|
+
__metadata("design:type", Function),
|
|
68
|
+
__metadata("design:paramtypes", [Object]),
|
|
69
|
+
__metadata("design:returntype", Promise)
|
|
70
|
+
], AdminPlansController.prototype, "create", null);
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, common_1.Patch)(':planId'),
|
|
73
|
+
(0, swagger_1.ApiOperation)({ summary: 'Update a plan (partial — only changed fields)' }),
|
|
74
|
+
__param(0, (0, common_1.Param)('planId')),
|
|
75
|
+
__param(1, (0, common_1.Body)()),
|
|
76
|
+
__metadata("design:type", Function),
|
|
77
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
78
|
+
__metadata("design:returntype", Promise)
|
|
79
|
+
], AdminPlansController.prototype, "update", null);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, common_1.Delete)(':planId'),
|
|
82
|
+
(0, swagger_1.ApiOperation)({
|
|
83
|
+
summary: 'Soft-delete a plan (sets isActive=false). Hard delete is not exposed — existing subscriptions still reference plans by id.',
|
|
84
|
+
}),
|
|
85
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
86
|
+
__param(0, (0, common_1.Param)('planId')),
|
|
87
|
+
__metadata("design:type", Function),
|
|
88
|
+
__metadata("design:paramtypes", [String]),
|
|
89
|
+
__metadata("design:returntype", Promise)
|
|
90
|
+
], AdminPlansController.prototype, "deactivate", null);
|
|
91
|
+
exports.AdminPlansController = AdminPlansController = __decorate([
|
|
92
|
+
(0, swagger_1.ApiTags)('Admin: Plans'),
|
|
93
|
+
(0, common_1.Controller)('admin/plans'),
|
|
94
|
+
(0, common_1.UseGuards)(platform_admin_guard_1.PlatformAdminGuard),
|
|
95
|
+
__metadata("design:paramtypes", [core_1.PlanService])
|
|
96
|
+
], AdminPlansController);
|
|
97
|
+
//# sourceMappingURL=admin-plans.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-plans.controller.js","sourceRoot":"","sources":["../../../src/modules/admin/admin-plans.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAawB;AACxB,6CAAwD;AACxD,2CAA+C;AAE/C,iEAA4D;AAWrD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA6B,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAInD,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAIK,AAAN,KAAK,CAAC,GAAG,CAAkB,MAAc;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,SAAS,MAAM,aAAa,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAKK,AAAN,KAAK,CAAC,MAAM,CAAS,IAAa;QAChC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,4BAAmB,CAAC,+BAA+B,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAkB,MAAc,EAAU,KAAgB;QACpE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAQK,AAAN,KAAK,CAAC,UAAU,CAAkB,MAAc;QAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF,CAAA;AA1CY,oDAAoB;AAK/B;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;;;;mDAGrE;AAIK;IAFL,IAAA,YAAG,EAAC,SAAS,CAAC;IACd,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;IAC1C,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;;;;+CAIzB;AAKK;IAHL,IAAA,aAAI,GAAE;IACN,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAC1C,IAAA,iBAAQ,EAAC,mBAAU,CAAC,OAAO,CAAC;IACf,WAAA,IAAA,aAAI,GAAE,CAAA;;;;kDAKnB;AAIK;IAFL,IAAA,cAAK,EAAC,SAAS,CAAC;IAChB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC;IAC7D,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;kDAEpD;AAQK;IANL,IAAA,eAAM,EAAC,SAAS,CAAC;IACjB,IAAA,sBAAY,EAAC;QACZ,OAAO,EACL,4HAA4H;KAC/H,CAAC;IACD,IAAA,iBAAQ,EAAC,mBAAU,CAAC,UAAU,CAAC;IACd,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;;;;sDAEhC;+BAzCU,oBAAoB;IAHhC,IAAA,iBAAO,EAAC,cAAc,CAAC;IACvB,IAAA,mBAAU,EAAC,aAAa,CAAC;IACzB,IAAA,kBAAS,EAAC,yCAAkB,CAAC;qCAEQ,kBAAW;GADpC,oBAAoB,CA0ChC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { AgentConfigService, ApiKeyService, ChatTokenService, TenantService, UploadService } from '@agentforge/core';
|
|
2
|
+
import { type AuthUser } from '../auth/decorators/current-user.decorator';
|
|
3
|
+
export declare class AdminTenantAgentsController {
|
|
4
|
+
private readonly tenants?;
|
|
5
|
+
private readonly agentConfigs?;
|
|
6
|
+
private readonly chatTokens?;
|
|
7
|
+
private readonly apiKeys?;
|
|
8
|
+
private readonly uploads?;
|
|
9
|
+
constructor(tenants?: TenantService | undefined, agentConfigs?: AgentConfigService | undefined, chatTokens?: ChatTokenService | undefined, apiKeys?: ApiKeyService | undefined, uploads?: UploadService | undefined);
|
|
10
|
+
list(tenantId: string, user: AuthUser, q?: string, status?: string, limit?: string, offset?: string): Promise<{
|
|
11
|
+
items: import("@agentforge/core").AgentRecord[];
|
|
12
|
+
total: number;
|
|
13
|
+
limit: number | null;
|
|
14
|
+
offset: number;
|
|
15
|
+
}>;
|
|
16
|
+
create(tenantId: string, body: Record<string, unknown>, user: AuthUser): Promise<import("@agentforge/core").AgentRecord>;
|
|
17
|
+
getOne(tenantId: string, agentId: string, user: AuthUser): Promise<import("@agentforge/core").AgentRecord>;
|
|
18
|
+
update(tenantId: string, agentId: string, body: Record<string, unknown>, user: AuthUser): Promise<import("@agentforge/core").AgentRecord>;
|
|
19
|
+
deactivate(tenantId: string, agentId: string, user: AuthUser): Promise<void>;
|
|
20
|
+
signAvatar(tenantId: string, agentId: string, body: {
|
|
21
|
+
contentType?: string;
|
|
22
|
+
contentLength?: number;
|
|
23
|
+
}, user: AuthUser): Promise<import("@agentforge/core").SignedUploadTarget>;
|
|
24
|
+
listChatTokens(tenantId: string, agentId: string, user: AuthUser): Promise<{
|
|
25
|
+
items: import("@agentforge/core").ChatToken[];
|
|
26
|
+
}>;
|
|
27
|
+
createChatToken(tenantId: string, agentId: string, body: {
|
|
28
|
+
name?: string;
|
|
29
|
+
allowedOrigins?: string[];
|
|
30
|
+
}, user: AuthUser): Promise<import("@agentforge/core").ChatToken>;
|
|
31
|
+
updateChatToken(tenantId: string, agentId: string, token: string, body: Record<string, unknown>, user: AuthUser): Promise<void>;
|
|
32
|
+
deactivateChatToken(tenantId: string, agentId: string, token: string, user: AuthUser): Promise<void>;
|
|
33
|
+
listAgentApiKeys(tenantId: string, agentId: string, user: AuthUser): Promise<{
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
keyPrefix: string;
|
|
37
|
+
agentId: string | undefined;
|
|
38
|
+
scopes: string[] | undefined;
|
|
39
|
+
createdAt: Date;
|
|
40
|
+
lastUsedAt: Date | undefined;
|
|
41
|
+
expiresAt: Date | undefined;
|
|
42
|
+
revokedAt: Date | undefined;
|
|
43
|
+
}[]>;
|
|
44
|
+
issueAgentApiKey(tenantId: string, agentId: string, body: {
|
|
45
|
+
name?: string;
|
|
46
|
+
scopes?: string[];
|
|
47
|
+
expiresAt?: string;
|
|
48
|
+
}, user: AuthUser): Promise<{
|
|
49
|
+
key: string;
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
keyPrefix: string;
|
|
53
|
+
agentId: string | undefined;
|
|
54
|
+
scopes: string[] | undefined;
|
|
55
|
+
expiresAt: Date | undefined;
|
|
56
|
+
createdAt: Date;
|
|
57
|
+
}>;
|
|
58
|
+
revokeAgentApiKey(tenantId: string, agentId: string, keyId: string, user: AuthUser): Promise<void>;
|
|
59
|
+
private ensureB2B;
|
|
60
|
+
private ensureB2BWithApiKeys;
|
|
61
|
+
}
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AdminTenantAgentsController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const core_1 = require("@agentforge/core");
|
|
19
|
+
const current_user_decorator_1 = require("../auth/decorators/current-user.decorator");
|
|
20
|
+
const platform_admin_guard_1 = require("./platform-admin.guard");
|
|
21
|
+
const AGENT_PATCH_KEYS = [
|
|
22
|
+
'slug',
|
|
23
|
+
'name',
|
|
24
|
+
'description',
|
|
25
|
+
'model',
|
|
26
|
+
'systemPrompt',
|
|
27
|
+
'context',
|
|
28
|
+
'temperature',
|
|
29
|
+
'topP',
|
|
30
|
+
'maxTokens',
|
|
31
|
+
'tools',
|
|
32
|
+
'appearance',
|
|
33
|
+
'isActive',
|
|
34
|
+
'metadata',
|
|
35
|
+
];
|
|
36
|
+
function pickAgentPatch(body) {
|
|
37
|
+
const patch = {};
|
|
38
|
+
for (const k of AGENT_PATCH_KEYS) {
|
|
39
|
+
if (k in body)
|
|
40
|
+
patch[k] = body[k];
|
|
41
|
+
}
|
|
42
|
+
return patch;
|
|
43
|
+
}
|
|
44
|
+
let AdminTenantAgentsController = class AdminTenantAgentsController {
|
|
45
|
+
constructor(tenants, agentConfigs, chatTokens, apiKeys, uploads) {
|
|
46
|
+
this.tenants = tenants;
|
|
47
|
+
this.agentConfigs = agentConfigs;
|
|
48
|
+
this.chatTokens = chatTokens;
|
|
49
|
+
this.apiKeys = apiKeys;
|
|
50
|
+
this.uploads = uploads;
|
|
51
|
+
}
|
|
52
|
+
async list(tenantId, user, q, status, limit, offset) {
|
|
53
|
+
this.ensureB2B();
|
|
54
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
55
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
56
|
+
});
|
|
57
|
+
const limitNum = limit ? Number(limit) : undefined;
|
|
58
|
+
const offsetNum = offset ? Number(offset) : undefined;
|
|
59
|
+
const isActive = status === 'active' ? true : status === 'inactive' ? false : undefined;
|
|
60
|
+
const result = await this.agentConfigs.listForTenant(tenantId, {
|
|
61
|
+
q,
|
|
62
|
+
isActive,
|
|
63
|
+
limit: limitNum,
|
|
64
|
+
offset: offsetNum,
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
items: result.items,
|
|
68
|
+
total: result.total,
|
|
69
|
+
limit: limitNum ?? null,
|
|
70
|
+
offset: offsetNum ?? 0,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
async create(tenantId, body, user) {
|
|
74
|
+
this.ensureB2B();
|
|
75
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
76
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
77
|
+
});
|
|
78
|
+
return this.agentConfigs.create({
|
|
79
|
+
tenantId,
|
|
80
|
+
slug: body?.slug,
|
|
81
|
+
name: body?.name,
|
|
82
|
+
systemPrompt: body?.systemPrompt,
|
|
83
|
+
description: body?.description,
|
|
84
|
+
model: body?.model,
|
|
85
|
+
context: body?.context,
|
|
86
|
+
temperature: body?.temperature,
|
|
87
|
+
topP: body?.topP,
|
|
88
|
+
maxTokens: body?.maxTokens,
|
|
89
|
+
tools: body?.tools,
|
|
90
|
+
isActive: body?.isActive,
|
|
91
|
+
createdByUserId: user.userId,
|
|
92
|
+
metadata: body?.metadata,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async getOne(tenantId, agentId, user) {
|
|
96
|
+
this.ensureB2B();
|
|
97
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
98
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
99
|
+
});
|
|
100
|
+
return this.agentConfigs.getByIdForTenant(agentId, tenantId);
|
|
101
|
+
}
|
|
102
|
+
async update(tenantId, agentId, body, user) {
|
|
103
|
+
this.ensureB2B();
|
|
104
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
105
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
106
|
+
});
|
|
107
|
+
const patch = pickAgentPatch(body ?? {});
|
|
108
|
+
return this.agentConfigs.update(agentId, tenantId, patch);
|
|
109
|
+
}
|
|
110
|
+
async deactivate(tenantId, agentId, user) {
|
|
111
|
+
this.ensureB2B();
|
|
112
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
113
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
114
|
+
});
|
|
115
|
+
await this.agentConfigs.deactivate(agentId, tenantId);
|
|
116
|
+
}
|
|
117
|
+
async signAvatar(tenantId, agentId, body, user) {
|
|
118
|
+
this.ensureB2B();
|
|
119
|
+
if (!this.uploads) {
|
|
120
|
+
throw new common_1.NotImplementedException({
|
|
121
|
+
error: 'uploads_not_configured',
|
|
122
|
+
message: 'No upload adapter wired. Pass adapters.uploadAdapter to createAgentForge.',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
126
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
127
|
+
});
|
|
128
|
+
await this.agentConfigs.getByIdForTenant(agentId, tenantId);
|
|
129
|
+
return this.uploads.signAgentAvatar({
|
|
130
|
+
tenantId,
|
|
131
|
+
agentId,
|
|
132
|
+
contentType: body?.contentType ?? '',
|
|
133
|
+
contentLength: body?.contentLength,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
async listChatTokens(tenantId, agentId, user) {
|
|
137
|
+
this.ensureB2B();
|
|
138
|
+
if (!this.chatTokens) {
|
|
139
|
+
throw new common_1.NotImplementedException({ error: 'chat_tokens_not_configured' });
|
|
140
|
+
}
|
|
141
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
142
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
143
|
+
});
|
|
144
|
+
await this.agentConfigs.getByIdForTenant(agentId, tenantId);
|
|
145
|
+
return { items: await this.chatTokens.listForAgent(tenantId, agentId) };
|
|
146
|
+
}
|
|
147
|
+
async createChatToken(tenantId, agentId, body, user) {
|
|
148
|
+
this.ensureB2B();
|
|
149
|
+
if (!this.chatTokens) {
|
|
150
|
+
throw new common_1.NotImplementedException({ error: 'chat_tokens_not_configured' });
|
|
151
|
+
}
|
|
152
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
153
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
154
|
+
});
|
|
155
|
+
await this.agentConfigs.getByIdForTenant(agentId, tenantId);
|
|
156
|
+
return this.chatTokens.create({
|
|
157
|
+
tenantId,
|
|
158
|
+
agentId,
|
|
159
|
+
name: body?.name ?? '',
|
|
160
|
+
allowedOrigins: body?.allowedOrigins,
|
|
161
|
+
createdByUserId: user.userId,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
async updateChatToken(tenantId, agentId, token, body, user) {
|
|
165
|
+
this.ensureB2B();
|
|
166
|
+
if (!this.chatTokens) {
|
|
167
|
+
throw new common_1.NotImplementedException({ error: 'chat_tokens_not_configured' });
|
|
168
|
+
}
|
|
169
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
170
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
171
|
+
});
|
|
172
|
+
const patch = {};
|
|
173
|
+
for (const k of ['name', 'allowedOrigins', 'isActive']) {
|
|
174
|
+
if (k in (body ?? {}))
|
|
175
|
+
patch[k] = body[k];
|
|
176
|
+
}
|
|
177
|
+
await this.chatTokens.update(token, patch);
|
|
178
|
+
}
|
|
179
|
+
async deactivateChatToken(tenantId, agentId, token, user) {
|
|
180
|
+
this.ensureB2B();
|
|
181
|
+
if (!this.chatTokens) {
|
|
182
|
+
throw new common_1.NotImplementedException({ error: 'chat_tokens_not_configured' });
|
|
183
|
+
}
|
|
184
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
185
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
186
|
+
});
|
|
187
|
+
await this.chatTokens.deactivate(token);
|
|
188
|
+
}
|
|
189
|
+
async listAgentApiKeys(tenantId, agentId, user) {
|
|
190
|
+
this.ensureB2BWithApiKeys();
|
|
191
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
192
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
193
|
+
});
|
|
194
|
+
await this.agentConfigs.getByIdForTenant(agentId, tenantId);
|
|
195
|
+
const keys = await this.apiKeys.listForAgent(tenantId, agentId);
|
|
196
|
+
return keys.map((k) => ({
|
|
197
|
+
id: k.id,
|
|
198
|
+
name: k.name,
|
|
199
|
+
keyPrefix: k.keyPrefix,
|
|
200
|
+
agentId: k.agentId,
|
|
201
|
+
scopes: k.scopes,
|
|
202
|
+
createdAt: k.createdAt,
|
|
203
|
+
lastUsedAt: k.lastUsedAt,
|
|
204
|
+
expiresAt: k.expiresAt,
|
|
205
|
+
revokedAt: k.revokedAt,
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
208
|
+
async issueAgentApiKey(tenantId, agentId, body, user) {
|
|
209
|
+
this.ensureB2BWithApiKeys();
|
|
210
|
+
if (!body?.name)
|
|
211
|
+
throw new common_1.BadRequestException('name is required');
|
|
212
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
213
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
214
|
+
});
|
|
215
|
+
await this.agentConfigs.getByIdForTenant(agentId, tenantId);
|
|
216
|
+
const minted = await this.apiKeys.issue({
|
|
217
|
+
tenantId,
|
|
218
|
+
agentId,
|
|
219
|
+
name: body.name,
|
|
220
|
+
scopes: body.scopes,
|
|
221
|
+
expiresAt: body.expiresAt ? new Date(body.expiresAt) : undefined,
|
|
222
|
+
});
|
|
223
|
+
return {
|
|
224
|
+
key: minted.key,
|
|
225
|
+
id: minted.entity.id,
|
|
226
|
+
name: minted.entity.name,
|
|
227
|
+
keyPrefix: minted.entity.keyPrefix,
|
|
228
|
+
agentId: minted.entity.agentId,
|
|
229
|
+
scopes: minted.entity.scopes,
|
|
230
|
+
expiresAt: minted.entity.expiresAt,
|
|
231
|
+
createdAt: minted.entity.createdAt,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
async revokeAgentApiKey(tenantId, agentId, keyId, user) {
|
|
235
|
+
this.ensureB2BWithApiKeys();
|
|
236
|
+
await this.tenants.assertOwner(tenantId, user.userId, {
|
|
237
|
+
allowAnyOwner: user.isPlatformAdmin,
|
|
238
|
+
});
|
|
239
|
+
await this.apiKeys.revoke(keyId);
|
|
240
|
+
}
|
|
241
|
+
ensureB2B() {
|
|
242
|
+
if (!this.tenants || !this.agentConfigs) {
|
|
243
|
+
throw new common_1.NotImplementedException({
|
|
244
|
+
error: 'b2b_not_configured',
|
|
245
|
+
message: 'B2B mode is not configured. Pass tenant/agentConfig repositories to createAgentForge.',
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
ensureB2BWithApiKeys() {
|
|
250
|
+
if (!this.tenants || !this.agentConfigs || !this.apiKeys) {
|
|
251
|
+
throw new common_1.NotImplementedException({
|
|
252
|
+
error: 'b2b_not_configured',
|
|
253
|
+
message: 'B2B mode is not configured. Pass tenant/agentConfig/apiKey repositories to createAgentForge.',
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
exports.AdminTenantAgentsController = AdminTenantAgentsController;
|
|
259
|
+
__decorate([
|
|
260
|
+
(0, common_1.Get)(),
|
|
261
|
+
(0, swagger_1.ApiOperation)({ summary: 'List agents configured for a tenant (owner-only)' }),
|
|
262
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
263
|
+
__param(1, (0, current_user_decorator_1.CurrentUser)()),
|
|
264
|
+
__param(2, (0, common_1.Query)('q')),
|
|
265
|
+
__param(3, (0, common_1.Query)('status')),
|
|
266
|
+
__param(4, (0, common_1.Query)('limit')),
|
|
267
|
+
__param(5, (0, common_1.Query)('offset')),
|
|
268
|
+
__metadata("design:type", Function),
|
|
269
|
+
__metadata("design:paramtypes", [String, Object, String, String, String, String]),
|
|
270
|
+
__metadata("design:returntype", Promise)
|
|
271
|
+
], AdminTenantAgentsController.prototype, "list", null);
|
|
272
|
+
__decorate([
|
|
273
|
+
(0, common_1.Post)(),
|
|
274
|
+
(0, swagger_1.ApiOperation)({ summary: 'Create a new agent for a tenant (owner-only)' }),
|
|
275
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.CREATED),
|
|
276
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
277
|
+
__param(1, (0, common_1.Body)()),
|
|
278
|
+
__param(2, (0, current_user_decorator_1.CurrentUser)()),
|
|
279
|
+
__metadata("design:type", Function),
|
|
280
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
281
|
+
__metadata("design:returntype", Promise)
|
|
282
|
+
], AdminTenantAgentsController.prototype, "create", null);
|
|
283
|
+
__decorate([
|
|
284
|
+
(0, common_1.Get)(':agentId'),
|
|
285
|
+
(0, swagger_1.ApiOperation)({ summary: 'Fetch a single agent (owner-only)' }),
|
|
286
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
287
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
288
|
+
__param(2, (0, current_user_decorator_1.CurrentUser)()),
|
|
289
|
+
__metadata("design:type", Function),
|
|
290
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
291
|
+
__metadata("design:returntype", Promise)
|
|
292
|
+
], AdminTenantAgentsController.prototype, "getOne", null);
|
|
293
|
+
__decorate([
|
|
294
|
+
(0, common_1.Patch)(':agentId'),
|
|
295
|
+
(0, swagger_1.ApiOperation)({ summary: 'Update agent fields (whitelist) (owner-only)' }),
|
|
296
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
297
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
298
|
+
__param(2, (0, common_1.Body)()),
|
|
299
|
+
__param(3, (0, current_user_decorator_1.CurrentUser)()),
|
|
300
|
+
__metadata("design:type", Function),
|
|
301
|
+
__metadata("design:paramtypes", [String, String, Object, Object]),
|
|
302
|
+
__metadata("design:returntype", Promise)
|
|
303
|
+
], AdminTenantAgentsController.prototype, "update", null);
|
|
304
|
+
__decorate([
|
|
305
|
+
(0, common_1.Delete)(':agentId'),
|
|
306
|
+
(0, swagger_1.ApiOperation)({ summary: 'Deactivate an agent (soft delete) (owner-only)' }),
|
|
307
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
308
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
309
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
310
|
+
__param(2, (0, current_user_decorator_1.CurrentUser)()),
|
|
311
|
+
__metadata("design:type", Function),
|
|
312
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
313
|
+
__metadata("design:returntype", Promise)
|
|
314
|
+
], AdminTenantAgentsController.prototype, "deactivate", null);
|
|
315
|
+
__decorate([
|
|
316
|
+
(0, common_1.Post)(':agentId/avatar/sign'),
|
|
317
|
+
(0, swagger_1.ApiOperation)({
|
|
318
|
+
summary: 'Sign a direct-upload URL for the agent avatar. Frontend PUTs the file straight to storage.',
|
|
319
|
+
}),
|
|
320
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
321
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
322
|
+
__param(2, (0, common_1.Body)()),
|
|
323
|
+
__param(3, (0, current_user_decorator_1.CurrentUser)()),
|
|
324
|
+
__metadata("design:type", Function),
|
|
325
|
+
__metadata("design:paramtypes", [String, String, Object, Object]),
|
|
326
|
+
__metadata("design:returntype", Promise)
|
|
327
|
+
], AdminTenantAgentsController.prototype, "signAvatar", null);
|
|
328
|
+
__decorate([
|
|
329
|
+
(0, common_1.Get)(':agentId/chat-tokens'),
|
|
330
|
+
(0, swagger_1.ApiOperation)({ summary: 'List chat tokens for an agent (owner-only)' }),
|
|
331
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
332
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
333
|
+
__param(2, (0, current_user_decorator_1.CurrentUser)()),
|
|
334
|
+
__metadata("design:type", Function),
|
|
335
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
336
|
+
__metadata("design:returntype", Promise)
|
|
337
|
+
], AdminTenantAgentsController.prototype, "listChatTokens", null);
|
|
338
|
+
__decorate([
|
|
339
|
+
(0, common_1.Post)(':agentId/chat-tokens'),
|
|
340
|
+
(0, swagger_1.ApiOperation)({ summary: 'Issue a chat token for the embeddable widget (owner-only)' }),
|
|
341
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.CREATED),
|
|
342
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
343
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
344
|
+
__param(2, (0, common_1.Body)()),
|
|
345
|
+
__param(3, (0, current_user_decorator_1.CurrentUser)()),
|
|
346
|
+
__metadata("design:type", Function),
|
|
347
|
+
__metadata("design:paramtypes", [String, String, Object, Object]),
|
|
348
|
+
__metadata("design:returntype", Promise)
|
|
349
|
+
], AdminTenantAgentsController.prototype, "createChatToken", null);
|
|
350
|
+
__decorate([
|
|
351
|
+
(0, common_1.Patch)(':agentId/chat-tokens/:token'),
|
|
352
|
+
(0, swagger_1.ApiOperation)({ summary: 'Update a chat token (name/origins/active) (owner-only)' }),
|
|
353
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
354
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
355
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
356
|
+
__param(2, (0, common_1.Param)('token')),
|
|
357
|
+
__param(3, (0, common_1.Body)()),
|
|
358
|
+
__param(4, (0, current_user_decorator_1.CurrentUser)()),
|
|
359
|
+
__metadata("design:type", Function),
|
|
360
|
+
__metadata("design:paramtypes", [String, String, String, Object, Object]),
|
|
361
|
+
__metadata("design:returntype", Promise)
|
|
362
|
+
], AdminTenantAgentsController.prototype, "updateChatToken", null);
|
|
363
|
+
__decorate([
|
|
364
|
+
(0, common_1.Delete)(':agentId/chat-tokens/:token'),
|
|
365
|
+
(0, swagger_1.ApiOperation)({ summary: 'Deactivate a chat token (owner-only)' }),
|
|
366
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
367
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
368
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
369
|
+
__param(2, (0, common_1.Param)('token')),
|
|
370
|
+
__param(3, (0, current_user_decorator_1.CurrentUser)()),
|
|
371
|
+
__metadata("design:type", Function),
|
|
372
|
+
__metadata("design:paramtypes", [String, String, String, Object]),
|
|
373
|
+
__metadata("design:returntype", Promise)
|
|
374
|
+
], AdminTenantAgentsController.prototype, "deactivateChatToken", null);
|
|
375
|
+
__decorate([
|
|
376
|
+
(0, common_1.Get)(':agentId/api-keys'),
|
|
377
|
+
(0, swagger_1.ApiOperation)({ summary: 'List agent-scoped API keys (owner-only)' }),
|
|
378
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
379
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
380
|
+
__param(2, (0, current_user_decorator_1.CurrentUser)()),
|
|
381
|
+
__metadata("design:type", Function),
|
|
382
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
383
|
+
__metadata("design:returntype", Promise)
|
|
384
|
+
], AdminTenantAgentsController.prototype, "listAgentApiKeys", null);
|
|
385
|
+
__decorate([
|
|
386
|
+
(0, common_1.Post)(':agentId/api-keys'),
|
|
387
|
+
(0, swagger_1.ApiOperation)({ summary: 'Issue an agent-scoped API key (owner-only)' }),
|
|
388
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.CREATED),
|
|
389
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
390
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
391
|
+
__param(2, (0, common_1.Body)()),
|
|
392
|
+
__param(3, (0, current_user_decorator_1.CurrentUser)()),
|
|
393
|
+
__metadata("design:type", Function),
|
|
394
|
+
__metadata("design:paramtypes", [String, String, Object, Object]),
|
|
395
|
+
__metadata("design:returntype", Promise)
|
|
396
|
+
], AdminTenantAgentsController.prototype, "issueAgentApiKey", null);
|
|
397
|
+
__decorate([
|
|
398
|
+
(0, common_1.Delete)(':agentId/api-keys/:keyId'),
|
|
399
|
+
(0, swagger_1.ApiOperation)({ summary: 'Revoke an agent-scoped API key (owner-only)' }),
|
|
400
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
401
|
+
__param(0, (0, common_1.Param)('tenantId')),
|
|
402
|
+
__param(1, (0, common_1.Param)('agentId')),
|
|
403
|
+
__param(2, (0, common_1.Param)('keyId')),
|
|
404
|
+
__param(3, (0, current_user_decorator_1.CurrentUser)()),
|
|
405
|
+
__metadata("design:type", Function),
|
|
406
|
+
__metadata("design:paramtypes", [String, String, String, Object]),
|
|
407
|
+
__metadata("design:returntype", Promise)
|
|
408
|
+
], AdminTenantAgentsController.prototype, "revokeAgentApiKey", null);
|
|
409
|
+
exports.AdminTenantAgentsController = AdminTenantAgentsController = __decorate([
|
|
410
|
+
(0, swagger_1.ApiTags)('Admin: Tenant Agents'),
|
|
411
|
+
(0, common_1.Controller)('admin/tenants/:tenantId/agents'),
|
|
412
|
+
(0, common_1.UseGuards)(platform_admin_guard_1.RequireUserSessionGuard),
|
|
413
|
+
__param(0, (0, common_1.Optional)()),
|
|
414
|
+
__param(1, (0, common_1.Optional)()),
|
|
415
|
+
__param(2, (0, common_1.Optional)()),
|
|
416
|
+
__param(3, (0, common_1.Optional)()),
|
|
417
|
+
__param(4, (0, common_1.Optional)()),
|
|
418
|
+
__metadata("design:paramtypes", [core_1.TenantService,
|
|
419
|
+
core_1.AgentConfigService,
|
|
420
|
+
core_1.ChatTokenService,
|
|
421
|
+
core_1.ApiKeyService,
|
|
422
|
+
core_1.UploadService])
|
|
423
|
+
], AdminTenantAgentsController);
|
|
424
|
+
//# sourceMappingURL=admin-tenant-agents.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-tenant-agents.controller.js","sourceRoot":"","sources":["../../../src/modules/admin/admin-tenant-agents.controller.ts"],"names":[],"mappings":"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"}
|