@mcoda/core 0.1.7 → 0.1.9
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 +4 -1
- package/README.md +22 -3
- package/dist/api/AgentsApi.d.ts +8 -1
- package/dist/api/AgentsApi.d.ts.map +1 -1
- package/dist/api/AgentsApi.js +70 -0
- package/dist/api/QaTasksApi.d.ts.map +1 -1
- package/dist/api/QaTasksApi.js +2 -0
- package/dist/api/TasksApi.d.ts.map +1 -1
- package/dist/api/TasksApi.js +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/prompts/PdrPrompts.d.ts.map +1 -1
- package/dist/prompts/PdrPrompts.js +3 -1
- package/dist/prompts/SdsPrompts.d.ts.map +1 -1
- package/dist/prompts/SdsPrompts.js +2 -0
- package/dist/services/agents/AgentRatingFormula.d.ts +27 -0
- package/dist/services/agents/AgentRatingFormula.d.ts.map +1 -0
- package/dist/services/agents/AgentRatingFormula.js +45 -0
- package/dist/services/agents/AgentRatingService.d.ts +41 -0
- package/dist/services/agents/AgentRatingService.d.ts.map +1 -0
- package/dist/services/agents/AgentRatingService.js +299 -0
- package/dist/services/agents/GatewayAgentService.d.ts +3 -0
- package/dist/services/agents/GatewayAgentService.d.ts.map +1 -1
- package/dist/services/agents/GatewayAgentService.js +68 -24
- package/dist/services/agents/GatewayHandoff.d.ts +7 -0
- package/dist/services/agents/GatewayHandoff.d.ts.map +1 -0
- package/dist/services/agents/GatewayHandoff.js +108 -0
- package/dist/services/backlog/TaskOrderingService.d.ts +1 -0
- package/dist/services/backlog/TaskOrderingService.d.ts.map +1 -1
- package/dist/services/backlog/TaskOrderingService.js +19 -16
- package/dist/services/docs/DocsService.d.ts +11 -1
- package/dist/services/docs/DocsService.d.ts.map +1 -1
- package/dist/services/docs/DocsService.js +240 -52
- package/dist/services/execution/GatewayTrioService.d.ts +133 -0
- package/dist/services/execution/GatewayTrioService.d.ts.map +1 -0
- package/dist/services/execution/GatewayTrioService.js +1125 -0
- package/dist/services/execution/QaFollowupService.d.ts +1 -0
- package/dist/services/execution/QaFollowupService.d.ts.map +1 -1
- package/dist/services/execution/QaFollowupService.js +1 -0
- package/dist/services/execution/QaProfileService.d.ts +6 -0
- package/dist/services/execution/QaProfileService.d.ts.map +1 -1
- package/dist/services/execution/QaProfileService.js +165 -3
- package/dist/services/execution/QaTasksService.d.ts +18 -0
- package/dist/services/execution/QaTasksService.d.ts.map +1 -1
- package/dist/services/execution/QaTasksService.js +712 -34
- package/dist/services/execution/WorkOnTasksService.d.ts +14 -0
- package/dist/services/execution/WorkOnTasksService.d.ts.map +1 -1
- package/dist/services/execution/WorkOnTasksService.js +1497 -240
- package/dist/services/openapi/OpenApiService.d.ts +10 -0
- package/dist/services/openapi/OpenApiService.d.ts.map +1 -1
- package/dist/services/openapi/OpenApiService.js +66 -10
- package/dist/services/planning/CreateTasksService.d.ts +6 -0
- package/dist/services/planning/CreateTasksService.d.ts.map +1 -1
- package/dist/services/planning/CreateTasksService.js +261 -28
- package/dist/services/planning/RefineTasksService.d.ts +5 -0
- package/dist/services/planning/RefineTasksService.d.ts.map +1 -1
- package/dist/services/planning/RefineTasksService.js +184 -35
- package/dist/services/review/CodeReviewService.d.ts +14 -0
- package/dist/services/review/CodeReviewService.d.ts.map +1 -1
- package/dist/services/review/CodeReviewService.js +657 -61
- package/dist/services/shared/ProjectGuidance.d.ts +6 -0
- package/dist/services/shared/ProjectGuidance.d.ts.map +1 -0
- package/dist/services/shared/ProjectGuidance.js +21 -0
- package/dist/services/tasks/TaskCommentFormatter.d.ts +20 -0
- package/dist/services/tasks/TaskCommentFormatter.d.ts.map +1 -0
- package/dist/services/tasks/TaskCommentFormatter.js +54 -0
- package/dist/workspace/WorkspaceManager.d.ts +4 -0
- package/dist/workspace/WorkspaceManager.d.ts.map +1 -1
- package/dist/workspace/WorkspaceManager.js +3 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QaFollowupService.d.ts","sourceRoot":"","sources":["../../../src/services/execution/QaFollowupService.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"QaFollowupService.d.ts","sourceRoot":"","sources":["../../../src/services/execution/QaFollowupService.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAgCD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,aAAa;IAAuB,OAAO,CAAC,aAAa;gBAAzD,aAAa,EAAE,mBAAmB,EAAU,aAAa,EAAE,MAAM;IAErF,OAAO,KAAK,SAAS,GAEpB;YAEa,SAAS;YAST,UAAU;YAKV,kBAAkB;IA+C1B,kBAAkB,CACtB,UAAU,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAC7D,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,GAAG;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;QAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC;YA8EnG,sBAAsB;CA+ErC"}
|
|
@@ -97,6 +97,7 @@ export class QaFollowupService {
|
|
|
97
97
|
const metadata = {
|
|
98
98
|
tags: ['qa-found', 'auto-created', 'ready-for-ai-dev', 'source=qa', ...(suggestion.tags ?? [])],
|
|
99
99
|
source_task: sourceTask.key,
|
|
100
|
+
...(suggestion.followupSlug ? { qa_followup_slug: suggestion.followupSlug } : {}),
|
|
100
101
|
...(suggestion.components ? { components: suggestion.components } : {}),
|
|
101
102
|
...(suggestion.docLinks ? { doc_links: suggestion.docLinks } : {}),
|
|
102
103
|
...(suggestion.testName ? { failing_test: suggestion.testName } : {}),
|
|
@@ -8,8 +8,14 @@ export interface QaProfileResolutionOptions {
|
|
|
8
8
|
export declare class QaProfileService {
|
|
9
9
|
private workspaceRoot;
|
|
10
10
|
private cache?;
|
|
11
|
+
private webInterfaceCache?;
|
|
11
12
|
private routingCache?;
|
|
12
13
|
constructor(workspaceRoot: string);
|
|
14
|
+
private fileExists;
|
|
15
|
+
private readPackageJson;
|
|
16
|
+
private detectWebInterface;
|
|
17
|
+
private detectUiTask;
|
|
18
|
+
private resolveRunnerPreference;
|
|
13
19
|
private get profilePath();
|
|
14
20
|
private get workspaceConfigPath();
|
|
15
21
|
private getConfiguredDefaultProfileName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QaProfileService.d.ts","sourceRoot":"","sources":["../../../src/services/execution/QaProfileService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAG1D,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"QaProfileService.d.ts","sourceRoot":"","sources":["../../../src/services/execution/QaProfileService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAG1D,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD,qBAAa,gBAAgB;IAUf,OAAO,CAAC,aAAa;IATjC,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,iBAAiB,CAAC,CAAU;IACpC,OAAO,CAAC,YAAY,CAAC,CAKnB;gBAEkB,aAAa,EAAE,MAAM;YAE3B,UAAU;YASV,eAAe;YAUf,kBAAkB;IAuDhC,OAAO,CAAC,YAAY;YAuCN,uBAAuB;IAMrC,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,mBAAmB,GAE9B;YAEa,+BAA+B;YAU/B,gBAAgB;IAwBxB,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAyBpC,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE,EAAE,OAAO,GAAE,0BAA+B,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;CAgG1I"}
|
|
@@ -1,10 +1,142 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { PathHelper } from '@mcoda/shared';
|
|
3
3
|
import fs from 'node:fs/promises';
|
|
4
|
+
const DEFAULT_QA_PROFILES = [
|
|
5
|
+
{
|
|
6
|
+
name: 'cli',
|
|
7
|
+
runner: 'cli',
|
|
8
|
+
default: true,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'chromium',
|
|
12
|
+
runner: 'chromium',
|
|
13
|
+
},
|
|
14
|
+
];
|
|
4
15
|
export class QaProfileService {
|
|
5
16
|
constructor(workspaceRoot) {
|
|
6
17
|
this.workspaceRoot = workspaceRoot;
|
|
7
18
|
}
|
|
19
|
+
async fileExists(targetPath) {
|
|
20
|
+
try {
|
|
21
|
+
await fs.access(targetPath);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async readPackageJson() {
|
|
29
|
+
const pkgPath = path.join(this.workspaceRoot, 'package.json');
|
|
30
|
+
try {
|
|
31
|
+
const raw = await fs.readFile(pkgPath, 'utf8');
|
|
32
|
+
return JSON.parse(raw);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async detectWebInterface() {
|
|
39
|
+
if (this.webInterfaceCache !== undefined)
|
|
40
|
+
return this.webInterfaceCache;
|
|
41
|
+
const markers = [
|
|
42
|
+
'client',
|
|
43
|
+
'frontend',
|
|
44
|
+
'web',
|
|
45
|
+
'ui',
|
|
46
|
+
'apps/web',
|
|
47
|
+
'apps/client',
|
|
48
|
+
'packages/web',
|
|
49
|
+
'packages/client',
|
|
50
|
+
'public/index.html',
|
|
51
|
+
'index.html',
|
|
52
|
+
'src/App.tsx',
|
|
53
|
+
'src/main.tsx',
|
|
54
|
+
'src/App.jsx',
|
|
55
|
+
'src/main.jsx',
|
|
56
|
+
'next.config.js',
|
|
57
|
+
'next.config.mjs',
|
|
58
|
+
'vite.config.ts',
|
|
59
|
+
'vite.config.js',
|
|
60
|
+
'svelte.config.js',
|
|
61
|
+
'angular.json',
|
|
62
|
+
'nuxt.config.js',
|
|
63
|
+
'astro.config.mjs',
|
|
64
|
+
'remix.config.js',
|
|
65
|
+
];
|
|
66
|
+
for (const marker of markers) {
|
|
67
|
+
if (await this.fileExists(path.join(this.workspaceRoot, marker))) {
|
|
68
|
+
this.webInterfaceCache = true;
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const pkg = await this.readPackageJson();
|
|
73
|
+
const deps = {
|
|
74
|
+
...(pkg?.dependencies ?? {}),
|
|
75
|
+
...(pkg?.devDependencies ?? {}),
|
|
76
|
+
...(pkg?.peerDependencies ?? {}),
|
|
77
|
+
};
|
|
78
|
+
const uiDeps = [
|
|
79
|
+
'react',
|
|
80
|
+
'next',
|
|
81
|
+
'vue',
|
|
82
|
+
'nuxt',
|
|
83
|
+
'svelte',
|
|
84
|
+
'astro',
|
|
85
|
+
'@angular/core',
|
|
86
|
+
'@remix-run/react',
|
|
87
|
+
'solid-js',
|
|
88
|
+
];
|
|
89
|
+
const hasUiDep = uiDeps.some((dep) => typeof deps?.[dep] === 'string');
|
|
90
|
+
this.webInterfaceCache = hasUiDep;
|
|
91
|
+
return hasUiDep;
|
|
92
|
+
}
|
|
93
|
+
detectUiTask(task) {
|
|
94
|
+
const metadata = task.metadata ?? {};
|
|
95
|
+
const tags = Array.isArray(metadata.tags) ? metadata.tags.map((t) => t.toLowerCase()) : [];
|
|
96
|
+
const uiTags = new Set([
|
|
97
|
+
'ui',
|
|
98
|
+
'frontend',
|
|
99
|
+
'front-end',
|
|
100
|
+
'client',
|
|
101
|
+
'web',
|
|
102
|
+
'react',
|
|
103
|
+
'vue',
|
|
104
|
+
'svelte',
|
|
105
|
+
'angular',
|
|
106
|
+
'next',
|
|
107
|
+
'nuxt',
|
|
108
|
+
'astro',
|
|
109
|
+
]);
|
|
110
|
+
if (tags.some((tag) => uiTags.has(tag)))
|
|
111
|
+
return true;
|
|
112
|
+
const files = Array.isArray(metadata.files) ? metadata.files : [];
|
|
113
|
+
const uiHints = [
|
|
114
|
+
'/ui/',
|
|
115
|
+
'/frontend/',
|
|
116
|
+
'/client/',
|
|
117
|
+
'/web/',
|
|
118
|
+
'/components/',
|
|
119
|
+
'/pages/',
|
|
120
|
+
'/app/',
|
|
121
|
+
'/public/',
|
|
122
|
+
'/styles/',
|
|
123
|
+
];
|
|
124
|
+
const uiExtensions = ['.tsx', '.jsx', '.vue', '.svelte', '.astro', '.html', '.css', '.scss', '.less'];
|
|
125
|
+
for (const file of files) {
|
|
126
|
+
const normalized = String(file).toLowerCase();
|
|
127
|
+
if (uiExtensions.some((ext) => normalized.endsWith(ext)))
|
|
128
|
+
return true;
|
|
129
|
+
if (uiHints.some((hint) => normalized.includes(hint)))
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
async resolveRunnerPreference(task) {
|
|
135
|
+
if (task && this.detectUiTask(task))
|
|
136
|
+
return 'chromium';
|
|
137
|
+
const hasUi = await this.detectWebInterface();
|
|
138
|
+
return hasUi ? 'chromium' : 'cli';
|
|
139
|
+
}
|
|
8
140
|
get profilePath() {
|
|
9
141
|
return path.join(this.workspaceRoot, '.mcoda', 'qa-profiles.json');
|
|
10
142
|
}
|
|
@@ -56,12 +188,12 @@ export class QaProfileService {
|
|
|
56
188
|
this.cache = parsed.profiles;
|
|
57
189
|
return this.cache;
|
|
58
190
|
}
|
|
59
|
-
this.cache =
|
|
191
|
+
this.cache = DEFAULT_QA_PROFILES;
|
|
60
192
|
return this.cache;
|
|
61
193
|
}
|
|
62
194
|
catch (error) {
|
|
63
195
|
if (error?.code === 'ENOENT') {
|
|
64
|
-
this.cache =
|
|
196
|
+
this.cache = DEFAULT_QA_PROFILES;
|
|
65
197
|
return this.cache;
|
|
66
198
|
}
|
|
67
199
|
throw error;
|
|
@@ -73,6 +205,18 @@ export class QaProfileService {
|
|
|
73
205
|
return undefined;
|
|
74
206
|
const envProfile = process.env.MCODA_QA_PROFILE;
|
|
75
207
|
const routing = await this.getRoutingConfig();
|
|
208
|
+
const runnerPreference = await this.resolveRunnerPreference(task);
|
|
209
|
+
const normalizeRunner = (profile) => profile.runner ?? 'cli';
|
|
210
|
+
const matchRunner = (profile) => normalizeRunner(profile) === runnerPreference || profile.name === runnerPreference;
|
|
211
|
+
const pickByRunner = () => {
|
|
212
|
+
const matches = profiles.filter(matchRunner);
|
|
213
|
+
if (!matches.length)
|
|
214
|
+
return undefined;
|
|
215
|
+
const defaults = matches.filter((p) => p.default);
|
|
216
|
+
if (defaults.length === 1)
|
|
217
|
+
return defaults[0];
|
|
218
|
+
return matches[0];
|
|
219
|
+
};
|
|
76
220
|
const configuredDefault = options.profileName ?? envProfile ?? (await this.getConfiguredDefaultProfileName()) ?? routing.defaultProfile;
|
|
77
221
|
const pickByName = (name) => {
|
|
78
222
|
if (!name)
|
|
@@ -85,6 +229,11 @@ export class QaProfileService {
|
|
|
85
229
|
};
|
|
86
230
|
const explicit = pickByName(configuredDefault);
|
|
87
231
|
if (explicit) {
|
|
232
|
+
if (normalizeRunner(explicit) !== runnerPreference) {
|
|
233
|
+
const fallback = pickByRunner();
|
|
234
|
+
if (fallback)
|
|
235
|
+
return fallback;
|
|
236
|
+
}
|
|
88
237
|
return explicit;
|
|
89
238
|
}
|
|
90
239
|
const taskTags = Array.isArray(task.metadata?.tags)
|
|
@@ -107,8 +256,18 @@ export class QaProfileService {
|
|
|
107
256
|
: undefined;
|
|
108
257
|
const routedName = levelRoute ?? typeRoute ?? tagRoute;
|
|
109
258
|
const routed = pickByName(routedName);
|
|
110
|
-
if (routed)
|
|
259
|
+
if (routed) {
|
|
260
|
+
if (normalizeRunner(routed) !== runnerPreference) {
|
|
261
|
+
const fallback = pickByRunner();
|
|
262
|
+
if (fallback)
|
|
263
|
+
return fallback;
|
|
264
|
+
}
|
|
111
265
|
return routed;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const runnerCandidates = candidates.filter(matchRunner);
|
|
269
|
+
if (runnerCandidates.length) {
|
|
270
|
+
candidates = runnerCandidates;
|
|
112
271
|
}
|
|
113
272
|
const targetLevel = options.level ?? options.defaultLevel;
|
|
114
273
|
if (targetLevel) {
|
|
@@ -131,6 +290,9 @@ export class QaProfileService {
|
|
|
131
290
|
.map((p) => p.name)
|
|
132
291
|
.join(', ')}`);
|
|
133
292
|
}
|
|
293
|
+
const runnerDefault = pickByRunner();
|
|
294
|
+
if (runnerDefault)
|
|
295
|
+
return runnerDefault;
|
|
134
296
|
const defaults = profiles.filter((p) => p.default);
|
|
135
297
|
if (defaults.length === 1)
|
|
136
298
|
return defaults[0];
|
|
@@ -10,6 +10,7 @@ import { AgentService } from '@mcoda/agents';
|
|
|
10
10
|
import { GlobalRepository } from '@mcoda/db';
|
|
11
11
|
import { DocdexClient } from '@mcoda/integrations';
|
|
12
12
|
import { RoutingService } from '../agents/RoutingService.js';
|
|
13
|
+
import { AgentRatingService } from '../agents/AgentRatingService.js';
|
|
13
14
|
export interface QaTasksRequest extends TaskSelectionFilters {
|
|
14
15
|
workspace: WorkspaceResolution;
|
|
15
16
|
mode?: 'auto' | 'manual';
|
|
@@ -19,11 +20,14 @@ export interface QaTasksRequest extends TaskSelectionFilters {
|
|
|
19
20
|
testCommand?: string;
|
|
20
21
|
agentName?: string;
|
|
21
22
|
agentStream?: boolean;
|
|
23
|
+
rateAgents?: boolean;
|
|
22
24
|
createFollowupTasks?: 'auto' | 'none' | 'prompt';
|
|
23
25
|
dryRun?: boolean;
|
|
24
26
|
result?: 'pass' | 'fail' | 'blocked';
|
|
25
27
|
notes?: string;
|
|
26
28
|
evidenceUrl?: string;
|
|
29
|
+
allowDirty?: boolean;
|
|
30
|
+
abortSignal?: AbortSignal;
|
|
27
31
|
}
|
|
28
32
|
export interface QaTaskResult {
|
|
29
33
|
taskKey: string;
|
|
@@ -55,6 +59,7 @@ export declare class QaTasksService {
|
|
|
55
59
|
private docdex?;
|
|
56
60
|
private repo?;
|
|
57
61
|
private routingService?;
|
|
62
|
+
private ratingService?;
|
|
58
63
|
private dryRunGuard;
|
|
59
64
|
constructor(workspace: WorkspaceResolution, deps: {
|
|
60
65
|
workspaceRepo: WorkspaceRepository;
|
|
@@ -68,6 +73,7 @@ export declare class QaTasksService {
|
|
|
68
73
|
docdex?: DocdexClient;
|
|
69
74
|
repo?: GlobalRepository;
|
|
70
75
|
routingService?: RoutingService;
|
|
76
|
+
ratingService?: AgentRatingService;
|
|
71
77
|
});
|
|
72
78
|
static create(workspace: WorkspaceResolution, options?: {
|
|
73
79
|
noTelemetry?: boolean;
|
|
@@ -80,18 +86,30 @@ export declare class QaTasksService {
|
|
|
80
86
|
private ensureMcoda;
|
|
81
87
|
private adapterForProfile;
|
|
82
88
|
private mapOutcome;
|
|
89
|
+
private adjustOutcomeForSkippedTests;
|
|
83
90
|
private combineOutcome;
|
|
84
91
|
private gatherDocContext;
|
|
85
92
|
private resolveAgent;
|
|
93
|
+
private ensureRatingService;
|
|
94
|
+
private resolveTaskComplexity;
|
|
86
95
|
private estimateTokens;
|
|
96
|
+
private fileExists;
|
|
97
|
+
private readPackageJson;
|
|
98
|
+
private detectPackageManager;
|
|
99
|
+
private resolveTestCommand;
|
|
87
100
|
private extractJsonCandidate;
|
|
88
101
|
private normalizeAgentOutput;
|
|
89
102
|
private interpretResult;
|
|
103
|
+
private loadCommentContext;
|
|
104
|
+
private resolveFailureSlug;
|
|
105
|
+
private applyCommentResolutions;
|
|
90
106
|
private createTaskRun;
|
|
91
107
|
private finishTaskRun;
|
|
92
108
|
private logTask;
|
|
93
109
|
private applyStateTransition;
|
|
94
110
|
private buildFollowupSuggestion;
|
|
111
|
+
private buildManualQaFollowup;
|
|
112
|
+
private buildFollowupSlug;
|
|
95
113
|
private toFollowupSuggestion;
|
|
96
114
|
private suggestFollowupsFromAgent;
|
|
97
115
|
private runAuto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QaTasksService.d.ts","sourceRoot":"","sources":["../../../src/services/execution/QaTasksService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"QaTasksService.d.ts","sourceRoot":"","sources":["../../../src/services/execution/QaTasksService.ts"],"names":[],"mappings":"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"}
|