crewx 0.8.4 → 0.8.5-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/cli/package.json +1 -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 -102
- package/dist-server/bootstrap/crewx-server.js +0 -79
- 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/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 -26
- package/dist-server/domain/agent/agent.service.js +0 -317
- 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 -120
- 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 -62
- 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 -88
- package/dist-server/domain/cli/cli.module.js +0 -21
- package/dist-server/domain/cli/cli.service.js +0 -435
- 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 -271
- 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/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/mcp/browser-session.store.js +0 -247
- package/dist-server/domain/mcp/crewx-tool.factory.js +0 -117
- 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 -682
- 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 -158
- 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/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/skill/dto/add-registry.dto.js +0 -23
- package/dist-server/domain/skill/dto/install-skill.dto.js +0 -30
- package/dist-server/domain/skill/skill.controller.js +0 -136
- package/dist-server/domain/skill/skill.module.js +0 -22
- package/dist-server/domain/skill/skill.service.js +0 -632
- 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 -722
- 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 -132
- package/dist-server/domain/thread/thread.module.js +0 -23
- package/dist-server/domain/thread/thread.service.js +0 -399
- 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 -343
- 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 -216
- package/dist-server/main.js +0 -175
- package/dist-server/modules/crewx-pool.service.js +0 -70
- package/dist-server/modules/crewx.module.js +0 -47
- package/dist-server/package.json +0 -3
- 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 -48
- 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 -102
- package/dist-server/repository/thread.repository.js +0 -143
- 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,317 +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.AgentService = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const fs_1 = require("fs");
|
|
15
|
-
const path_1 = require("path");
|
|
16
|
-
const sdk_1 = require("@crewx/sdk");
|
|
17
|
-
const js_yaml_1 = require("js-yaml");
|
|
18
|
-
const document_service_js_1 = require("../document/document.service.js");
|
|
19
|
-
const template_processor_service_js_1 = require("./template-processor.service.js");
|
|
20
|
-
const workspace_context_store_js_1 = require("../../common/workspace-context.store.js");
|
|
21
|
-
const limits_provider_js_1 = require("../../common/limits/limits-provider.js");
|
|
22
|
-
const PROVIDER_CACHE_TTL_MS = 3_600_000; // 1 hour
|
|
23
|
-
let AgentService = class AgentService {
|
|
24
|
-
documentService;
|
|
25
|
-
templateProcessor;
|
|
26
|
-
limitsProvider;
|
|
27
|
-
providerMetaCache = null;
|
|
28
|
-
constructor(documentService, templateProcessor, limitsProvider) {
|
|
29
|
-
this.documentService = documentService;
|
|
30
|
-
this.templateProcessor = templateProcessor;
|
|
31
|
-
this.limitsProvider = limitsProvider;
|
|
32
|
-
}
|
|
33
|
-
// List agents from the current request workspace's crewx.yaml.
|
|
34
|
-
getAgents() {
|
|
35
|
-
try {
|
|
36
|
-
const configPath = this.resolveCrewxConfigPath();
|
|
37
|
-
if (!configPath || !(0, fs_1.existsSync)(configPath))
|
|
38
|
-
return { agents: [] };
|
|
39
|
-
const { config } = this.loadConfig(configPath);
|
|
40
|
-
const rawProviders = Array.isArray(config.providers) ? config.providers : [];
|
|
41
|
-
const rawAgents = Array.isArray(config.agents) ? config.agents : [];
|
|
42
|
-
const agents = rawAgents.map((a) => this.toAgentInfo(a, rawProviders));
|
|
43
|
-
return { agents };
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
return { agents: [] };
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Create agent — POST /api/v1/agents
|
|
50
|
-
createAgent(dto) {
|
|
51
|
-
if (!dto.id || typeof dto.id !== 'string' || dto.id.trim() === '') {
|
|
52
|
-
throw new common_1.BadRequestException('Agent id is required');
|
|
53
|
-
}
|
|
54
|
-
if (!dto.name || typeof dto.name !== 'string' || dto.name.trim() === '') {
|
|
55
|
-
throw new common_1.BadRequestException('Agent name is required');
|
|
56
|
-
}
|
|
57
|
-
this.validateAgentId(dto.id);
|
|
58
|
-
const configPath = this.requireConfigPath();
|
|
59
|
-
const { config, raw } = this.loadConfig(configPath);
|
|
60
|
-
const agents = Array.isArray(config.agents) ? config.agents : [];
|
|
61
|
-
const limits = this.limitsProvider.resolve();
|
|
62
|
-
if (limits.agentsPerWorkspace !== -1 && agents.length >= limits.agentsPerWorkspace) {
|
|
63
|
-
throw new common_1.HttpException({ code: 'AGENT_LIMIT_EXCEEDED', current: agents.length, limit: limits.agentsPerWorkspace }, 412);
|
|
64
|
-
}
|
|
65
|
-
// Check duplicate id
|
|
66
|
-
const exists = agents.some((a) => String(a.id || '') === dto.id);
|
|
67
|
-
if (exists) {
|
|
68
|
-
throw new common_1.ConflictException(`Agent '${dto.id}' already exists`);
|
|
69
|
-
}
|
|
70
|
-
const normalizedPrompt = this.normalizePrompt(dto.prompt);
|
|
71
|
-
const inlineFields = {};
|
|
72
|
-
if (dto.model !== undefined)
|
|
73
|
-
inlineFields.model = dto.model;
|
|
74
|
-
if (normalizedPrompt !== undefined)
|
|
75
|
-
inlineFields.prompt = normalizedPrompt;
|
|
76
|
-
const newAgent = {
|
|
77
|
-
id: dto.id,
|
|
78
|
-
name: dto.name,
|
|
79
|
-
...(dto.role !== undefined && { role: dto.role }),
|
|
80
|
-
...(dto.team !== undefined && { team: dto.team }),
|
|
81
|
-
...(dto.description !== undefined && { description: dto.description }),
|
|
82
|
-
...(dto.provider !== undefined && { provider: dto.provider }),
|
|
83
|
-
...(Object.keys(inlineFields).length > 0 && { inline: inlineFields }),
|
|
84
|
-
...(dto.options !== undefined && { options: dto.options }),
|
|
85
|
-
};
|
|
86
|
-
agents.push(newAgent);
|
|
87
|
-
config.agents = agents;
|
|
88
|
-
this.saveConfig(configPath, config, raw);
|
|
89
|
-
return this.toAgentInfo(newAgent);
|
|
90
|
-
}
|
|
91
|
-
// Update agent — PUT /api/v1/agents/:id
|
|
92
|
-
updateAgent(id, dto) {
|
|
93
|
-
if (!id || id.trim() === '') {
|
|
94
|
-
throw new common_1.BadRequestException('Agent id is required');
|
|
95
|
-
}
|
|
96
|
-
if (dto.name !== undefined && dto.name.trim() === '') {
|
|
97
|
-
throw new common_1.BadRequestException('Agent name cannot be empty');
|
|
98
|
-
}
|
|
99
|
-
this.validateAgentId(id);
|
|
100
|
-
const configPath = this.requireConfigPath();
|
|
101
|
-
const { config, raw } = this.loadConfig(configPath);
|
|
102
|
-
const agents = Array.isArray(config.agents) ? config.agents : [];
|
|
103
|
-
const idx = agents.findIndex((a) => String(a.id || '') === id);
|
|
104
|
-
if (idx === -1) {
|
|
105
|
-
throw new common_1.NotFoundException(`Agent '${id}' not found`);
|
|
106
|
-
}
|
|
107
|
-
const existing = agents[idx];
|
|
108
|
-
// Merge only provided fields
|
|
109
|
-
if (dto.name !== undefined)
|
|
110
|
-
existing.name = dto.name;
|
|
111
|
-
if (dto.role !== undefined)
|
|
112
|
-
existing.role = dto.role;
|
|
113
|
-
if (dto.team !== undefined)
|
|
114
|
-
existing.team = dto.team;
|
|
115
|
-
if (dto.description !== undefined)
|
|
116
|
-
existing.description = dto.description;
|
|
117
|
-
if (dto.provider !== undefined)
|
|
118
|
-
existing.provider = dto.provider;
|
|
119
|
-
if (dto.model !== undefined) {
|
|
120
|
-
const inline = existing.inline && typeof existing.inline === 'object' && !Array.isArray(existing.inline)
|
|
121
|
-
? { ...existing.inline }
|
|
122
|
-
: {};
|
|
123
|
-
inline.model = dto.model;
|
|
124
|
-
existing.inline = inline;
|
|
125
|
-
delete existing.model;
|
|
126
|
-
}
|
|
127
|
-
if (dto.prompt !== undefined) {
|
|
128
|
-
const inline = existing.inline && typeof existing.inline === 'object' && !Array.isArray(existing.inline)
|
|
129
|
-
? { ...existing.inline }
|
|
130
|
-
: {};
|
|
131
|
-
const normalizedPrompt = this.normalizePrompt(dto.prompt);
|
|
132
|
-
if (normalizedPrompt === undefined) {
|
|
133
|
-
delete inline.prompt;
|
|
134
|
-
if (Object.keys(inline).length === 0) {
|
|
135
|
-
delete existing.inline;
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
existing.inline = inline;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
inline.prompt = normalizedPrompt;
|
|
143
|
-
existing.inline = inline;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (dto.skills !== undefined) {
|
|
147
|
-
existing.skills = { include: dto.skills.include };
|
|
148
|
-
}
|
|
149
|
-
if (dto.options !== undefined) {
|
|
150
|
-
const existingOptions = existing.options ?? {};
|
|
151
|
-
existing.options = { ...existingOptions, ...dto.options };
|
|
152
|
-
}
|
|
153
|
-
agents[idx] = existing;
|
|
154
|
-
config.agents = agents;
|
|
155
|
-
this.saveConfig(configPath, config, raw);
|
|
156
|
-
return this.toAgentInfo(existing);
|
|
157
|
-
}
|
|
158
|
-
// Delete agent — DELETE /api/v1/agents/:id
|
|
159
|
-
deleteAgent(id) {
|
|
160
|
-
if (!id || id.trim() === '') {
|
|
161
|
-
throw new common_1.BadRequestException('Agent id is required');
|
|
162
|
-
}
|
|
163
|
-
this.validateAgentId(id);
|
|
164
|
-
const configPath = this.requireConfigPath();
|
|
165
|
-
const { config, raw } = this.loadConfig(configPath);
|
|
166
|
-
const agents = Array.isArray(config.agents) ? config.agents : [];
|
|
167
|
-
const idx = agents.findIndex((a) => String(a.id || '') === id);
|
|
168
|
-
if (idx === -1) {
|
|
169
|
-
throw new common_1.NotFoundException(`Agent '${id}' not found`);
|
|
170
|
-
}
|
|
171
|
-
agents.splice(idx, 1);
|
|
172
|
-
config.agents = agents;
|
|
173
|
-
this.saveConfig(configPath, config, raw);
|
|
174
|
-
}
|
|
175
|
-
// Preview prompt — POST /api/v1/agents/prompt/preview
|
|
176
|
-
async previewPrompt(dto) {
|
|
177
|
-
// 1. Load documents from crewx.yaml
|
|
178
|
-
const entries = this.documentService.loadDocumentEntries();
|
|
179
|
-
// 2. Build documents context with frontmatter-safe content + toc
|
|
180
|
-
const documentsContext = {};
|
|
181
|
-
for (const [key, entry] of entries) {
|
|
182
|
-
documentsContext[key] = {
|
|
183
|
-
content: entry.content,
|
|
184
|
-
toc: this.documentService.extractToc(entry.content),
|
|
185
|
-
...(entry.path !== undefined && { path: entry.path }),
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
// 3. Find referenced document keys and warn about missing ones
|
|
189
|
-
const warnings = [];
|
|
190
|
-
const docRefPattern = /\{\{\{?documents\.([^.}]+)\./g;
|
|
191
|
-
const refMatches = [...dto.template.matchAll(docRefPattern)];
|
|
192
|
-
const seenMissing = new Set();
|
|
193
|
-
for (const match of refMatches) {
|
|
194
|
-
const key = match[1];
|
|
195
|
-
if (key && !documentsContext[key] && !seenMissing.has(key)) {
|
|
196
|
-
warnings.push(`Document key '${key}' not found — rendered as empty string`);
|
|
197
|
-
documentsContext[key] = { content: '', toc: '' };
|
|
198
|
-
seenMissing.add(key);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
// 4. Delegate to TemplateProcessorService (CLI-equivalent rendering)
|
|
202
|
-
try {
|
|
203
|
-
const rendered = this.templateProcessor.processTemplate(dto.template, documentsContext, { agent: dto.context?.agent ?? {} });
|
|
204
|
-
return { rendered, ...(warnings.length > 0 && { warnings }) };
|
|
205
|
-
}
|
|
206
|
-
catch (error) {
|
|
207
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
208
|
-
throw new common_1.UnprocessableEntityException(`Template compilation error: ${message}`);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
// PRV.LIST: Get ACP provider metadata with 1-hour cache
|
|
212
|
-
async getProviderMetas() {
|
|
213
|
-
const now = Date.now();
|
|
214
|
-
if (this.providerMetaCache && this.providerMetaCache.expiresAt > now) {
|
|
215
|
-
return this.providerMetaCache.data;
|
|
216
|
-
}
|
|
217
|
-
const data = await (0, sdk_1.queryAllAcpProviderMetas)();
|
|
218
|
-
this.providerMetaCache = { data, expiresAt: now + PROVIDER_CACHE_TTL_MS };
|
|
219
|
-
return data;
|
|
220
|
-
}
|
|
221
|
-
// --- Private helpers ---
|
|
222
|
-
requireConfigPath() {
|
|
223
|
-
const configPath = this.resolveCrewxConfigPath();
|
|
224
|
-
if (!configPath || !(0, fs_1.existsSync)(configPath)) {
|
|
225
|
-
throw new common_1.BadRequestException('crewx.yaml not found');
|
|
226
|
-
}
|
|
227
|
-
return configPath;
|
|
228
|
-
}
|
|
229
|
-
loadConfig(configPath) {
|
|
230
|
-
const raw = (0, fs_1.readFileSync)(configPath, 'utf-8');
|
|
231
|
-
const config = (0, js_yaml_1.load)(raw);
|
|
232
|
-
if (!config || typeof config !== 'object') {
|
|
233
|
-
throw new common_1.BadRequestException('Invalid crewx.yaml format');
|
|
234
|
-
}
|
|
235
|
-
return { config, raw };
|
|
236
|
-
}
|
|
237
|
-
saveConfig(configPath, config, _raw) {
|
|
238
|
-
// Serialize with js-yaml preserving structure
|
|
239
|
-
const output = (0, js_yaml_1.dump)(config, {
|
|
240
|
-
indent: 2,
|
|
241
|
-
lineWidth: -1,
|
|
242
|
-
noRefs: true,
|
|
243
|
-
});
|
|
244
|
-
(0, fs_1.writeFileSync)(configPath, output, 'utf-8');
|
|
245
|
-
}
|
|
246
|
-
toAgentInfo(a, providers = []) {
|
|
247
|
-
// model can be at top-level or nested under inline.model
|
|
248
|
-
const inline = a.inline;
|
|
249
|
-
const inlineModel = inline?.model;
|
|
250
|
-
const inlinePrompt = inline?.prompt;
|
|
251
|
-
const resolvedModel = a.model ?? inlineModel;
|
|
252
|
-
const resolvedPrompt = inlinePrompt === undefined ? undefined : String(inlinePrompt);
|
|
253
|
-
// Resolve providerLocation for remote providers (e.g. "remote/remote_cto")
|
|
254
|
-
let providerLocation;
|
|
255
|
-
const providerRaw = Array.isArray(a.provider) ? a.provider[0] : a.provider;
|
|
256
|
-
const providerStr = providerRaw !== undefined ? String(providerRaw) : undefined;
|
|
257
|
-
if (providerStr && providerStr.startsWith('remote/')) {
|
|
258
|
-
const providerId = providerStr.slice('remote/'.length);
|
|
259
|
-
const matched = providers.find((p) => String(p.id || '') === providerId);
|
|
260
|
-
if (matched?.location !== undefined) {
|
|
261
|
-
providerLocation = String(matched.location);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
const rawSkills = a.skills;
|
|
265
|
-
const skills = rawSkills !== null && rawSkills !== undefined && Array.isArray(rawSkills.include)
|
|
266
|
-
? { include: rawSkills.include }
|
|
267
|
-
: undefined;
|
|
268
|
-
const options = a.options;
|
|
269
|
-
return {
|
|
270
|
-
id: String(a.id || ''),
|
|
271
|
-
name: String(a.name || a.id || ''),
|
|
272
|
-
role: String(a.role || ''),
|
|
273
|
-
team: String(a.team || ''),
|
|
274
|
-
description: String(a.description || ''),
|
|
275
|
-
provider: providerStr,
|
|
276
|
-
model: resolvedModel !== undefined ? String(resolvedModel) : undefined,
|
|
277
|
-
providerLocation,
|
|
278
|
-
prompt: resolvedPrompt,
|
|
279
|
-
...(skills !== undefined && { skills }),
|
|
280
|
-
...(options !== undefined && { options }),
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
|
-
normalizePrompt(prompt) {
|
|
284
|
-
if (prompt === undefined) {
|
|
285
|
-
return undefined;
|
|
286
|
-
}
|
|
287
|
-
const normalized = prompt.trim();
|
|
288
|
-
return normalized === '' ? undefined : normalized;
|
|
289
|
-
}
|
|
290
|
-
validateAgentId(id) {
|
|
291
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(id)) {
|
|
292
|
-
throw new common_1.BadRequestException('Invalid agent id format');
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
resolveCrewxConfigPath() {
|
|
296
|
-
const envPath = process.env.CREWX_CONFIG;
|
|
297
|
-
if (envPath && (0, fs_1.existsSync)(envPath))
|
|
298
|
-
return envPath;
|
|
299
|
-
const base = (0, workspace_context_store_js_1.getWorkspacePath)();
|
|
300
|
-
const candidates = [
|
|
301
|
-
(0, path_1.join)(base, 'crewx.yaml'),
|
|
302
|
-
(0, path_1.join)(base, 'crewx.yml'),
|
|
303
|
-
];
|
|
304
|
-
for (const p of candidates) {
|
|
305
|
-
if ((0, fs_1.existsSync)(p))
|
|
306
|
-
return p;
|
|
307
|
-
}
|
|
308
|
-
return null;
|
|
309
|
-
}
|
|
310
|
-
};
|
|
311
|
-
exports.AgentService = AgentService;
|
|
312
|
-
exports.AgentService = AgentService = __decorate([
|
|
313
|
-
(0, common_1.Injectable)(),
|
|
314
|
-
__metadata("design:paramtypes", [document_service_js_1.DocumentService,
|
|
315
|
-
template_processor_service_js_1.TemplateProcessorService,
|
|
316
|
-
limits_provider_js_1.LimitsProvider])
|
|
317
|
-
], AgentService);
|
|
@@ -1,80 +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.CreateAgentDto = void 0;
|
|
13
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
class CreateAgentDto {
|
|
16
|
-
id;
|
|
17
|
-
name;
|
|
18
|
-
role;
|
|
19
|
-
team;
|
|
20
|
-
description;
|
|
21
|
-
provider;
|
|
22
|
-
model;
|
|
23
|
-
prompt;
|
|
24
|
-
options;
|
|
25
|
-
}
|
|
26
|
-
exports.CreateAgentDto = CreateAgentDto;
|
|
27
|
-
__decorate([
|
|
28
|
-
(0, swagger_1.ApiProperty)({ description: 'Unique agent identifier' }),
|
|
29
|
-
(0, class_validator_1.IsString)(),
|
|
30
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
31
|
-
__metadata("design:type", String)
|
|
32
|
-
], CreateAgentDto.prototype, "id", void 0);
|
|
33
|
-
__decorate([
|
|
34
|
-
(0, swagger_1.ApiProperty)({ description: 'Agent display name' }),
|
|
35
|
-
(0, class_validator_1.IsString)(),
|
|
36
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
37
|
-
__metadata("design:type", String)
|
|
38
|
-
], CreateAgentDto.prototype, "name", void 0);
|
|
39
|
-
__decorate([
|
|
40
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Agent role' }),
|
|
41
|
-
(0, class_validator_1.IsOptional)(),
|
|
42
|
-
(0, class_validator_1.IsString)(),
|
|
43
|
-
__metadata("design:type", String)
|
|
44
|
-
], CreateAgentDto.prototype, "role", void 0);
|
|
45
|
-
__decorate([
|
|
46
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Team name' }),
|
|
47
|
-
(0, class_validator_1.IsOptional)(),
|
|
48
|
-
(0, class_validator_1.IsString)(),
|
|
49
|
-
__metadata("design:type", String)
|
|
50
|
-
], CreateAgentDto.prototype, "team", void 0);
|
|
51
|
-
__decorate([
|
|
52
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Agent description' }),
|
|
53
|
-
(0, class_validator_1.IsOptional)(),
|
|
54
|
-
(0, class_validator_1.IsString)(),
|
|
55
|
-
__metadata("design:type", String)
|
|
56
|
-
], CreateAgentDto.prototype, "description", void 0);
|
|
57
|
-
__decorate([
|
|
58
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Provider identifier' }),
|
|
59
|
-
(0, class_validator_1.IsOptional)(),
|
|
60
|
-
(0, class_validator_1.IsString)(),
|
|
61
|
-
__metadata("design:type", String)
|
|
62
|
-
], CreateAgentDto.prototype, "provider", void 0);
|
|
63
|
-
__decorate([
|
|
64
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Model identifier' }),
|
|
65
|
-
(0, class_validator_1.IsOptional)(),
|
|
66
|
-
(0, class_validator_1.IsString)(),
|
|
67
|
-
__metadata("design:type", String)
|
|
68
|
-
], CreateAgentDto.prototype, "model", void 0);
|
|
69
|
-
__decorate([
|
|
70
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Agent system prompt' }),
|
|
71
|
-
(0, class_validator_1.IsOptional)(),
|
|
72
|
-
(0, class_validator_1.IsString)(),
|
|
73
|
-
__metadata("design:type", String)
|
|
74
|
-
], CreateAgentDto.prototype, "prompt", void 0);
|
|
75
|
-
__decorate([
|
|
76
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'CLI options per invocation mode' }),
|
|
77
|
-
(0, class_validator_1.IsOptional)(),
|
|
78
|
-
(0, class_validator_1.IsObject)(),
|
|
79
|
-
__metadata("design:type", Object)
|
|
80
|
-
], CreateAgentDto.prototype, "options", void 0);
|
|
@@ -1,77 +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.PreviewPromptDto = void 0;
|
|
13
|
-
const class_validator_1 = require("class-validator");
|
|
14
|
-
const class_transformer_1 = require("class-transformer");
|
|
15
|
-
class AgentContextDto {
|
|
16
|
-
id;
|
|
17
|
-
name;
|
|
18
|
-
role;
|
|
19
|
-
team;
|
|
20
|
-
description;
|
|
21
|
-
}
|
|
22
|
-
__decorate([
|
|
23
|
-
(0, class_validator_1.IsOptional)(),
|
|
24
|
-
(0, class_validator_1.IsString)(),
|
|
25
|
-
__metadata("design:type", String)
|
|
26
|
-
], AgentContextDto.prototype, "id", void 0);
|
|
27
|
-
__decorate([
|
|
28
|
-
(0, class_validator_1.IsOptional)(),
|
|
29
|
-
(0, class_validator_1.IsString)(),
|
|
30
|
-
__metadata("design:type", String)
|
|
31
|
-
], AgentContextDto.prototype, "name", void 0);
|
|
32
|
-
__decorate([
|
|
33
|
-
(0, class_validator_1.IsOptional)(),
|
|
34
|
-
(0, class_validator_1.IsString)(),
|
|
35
|
-
__metadata("design:type", String)
|
|
36
|
-
], AgentContextDto.prototype, "role", void 0);
|
|
37
|
-
__decorate([
|
|
38
|
-
(0, class_validator_1.IsOptional)(),
|
|
39
|
-
(0, class_validator_1.IsString)(),
|
|
40
|
-
__metadata("design:type", String)
|
|
41
|
-
], AgentContextDto.prototype, "team", void 0);
|
|
42
|
-
__decorate([
|
|
43
|
-
(0, class_validator_1.IsOptional)(),
|
|
44
|
-
(0, class_validator_1.IsString)(),
|
|
45
|
-
__metadata("design:type", String)
|
|
46
|
-
], AgentContextDto.prototype, "description", void 0);
|
|
47
|
-
class PreviewContextDto {
|
|
48
|
-
agent;
|
|
49
|
-
}
|
|
50
|
-
__decorate([
|
|
51
|
-
(0, class_validator_1.IsOptional)(),
|
|
52
|
-
(0, class_validator_1.ValidateNested)(),
|
|
53
|
-
(0, class_transformer_1.Type)(() => AgentContextDto),
|
|
54
|
-
__metadata("design:type", AgentContextDto)
|
|
55
|
-
], PreviewContextDto.prototype, "agent", void 0);
|
|
56
|
-
class PreviewPromptDto {
|
|
57
|
-
template;
|
|
58
|
-
agentId;
|
|
59
|
-
context;
|
|
60
|
-
}
|
|
61
|
-
exports.PreviewPromptDto = PreviewPromptDto;
|
|
62
|
-
__decorate([
|
|
63
|
-
(0, class_validator_1.IsString)(),
|
|
64
|
-
__metadata("design:type", String)
|
|
65
|
-
], PreviewPromptDto.prototype, "template", void 0);
|
|
66
|
-
__decorate([
|
|
67
|
-
(0, class_validator_1.IsOptional)(),
|
|
68
|
-
(0, class_validator_1.IsString)(),
|
|
69
|
-
__metadata("design:type", String)
|
|
70
|
-
], PreviewPromptDto.prototype, "agentId", void 0);
|
|
71
|
-
__decorate([
|
|
72
|
-
(0, class_validator_1.IsOptional)(),
|
|
73
|
-
(0, class_validator_1.IsObject)(),
|
|
74
|
-
(0, class_validator_1.ValidateNested)(),
|
|
75
|
-
(0, class_transformer_1.Type)(() => PreviewContextDto),
|
|
76
|
-
__metadata("design:type", PreviewContextDto)
|
|
77
|
-
], PreviewPromptDto.prototype, "context", void 0);
|
|
@@ -1,92 +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.UpdateAgentDto = exports.AgentSkillsDto = 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 AgentSkillsDto {
|
|
17
|
-
include;
|
|
18
|
-
}
|
|
19
|
-
exports.AgentSkillsDto = AgentSkillsDto;
|
|
20
|
-
__decorate([
|
|
21
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Whitelist of skill names. Empty array means no skills allowed.', type: [String] }),
|
|
22
|
-
(0, class_validator_1.IsArray)(),
|
|
23
|
-
(0, class_validator_1.IsString)({ each: true }),
|
|
24
|
-
__metadata("design:type", Array)
|
|
25
|
-
], AgentSkillsDto.prototype, "include", void 0);
|
|
26
|
-
class UpdateAgentDto {
|
|
27
|
-
name;
|
|
28
|
-
role;
|
|
29
|
-
team;
|
|
30
|
-
description;
|
|
31
|
-
provider;
|
|
32
|
-
model;
|
|
33
|
-
prompt;
|
|
34
|
-
skills;
|
|
35
|
-
options;
|
|
36
|
-
}
|
|
37
|
-
exports.UpdateAgentDto = UpdateAgentDto;
|
|
38
|
-
__decorate([
|
|
39
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Agent display name' }),
|
|
40
|
-
(0, class_validator_1.IsOptional)(),
|
|
41
|
-
(0, class_validator_1.IsString)(),
|
|
42
|
-
__metadata("design:type", String)
|
|
43
|
-
], UpdateAgentDto.prototype, "name", void 0);
|
|
44
|
-
__decorate([
|
|
45
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Agent role' }),
|
|
46
|
-
(0, class_validator_1.IsOptional)(),
|
|
47
|
-
(0, class_validator_1.IsString)(),
|
|
48
|
-
__metadata("design:type", String)
|
|
49
|
-
], UpdateAgentDto.prototype, "role", void 0);
|
|
50
|
-
__decorate([
|
|
51
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Team name' }),
|
|
52
|
-
(0, class_validator_1.IsOptional)(),
|
|
53
|
-
(0, class_validator_1.IsString)(),
|
|
54
|
-
__metadata("design:type", String)
|
|
55
|
-
], UpdateAgentDto.prototype, "team", void 0);
|
|
56
|
-
__decorate([
|
|
57
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Agent description' }),
|
|
58
|
-
(0, class_validator_1.IsOptional)(),
|
|
59
|
-
(0, class_validator_1.IsString)(),
|
|
60
|
-
__metadata("design:type", String)
|
|
61
|
-
], UpdateAgentDto.prototype, "description", void 0);
|
|
62
|
-
__decorate([
|
|
63
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Provider identifier' }),
|
|
64
|
-
(0, class_validator_1.IsOptional)(),
|
|
65
|
-
(0, class_validator_1.IsString)(),
|
|
66
|
-
__metadata("design:type", String)
|
|
67
|
-
], UpdateAgentDto.prototype, "provider", void 0);
|
|
68
|
-
__decorate([
|
|
69
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Model identifier' }),
|
|
70
|
-
(0, class_validator_1.IsOptional)(),
|
|
71
|
-
(0, class_validator_1.IsString)(),
|
|
72
|
-
__metadata("design:type", String)
|
|
73
|
-
], UpdateAgentDto.prototype, "model", void 0);
|
|
74
|
-
__decorate([
|
|
75
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Agent system prompt' }),
|
|
76
|
-
(0, class_validator_1.IsOptional)(),
|
|
77
|
-
(0, class_validator_1.IsString)(),
|
|
78
|
-
__metadata("design:type", String)
|
|
79
|
-
], UpdateAgentDto.prototype, "prompt", void 0);
|
|
80
|
-
__decorate([
|
|
81
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'Skill configuration. Undefined = keep existing; include:[] = block all; include:[...] = whitelist.' }),
|
|
82
|
-
(0, class_validator_1.IsOptional)(),
|
|
83
|
-
(0, class_validator_1.ValidateNested)(),
|
|
84
|
-
(0, class_transformer_1.Type)(() => AgentSkillsDto),
|
|
85
|
-
__metadata("design:type", AgentSkillsDto)
|
|
86
|
-
], UpdateAgentDto.prototype, "skills", void 0);
|
|
87
|
-
__decorate([
|
|
88
|
-
(0, swagger_1.ApiPropertyOptional)({ description: 'CLI options per invocation mode' }),
|
|
89
|
-
(0, class_validator_1.IsOptional)(),
|
|
90
|
-
(0, class_validator_1.IsObject)(),
|
|
91
|
-
__metadata("design:type", Object)
|
|
92
|
-
], UpdateAgentDto.prototype, "options", void 0);
|
|
@@ -1,38 +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.ProviderController = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
-
const agent_service_js_1 = require("./agent.service.js");
|
|
16
|
-
let ProviderController = class ProviderController {
|
|
17
|
-
agentService;
|
|
18
|
-
constructor(agentService) {
|
|
19
|
-
this.agentService = agentService;
|
|
20
|
-
}
|
|
21
|
-
async getProviders() {
|
|
22
|
-
const data = await this.agentService.getProviderMetas();
|
|
23
|
-
return { success: true, data };
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
exports.ProviderController = ProviderController;
|
|
27
|
-
__decorate([
|
|
28
|
-
(0, swagger_1.ApiOperation)({ operationId: 'PRV.LIST', summary: 'List ACP provider metadata' }),
|
|
29
|
-
(0, common_1.Get)(),
|
|
30
|
-
__metadata("design:type", Function),
|
|
31
|
-
__metadata("design:paramtypes", []),
|
|
32
|
-
__metadata("design:returntype", Promise)
|
|
33
|
-
], ProviderController.prototype, "getProviders", null);
|
|
34
|
-
exports.ProviderController = ProviderController = __decorate([
|
|
35
|
-
(0, swagger_1.ApiTags)('providers'),
|
|
36
|
-
(0, common_1.Controller)('ws/:slug/providers'),
|
|
37
|
-
__metadata("design:paramtypes", [agent_service_js_1.AgentService])
|
|
38
|
-
], ProviderController);
|