@bpinhosilva/agent-orchestrator 1.0.0-alpha.21 → 1.0.0-alpha.23
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/CHANGELOG.md +16 -0
- package/README.md +198 -28
- package/dist/agents/agents.controller.js +5 -0
- package/dist/agents/agents.controller.js.map +1 -1
- package/dist/agents/dto/agent-request.dto.js +2 -1
- package/dist/agents/dto/agent-request.dto.js.map +1 -1
- package/dist/agents/dto/create-agent.dto.js +6 -1
- package/dist/agents/dto/create-agent.dto.js.map +1 -1
- package/dist/app.module.js +5 -0
- package/dist/app.module.js.map +1 -1
- package/dist/auth/auth.controller.d.ts +6 -1
- package/dist/auth/auth.controller.js +23 -7
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.service.d.ts +1 -0
- package/dist/auth/decorators/current-user.decorator.d.ts +1 -0
- package/dist/auth/decorators/current-user.decorator.js +9 -0
- package/dist/auth/decorators/current-user.decorator.js.map +1 -0
- package/dist/auth/decorators/roles.decorator.d.ts +3 -0
- package/dist/auth/decorators/roles.decorator.js +8 -0
- package/dist/auth/decorators/roles.decorator.js.map +1 -0
- package/dist/auth/entities/refresh-token.entity.js +2 -1
- package/dist/auth/entities/refresh-token.entity.js.map +1 -1
- package/dist/auth/guards/roles.guard.d.ts +7 -0
- package/dist/auth/guards/roles.guard.js +52 -0
- package/dist/auth/guards/roles.guard.js.map +1 -0
- package/dist/common/storage.service.d.ts +2 -0
- package/dist/common/storage.service.js +27 -0
- package/dist/common/storage.service.js.map +1 -1
- package/dist/config/env.validation.js +2 -0
- package/dist/config/env.validation.js.map +1 -1
- package/dist/config/typeorm.js +1 -1
- package/dist/config/typeorm.js.map +1 -1
- package/dist/main.js +16 -13
- package/dist/main.js.map +1 -1
- package/dist/migrations/1775103764402-AddRbacAndProjectMembership.d.ts +6 -0
- package/dist/migrations/1775103764402-AddRbacAndProjectMembership.js +124 -0
- package/dist/migrations/1775103764402-AddRbacAndProjectMembership.js.map +1 -0
- package/dist/models/models.controller.js +5 -0
- package/dist/models/models.controller.js.map +1 -1
- package/dist/projects/dto/add-member.dto.d.ts +5 -0
- package/dist/projects/dto/add-member.dto.js +33 -0
- package/dist/projects/dto/add-member.dto.js.map +1 -0
- package/dist/projects/entities/project-member.entity.d.ts +13 -0
- package/dist/projects/entities/project-member.entity.js +61 -0
- package/dist/projects/entities/project-member.entity.js.map +1 -0
- package/dist/projects/entities/project.entity.d.ts +2 -0
- package/dist/projects/entities/project.entity.js +9 -2
- package/dist/projects/entities/project.entity.js.map +1 -1
- package/dist/projects/projects.controller.d.ts +10 -5
- package/dist/projects/projects.controller.js +64 -15
- package/dist/projects/projects.controller.js.map +1 -1
- package/dist/projects/projects.module.js +5 -1
- package/dist/projects/projects.module.js.map +1 -1
- package/dist/projects/projects.service.d.ts +14 -6
- package/dist/projects/projects.service.js +125 -12
- package/dist/projects/projects.service.js.map +1 -1
- package/dist/providers/providers.controller.js +5 -0
- package/dist/providers/providers.controller.js.map +1 -1
- package/dist/tasks/entities/recurrent-task-exec.entity.js +1 -0
- package/dist/tasks/entities/recurrent-task-exec.entity.js.map +1 -1
- package/dist/tasks/entities/recurrent-task.entity.d.ts +2 -0
- package/dist/tasks/entities/recurrent-task.entity.js +14 -2
- package/dist/tasks/entities/recurrent-task.entity.js.map +1 -1
- package/dist/tasks/recurrent-tasks.controller.d.ts +9 -6
- package/dist/tasks/recurrent-tasks.controller.js +51 -30
- package/dist/tasks/recurrent-tasks.controller.js.map +1 -1
- package/dist/tasks/recurrent-tasks.service.d.ts +5 -5
- package/dist/tasks/recurrent-tasks.service.js +24 -11
- package/dist/tasks/recurrent-tasks.service.js.map +1 -1
- package/dist/tasks/task-scheduler.service.d.ts +4 -1
- package/dist/tasks/task-scheduler.service.js +15 -2
- package/dist/tasks/task-scheduler.service.js.map +1 -1
- package/dist/tasks/tasks.controller.d.ts +11 -8
- package/dist/tasks/tasks.controller.js +43 -23
- package/dist/tasks/tasks.controller.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/ui/assets/AgentFleet-CC0h_Ar0.js +1 -0
- package/dist/ui/assets/AgentFleet-CC0h_Ar0.js.map +1 -0
- package/dist/ui/assets/ConfirmDialog-mRH8i_xK.js +10 -0
- package/dist/ui/assets/ConfirmDialog-mRH8i_xK.js.map +1 -0
- package/dist/ui/assets/InitialsAvatar-0mIRaTK8.js +1 -0
- package/dist/ui/assets/InitialsAvatar-0mIRaTK8.js.map +1 -0
- package/dist/ui/assets/MarkdownField-flCuU7w3.js +1 -0
- package/dist/ui/assets/MarkdownField-flCuU7w3.js.map +1 -0
- package/dist/ui/assets/ProjectDetail-CY-VSV2D.js +1 -0
- package/dist/ui/assets/ProjectDetail-CY-VSV2D.js.map +1 -0
- package/dist/ui/assets/Providers-C9_lxOG1.js +1 -0
- package/dist/ui/assets/Providers-C9_lxOG1.js.map +1 -0
- package/dist/ui/assets/Scheduler-Du2cIGfB.js +1 -0
- package/dist/ui/assets/Scheduler-Du2cIGfB.js.map +1 -0
- package/dist/ui/assets/TaskDetail-BdQJCVo3.js +1 -0
- package/dist/ui/assets/TaskDetail-BdQJCVo3.js.map +1 -0
- package/dist/ui/assets/TaskManager-CWDh69pf.js +8 -0
- package/dist/ui/assets/TaskManager-CWDh69pf.js.map +1 -0
- package/dist/ui/assets/{activity-CYFCUKYz.js → activity-CIlCK2jL.js} +1 -1
- package/dist/ui/assets/activity-CIlCK2jL.js.map +1 -0
- package/dist/ui/assets/{brain-D1LPqnhA.js → brain-_N041Xks.js} +1 -1
- package/dist/ui/assets/brain-_N041Xks.js.map +1 -0
- package/dist/ui/assets/check-DgCfni6J.js +1 -0
- package/dist/ui/assets/check-DgCfni6J.js.map +1 -0
- package/dist/ui/assets/clock-C0d1RzP_.js +1 -0
- package/dist/ui/assets/clock-C0d1RzP_.js.map +1 -0
- package/dist/ui/assets/cn-i-5ItZGU.js +1 -0
- package/dist/ui/assets/cn-i-5ItZGU.js.map +1 -0
- package/dist/ui/assets/{eye-DSoNYXlu.js → eye-RB18-re_.js} +1 -1
- package/dist/ui/assets/eye-RB18-re_.js.map +1 -0
- package/dist/ui/assets/index-CCsHBe__.css +1 -0
- package/dist/ui/assets/index-yzhzS93F.js +2 -0
- package/dist/ui/assets/index-yzhzS93F.js.map +1 -0
- package/dist/ui/assets/{layers-BQR0gbW3.js → layers-D5ECV506.js} +1 -1
- package/dist/ui/assets/layers-D5ECV506.js.map +1 -0
- package/dist/ui/assets/providers-BMRq_pkm.js +1 -0
- package/dist/ui/assets/providers-BMRq_pkm.js.map +1 -0
- package/dist/ui/assets/rolldown-runtime-COnpUsM8.js +1 -0
- package/dist/ui/assets/{send-Cgv_rLex.js → send-BA7-sXzg.js} +1 -1
- package/dist/ui/assets/send-BA7-sXzg.js.map +1 -0
- package/dist/ui/assets/{shield-check-02qtz3Au.js → shield-check-D7JIluse.js} +1 -1
- package/dist/ui/assets/shield-check-D7JIluse.js.map +1 -0
- package/dist/ui/assets/{sparkles-cO3r5TCU.js → sparkles-CCXaTT3H.js} +1 -1
- package/dist/ui/assets/sparkles-CCXaTT3H.js.map +1 -0
- package/dist/ui/assets/{tasks-BZ0wO0e9.js → tasks-DEHCZk48.js} +1 -1
- package/dist/ui/assets/tasks-DEHCZk48.js.map +1 -0
- package/dist/ui/assets/{trash-2-7e8TY3SJ.js → trash-2-BNP4kC5c.js} +1 -1
- package/dist/ui/assets/trash-2-BNP4kC5c.js.map +1 -0
- package/dist/ui/assets/{trending-up-Dh3I3BnW.js → trending-up-DBTQIgW8.js} +1 -1
- package/dist/ui/assets/trending-up-DBTQIgW8.js.map +1 -0
- package/dist/ui/assets/useNotification-DK-pV16c.js +6 -0
- package/dist/ui/assets/useNotification-DK-pV16c.js.map +1 -0
- package/dist/ui/assets/{user-sikuVJBW.js → user-Cp55HCCi.js} +1 -1
- package/dist/ui/assets/user-Cp55HCCi.js.map +1 -0
- package/dist/ui/assets/vendor-dnd-CxfOy4-Z.js +5 -0
- package/dist/ui/assets/vendor-dnd-CxfOy4-Z.js.map +1 -0
- package/dist/ui/assets/vendor-forms-HC2wK6B9.js +39 -0
- package/dist/ui/assets/vendor-forms-HC2wK6B9.js.map +1 -0
- package/dist/ui/assets/vendor-markdown-Dl_1qnne.js +29 -0
- package/dist/ui/assets/vendor-markdown-Dl_1qnne.js.map +1 -0
- package/dist/ui/assets/vendor-motion-CkXYvnuI.js +9 -0
- package/dist/ui/assets/vendor-motion-CkXYvnuI.js.map +1 -0
- package/dist/ui/assets/vendor-query-DQlZ8h7P.js +1 -0
- package/dist/ui/assets/vendor-query-DQlZ8h7P.js.map +1 -0
- package/dist/ui/assets/vendor-react-CiDbU5Ns.js +11 -0
- package/dist/ui/assets/vendor-react-CiDbU5Ns.js.map +1 -0
- package/dist/ui/assets/{zap-CFqyHdPJ.js → zap-D1sST66b.js} +1 -1
- package/dist/ui/assets/zap-D1sST66b.js.map +1 -0
- package/dist/ui/index.html +9 -4
- package/dist/users/entities/user.entity.d.ts +5 -0
- package/dist/users/entities/user.entity.js +10 -1
- package/dist/users/entities/user.entity.js.map +1 -1
- package/dist/users/users.controller.d.ts +0 -2
- package/dist/users/users.controller.js +3 -12
- package/dist/users/users.controller.js.map +1 -1
- package/dist/users/users.service.js +9 -1
- package/dist/users/users.service.js.map +1 -1
- package/package.json +3 -2
- package/dist/ui/assets/AgentFleet-CQIXvils.js +0 -6
- package/dist/ui/assets/ConfirmDialog-nQ8F6FEz.js +0 -1
- package/dist/ui/assets/MarkdownField-BvkVHJZh.js +0 -29
- package/dist/ui/assets/ProjectDetail-CZ-tFtQo.js +0 -1
- package/dist/ui/assets/Providers-C61nXOPZ.js +0 -1
- package/dist/ui/assets/Scheduler-BwWeFfsh.js +0 -1
- package/dist/ui/assets/TaskDetail-BKQ3Vgnu.js +0 -1
- package/dist/ui/assets/TaskManager-CCOnj4Gq.js +0 -16
- package/dist/ui/assets/check-BZcW41Vk.js +0 -1
- package/dist/ui/assets/clock-vIUNSAVw.js +0 -1
- package/dist/ui/assets/file-text-DyBkf5PF.js +0 -1
- package/dist/ui/assets/index-BX3YIi49.css +0 -1
- package/dist/ui/assets/index-Ctbpa_Ei.js +0 -20
- package/dist/ui/assets/providers-C3SQm75E.js +0 -1
- package/dist/ui/assets/useNotification-nXJIHD_q.js +0 -6
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RolesGuard = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const roles_decorator_1 = require("../decorators/roles.decorator");
|
|
16
|
+
const public_decorator_1 = require("../decorators/public.decorator");
|
|
17
|
+
let RolesGuard = class RolesGuard {
|
|
18
|
+
reflector;
|
|
19
|
+
constructor(reflector) {
|
|
20
|
+
this.reflector = reflector;
|
|
21
|
+
}
|
|
22
|
+
canActivate(context) {
|
|
23
|
+
const isPublic = this.reflector.getAllAndOverride(public_decorator_1.IS_PUBLIC_KEY, [
|
|
24
|
+
context.getHandler(),
|
|
25
|
+
context.getClass(),
|
|
26
|
+
]);
|
|
27
|
+
if (isPublic) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
const requiredRoles = this.reflector.getAllAndOverride(roles_decorator_1.ROLES_KEY, [context.getHandler(), context.getClass()]);
|
|
31
|
+
if (!requiredRoles || requiredRoles.length === 0) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
const request = context
|
|
35
|
+
.switchToHttp()
|
|
36
|
+
.getRequest();
|
|
37
|
+
const user = request.user;
|
|
38
|
+
if (!user || !user.role) {
|
|
39
|
+
throw new common_1.ForbiddenException('Insufficient permissions');
|
|
40
|
+
}
|
|
41
|
+
if (!requiredRoles.includes(user.role)) {
|
|
42
|
+
throw new common_1.ForbiddenException('Insufficient permissions');
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
exports.RolesGuard = RolesGuard;
|
|
48
|
+
exports.RolesGuard = RolesGuard = __decorate([
|
|
49
|
+
(0, common_1.Injectable)(),
|
|
50
|
+
__metadata("design:paramtypes", [core_1.Reflector])
|
|
51
|
+
], RolesGuard);
|
|
52
|
+
//# sourceMappingURL=roles.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../../src/auth/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,uCAAyC;AACzC,mEAA0D;AAC1D,qEAA+D;AAIxD,IAAM,UAAU,GAAhB,MAAM,UAAU;IACD;IAApB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CACpD,2BAAS,EACT,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,OAAO;aACpB,YAAY,EAAE;aACd,UAAU,EAAkC,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,2BAAkB,CAAC,0BAA0B,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,2BAAkB,CAAC,0BAA0B,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAlCY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GAD7B,UAAU,CAkCtB"}
|
|
@@ -48,6 +48,19 @@ const common_1 = require("@nestjs/common");
|
|
|
48
48
|
const path = __importStar(require("path"));
|
|
49
49
|
const fs = __importStar(require("fs"));
|
|
50
50
|
const crypto = __importStar(require("crypto"));
|
|
51
|
+
const ALLOWED_MIME_TYPES = new Set([
|
|
52
|
+
'image/png',
|
|
53
|
+
'image/jpeg',
|
|
54
|
+
'image/gif',
|
|
55
|
+
'image/webp',
|
|
56
|
+
'image/svg+xml',
|
|
57
|
+
'application/pdf',
|
|
58
|
+
'text/plain',
|
|
59
|
+
'text/csv',
|
|
60
|
+
'text/markdown',
|
|
61
|
+
'application/json',
|
|
62
|
+
]);
|
|
63
|
+
const MAX_FILE_SIZE_BYTES = 10 * 1024 * 1024;
|
|
51
64
|
let StorageService = StorageService_1 = class StorageService {
|
|
52
65
|
logger = new common_1.Logger(StorageService_1.name);
|
|
53
66
|
baseDir;
|
|
@@ -72,10 +85,14 @@ let StorageService = StorageService_1 = class StorageService {
|
|
|
72
85
|
return path.join(this.getArtifactsPath(), filename);
|
|
73
86
|
}
|
|
74
87
|
async saveBase64(base64, mimeType, originalName) {
|
|
88
|
+
this.validateMimeType(mimeType);
|
|
75
89
|
const buffer = Buffer.from(base64, 'base64');
|
|
90
|
+
this.validateFileSize(buffer.length);
|
|
76
91
|
return this.saveBuffer(buffer, mimeType, originalName);
|
|
77
92
|
}
|
|
78
93
|
async saveBuffer(buffer, mimeType, originalName) {
|
|
94
|
+
this.validateMimeType(mimeType);
|
|
95
|
+
this.validateFileSize(buffer.length);
|
|
79
96
|
const id = crypto.randomUUID();
|
|
80
97
|
const extension = mimeType.split('/')[1] || 'bin';
|
|
81
98
|
const filename = `${id}.${extension}`;
|
|
@@ -96,6 +113,16 @@ let StorageService = StorageService_1 = class StorageService {
|
|
|
96
113
|
this.logger.debug(`Deleted artifact file: ${fullPath}`);
|
|
97
114
|
}
|
|
98
115
|
}
|
|
116
|
+
validateMimeType(mimeType) {
|
|
117
|
+
if (!ALLOWED_MIME_TYPES.has(mimeType)) {
|
|
118
|
+
throw new common_1.BadRequestException(`File type '${mimeType}' is not allowed. Allowed types: ${[...ALLOWED_MIME_TYPES].join(', ')}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
validateFileSize(sizeInBytes) {
|
|
122
|
+
if (sizeInBytes > MAX_FILE_SIZE_BYTES) {
|
|
123
|
+
throw new common_1.BadRequestException(`File size (${Math.round(sizeInBytes / 1024 / 1024)}MB) exceeds the maximum allowed size of ${MAX_FILE_SIZE_BYTES / 1024 / 1024}MB`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
99
126
|
};
|
|
100
127
|
exports.StorageService = StorageService;
|
|
101
128
|
exports.StorageService = StorageService = StorageService_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/common/storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/common/storage.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,5 +45,7 @@ exports.envValidationSchema = Joi.object({
|
|
|
45
45
|
NODE_ENV: Joi.string()
|
|
46
46
|
.valid('development', 'production', 'test', 'provision')
|
|
47
47
|
.default('development'),
|
|
48
|
+
ALLOWED_ORIGINS: Joi.string().optional(),
|
|
49
|
+
SCHEDULER_ENABLED: Joi.boolean().default(true),
|
|
48
50
|
});
|
|
49
51
|
//# sourceMappingURL=env.validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.validation.js","sourceRoot":"","sources":["../../src/config/env.validation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA2B;AAEd,QAAA,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;SACnB,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC;SACvD,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"env.validation.js","sourceRoot":"","sources":["../../src/config/env.validation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA2B;AAEd,QAAA,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;SACnB,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC;SACvD,OAAO,CAAC,aAAa,CAAC;IACzB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,iBAAiB,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC/C,CAAC,CAAC"}
|
package/dist/config/typeorm.js
CHANGED
|
@@ -33,7 +33,7 @@ const getTypeOrmConfig = (configService) => {
|
|
|
33
33
|
database: databaseUrl ? undefined : sqlitePath,
|
|
34
34
|
entities,
|
|
35
35
|
migrations,
|
|
36
|
-
synchronize:
|
|
36
|
+
synchronize: false,
|
|
37
37
|
logging: configService.get('DB_LOGGING') === 'true',
|
|
38
38
|
};
|
|
39
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeorm.js","sourceRoot":"","sources":["../../src/config/typeorm.ts"],"names":[],"mappings":";;;AAAA,qCAAwD;AACxD,2CAA+C;AAC/C,mCAAgC;AAChC,+BAAqC;AAErC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAExD,MAAM,gBAAgB,GAAG,CAC9B,aAA4B,EACT,EAAE;IACrB,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAS,cAAc,CAAC,CAAC;IAC9D,MAAM,MAAM,GACV,aAAa,CAAC,GAAG,CAAS,SAAS,CAAC;QACpC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM;QAC9B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;QAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;IAElC,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEhD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,CAAC;QAChC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,MAA+B;QACrC,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QAC9C,QAAQ;QACR,UAAU;QACV,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"typeorm.js","sourceRoot":"","sources":["../../src/config/typeorm.ts"],"names":[],"mappings":";;;AAAA,qCAAwD;AACxD,2CAA+C;AAC/C,mCAAgC;AAChC,+BAAqC;AAErC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAExD,MAAM,gBAAgB,GAAG,CAC9B,aAA4B,EACT,EAAE;IACrB,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAS,cAAc,CAAC,CAAC;IAC9D,MAAM,MAAM,GACV,aAAa,CAAC,GAAG,CAAS,SAAS,CAAC;QACpC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM;QAC9B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;QAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;IAElC,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEhD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,CAAC;QAChC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,MAA+B;QACrC,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QAC9C,QAAQ;QACR,UAAU;QACV,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAS,YAAY,CAAC,KAAK,MAAM;KACvC,CAAC;AACzB,CAAC,CAAC;AAtCW,QAAA,gBAAgB,oBAsC3B;AAEK,MAAM,gBAAgB,GAAG,GAAe,EAAE;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACb,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,IAAA,eAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,sBAAa,EAAE,CAAC;IAC1C,OAAO,IAAI,oBAAU,CAAC,IAAA,wBAAgB,EAAC,aAAa,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B;AAGF,kBAAe,IAAA,wBAAgB,GAAE,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -38,28 +38,31 @@ async function bootstrap() {
|
|
|
38
38
|
app.use((0, cookie_parser_1.default)());
|
|
39
39
|
const configService = app.get(config_1.ConfigService);
|
|
40
40
|
const nodeEnv = configService.get('NODE_ENV') || 'development';
|
|
41
|
+
const allowedOrigins = configService.get('ALLOWED_ORIGINS');
|
|
41
42
|
const corsOptions = {
|
|
42
43
|
credentials: true,
|
|
43
44
|
};
|
|
44
|
-
if (
|
|
45
|
-
corsOptions.origin =
|
|
45
|
+
if (allowedOrigins) {
|
|
46
|
+
corsOptions.origin = allowedOrigins.split(',').map((o) => o.trim());
|
|
46
47
|
}
|
|
47
|
-
else if (nodeEnv === '
|
|
48
|
-
corsOptions.origin = ['http://localhost:
|
|
48
|
+
else if (nodeEnv === 'development') {
|
|
49
|
+
corsOptions.origin = ['http://localhost:5173', 'http://localhost:3000'];
|
|
49
50
|
}
|
|
50
51
|
else {
|
|
51
|
-
corsOptions.origin =
|
|
52
|
+
corsOptions.origin = false;
|
|
52
53
|
}
|
|
53
54
|
app.enableCors(corsOptions);
|
|
54
55
|
const port = configService.get('PORT') || 3000;
|
|
55
|
-
|
|
56
|
-
.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
if (nodeEnv !== 'production') {
|
|
57
|
+
const config = new swagger_1.DocumentBuilder()
|
|
58
|
+
.setTitle('Agent Orchestrator API')
|
|
59
|
+
.setDescription('The core API for the Agent Orchestrator platform')
|
|
60
|
+
.setVersion('1.0')
|
|
61
|
+
.addBearerAuth()
|
|
62
|
+
.build();
|
|
63
|
+
const document = swagger_1.SwaggerModule.createDocument(app, config);
|
|
64
|
+
swagger_1.SwaggerModule.setup('api', app, document);
|
|
65
|
+
}
|
|
63
66
|
await app.listen(port);
|
|
64
67
|
logger.log(`Application is running on: ${await app.getUrl()}`);
|
|
65
68
|
}
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;AAAA,uCAA2C;AAC3C,2CAAwD;AACxD,6CAAiE;AACjE,oDAA4B;AAC5B,kEAAyC;AACzC,6CAAyC;AACzC,2CAA+C;AAG/C,kFAA6E;AAE7E,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC;AAEvC,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,EAAE;QAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;KACrD,CAAC,CAAC;IAEH,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9B,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,GAAG,CAAC,gBAAgB,CAAC,IAAI,2CAAmB,EAAE,CAAC,CAAC;IAMhD,GAAG,CAAC,GAAG,CACL,IAAA,gBAAM,EAAC;QACL,qBAAqB,EAAE;YACrB,UAAU,EAAE;gBACV,UAAU,EAAE,CAAC,QAAQ,CAAC;gBACtB,SAAS,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;gBACxC,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC;gBACjD,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;gBACrC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;gBACtC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBACtB,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,uBAAuB,EAAE,EAAE;aAC5B;SACF;QACD,yBAAyB,EAAE,KAAK;KACjC,CAAC,CACH,CAAC;IAGF,GAAG,CAAC,GAAG,CAAC,IAAA,uBAAY,GAAE,CAAC,CAAC;IAGxB,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,sBAAa,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAS,UAAU,CAAC,IAAI,aAAa,CAAC;IACvE,MAAM,WAAW,GAAgB;QAC/B,WAAW,EAAE,IAAI;KAClB,CAAC;IAEF,IAAI,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
export declare class AddRbacAndProjectMembership1775103764402 implements MigrationInterface {
|
|
3
|
+
name: string;
|
|
4
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
5
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AddRbacAndProjectMembership1775103764402 = void 0;
|
|
4
|
+
class AddRbacAndProjectMembership1775103764402 {
|
|
5
|
+
name = 'AddRbacAndProjectMembership1775103764402';
|
|
6
|
+
async up(queryRunner) {
|
|
7
|
+
await queryRunner.query(`DROP INDEX "IDX_4105de371d2c7ca094a830e5cd"`);
|
|
8
|
+
await queryRunner.query(`DROP INDEX "IDX_7a097552fe4fba313996835706"`);
|
|
9
|
+
await queryRunner.query(`DROP INDEX "IDX_9a16d2c86252529f622fa53f1e"`);
|
|
10
|
+
await queryRunner.query(`CREATE TABLE "temporary_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('backlog','in-progress','review','done','archived') ) NOT NULL DEFAULT ('backlog'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cost_estimate" float NOT NULL DEFAULT (0), "llm_latency" integer NOT NULL DEFAULT (0), "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar, "projectId" varchar NOT NULL, CONSTRAINT "FK_e08fca67ca8966e6b9914bf2956" FOREIGN KEY ("projectId") REFERENCES "projects" ("id") ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT "FK_9a16d2c86252529f622fa53f1e3" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE SET NULL ON UPDATE NO ACTION)`);
|
|
11
|
+
await queryRunner.query(`INSERT INTO "temporary_tasks"("id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "tasks"`);
|
|
12
|
+
await queryRunner.query(`DROP TABLE "tasks"`);
|
|
13
|
+
await queryRunner.query(`ALTER TABLE "temporary_tasks" RENAME TO "tasks"`);
|
|
14
|
+
await queryRunner.query(`CREATE INDEX "IDX_4105de371d2c7ca094a830e5cd" ON "tasks" ("projectId", "status", "updatedAt") `);
|
|
15
|
+
await queryRunner.query(`CREATE INDEX "IDX_7a097552fe4fba313996835706" ON "tasks" ("projectId", "updatedAt") `);
|
|
16
|
+
await queryRunner.query(`CREATE INDEX "IDX_9a16d2c86252529f622fa53f1e" ON "tasks" ("assigneeId") `);
|
|
17
|
+
await queryRunner.query(`CREATE TABLE "project_members" ("id" varchar PRIMARY KEY NOT NULL, "role" varchar NOT NULL DEFAULT ('member'), "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "projectId" varchar, "userId" varchar, CONSTRAINT "UQ_326b2a901eb18ac24eabc9b0581" UNIQUE ("projectId", "userId"))`);
|
|
18
|
+
await queryRunner.query(`CREATE INDEX "IDX_d19892d8f03928e5bfc7313780" ON "project_members" ("projectId") `);
|
|
19
|
+
await queryRunner.query(`CREATE INDEX "IDX_08d1346ff91abba68e5a637cfd" ON "project_members" ("userId") `);
|
|
20
|
+
await queryRunner.query(`CREATE TABLE "temporary_users" ("id" varchar PRIMARY KEY NOT NULL, "name" varchar NOT NULL, "email" varchar NOT NULL, "password" varchar, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "role" varchar NOT NULL DEFAULT ('user'), CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3" UNIQUE ("email"))`);
|
|
21
|
+
await queryRunner.query(`INSERT INTO "temporary_users"("id", "name", "email", "password", "createdAt", "updatedAt") SELECT "id", "name", "email", "password", "createdAt", "updatedAt" FROM "users"`);
|
|
22
|
+
await queryRunner.query(`DROP TABLE "users"`);
|
|
23
|
+
await queryRunner.query(`ALTER TABLE "temporary_users" RENAME TO "users"`);
|
|
24
|
+
await queryRunner.query(`CREATE TABLE "temporary_recurrent_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('active','paused','error') ) NOT NULL DEFAULT ('active'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cronExpression" varchar NOT NULL, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar NOT NULL, "projectId" varchar, CONSTRAINT "FK_9ec101b70a5f9612b0757d87c83" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`);
|
|
25
|
+
await queryRunner.query(`INSERT INTO "temporary_recurrent_tasks"("id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId") SELECT "id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId" FROM "recurrent_tasks"`);
|
|
26
|
+
await queryRunner.query(`DROP TABLE "recurrent_tasks"`);
|
|
27
|
+
await queryRunner.query(`ALTER TABLE "temporary_recurrent_tasks" RENAME TO "recurrent_tasks"`);
|
|
28
|
+
await queryRunner.query(`DROP INDEX "IDX_4105de371d2c7ca094a830e5cd"`);
|
|
29
|
+
await queryRunner.query(`DROP INDEX "IDX_7a097552fe4fba313996835706"`);
|
|
30
|
+
await queryRunner.query(`DROP INDEX "IDX_9a16d2c86252529f622fa53f1e"`);
|
|
31
|
+
await queryRunner.query(`CREATE TABLE "temporary_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('backlog','in-progress','review','done','archived') ) NOT NULL DEFAULT ('backlog'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cost_estimate" float NOT NULL DEFAULT (0), "llm_latency" integer NOT NULL DEFAULT (0), "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar, "projectId" varchar NOT NULL, CONSTRAINT "FK_e08fca67ca8966e6b9914bf2956" FOREIGN KEY ("projectId") REFERENCES "projects" ("id") ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT "FK_9a16d2c86252529f622fa53f1e3" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE SET NULL ON UPDATE NO ACTION)`);
|
|
32
|
+
await queryRunner.query(`INSERT INTO "temporary_tasks"("id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "tasks"`);
|
|
33
|
+
await queryRunner.query(`DROP TABLE "tasks"`);
|
|
34
|
+
await queryRunner.query(`ALTER TABLE "temporary_tasks" RENAME TO "tasks"`);
|
|
35
|
+
await queryRunner.query(`CREATE INDEX "IDX_4105de371d2c7ca094a830e5cd" ON "tasks" ("projectId", "status", "updatedAt") `);
|
|
36
|
+
await queryRunner.query(`CREATE INDEX "IDX_7a097552fe4fba313996835706" ON "tasks" ("projectId", "updatedAt") `);
|
|
37
|
+
await queryRunner.query(`CREATE INDEX "IDX_9a16d2c86252529f622fa53f1e" ON "tasks" ("assigneeId") `);
|
|
38
|
+
await queryRunner.query(`CREATE TABLE "temporary_recurrent_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('active','paused','error') ) NOT NULL DEFAULT ('active'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cronExpression" varchar NOT NULL, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar NOT NULL, "projectId" varchar, CONSTRAINT "FK_9ec101b70a5f9612b0757d87c83" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`);
|
|
39
|
+
await queryRunner.query(`INSERT INTO "temporary_recurrent_tasks"("id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "recurrent_tasks"`);
|
|
40
|
+
await queryRunner.query(`DROP TABLE "recurrent_tasks"`);
|
|
41
|
+
await queryRunner.query(`ALTER TABLE "temporary_recurrent_tasks" RENAME TO "recurrent_tasks"`);
|
|
42
|
+
await queryRunner.query(`CREATE INDEX "IDX_a27865a7be17886e3088f4a650" ON "projects" ("status") `);
|
|
43
|
+
await queryRunner.query(`CREATE INDEX "IDX_f5bb7be33ddb87ac0f04807b4a" ON "recurrent_task_execs" ("recurrentTaskId") `);
|
|
44
|
+
await queryRunner.query(`CREATE INDEX "IDX_0f9f543bd40419122e69aeff00" ON "recurrent_tasks" ("projectId") `);
|
|
45
|
+
await queryRunner.query(`CREATE INDEX "IDX_a03520bcf60ada1a46bf548e22" ON "recurrent_tasks" ("status") `);
|
|
46
|
+
await queryRunner.query(`CREATE INDEX "IDX_070d648bde98d061fd6e9d176d" ON "refresh_tokens" ("userId", "revokedAt") `);
|
|
47
|
+
await queryRunner.query(`DROP INDEX "IDX_d19892d8f03928e5bfc7313780"`);
|
|
48
|
+
await queryRunner.query(`DROP INDEX "IDX_08d1346ff91abba68e5a637cfd"`);
|
|
49
|
+
await queryRunner.query(`CREATE TABLE "temporary_project_members" ("id" varchar PRIMARY KEY NOT NULL, "role" varchar NOT NULL DEFAULT ('member'), "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "projectId" varchar, "userId" varchar, CONSTRAINT "UQ_326b2a901eb18ac24eabc9b0581" UNIQUE ("projectId", "userId"), CONSTRAINT "FK_d19892d8f03928e5bfc7313780c" FOREIGN KEY ("projectId") REFERENCES "projects" ("id") ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT "FK_08d1346ff91abba68e5a637cfdb" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`);
|
|
50
|
+
await queryRunner.query(`INSERT INTO "temporary_project_members"("id", "role", "createdAt", "projectId", "userId") SELECT "id", "role", "createdAt", "projectId", "userId" FROM "project_members"`);
|
|
51
|
+
await queryRunner.query(`DROP TABLE "project_members"`);
|
|
52
|
+
await queryRunner.query(`ALTER TABLE "temporary_project_members" RENAME TO "project_members"`);
|
|
53
|
+
await queryRunner.query(`CREATE INDEX "IDX_d19892d8f03928e5bfc7313780" ON "project_members" ("projectId") `);
|
|
54
|
+
await queryRunner.query(`CREATE INDEX "IDX_08d1346ff91abba68e5a637cfd" ON "project_members" ("userId") `);
|
|
55
|
+
await queryRunner.query(`DROP INDEX "IDX_0f9f543bd40419122e69aeff00"`);
|
|
56
|
+
await queryRunner.query(`DROP INDEX "IDX_a03520bcf60ada1a46bf548e22"`);
|
|
57
|
+
await queryRunner.query(`CREATE TABLE "temporary_recurrent_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('active','paused','error') ) NOT NULL DEFAULT ('active'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cronExpression" varchar NOT NULL, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar NOT NULL, "projectId" varchar, CONSTRAINT "FK_9ec101b70a5f9612b0757d87c83" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT "FK_0f9f543bd40419122e69aeff006" FOREIGN KEY ("projectId") REFERENCES "projects" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`);
|
|
58
|
+
await queryRunner.query(`INSERT INTO "temporary_recurrent_tasks"("id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "recurrent_tasks"`);
|
|
59
|
+
await queryRunner.query(`DROP TABLE "recurrent_tasks"`);
|
|
60
|
+
await queryRunner.query(`ALTER TABLE "temporary_recurrent_tasks" RENAME TO "recurrent_tasks"`);
|
|
61
|
+
await queryRunner.query(`CREATE INDEX "IDX_0f9f543bd40419122e69aeff00" ON "recurrent_tasks" ("projectId") `);
|
|
62
|
+
await queryRunner.query(`CREATE INDEX "IDX_a03520bcf60ada1a46bf548e22" ON "recurrent_tasks" ("status") `);
|
|
63
|
+
}
|
|
64
|
+
async down(queryRunner) {
|
|
65
|
+
await queryRunner.query(`DROP INDEX "IDX_a03520bcf60ada1a46bf548e22"`);
|
|
66
|
+
await queryRunner.query(`DROP INDEX "IDX_0f9f543bd40419122e69aeff00"`);
|
|
67
|
+
await queryRunner.query(`ALTER TABLE "recurrent_tasks" RENAME TO "temporary_recurrent_tasks"`);
|
|
68
|
+
await queryRunner.query(`CREATE TABLE "recurrent_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('active','paused','error') ) NOT NULL DEFAULT ('active'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cronExpression" varchar NOT NULL, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar NOT NULL, "projectId" varchar, CONSTRAINT "FK_9ec101b70a5f9612b0757d87c83" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`);
|
|
69
|
+
await queryRunner.query(`INSERT INTO "recurrent_tasks"("id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "temporary_recurrent_tasks"`);
|
|
70
|
+
await queryRunner.query(`DROP TABLE "temporary_recurrent_tasks"`);
|
|
71
|
+
await queryRunner.query(`CREATE INDEX "IDX_a03520bcf60ada1a46bf548e22" ON "recurrent_tasks" ("status") `);
|
|
72
|
+
await queryRunner.query(`CREATE INDEX "IDX_0f9f543bd40419122e69aeff00" ON "recurrent_tasks" ("projectId") `);
|
|
73
|
+
await queryRunner.query(`DROP INDEX "IDX_08d1346ff91abba68e5a637cfd"`);
|
|
74
|
+
await queryRunner.query(`DROP INDEX "IDX_d19892d8f03928e5bfc7313780"`);
|
|
75
|
+
await queryRunner.query(`ALTER TABLE "project_members" RENAME TO "temporary_project_members"`);
|
|
76
|
+
await queryRunner.query(`CREATE TABLE "project_members" ("id" varchar PRIMARY KEY NOT NULL, "role" varchar NOT NULL DEFAULT ('member'), "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "projectId" varchar, "userId" varchar, CONSTRAINT "UQ_326b2a901eb18ac24eabc9b0581" UNIQUE ("projectId", "userId"))`);
|
|
77
|
+
await queryRunner.query(`INSERT INTO "project_members"("id", "role", "createdAt", "projectId", "userId") SELECT "id", "role", "createdAt", "projectId", "userId" FROM "temporary_project_members"`);
|
|
78
|
+
await queryRunner.query(`DROP TABLE "temporary_project_members"`);
|
|
79
|
+
await queryRunner.query(`CREATE INDEX "IDX_08d1346ff91abba68e5a637cfd" ON "project_members" ("userId") `);
|
|
80
|
+
await queryRunner.query(`CREATE INDEX "IDX_d19892d8f03928e5bfc7313780" ON "project_members" ("projectId") `);
|
|
81
|
+
await queryRunner.query(`DROP INDEX "IDX_070d648bde98d061fd6e9d176d"`);
|
|
82
|
+
await queryRunner.query(`DROP INDEX "IDX_a03520bcf60ada1a46bf548e22"`);
|
|
83
|
+
await queryRunner.query(`DROP INDEX "IDX_0f9f543bd40419122e69aeff00"`);
|
|
84
|
+
await queryRunner.query(`DROP INDEX "IDX_f5bb7be33ddb87ac0f04807b4a"`);
|
|
85
|
+
await queryRunner.query(`DROP INDEX "IDX_a27865a7be17886e3088f4a650"`);
|
|
86
|
+
await queryRunner.query(`ALTER TABLE "recurrent_tasks" RENAME TO "temporary_recurrent_tasks"`);
|
|
87
|
+
await queryRunner.query(`CREATE TABLE "recurrent_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('active','paused','error') ) NOT NULL DEFAULT ('active'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cronExpression" varchar NOT NULL, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar NOT NULL, "projectId" varchar, CONSTRAINT "FK_9ec101b70a5f9612b0757d87c83" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`);
|
|
88
|
+
await queryRunner.query(`INSERT INTO "recurrent_tasks"("id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "temporary_recurrent_tasks"`);
|
|
89
|
+
await queryRunner.query(`DROP TABLE "temporary_recurrent_tasks"`);
|
|
90
|
+
await queryRunner.query(`DROP INDEX "IDX_9a16d2c86252529f622fa53f1e"`);
|
|
91
|
+
await queryRunner.query(`DROP INDEX "IDX_7a097552fe4fba313996835706"`);
|
|
92
|
+
await queryRunner.query(`DROP INDEX "IDX_4105de371d2c7ca094a830e5cd"`);
|
|
93
|
+
await queryRunner.query(`ALTER TABLE "tasks" RENAME TO "temporary_tasks"`);
|
|
94
|
+
await queryRunner.query(`CREATE TABLE "tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('backlog','in-progress','review','done','archived') ) NOT NULL DEFAULT ('backlog'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cost_estimate" float NOT NULL DEFAULT (0), "llm_latency" integer NOT NULL DEFAULT (0), "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar, "projectId" varchar NOT NULL, CONSTRAINT "FK_e08fca67ca8966e6b9914bf2956" FOREIGN KEY ("projectId") REFERENCES "projects" ("id") ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT "FK_9a16d2c86252529f622fa53f1e3" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE SET NULL ON UPDATE NO ACTION)`);
|
|
95
|
+
await queryRunner.query(`INSERT INTO "tasks"("id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "temporary_tasks"`);
|
|
96
|
+
await queryRunner.query(`DROP TABLE "temporary_tasks"`);
|
|
97
|
+
await queryRunner.query(`CREATE INDEX "IDX_9a16d2c86252529f622fa53f1e" ON "tasks" ("assigneeId") `);
|
|
98
|
+
await queryRunner.query(`CREATE INDEX "IDX_7a097552fe4fba313996835706" ON "tasks" ("projectId", "updatedAt") `);
|
|
99
|
+
await queryRunner.query(`CREATE INDEX "IDX_4105de371d2c7ca094a830e5cd" ON "tasks" ("projectId", "status", "updatedAt") `);
|
|
100
|
+
await queryRunner.query(`ALTER TABLE "recurrent_tasks" RENAME TO "temporary_recurrent_tasks"`);
|
|
101
|
+
await queryRunner.query(`CREATE TABLE "recurrent_tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('active','paused','error') ) NOT NULL DEFAULT ('active'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cronExpression" varchar NOT NULL, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar NOT NULL, CONSTRAINT "FK_9ec101b70a5f9612b0757d87c83" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`);
|
|
102
|
+
await queryRunner.query(`INSERT INTO "recurrent_tasks"("id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId") SELECT "id", "title", "description", "status", "priority", "cronExpression", "createdAt", "updatedAt", "assigneeId" FROM "temporary_recurrent_tasks"`);
|
|
103
|
+
await queryRunner.query(`DROP TABLE "temporary_recurrent_tasks"`);
|
|
104
|
+
await queryRunner.query(`ALTER TABLE "users" RENAME TO "temporary_users"`);
|
|
105
|
+
await queryRunner.query(`CREATE TABLE "users" ("id" varchar PRIMARY KEY NOT NULL, "name" varchar NOT NULL, "email" varchar NOT NULL, "password" varchar, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3" UNIQUE ("email"))`);
|
|
106
|
+
await queryRunner.query(`INSERT INTO "users"("id", "name", "email", "password", "createdAt", "updatedAt") SELECT "id", "name", "email", "password", "createdAt", "updatedAt" FROM "temporary_users"`);
|
|
107
|
+
await queryRunner.query(`DROP TABLE "temporary_users"`);
|
|
108
|
+
await queryRunner.query(`DROP INDEX "IDX_08d1346ff91abba68e5a637cfd"`);
|
|
109
|
+
await queryRunner.query(`DROP INDEX "IDX_d19892d8f03928e5bfc7313780"`);
|
|
110
|
+
await queryRunner.query(`DROP TABLE "project_members"`);
|
|
111
|
+
await queryRunner.query(`DROP INDEX "IDX_9a16d2c86252529f622fa53f1e"`);
|
|
112
|
+
await queryRunner.query(`DROP INDEX "IDX_7a097552fe4fba313996835706"`);
|
|
113
|
+
await queryRunner.query(`DROP INDEX "IDX_4105de371d2c7ca094a830e5cd"`);
|
|
114
|
+
await queryRunner.query(`ALTER TABLE "tasks" RENAME TO "temporary_tasks"`);
|
|
115
|
+
await queryRunner.query(`CREATE TABLE "tasks" ("id" varchar PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "status" varchar CHECK( "status" IN ('backlog','in-progress','review','done','archived') ) NOT NULL DEFAULT ('backlog'), "priority" varchar CHECK( "priority" IN ('0','1','2','3') ) NOT NULL DEFAULT (2), "cost_estimate" float NOT NULL DEFAULT (0), "llm_latency" integer NOT NULL DEFAULT (0), "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "assigneeId" varchar, "projectId" varchar NOT NULL, CONSTRAINT "FK_e08fca67ca8966e6b9914bf2956" FOREIGN KEY ("projectId") REFERENCES "projects" ("id") ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT "FK_9a16d2c86252529f622fa53f1e3" FOREIGN KEY ("assigneeId") REFERENCES "agents" ("id") ON DELETE SET NULL ON UPDATE NO ACTION)`);
|
|
116
|
+
await queryRunner.query(`INSERT INTO "tasks"("id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId") SELECT "id", "title", "description", "status", "priority", "cost_estimate", "llm_latency", "createdAt", "updatedAt", "assigneeId", "projectId" FROM "temporary_tasks"`);
|
|
117
|
+
await queryRunner.query(`DROP TABLE "temporary_tasks"`);
|
|
118
|
+
await queryRunner.query(`CREATE INDEX "IDX_9a16d2c86252529f622fa53f1e" ON "tasks" ("assigneeId") `);
|
|
119
|
+
await queryRunner.query(`CREATE INDEX "IDX_7a097552fe4fba313996835706" ON "tasks" ("projectId", "updatedAt") `);
|
|
120
|
+
await queryRunner.query(`CREATE INDEX "IDX_4105de371d2c7ca094a830e5cd" ON "tasks" ("projectId", "status", "updatedAt") `);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.AddRbacAndProjectMembership1775103764402 = AddRbacAndProjectMembership1775103764402;
|
|
124
|
+
//# sourceMappingURL=1775103764402-AddRbacAndProjectMembership.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1775103764402-AddRbacAndProjectMembership.js","sourceRoot":"","sources":["../../src/migrations/1775103764402-AddRbacAndProjectMembership.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,8 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const models_service_1 = require("./models.service");
|
|
19
19
|
const create_model_dto_1 = require("./dto/create-model.dto");
|
|
20
20
|
const update_model_dto_1 = require("./dto/update-model.dto");
|
|
21
|
+
const roles_decorator_1 = require("../auth/decorators/roles.decorator");
|
|
22
|
+
const user_entity_1 = require("../users/entities/user.entity");
|
|
21
23
|
let ModelsController = class ModelsController {
|
|
22
24
|
modelsService;
|
|
23
25
|
constructor(modelsService) {
|
|
@@ -44,6 +46,7 @@ let ModelsController = class ModelsController {
|
|
|
44
46
|
};
|
|
45
47
|
exports.ModelsController = ModelsController;
|
|
46
48
|
__decorate([
|
|
49
|
+
(0, roles_decorator_1.Roles)(user_entity_1.UserRole.ADMIN),
|
|
47
50
|
(0, common_1.Post)(),
|
|
48
51
|
openapi.ApiResponse({ status: 201, type: require("./entities/model.entity").Model }),
|
|
49
52
|
__param(0, (0, common_1.Body)()),
|
|
@@ -75,6 +78,7 @@ __decorate([
|
|
|
75
78
|
__metadata("design:returntype", void 0)
|
|
76
79
|
], ModelsController.prototype, "findOne", null);
|
|
77
80
|
__decorate([
|
|
81
|
+
(0, roles_decorator_1.Roles)(user_entity_1.UserRole.ADMIN),
|
|
78
82
|
(0, common_1.Patch)(':id'),
|
|
79
83
|
openapi.ApiResponse({ status: 200, type: require("./entities/model.entity").Model }),
|
|
80
84
|
__param(0, (0, common_1.Param)('id')),
|
|
@@ -84,6 +88,7 @@ __decorate([
|
|
|
84
88
|
__metadata("design:returntype", void 0)
|
|
85
89
|
], ModelsController.prototype, "update", null);
|
|
86
90
|
__decorate([
|
|
91
|
+
(0, roles_decorator_1.Roles)(user_entity_1.UserRole.ADMIN),
|
|
87
92
|
(0, common_1.Delete)(':id'),
|
|
88
93
|
openapi.ApiResponse({ status: 200 }),
|
|
89
94
|
__param(0, (0, common_1.Param)('id')),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.controller.js","sourceRoot":"","sources":["../../src/models/models.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,qDAAiD;AACjD,6DAAwD;AACxD,6DAAwD;
|
|
1
|
+
{"version":3,"file":"models.controller.js","sourceRoot":"","sources":["../../src/models/models.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,qDAAiD;AACjD,6DAAwD;AACxD,6DAAwD;AACxD,wEAA2D;AAC3D,+DAAyD;AAGlD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACE;IAA7B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAI7D,MAAM,CAAS,cAA8B;QAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACnD,CAAC;IAGD,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAGD,cAAc,CAAsB,UAAkB;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAGD,OAAO,CAAc,EAAU;QAC7B,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAID,MAAM,CAAc,EAAU,EAAU,cAA8B;QACpE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAID,MAAM,CAAc,EAAU;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;CACF,CAAA;AAnCY,4CAAgB;AAK3B;IAFC,IAAA,uBAAK,EAAC,sBAAQ,CAAC,KAAK,CAAC;IACrB,IAAA,aAAI,GAAE;;IACC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAiB,iCAAc;;8CAE5C;AAGD;IADC,IAAA,YAAG,GAAE;;;;;+CAGL;AAGD;IADC,IAAA,YAAG,EAAC,sBAAsB,CAAC;;IACZ,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;;;;sDAElC;AAGD;IADC,IAAA,YAAG,EAAC,KAAK,CAAC;;IACF,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;+CAEnB;AAID;IAFC,IAAA,uBAAK,EAAC,sBAAQ,CAAC,KAAK,CAAC;IACrB,IAAA,cAAK,EAAC,KAAK,CAAC;;IACL,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;6CAAiB,iCAAc;;8CAErE;AAID;IAFC,IAAA,uBAAK,EAAC,sBAAQ,CAAC,KAAK,CAAC;IACrB,IAAA,eAAM,EAAC,KAAK,CAAC;;IACN,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;8CAElB;2BAlCU,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAEyB,8BAAa;GAD9C,gBAAgB,CAmC5B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AddMemberDto = void 0;
|
|
13
|
+
const openapi = require("@nestjs/swagger");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const project_member_entity_1 = require("../entities/project-member.entity");
|
|
16
|
+
class AddMemberDto {
|
|
17
|
+
userId;
|
|
18
|
+
role;
|
|
19
|
+
static _OPENAPI_METADATA_FACTORY() {
|
|
20
|
+
return { userId: { required: true, type: () => String, format: "uuid" }, role: { required: false, enum: require("../entities/project-member.entity").ProjectMemberRole } };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.AddMemberDto = AddMemberDto;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsUUID)(),
|
|
26
|
+
__metadata("design:type", String)
|
|
27
|
+
], AddMemberDto.prototype, "userId", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, class_validator_1.IsEnum)(project_member_entity_1.ProjectMemberRole),
|
|
30
|
+
(0, class_validator_1.IsOptional)(),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], AddMemberDto.prototype, "role", void 0);
|
|
33
|
+
//# sourceMappingURL=add-member.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-member.dto.js","sourceRoot":"","sources":["../../../src/projects/dto/add-member.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAA6D;AAC7D,6EAAsE;AAEtE,MAAa,YAAY;IAEvB,MAAM,CAAS;IAIf,IAAI,CAAqB;;;;CAC1B;AAPD,oCAOC;AALC;IADC,IAAA,wBAAM,GAAE;;4CACM;AAIf;IAFC,IAAA,wBAAM,EAAC,yCAAiB,CAAC;IACzB,IAAA,4BAAU,GAAE;;0CACY"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Project } from './project.entity';
|
|
2
|
+
import { User } from '../../users/entities/user.entity';
|
|
3
|
+
export declare enum ProjectMemberRole {
|
|
4
|
+
OWNER = "owner",
|
|
5
|
+
MEMBER = "member"
|
|
6
|
+
}
|
|
7
|
+
export declare class ProjectMember {
|
|
8
|
+
id: string;
|
|
9
|
+
project: Project;
|
|
10
|
+
user: User;
|
|
11
|
+
role: ProjectMemberRole;
|
|
12
|
+
createdAt: Date;
|
|
13
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProjectMember = exports.ProjectMemberRole = void 0;
|
|
13
|
+
const openapi = require("@nestjs/swagger");
|
|
14
|
+
const typeorm_1 = require("typeorm");
|
|
15
|
+
const project_entity_1 = require("./project.entity");
|
|
16
|
+
const user_entity_1 = require("../../users/entities/user.entity");
|
|
17
|
+
var ProjectMemberRole;
|
|
18
|
+
(function (ProjectMemberRole) {
|
|
19
|
+
ProjectMemberRole["OWNER"] = "owner";
|
|
20
|
+
ProjectMemberRole["MEMBER"] = "member";
|
|
21
|
+
})(ProjectMemberRole || (exports.ProjectMemberRole = ProjectMemberRole = {}));
|
|
22
|
+
let ProjectMember = class ProjectMember {
|
|
23
|
+
id;
|
|
24
|
+
project;
|
|
25
|
+
user;
|
|
26
|
+
role;
|
|
27
|
+
createdAt;
|
|
28
|
+
static _OPENAPI_METADATA_FACTORY() {
|
|
29
|
+
return { id: { required: true, type: () => String }, project: { required: true, type: () => require("./project.entity").Project }, user: { required: true, type: () => require("../../users/entities/user.entity").User }, role: { required: true, enum: require("./project-member.entity").ProjectMemberRole }, createdAt: { required: true, type: () => Date } };
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.ProjectMember = ProjectMember;
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], ProjectMember.prototype, "id", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typeorm_1.Index)(),
|
|
39
|
+
(0, typeorm_1.ManyToOne)(() => project_entity_1.Project, (project) => project.members, {
|
|
40
|
+
onDelete: 'CASCADE',
|
|
41
|
+
}),
|
|
42
|
+
__metadata("design:type", project_entity_1.Project)
|
|
43
|
+
], ProjectMember.prototype, "project", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, typeorm_1.Index)(),
|
|
46
|
+
(0, typeorm_1.ManyToOne)(() => user_entity_1.User, { onDelete: 'CASCADE', eager: true }),
|
|
47
|
+
__metadata("design:type", user_entity_1.User)
|
|
48
|
+
], ProjectMember.prototype, "user", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, typeorm_1.Column)({ type: 'varchar', default: ProjectMemberRole.MEMBER }),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], ProjectMember.prototype, "role", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
55
|
+
__metadata("design:type", Date)
|
|
56
|
+
], ProjectMember.prototype, "createdAt", void 0);
|
|
57
|
+
exports.ProjectMember = ProjectMember = __decorate([
|
|
58
|
+
(0, typeorm_1.Entity)('project_members'),
|
|
59
|
+
(0, typeorm_1.Unique)(['project', 'user'])
|
|
60
|
+
], ProjectMember);
|
|
61
|
+
//# sourceMappingURL=project-member.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-member.entity.js","sourceRoot":"","sources":["../../../src/projects/entities/project-member.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAQiB;AACjB,qDAA2C;AAC3C,kEAAwD;AAExD,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B;AAIM,IAAM,aAAa,GAAnB,MAAM,aAAa;IAExB,EAAE,CAAS;IAMX,OAAO,CAAU;IAIjB,IAAI,CAAO;IAGX,IAAI,CAAoB;IAGxB,SAAS,CAAO;;;;CACjB,CAAA;AAnBY,sCAAa;AAExB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;yCACpB;AAMX;IAJC,IAAA,eAAK,GAAE;IACP,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,wBAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;QACtD,QAAQ,EAAE,SAAS;KACpB,CAAC;8BACO,wBAAO;8CAAC;AAIjB;IAFC,IAAA,eAAK,GAAE;IACP,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kBAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;8BACtD,kBAAI;2CAAC;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC;;2CACvC;AAGxB;IADC,IAAA,0BAAgB,GAAE;8BACR,IAAI;gDAAC;wBAlBL,aAAa;IAFzB,IAAA,gBAAM,EAAC,iBAAiB,CAAC;IACzB,IAAA,gBAAM,EAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;GACf,aAAa,CAmBzB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AgentEntity } from '../../agents/entities/agent.entity';
|
|
2
|
+
import { ProjectMember } from './project-member.entity';
|
|
2
3
|
export declare enum ProjectStatus {
|
|
3
4
|
PLANNING = "planning",
|
|
4
5
|
ACTIVE = "active",
|
|
@@ -12,6 +13,7 @@ export declare class Project {
|
|
|
12
13
|
description: string;
|
|
13
14
|
status: ProjectStatus;
|
|
14
15
|
ownerAgent: AgentEntity | null;
|
|
16
|
+
members: ProjectMember[];
|
|
15
17
|
createdAt: Date;
|
|
16
18
|
updatedAt: Date;
|
|
17
19
|
}
|