crewx 0.8.7-rc.21 → 0.8.7-rc.22
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/dist/assets/{MarketPage-aY16UW1_.js → MarketPage-lLBtAENs.js} +10 -15
- package/dist/assets/{PromptTab-C3aTJS6u.js → PromptTab-Daq54dMi.js} +1 -1
- package/dist/assets/_baseUniq-BJDqmZBO.js +1 -0
- package/dist/assets/{arc-BCQAokB1.js → arc-ByjRIa5p.js} +1 -1
- package/dist/assets/{architectureDiagram-UYN6MBPD-Bc87ujv2.js → architectureDiagram-UYN6MBPD-DcKpqSFb.js} +1 -1
- package/dist/assets/{blockDiagram-ZHA2E4KO-wC9uH8Lb.js → blockDiagram-ZHA2E4KO-YvUeULT5.js} +1 -1
- package/dist/assets/{c4Diagram-6F5ED5ID-CqB7lqni.js → c4Diagram-6F5ED5ID-vggzH2N5.js} +1 -1
- package/dist/assets/channel-1Y6YooBb.js +1 -0
- package/dist/assets/{chunk-5HRBRIJM-Cc1L17Eh.js → chunk-5HRBRIJM-BbaQwJkn.js} +1 -1
- package/dist/assets/{chunk-7U56Z5CX-Df3nu_7G.js → chunk-7U56Z5CX-DVYVpFaa.js} +1 -1
- package/dist/assets/{chunk-ASOPGD6M-DIXslLG-.js → chunk-ASOPGD6M-CXEvWb-8.js} +1 -1
- package/dist/assets/{chunk-KFBOBJHC-FytVljyP.js → chunk-KFBOBJHC-CadVXFV3.js} +1 -1
- package/dist/assets/{chunk-T2TOU4HS-CU5z-cXq.js → chunk-T2TOU4HS-lDZr1sVF.js} +1 -1
- package/dist/assets/{chunk-TMUBEWPD-CWo1AFyn.js → chunk-TMUBEWPD-D5A0MrFD.js} +1 -1
- package/dist/assets/classDiagram-LNE6IOMH-CDxkV2JV.js +1 -0
- package/dist/assets/classDiagram-v2-MQ7JQ4JX-CDxkV2JV.js +1 -0
- package/dist/assets/clone-6xznz_9G.js +1 -0
- package/dist/assets/{dagre-4EVJKHTY-CgZW5tg4.js → dagre-4EVJKHTY-Bncx7Ijq.js} +1 -1
- package/dist/assets/{diagram-QW4FP2JN-CJAng8RC.js → diagram-QW4FP2JN-RkxVNs99.js} +1 -1
- package/dist/assets/{erDiagram-6RL3IURR-C1uHztHX.js → erDiagram-6RL3IURR-DIiKqQdx.js} +1 -1
- package/dist/assets/{flowDiagram-7ASYPVHJ-Yiu2odO-.js → flowDiagram-7ASYPVHJ-DQ5PN7v6.js} +1 -1
- package/dist/assets/{ganttDiagram-NTVNEXSI-tutc0dJP.js → ganttDiagram-NTVNEXSI-BeNWGpB6.js} +1 -1
- package/dist/assets/{gitGraph-YCYPL57B-C3jM6T4G.js → gitGraph-YCYPL57B-CdMe059q.js} +1 -1
- package/dist/assets/{gitGraphDiagram-NRZ2UAAF-0aqHEKzz.js → gitGraphDiagram-NRZ2UAAF-BEke5TyK.js} +1 -1
- package/dist/assets/{graph-DC224ILV.js → graph-DyQIwWJd.js} +1 -1
- package/dist/assets/{infoDiagram-A4XQUW5V-Do7Mpzkx.js → infoDiagram-A4XQUW5V-CUcC8I_5.js} +1 -1
- package/dist/assets/{journeyDiagram-G5WM74LC-DAruEJc7.js → journeyDiagram-G5WM74LC-CQ5DqAH5.js} +1 -1
- package/dist/assets/{kanban-definition-QRCXZQQD-DB63vLR0.js → kanban-definition-QRCXZQQD-BBsgOii7.js} +1 -1
- package/dist/assets/{layout-BiYH5x6Q.js → layout-D7vBs_Wy.js} +1 -1
- package/dist/assets/{linear-CLyGW2s0.js → linear-CEOF9oJz.js} +1 -1
- package/dist/assets/{main-CEKkUqZb.js → main-Bx1nZ7_p.js} +278 -273
- package/dist/assets/main-C4ebvOIJ.css +10 -0
- package/dist/assets/{min-ChJMFU2N.js → min-RK9J5Utn.js} +1 -1
- package/dist/assets/{mindmap-definition-GWI6TPTV-CtADqQgd.js → mindmap-definition-GWI6TPTV-BXvEU7qC.js} +1 -1
- package/dist/assets/{pieDiagram-YF2LJOPJ-BSOfzo3O.js → pieDiagram-YF2LJOPJ-TrXqcpni.js} +1 -1
- package/dist/assets/{quadrantDiagram-OS5C2QUG-BLBQNFVb.js → quadrantDiagram-OS5C2QUG-B-chTEU4.js} +1 -1
- package/dist/assets/{requirementDiagram-MIRIMTAZ-DqorvuS6.js → requirementDiagram-MIRIMTAZ-BgJhNLp_.js} +1 -1
- package/dist/assets/{sankeyDiagram-Y46BX6SQ-4NDcrLkB.js → sankeyDiagram-Y46BX6SQ-BVsgYKK7.js} +1 -1
- package/dist/assets/{sequenceDiagram-G6AWOVSC-yha6BxK2.js → sequenceDiagram-G6AWOVSC-ByJOpkq3.js} +1 -1
- package/dist/assets/{stateDiagram-MAYHULR4-XJ_I41ez.js → stateDiagram-MAYHULR4-Dw7lUL1B.js} +1 -1
- package/dist/assets/stateDiagram-v2-4JROLMXI-DYJiM3bF.js +1 -0
- package/dist/assets/{timeline-definition-U7ZMHBDA-DCNrmvE7.js → timeline-definition-U7ZMHBDA-CSoEYs60.js} +1 -1
- package/dist/assets/{xychartDiagram-6QU3TZC5-9N-Ohhdp.js → xychartDiagram-6QU3TZC5-0_rG7p3L.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +8 -8
- package/packages/cli/package.json +1 -1
- package/dist/assets/_baseUniq-DxEFlwNt.js +0 -1
- package/dist/assets/channel-DNLHkiNp.js +0 -1
- package/dist/assets/classDiagram-LNE6IOMH-B430Onym.js +0 -1
- package/dist/assets/classDiagram-v2-MQ7JQ4JX-B430Onym.js +0 -1
- package/dist/assets/clone-B9O3E3P1.js +0 -1
- package/dist/assets/main-D3YeRndF.css +0 -10
- package/dist/assets/stateDiagram-v2-4JROLMXI-CxcyPJO2.js +0 -1
- package/dist-server/adapters/adapter.module.js +0 -35
- package/dist-server/adapters/adapter.service.js +0 -79
- package/dist-server/adapters/http-router.service.js +0 -91
- package/dist-server/app.module.js +0 -111
- package/dist-server/bootstrap/crewx-server.js +0 -80
- package/dist-server/bootstrap/tls.js +0 -138
- package/dist-server/common/analytics.client.js +0 -180
- package/dist-server/common/analytics.module.js +0 -21
- package/dist-server/common/cors.js +0 -15
- package/dist-server/common/decorators/project.decorator.js +0 -21
- package/dist-server/common/decorators/workspace.decorator.js +0 -24
- package/dist-server/common/device-id.js +0 -33
- package/dist-server/common/interceptor/api-id-header.interceptor.js +0 -53
- package/dist-server/common/interceptor/http-logging.interceptor.js +0 -124
- package/dist-server/common/limits/defaults.js +0 -13
- package/dist-server/common/limits/limits-provider.js +0 -6
- package/dist-server/common/limits/limits.controller.js +0 -38
- package/dist-server/common/limits/limits.module.js +0 -24
- package/dist-server/common/limits/local-limits.provider.js +0 -27
- package/dist-server/common/middleware/workspace.middleware.js +0 -210
- package/dist-server/common/repository.exception-filter.js +0 -48
- package/dist-server/common/workspace-context.store.js +0 -25
- package/dist-server/domain/agent/agent.controller.js +0 -96
- package/dist-server/domain/agent/agent.module.js +0 -27
- package/dist-server/domain/agent/agent.service.js +0 -335
- package/dist-server/domain/agent/agent.types.js +0 -3
- package/dist-server/domain/agent/dto/create-agent.dto.js +0 -80
- package/dist-server/domain/agent/dto/preview-prompt.dto.js +0 -77
- package/dist-server/domain/agent/dto/provider-meta.dto.js +0 -2
- package/dist-server/domain/agent/dto/update-agent.dto.js +0 -92
- package/dist-server/domain/agent/provider.controller.js +0 -38
- package/dist-server/domain/agent/template-processor.service.js +0 -71
- package/dist-server/domain/auth/auth.constants.js +0 -4
- package/dist-server/domain/auth/auth.controller.js +0 -123
- package/dist-server/domain/auth/auth.module.js +0 -47
- package/dist-server/domain/auth/decorators/public.decorator.js +0 -7
- package/dist-server/domain/auth/guards/base-auth.guard.js +0 -66
- package/dist-server/domain/auth/session-store.js +0 -26
- package/dist-server/domain/auth/utils/ip.utils.js +0 -31
- package/dist-server/domain/box/box.controller.js +0 -77
- package/dist-server/domain/box/box.module.js +0 -21
- package/dist-server/domain/box/box.service.js +0 -97
- package/dist-server/domain/box/dto/create-box.dto.js +0 -74
- package/dist-server/domain/cli/cli.controller.js +0 -136
- package/dist-server/domain/cli/cli.module.js +0 -21
- package/dist-server/domain/cli/cli.service.js +0 -598
- package/dist-server/domain/cli/dto/login-cli.dto.js +0 -25
- package/dist-server/domain/cli/dto/update-cli.dto.js +0 -31
- package/dist-server/domain/doc/doc.controller.js +0 -95
- package/dist-server/domain/doc/doc.module.js +0 -21
- package/dist-server/domain/doc/doc.service.js +0 -368
- package/dist-server/domain/doc/dto/doc.dto.js +0 -64
- package/dist-server/domain/document/document.controller.js +0 -57
- package/dist-server/domain/document/document.module.js +0 -22
- package/dist-server/domain/document/document.service.js +0 -274
- package/dist-server/domain/document/dto/register-document.dto.js +0 -24
- package/dist-server/domain/fs/dto/mkdir-request.dto.js +0 -47
- package/dist-server/domain/fs/dto/mkdir-response.dto.js +0 -2
- package/dist-server/domain/fs/dto/quick-access.dto.js +0 -2
- package/dist-server/domain/fs/dto/tree-node.dto.js +0 -2
- package/dist-server/domain/fs/dto/tree-query.dto.js +0 -35
- package/dist-server/domain/fs/fs.controller.js +0 -63
- package/dist-server/domain/fs/fs.module.js +0 -22
- package/dist-server/domain/fs/fs.service.js +0 -303
- package/dist-server/domain/git/git.module.js +0 -20
- package/dist-server/domain/git/git.service.js +0 -222
- package/dist-server/domain/goal/dto/goal.dto.js +0 -49
- package/dist-server/domain/goal/goal.controller.js +0 -86
- package/dist-server/domain/goal/goal.module.js +0 -22
- package/dist-server/domain/goal/goal.service.js +0 -197
- package/dist-server/domain/goal/parser/goal-md-parser.js +0 -166
- package/dist-server/domain/goal/parser/goal-md-serializer.js +0 -110
- package/dist-server/domain/health/health.controller.js +0 -57
- package/dist-server/domain/health/health.module.js +0 -19
- package/dist-server/domain/knowledge/dto/graph-knowledge.dto.js +0 -27
- package/dist-server/domain/knowledge/dto/knowledge.dto.js +0 -71
- package/dist-server/domain/knowledge/knowledge.controller.js +0 -122
- package/dist-server/domain/knowledge/knowledge.module.js +0 -21
- package/dist-server/domain/knowledge/knowledge.service.js +0 -538
- package/dist-server/domain/market/dto/add-registry.dto.js +0 -32
- package/dist-server/domain/market/dto/install-market.dto.js +0 -30
- package/dist-server/domain/market/market.controller.js +0 -163
- package/dist-server/domain/market/market.module.js +0 -22
- package/dist-server/domain/market/market.service.js +0 -1447
- package/dist-server/domain/mcp/browser-session.store.js +0 -247
- package/dist-server/domain/mcp/crewx-tool.factory.js +0 -119
- package/dist-server/domain/mcp/mcp-auth.guard.js +0 -61
- package/dist-server/domain/mcp/mcp.constants.js +0 -4
- package/dist-server/domain/mcp/mcp.controller.js +0 -125
- package/dist-server/domain/mcp/mcp.dto.js +0 -12
- package/dist-server/domain/mcp/mcp.module.js +0 -49
- package/dist-server/domain/mcp/mcp.service.js +0 -684
- package/dist-server/domain/mcp/tool-router.service.js +0 -120
- package/dist-server/domain/message/dto/list-messages.dto.js +0 -57
- package/dist-server/domain/message/dto/send-message.dto.js +0 -45
- package/dist-server/domain/message/message.controller.js +0 -73
- package/dist-server/domain/message/message.module.js +0 -25
- package/dist-server/domain/message/message.service.js +0 -160
- package/dist-server/domain/onboarding/onboarding.controller.js +0 -97
- package/dist-server/domain/onboarding/onboarding.module.js +0 -23
- package/dist-server/domain/onboarding/onboarding.service.js +0 -106
- package/dist-server/domain/onboarding/onboarding.types.js +0 -2
- package/dist-server/domain/onboarding/presets/custom.js +0 -10
- package/dist-server/domain/onboarding/presets/dev-team.js +0 -41
- package/dist-server/domain/onboarding/presets/index.js +0 -15
- package/dist-server/domain/onboarding/presets/marketing-team.js +0 -29
- package/dist-server/domain/onboarding/presets/planning-team.js +0 -29
- package/dist-server/domain/onboarding/presets/solo.js +0 -17
- package/dist-server/domain/planner/dto/planner.dto.js +0 -58
- package/dist-server/domain/planner/planner.controller.js +0 -74
- package/dist-server/domain/planner/planner.module.js +0 -22
- package/dist-server/domain/planner/planner.service.js +0 -269
- package/dist-server/domain/project/dto/create-project.dto.js +0 -46
- package/dist-server/domain/project/dto/update-project.dto.js +0 -60
- package/dist-server/domain/project/project.controller.js +0 -129
- package/dist-server/domain/project/project.module.js +0 -22
- package/dist-server/domain/project/project.service.js +0 -173
- package/dist-server/domain/settings/settings.controller.js +0 -52
- package/dist-server/domain/settings/settings.module.js +0 -22
- package/dist-server/domain/settings/settings.service.js +0 -105
- package/dist-server/domain/task/dto/all-tasks.dto.js +0 -55
- package/dist-server/domain/task/dto/list-tasks.dto.js +0 -69
- package/dist-server/domain/task/dto/search-tasks.dto.js +0 -66
- package/dist-server/domain/task/dto/send-message.dto.js +0 -31
- package/dist-server/domain/task/dto/task-status.dto.js +0 -34
- package/dist-server/domain/task/dto/workspace-usage.dto.js +0 -38
- package/dist-server/domain/task/task.constants.js +0 -5
- package/dist-server/domain/task/task.controller.js +0 -169
- package/dist-server/domain/task/task.module.js +0 -23
- package/dist-server/domain/task/task.service.js +0 -775
- package/dist-server/domain/thread/dto/build-context.dto.js +0 -42
- package/dist-server/domain/thread/dto/list-messages.dto.js +0 -49
- package/dist-server/domain/thread/dto/list-threads.dto.js +0 -70
- package/dist-server/domain/thread/dto/search-threads.dto.js +0 -13
- package/dist-server/domain/thread/dto/update-thread.dto.js +0 -23
- package/dist-server/domain/thread/thread.controller.js +0 -160
- package/dist-server/domain/thread/thread.module.js +0 -23
- package/dist-server/domain/thread/thread.service.js +0 -419
- package/dist-server/domain/usage/usage.controller.js +0 -118
- package/dist-server/domain/usage/usage.module.js +0 -21
- package/dist-server/domain/usage/usage.service.js +0 -358
- package/dist-server/domain/usage/usage.types.js +0 -4
- package/dist-server/domain/wbs/wbs.controller.js +0 -51
- package/dist-server/domain/wbs/wbs.module.js +0 -21
- package/dist-server/domain/wbs/wbs.service.js +0 -94
- package/dist-server/domain/workflow/workflow.controller.js +0 -53
- package/dist-server/domain/workflow/workflow.module.js +0 -21
- package/dist-server/domain/workflow/workflow.service.js +0 -209
- package/dist-server/domain/workspace/dto/create-workspace.dto.js +0 -45
- package/dist-server/domain/workspace/dto/switch-workspace.dto.js +0 -32
- package/dist-server/domain/workspace/dto/workspace-info.dto.js +0 -2
- package/dist-server/domain/workspace/workspace.controller.js +0 -98
- package/dist-server/domain/workspace/workspace.module.js +0 -22
- package/dist-server/domain/workspace/workspace.service.js +0 -198
- package/dist-server/main.js +0 -204
- package/dist-server/modules/crewx-pool.service.js +0 -75
- package/dist-server/modules/crewx.module.js +0 -47
- package/dist-server/repository/base-sqlite.repository.js +0 -18
- package/dist-server/repository/box.repository.js +0 -99
- package/dist-server/repository/message.repository.js +0 -22
- package/dist-server/repository/project.repository.js +0 -51
- package/dist-server/repository/repository.module.js +0 -34
- package/dist-server/repository/request-log.repository.js +0 -96
- package/dist-server/repository/task.repository.js +0 -105
- package/dist-server/repository/thread.repository.js +0 -165
- package/dist-server/shared/crewx-home.js +0 -58
- package/dist-server/shared/crewx-state.js +0 -66
- package/dist-server/test-utils/compat-database.js +0 -30
- package/dist-server/utils/tokenizer.js +0 -8
|
@@ -1,173 +0,0 @@
|
|
|
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.ProjectService = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const path_1 = require("path");
|
|
15
|
-
const uuid_1 = require("uuid");
|
|
16
|
-
const project_repository_js_1 = require("../../repository/project.repository.js");
|
|
17
|
-
let ProjectService = class ProjectService {
|
|
18
|
-
projectRepo;
|
|
19
|
-
constructor(projectRepo) {
|
|
20
|
-
this.projectRepo = projectRepo;
|
|
21
|
-
}
|
|
22
|
-
toProject(row) {
|
|
23
|
-
return {
|
|
24
|
-
id: row.id,
|
|
25
|
-
slug: row.slug,
|
|
26
|
-
name: row.name,
|
|
27
|
-
description: row.description ?? null,
|
|
28
|
-
repoPath: row.workspace_path ?? null,
|
|
29
|
-
isActive: row.is_active === 1,
|
|
30
|
-
createdAt: row.created_at,
|
|
31
|
-
updatedAt: row.updated_at,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
toThread(row) {
|
|
35
|
-
return {
|
|
36
|
-
id: row.id,
|
|
37
|
-
workspaceId: row.workspace_id ?? null,
|
|
38
|
-
platform: row.platform,
|
|
39
|
-
title: row.title ?? null,
|
|
40
|
-
firstMessage: row.first_message ?? null,
|
|
41
|
-
lastMessage: row.last_message ?? null,
|
|
42
|
-
messageCount: row.message_count,
|
|
43
|
-
createdAt: row.created_at,
|
|
44
|
-
updatedAt: row.updated_at,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
toThreadWithAgent(row) {
|
|
48
|
-
return {
|
|
49
|
-
...this.toThread(row),
|
|
50
|
-
agentId: row.agent_id ?? null,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
// PJT001: List all projects
|
|
54
|
-
listProjects(params) {
|
|
55
|
-
const limit = Math.min(Number(params.limit) || 50, 200);
|
|
56
|
-
const offset = Math.max(Number(params.offset) || 0, 0);
|
|
57
|
-
const { rows, total } = this.projectRepo.listProjects({
|
|
58
|
-
isActive: params.isActive,
|
|
59
|
-
limit,
|
|
60
|
-
offset,
|
|
61
|
-
});
|
|
62
|
-
return {
|
|
63
|
-
projects: rows.map((r) => this.toProject(r)),
|
|
64
|
-
total,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
// PJT002: Get project detail (includes agents derived from tasks)
|
|
68
|
-
getProject(id) {
|
|
69
|
-
const row = this.projectRepo.findById(id);
|
|
70
|
-
if (!row) {
|
|
71
|
-
throw new common_1.NotFoundException(`Project not found: ${id}`);
|
|
72
|
-
}
|
|
73
|
-
const agents = this.projectRepo.findAgentsByProject(id);
|
|
74
|
-
return {
|
|
75
|
-
...this.toProject(row),
|
|
76
|
-
agents,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// PJT003: Get project docs (returns doc files under workspace_path/docs)
|
|
80
|
-
getProjectDocs(id) {
|
|
81
|
-
const project = this.getProject(id);
|
|
82
|
-
return {
|
|
83
|
-
projectId: id,
|
|
84
|
-
projectName: project.name,
|
|
85
|
-
repoPath: project.repoPath,
|
|
86
|
-
docsPath: project.repoPath ? (0, path_1.join)(project.repoPath, 'docs') : null,
|
|
87
|
-
docs: [],
|
|
88
|
-
message: project.repoPath
|
|
89
|
-
? 'Use GET /api/v1/docs/tree to list documents for this project'
|
|
90
|
-
: 'Project has no repo path configured',
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
// PJT004: Get threads associated with a project (includes agentId from tasks)
|
|
94
|
-
getProjectThreads(id, params) {
|
|
95
|
-
// Verify project exists
|
|
96
|
-
this.getProject(id);
|
|
97
|
-
const limit = Math.min(Number(params.limit) || 50, 200);
|
|
98
|
-
const offset = Math.max(Number(params.offset) || 0, 0);
|
|
99
|
-
const { rows, total } = this.projectRepo.findThreadsByProject(id, { limit, offset });
|
|
100
|
-
return {
|
|
101
|
-
threads: rows.map((r) => this.toThreadWithAgent(r)),
|
|
102
|
-
total,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
// PJT005: Create project
|
|
106
|
-
createProject(dto) {
|
|
107
|
-
if (this.projectRepo.slugExists(dto.slug)) {
|
|
108
|
-
throw new common_1.ConflictException(`Project with slug '${dto.slug}' already exists`);
|
|
109
|
-
}
|
|
110
|
-
const id = (0, uuid_1.v4)();
|
|
111
|
-
const row = this.projectRepo.insert(id, dto.slug, dto.name, dto.repoPath ?? null);
|
|
112
|
-
return { ...this.toProject(row), agents: [] };
|
|
113
|
-
}
|
|
114
|
-
// PJT006: Update project
|
|
115
|
-
updateProject(id, dto) {
|
|
116
|
-
const existing = this.projectRepo.findById(id);
|
|
117
|
-
if (!existing) {
|
|
118
|
-
throw new common_1.NotFoundException(`Project not found: ${id}`);
|
|
119
|
-
}
|
|
120
|
-
// Check slug conflict if slug is being changed
|
|
121
|
-
if (dto.slug && dto.slug !== existing.slug) {
|
|
122
|
-
if (this.projectRepo.slugExists(dto.slug, id)) {
|
|
123
|
-
throw new common_1.ConflictException(`Project with slug '${dto.slug}' already exists`);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
if (dto.name === undefined && dto.description === undefined && dto.slug === undefined && dto.repoPath === undefined && dto.isActive === undefined) {
|
|
127
|
-
throw new common_1.BadRequestException('No fields to update');
|
|
128
|
-
}
|
|
129
|
-
const updates = [];
|
|
130
|
-
const args = [];
|
|
131
|
-
if (dto.name !== undefined) {
|
|
132
|
-
updates.push('name = ?');
|
|
133
|
-
args.push(dto.name);
|
|
134
|
-
}
|
|
135
|
-
if (dto.description !== undefined) {
|
|
136
|
-
updates.push('description = ?');
|
|
137
|
-
args.push(dto.description || null);
|
|
138
|
-
}
|
|
139
|
-
if (dto.slug !== undefined) {
|
|
140
|
-
updates.push('slug = ?');
|
|
141
|
-
args.push(dto.slug);
|
|
142
|
-
}
|
|
143
|
-
if (dto.repoPath !== undefined) {
|
|
144
|
-
updates.push('workspace_path = ?');
|
|
145
|
-
args.push(dto.repoPath);
|
|
146
|
-
}
|
|
147
|
-
if (dto.isActive !== undefined) {
|
|
148
|
-
updates.push('is_active = ?');
|
|
149
|
-
args.push(dto.isActive ? 1 : 0);
|
|
150
|
-
}
|
|
151
|
-
const now = new Date().toISOString();
|
|
152
|
-
updates.push('updated_at = ?');
|
|
153
|
-
args.push(now);
|
|
154
|
-
args.push(id);
|
|
155
|
-
const row = this.projectRepo.update(id, updates, args);
|
|
156
|
-
const agents = this.projectRepo.findAgentsByProject(id);
|
|
157
|
-
return { ...this.toProject(row), agents };
|
|
158
|
-
}
|
|
159
|
-
// PJT007: Delete project
|
|
160
|
-
deleteProject(id) {
|
|
161
|
-
const existing = this.projectRepo.findById(id);
|
|
162
|
-
if (!existing) {
|
|
163
|
-
throw new common_1.NotFoundException(`Project not found: ${id}`);
|
|
164
|
-
}
|
|
165
|
-
this.projectRepo.delete(id);
|
|
166
|
-
return { deleted: true, id };
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
exports.ProjectService = ProjectService;
|
|
170
|
-
exports.ProjectService = ProjectService = __decorate([
|
|
171
|
-
(0, common_1.Injectable)(),
|
|
172
|
-
__metadata("design:paramtypes", [project_repository_js_1.ProjectRepository])
|
|
173
|
-
], ProjectService);
|
|
@@ -1,52 +0,0 @@
|
|
|
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.SettingsController = void 0;
|
|
16
|
-
const common_1 = require("@nestjs/common");
|
|
17
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
-
const settings_service_js_1 = require("./settings.service.js");
|
|
19
|
-
let SettingsController = class SettingsController {
|
|
20
|
-
settingsService;
|
|
21
|
-
constructor(settingsService) {
|
|
22
|
-
this.settingsService = settingsService;
|
|
23
|
-
}
|
|
24
|
-
getSettings() {
|
|
25
|
-
return { success: true, data: this.settingsService.getSettings() };
|
|
26
|
-
}
|
|
27
|
-
updateSettings(body) {
|
|
28
|
-
const updated = this.settingsService.updateSettings(body);
|
|
29
|
-
return { success: true, data: updated };
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
exports.SettingsController = SettingsController;
|
|
33
|
-
__decorate([
|
|
34
|
-
(0, swagger_1.ApiOperation)({ operationId: 'STG.GET', summary: 'Get settings' }),
|
|
35
|
-
(0, common_1.Get)(),
|
|
36
|
-
__metadata("design:type", Function),
|
|
37
|
-
__metadata("design:paramtypes", []),
|
|
38
|
-
__metadata("design:returntype", void 0)
|
|
39
|
-
], SettingsController.prototype, "getSettings", null);
|
|
40
|
-
__decorate([
|
|
41
|
-
(0, swagger_1.ApiOperation)({ operationId: 'STG.UPDATE', summary: 'Update settings' }),
|
|
42
|
-
(0, common_1.Put)(),
|
|
43
|
-
__param(0, (0, common_1.Body)()),
|
|
44
|
-
__metadata("design:type", Function),
|
|
45
|
-
__metadata("design:paramtypes", [Object]),
|
|
46
|
-
__metadata("design:returntype", void 0)
|
|
47
|
-
], SettingsController.prototype, "updateSettings", null);
|
|
48
|
-
exports.SettingsController = SettingsController = __decorate([
|
|
49
|
-
(0, swagger_1.ApiTags)('settings'),
|
|
50
|
-
(0, common_1.Controller)('settings'),
|
|
51
|
-
__metadata("design:paramtypes", [settings_service_js_1.SettingsService])
|
|
52
|
-
], SettingsController);
|
|
@@ -1,22 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.SettingsModule = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const settings_controller_js_1 = require("./settings.controller.js");
|
|
12
|
-
const settings_service_js_1 = require("./settings.service.js");
|
|
13
|
-
let SettingsModule = class SettingsModule {
|
|
14
|
-
};
|
|
15
|
-
exports.SettingsModule = SettingsModule;
|
|
16
|
-
exports.SettingsModule = SettingsModule = __decorate([
|
|
17
|
-
(0, common_1.Module)({
|
|
18
|
-
controllers: [settings_controller_js_1.SettingsController],
|
|
19
|
-
providers: [settings_service_js_1.SettingsService],
|
|
20
|
-
exports: [settings_service_js_1.SettingsService],
|
|
21
|
-
})
|
|
22
|
-
], SettingsModule);
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
-
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;
|
|
22
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
-
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
-
};
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.SettingsService = void 0;
|
|
46
|
-
const fs_1 = require("fs");
|
|
47
|
-
const common_1 = require("@nestjs/common");
|
|
48
|
-
const yaml = __importStar(require("js-yaml"));
|
|
49
|
-
const analytics_client_js_1 = require("../../common/analytics.client.js");
|
|
50
|
-
let SettingsService = class SettingsService {
|
|
51
|
-
analyticsService;
|
|
52
|
-
constructor(analyticsService) {
|
|
53
|
-
this.analyticsService = analyticsService;
|
|
54
|
-
}
|
|
55
|
-
get configPath() {
|
|
56
|
-
return process.env.CREWX_CONFIG || 'crewx.yaml';
|
|
57
|
-
}
|
|
58
|
-
getSettings() {
|
|
59
|
-
const config = this.loadConfig();
|
|
60
|
-
const settings = (config.settings ?? {});
|
|
61
|
-
return {
|
|
62
|
-
analytics: settings.analytics !== false,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
updateSettings(patch) {
|
|
66
|
-
const config = this.loadConfig();
|
|
67
|
-
if (!config.settings || typeof config.settings !== 'object') {
|
|
68
|
-
config.settings = {};
|
|
69
|
-
}
|
|
70
|
-
const settings = config.settings;
|
|
71
|
-
if (patch.analytics !== undefined) {
|
|
72
|
-
if (patch.analytics) {
|
|
73
|
-
delete settings.analytics;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
settings.analytics = false;
|
|
77
|
-
}
|
|
78
|
-
this.saveConfig(config);
|
|
79
|
-
this.analyticsService.setEnabled(patch.analytics);
|
|
80
|
-
}
|
|
81
|
-
return this.getSettings();
|
|
82
|
-
}
|
|
83
|
-
loadConfig() {
|
|
84
|
-
if (!(0, fs_1.existsSync)(this.configPath))
|
|
85
|
-
return {};
|
|
86
|
-
try {
|
|
87
|
-
const content = (0, fs_1.readFileSync)(this.configPath, 'utf-8');
|
|
88
|
-
const parsed = yaml.load(content);
|
|
89
|
-
return typeof parsed === 'object' && parsed !== null
|
|
90
|
-
? parsed
|
|
91
|
-
: {};
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
return {};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
saveConfig(config) {
|
|
98
|
-
(0, fs_1.writeFileSync)(this.configPath, yaml.dump(config, { lineWidth: -1 }), 'utf-8');
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
exports.SettingsService = SettingsService;
|
|
102
|
-
exports.SettingsService = SettingsService = __decorate([
|
|
103
|
-
(0, common_1.Injectable)(),
|
|
104
|
-
__metadata("design:paramtypes", [analytics_client_js_1.AnalyticsService])
|
|
105
|
-
], SettingsService);
|
|
@@ -1,55 +0,0 @@
|
|
|
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.AllTasksDto = void 0;
|
|
13
|
-
const class_validator_1 = require("class-validator");
|
|
14
|
-
const class_transformer_1 = require("class-transformer");
|
|
15
|
-
class AllTasksDto {
|
|
16
|
-
agent; // comma-separated multi agent (e.g. "pm,dev")
|
|
17
|
-
status; // comma-separated multi status (e.g. "success,failed")
|
|
18
|
-
q; // prompt LIKE search
|
|
19
|
-
page; // default 1
|
|
20
|
-
limit; // default 20, max 100
|
|
21
|
-
sort; // "started_at:desc" (default) or "started_at:asc"
|
|
22
|
-
}
|
|
23
|
-
exports.AllTasksDto = AllTasksDto;
|
|
24
|
-
__decorate([
|
|
25
|
-
(0, class_validator_1.IsOptional)(),
|
|
26
|
-
(0, class_validator_1.IsString)(),
|
|
27
|
-
__metadata("design:type", String)
|
|
28
|
-
], AllTasksDto.prototype, "agent", void 0);
|
|
29
|
-
__decorate([
|
|
30
|
-
(0, class_validator_1.IsOptional)(),
|
|
31
|
-
(0, class_validator_1.IsString)(),
|
|
32
|
-
__metadata("design:type", String)
|
|
33
|
-
], AllTasksDto.prototype, "status", void 0);
|
|
34
|
-
__decorate([
|
|
35
|
-
(0, class_validator_1.IsOptional)(),
|
|
36
|
-
(0, class_validator_1.IsString)(),
|
|
37
|
-
__metadata("design:type", String)
|
|
38
|
-
], AllTasksDto.prototype, "q", void 0);
|
|
39
|
-
__decorate([
|
|
40
|
-
(0, class_validator_1.IsOptional)(),
|
|
41
|
-
(0, class_transformer_1.Transform)(({ value }) => Number(value)),
|
|
42
|
-
(0, class_validator_1.IsNumber)(),
|
|
43
|
-
__metadata("design:type", Number)
|
|
44
|
-
], AllTasksDto.prototype, "page", void 0);
|
|
45
|
-
__decorate([
|
|
46
|
-
(0, class_validator_1.IsOptional)(),
|
|
47
|
-
(0, class_transformer_1.Transform)(({ value }) => Number(value)),
|
|
48
|
-
(0, class_validator_1.IsNumber)(),
|
|
49
|
-
__metadata("design:type", Number)
|
|
50
|
-
], AllTasksDto.prototype, "limit", void 0);
|
|
51
|
-
__decorate([
|
|
52
|
-
(0, class_validator_1.IsOptional)(),
|
|
53
|
-
(0, class_validator_1.IsString)(),
|
|
54
|
-
__metadata("design:type", String)
|
|
55
|
-
], AllTasksDto.prototype, "sort", void 0);
|
|
@@ -1,69 +0,0 @@
|
|
|
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.ListTasksDto = void 0;
|
|
13
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
const class_transformer_1 = require("class-transformer");
|
|
16
|
-
class ListTasksDto {
|
|
17
|
-
project;
|
|
18
|
-
platform;
|
|
19
|
-
agent;
|
|
20
|
-
sort;
|
|
21
|
-
order;
|
|
22
|
-
limit;
|
|
23
|
-
offset;
|
|
24
|
-
}
|
|
25
|
-
exports.ListTasksDto = ListTasksDto;
|
|
26
|
-
__decorate([
|
|
27
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Filter by project' }),
|
|
28
|
-
(0, class_validator_1.IsOptional)(),
|
|
29
|
-
(0, class_validator_1.IsString)(),
|
|
30
|
-
__metadata("design:type", String)
|
|
31
|
-
], ListTasksDto.prototype, "project", void 0);
|
|
32
|
-
__decorate([
|
|
33
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Filter by platform' }),
|
|
34
|
-
(0, class_validator_1.IsOptional)(),
|
|
35
|
-
(0, class_validator_1.IsString)(),
|
|
36
|
-
__metadata("design:type", String)
|
|
37
|
-
], ListTasksDto.prototype, "platform", void 0);
|
|
38
|
-
__decorate([
|
|
39
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Filter by agent' }),
|
|
40
|
-
(0, class_validator_1.IsOptional)(),
|
|
41
|
-
(0, class_validator_1.IsString)(),
|
|
42
|
-
__metadata("design:type", String)
|
|
43
|
-
], ListTasksDto.prototype, "agent", void 0);
|
|
44
|
-
__decorate([
|
|
45
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Sort field' }),
|
|
46
|
-
(0, class_validator_1.IsOptional)(),
|
|
47
|
-
(0, class_validator_1.IsString)(),
|
|
48
|
-
__metadata("design:type", String)
|
|
49
|
-
], ListTasksDto.prototype, "sort", void 0);
|
|
50
|
-
__decorate([
|
|
51
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Sort order (asc/desc)' }),
|
|
52
|
-
(0, class_validator_1.IsOptional)(),
|
|
53
|
-
(0, class_validator_1.IsString)(),
|
|
54
|
-
__metadata("design:type", String)
|
|
55
|
-
], ListTasksDto.prototype, "order", void 0);
|
|
56
|
-
__decorate([
|
|
57
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Max number of results' }),
|
|
58
|
-
(0, class_validator_1.IsOptional)(),
|
|
59
|
-
(0, class_transformer_1.Type)(() => Number),
|
|
60
|
-
(0, class_validator_1.IsNumber)(),
|
|
61
|
-
__metadata("design:type", Number)
|
|
62
|
-
], ListTasksDto.prototype, "limit", void 0);
|
|
63
|
-
__decorate([
|
|
64
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Number of results to skip' }),
|
|
65
|
-
(0, class_validator_1.IsOptional)(),
|
|
66
|
-
(0, class_transformer_1.Type)(() => Number),
|
|
67
|
-
(0, class_validator_1.IsNumber)(),
|
|
68
|
-
__metadata("design:type", Number)
|
|
69
|
-
], ListTasksDto.prototype, "offset", void 0);
|
|
@@ -1,66 +0,0 @@
|
|
|
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.SearchTasksDto = void 0;
|
|
13
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
const class_transformer_1 = require("class-transformer");
|
|
16
|
-
// TSK003: Search tasks query parameters
|
|
17
|
-
// Spec defines: q, project, agent, platform, limit
|
|
18
|
-
// offset is added for pagination convenience (not in spec)
|
|
19
|
-
class SearchTasksDto {
|
|
20
|
-
q;
|
|
21
|
-
project;
|
|
22
|
-
agent;
|
|
23
|
-
platform;
|
|
24
|
-
limit;
|
|
25
|
-
/** Not in TSK003 spec — added for pagination support */
|
|
26
|
-
offset;
|
|
27
|
-
}
|
|
28
|
-
exports.SearchTasksDto = SearchTasksDto;
|
|
29
|
-
__decorate([
|
|
30
|
-
(0, swagger_1.ApiProperty)({ description: 'Search query string' }),
|
|
31
|
-
(0, class_validator_1.IsString)(),
|
|
32
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
33
|
-
__metadata("design:type", String)
|
|
34
|
-
], SearchTasksDto.prototype, "q", void 0);
|
|
35
|
-
__decorate([
|
|
36
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Filter by project' }),
|
|
37
|
-
(0, class_validator_1.IsOptional)(),
|
|
38
|
-
(0, class_validator_1.IsString)(),
|
|
39
|
-
__metadata("design:type", String)
|
|
40
|
-
], SearchTasksDto.prototype, "project", void 0);
|
|
41
|
-
__decorate([
|
|
42
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Filter by agent' }),
|
|
43
|
-
(0, class_validator_1.IsOptional)(),
|
|
44
|
-
(0, class_validator_1.IsString)(),
|
|
45
|
-
__metadata("design:type", String)
|
|
46
|
-
], SearchTasksDto.prototype, "agent", void 0);
|
|
47
|
-
__decorate([
|
|
48
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Filter by platform' }),
|
|
49
|
-
(0, class_validator_1.IsOptional)(),
|
|
50
|
-
(0, class_validator_1.IsString)(),
|
|
51
|
-
__metadata("design:type", String)
|
|
52
|
-
], SearchTasksDto.prototype, "platform", void 0);
|
|
53
|
-
__decorate([
|
|
54
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Max number of results' }),
|
|
55
|
-
(0, class_validator_1.IsOptional)(),
|
|
56
|
-
(0, class_transformer_1.Type)(() => Number),
|
|
57
|
-
(0, class_validator_1.IsNumber)(),
|
|
58
|
-
__metadata("design:type", Number)
|
|
59
|
-
], SearchTasksDto.prototype, "limit", void 0);
|
|
60
|
-
__decorate([
|
|
61
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Number of results to skip' }),
|
|
62
|
-
(0, class_validator_1.IsOptional)(),
|
|
63
|
-
(0, class_transformer_1.Type)(() => Number),
|
|
64
|
-
(0, class_validator_1.IsNumber)(),
|
|
65
|
-
__metadata("design:type", Number)
|
|
66
|
-
], SearchTasksDto.prototype, "offset", void 0);
|
|
@@ -1,31 +0,0 @@
|
|
|
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.TaskSendMessageDto = void 0;
|
|
13
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
class TaskSendMessageDto {
|
|
16
|
-
message;
|
|
17
|
-
agent;
|
|
18
|
-
}
|
|
19
|
-
exports.TaskSendMessageDto = TaskSendMessageDto;
|
|
20
|
-
__decorate([
|
|
21
|
-
(0, swagger_1.ApiProperty)({ description: 'Message content to send' }),
|
|
22
|
-
(0, class_validator_1.IsString)(),
|
|
23
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
24
|
-
__metadata("design:type", String)
|
|
25
|
-
], TaskSendMessageDto.prototype, "message", void 0);
|
|
26
|
-
__decorate([
|
|
27
|
-
(0, swagger_1.ApiProperty)({ description: 'Target agent identifier' }),
|
|
28
|
-
(0, class_validator_1.IsString)(),
|
|
29
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
30
|
-
__metadata("design:type", String)
|
|
31
|
-
], TaskSendMessageDto.prototype, "agent", void 0);
|
|
@@ -1,34 +0,0 @@
|
|
|
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.TaskStatusDto = void 0;
|
|
13
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
const class_transformer_1 = require("class-transformer");
|
|
16
|
-
// TSK005: Task status query parameters
|
|
17
|
-
class TaskStatusDto {
|
|
18
|
-
include;
|
|
19
|
-
logLimit;
|
|
20
|
-
}
|
|
21
|
-
exports.TaskStatusDto = TaskStatusDto;
|
|
22
|
-
__decorate([
|
|
23
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Comma-separated list of fields to include' }),
|
|
24
|
-
(0, class_validator_1.IsOptional)(),
|
|
25
|
-
(0, class_validator_1.IsString)(),
|
|
26
|
-
__metadata("design:type", String)
|
|
27
|
-
], TaskStatusDto.prototype, "include", void 0);
|
|
28
|
-
__decorate([
|
|
29
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Max number of log lines' }),
|
|
30
|
-
(0, class_validator_1.IsOptional)(),
|
|
31
|
-
(0, class_transformer_1.Type)(() => Number),
|
|
32
|
-
(0, class_validator_1.IsNumber)(),
|
|
33
|
-
__metadata("design:type", Number)
|
|
34
|
-
], TaskStatusDto.prototype, "logLimit", void 0);
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkspaceUsageSummaryResponseDto = exports.WorkspaceUsageDto = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Phase 5: Per-workspace usage aggregation DTO.
|
|
6
|
-
*
|
|
7
|
-
* Returned by GET /tasks/workspace-usage (getWorkspaceUsageSummary).
|
|
8
|
-
* Each entry represents one workspace's cumulative usage across all tasks
|
|
9
|
-
* stored in the centralised crewx.db.
|
|
10
|
-
*
|
|
11
|
-
* Security: workspace_id is the first 16 hex chars of SHA-256(workspacePath).
|
|
12
|
-
* The raw path is NEVER exposed.
|
|
13
|
-
*/
|
|
14
|
-
class WorkspaceUsageDto {
|
|
15
|
-
/** Opaque 16-char hex identifier (SHA-256[:16] of the workspace's absolute path) */
|
|
16
|
-
workspace_id;
|
|
17
|
-
/** Human-readable display name (basename of workspace dir or git remote name) */
|
|
18
|
-
workspace_name;
|
|
19
|
-
/** Total input tokens across all tasks in this workspace */
|
|
20
|
-
input_tokens;
|
|
21
|
-
/** Total output tokens across all tasks in this workspace */
|
|
22
|
-
output_tokens;
|
|
23
|
-
/** Total cost in USD across all tasks in this workspace */
|
|
24
|
-
cost_usd;
|
|
25
|
-
/** Number of tasks recorded for this workspace */
|
|
26
|
-
task_count;
|
|
27
|
-
}
|
|
28
|
-
exports.WorkspaceUsageDto = WorkspaceUsageDto;
|
|
29
|
-
/**
|
|
30
|
-
* Response wrapper for the workspace usage summary endpoint.
|
|
31
|
-
*/
|
|
32
|
-
class WorkspaceUsageSummaryResponseDto {
|
|
33
|
-
/** Per-workspace breakdown, sorted by cost_usd descending */
|
|
34
|
-
workspaces;
|
|
35
|
-
/** Grand totals across all workspaces (for the global tier calculation) */
|
|
36
|
-
totals;
|
|
37
|
-
}
|
|
38
|
-
exports.WorkspaceUsageSummaryResponseDto = WorkspaceUsageSummaryResponseDto;
|