@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,12 +1,15 @@
|
|
|
1
1
|
import { AgentService } from "@mcoda/agents";
|
|
2
2
|
import { DocdexClient } from "@mcoda/integrations";
|
|
3
|
+
import { GlobalRepository, WorkspaceRepository } from "@mcoda/db";
|
|
3
4
|
import { WorkspaceResolution } from "../../workspace/WorkspaceManager.js";
|
|
4
5
|
import { JobService } from "../jobs/JobService.js";
|
|
5
6
|
import { RoutingService } from "../agents/RoutingService.js";
|
|
7
|
+
import { AgentRatingService } from "../agents/AgentRatingService.js";
|
|
6
8
|
export interface GenerateOpenapiOptions {
|
|
7
9
|
workspace: WorkspaceResolution;
|
|
8
10
|
agentName?: string;
|
|
9
11
|
agentStream?: boolean;
|
|
12
|
+
rateAgents?: boolean;
|
|
10
13
|
force?: boolean;
|
|
11
14
|
dryRun?: boolean;
|
|
12
15
|
validateOnly?: boolean;
|
|
@@ -28,11 +31,17 @@ export declare class OpenApiService {
|
|
|
28
31
|
private agentService;
|
|
29
32
|
private routingService;
|
|
30
33
|
private workspace;
|
|
34
|
+
private repo?;
|
|
35
|
+
private ratingService?;
|
|
36
|
+
private workspaceRepo?;
|
|
31
37
|
constructor(workspace: WorkspaceResolution, deps: {
|
|
32
38
|
docdex?: DocdexClient;
|
|
33
39
|
jobService?: JobService;
|
|
34
40
|
agentService: AgentService;
|
|
35
41
|
routingService: RoutingService;
|
|
42
|
+
repo?: GlobalRepository;
|
|
43
|
+
workspaceRepo?: WorkspaceRepository;
|
|
44
|
+
ratingService?: AgentRatingService;
|
|
36
45
|
noTelemetry?: boolean;
|
|
37
46
|
});
|
|
38
47
|
static create(workspace: WorkspaceResolution, options?: {
|
|
@@ -40,6 +49,7 @@ export declare class OpenApiService {
|
|
|
40
49
|
}): Promise<OpenApiService>;
|
|
41
50
|
close(): Promise<void>;
|
|
42
51
|
private resolveAgent;
|
|
52
|
+
private ensureRatingService;
|
|
43
53
|
private invokeAgent;
|
|
44
54
|
private sanitizeOutput;
|
|
45
55
|
private validateSpec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApiService.d.ts","sourceRoot":"","sources":["../../../src/services/openapi/OpenApiService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAkB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenApiService.d.ts","sourceRoot":"","sources":["../../../src/services/openapi/OpenApiService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAkB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA0MD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,IAAI,CAAC,CAAmB;IAChC,OAAO,CAAC,aAAa,CAAC,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAC,CAAsB;gBAG1C,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,YAAY,EAAE,YAAY,CAAC;QAC3B,cAAc,EAAE,cAAc,CAAC;QAC/B,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACxB,aAAa,CAAC,EAAE,mBAAmB,CAAC;QACpC,aAAa,CAAC,EAAE,kBAAkB,CAAC;QACnC,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;WAYU,MAAM,CAAC,SAAS,EAAE,mBAAmB,EAAE,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAY/G,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAcd,YAAY;YASZ,mBAAmB;YAoBnB,WAAW;IA8BzB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;YAaN,mBAAmB;IAajC,OAAO,CAAC,WAAW;YAwBL,gBAAgB;YAMhB,cAAc;YAOd,eAAe;YAef,oBAAoB;IAS5B,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA4KxF"}
|
|
@@ -4,9 +4,10 @@ import YAML from "yaml";
|
|
|
4
4
|
import SwaggerParser from "@apidevtools/swagger-parser";
|
|
5
5
|
import { AgentService } from "@mcoda/agents";
|
|
6
6
|
import { DocdexClient } from "@mcoda/integrations";
|
|
7
|
-
import { GlobalRepository } from "@mcoda/db";
|
|
7
|
+
import { GlobalRepository, WorkspaceRepository } from "@mcoda/db";
|
|
8
8
|
import { JobService } from "../jobs/JobService.js";
|
|
9
9
|
import { RoutingService } from "../agents/RoutingService.js";
|
|
10
|
+
import { AgentRatingService } from "../agents/AgentRatingService.js";
|
|
10
11
|
const OPENAPI_TAGS = [
|
|
11
12
|
// For project-specific specs, tags come from context; this is only a fallback.
|
|
12
13
|
];
|
|
@@ -207,6 +208,9 @@ export class OpenApiService {
|
|
|
207
208
|
this.jobService = deps?.jobService ?? new JobService(workspace, undefined, { noTelemetry: deps?.noTelemetry });
|
|
208
209
|
this.agentService = deps.agentService;
|
|
209
210
|
this.routingService = deps.routingService;
|
|
211
|
+
this.repo = deps.repo;
|
|
212
|
+
this.workspaceRepo = deps.workspaceRepo;
|
|
213
|
+
this.ratingService = deps.ratingService;
|
|
210
214
|
}
|
|
211
215
|
static async create(workspace, options = {}) {
|
|
212
216
|
const repo = await GlobalRepository.create();
|
|
@@ -217,13 +221,22 @@ export class OpenApiService {
|
|
|
217
221
|
baseUrl: workspace.config?.docdexUrl ?? process.env.MCODA_DOCDEX_URL,
|
|
218
222
|
});
|
|
219
223
|
const jobService = new JobService(workspace, undefined, { noTelemetry: options.noTelemetry });
|
|
220
|
-
return new OpenApiService(workspace, { agentService, routingService, docdex, jobService, noTelemetry: options.noTelemetry });
|
|
224
|
+
return new OpenApiService(workspace, { agentService, routingService, docdex, jobService, repo, noTelemetry: options.noTelemetry });
|
|
221
225
|
}
|
|
222
226
|
async close() {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
+
const swallow = async (fn) => {
|
|
228
|
+
try {
|
|
229
|
+
if (fn)
|
|
230
|
+
await fn();
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
// Best-effort close; ignore errors (including "database is closed").
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
await swallow(this.agentService.close?.bind(this.agentService));
|
|
237
|
+
await swallow(this.jobService.close?.bind(this.jobService));
|
|
238
|
+
await swallow(this.repo?.close?.bind(this.repo));
|
|
239
|
+
await swallow(this.workspaceRepo?.close?.bind(this.workspaceRepo));
|
|
227
240
|
}
|
|
228
241
|
async resolveAgent(agentName) {
|
|
229
242
|
const resolved = await this.routingService.resolveAgentForCommand({
|
|
@@ -233,6 +246,26 @@ export class OpenApiService {
|
|
|
233
246
|
});
|
|
234
247
|
return resolved.agent;
|
|
235
248
|
}
|
|
249
|
+
async ensureRatingService() {
|
|
250
|
+
if (this.ratingService)
|
|
251
|
+
return this.ratingService;
|
|
252
|
+
if (process.env.MCODA_DISABLE_DB === "1") {
|
|
253
|
+
throw new Error("Workspace DB disabled; agent rating requires DB access.");
|
|
254
|
+
}
|
|
255
|
+
if (!this.workspaceRepo) {
|
|
256
|
+
this.workspaceRepo = await WorkspaceRepository.create(this.workspace.workspaceRoot);
|
|
257
|
+
}
|
|
258
|
+
if (!this.repo) {
|
|
259
|
+
this.repo = await GlobalRepository.create();
|
|
260
|
+
}
|
|
261
|
+
this.ratingService = new AgentRatingService(this.workspace, {
|
|
262
|
+
workspaceRepo: this.workspaceRepo,
|
|
263
|
+
globalRepo: this.repo,
|
|
264
|
+
agentService: this.agentService,
|
|
265
|
+
routingService: this.routingService,
|
|
266
|
+
});
|
|
267
|
+
return this.ratingService;
|
|
268
|
+
}
|
|
236
269
|
async invokeAgent(agent, prompt, stream, jobId, onToken) {
|
|
237
270
|
if (stream) {
|
|
238
271
|
try {
|
|
@@ -262,11 +295,15 @@ export class OpenApiService {
|
|
|
262
295
|
}
|
|
263
296
|
sanitizeOutput(raw) {
|
|
264
297
|
const trimmed = raw.trim();
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
298
|
+
let body = trimmed;
|
|
299
|
+
if (body.startsWith("```")) {
|
|
300
|
+
body = body.replace(/^```[a-zA-Z]*\s*/m, "").replace(/```$/, "");
|
|
301
|
+
}
|
|
302
|
+
const openapiIndex = body.search(/^openapi:\s*\d/m);
|
|
303
|
+
if (openapiIndex > 0) {
|
|
304
|
+
body = body.slice(openapiIndex);
|
|
268
305
|
}
|
|
269
|
-
return
|
|
306
|
+
return body.trim();
|
|
270
307
|
}
|
|
271
308
|
validateSpec(doc) {
|
|
272
309
|
const errors = [];
|
|
@@ -376,6 +413,7 @@ export class OpenApiService {
|
|
|
376
413
|
workspaceId: this.workspace.workspaceId,
|
|
377
414
|
commandName: "openapi-from-docs",
|
|
378
415
|
jobId: job.id,
|
|
416
|
+
commandRunId: commandRun.id,
|
|
379
417
|
action: "docdex_context",
|
|
380
418
|
promptTokens: 0,
|
|
381
419
|
completionTokens: 0,
|
|
@@ -412,8 +450,10 @@ export class OpenApiService {
|
|
|
412
450
|
let adapter = agent.adapter;
|
|
413
451
|
let agentMetadata;
|
|
414
452
|
let lastErrors;
|
|
453
|
+
let agentUsed = false;
|
|
415
454
|
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
416
455
|
const prompt = this.buildPrompt(context, options.cliVersion, lastErrors);
|
|
456
|
+
agentUsed = true;
|
|
417
457
|
const { output, adapter: usedAdapter, metadata } = await this.invokeAgent(agent, prompt, stream, job.id, options.onToken);
|
|
418
458
|
adapter = usedAdapter;
|
|
419
459
|
agentMetadata = metadata;
|
|
@@ -434,6 +474,7 @@ export class OpenApiService {
|
|
|
434
474
|
workspaceId: this.workspace.workspaceId,
|
|
435
475
|
commandName: "openapi-from-docs",
|
|
436
476
|
jobId: job.id,
|
|
477
|
+
commandRunId: commandRun.id,
|
|
437
478
|
agentId: agent.id,
|
|
438
479
|
modelName: agent.defaultModel,
|
|
439
480
|
action: attempt === 0 ? "draft_openapi" : "draft_openapi_retry",
|
|
@@ -485,6 +526,21 @@ export class OpenApiService {
|
|
|
485
526
|
},
|
|
486
527
|
});
|
|
487
528
|
await this.jobService.finishCommandRun(commandRun.id, "succeeded");
|
|
529
|
+
if (options.rateAgents && agentUsed) {
|
|
530
|
+
try {
|
|
531
|
+
const ratingService = await this.ensureRatingService();
|
|
532
|
+
await ratingService.rate({
|
|
533
|
+
workspace: this.workspace,
|
|
534
|
+
agentId: agent.id,
|
|
535
|
+
commandName: "openapi-from-docs",
|
|
536
|
+
jobId: job.id,
|
|
537
|
+
commandRunId: commandRun.id,
|
|
538
|
+
});
|
|
539
|
+
}
|
|
540
|
+
catch (error) {
|
|
541
|
+
warnings.push(`Agent rating failed: ${error.message ?? String(error)}`);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
488
544
|
return {
|
|
489
545
|
jobId: job.id,
|
|
490
546
|
commandRunId: commandRun.id,
|
|
@@ -4,12 +4,14 @@ import { DocdexClient } from "@mcoda/integrations";
|
|
|
4
4
|
import { WorkspaceResolution } from "../../workspace/WorkspaceManager.js";
|
|
5
5
|
import { JobService } from "../jobs/JobService.js";
|
|
6
6
|
import { RoutingService } from "../agents/RoutingService.js";
|
|
7
|
+
import { AgentRatingService } from "../agents/AgentRatingService.js";
|
|
7
8
|
export interface CreateTasksOptions {
|
|
8
9
|
workspace: WorkspaceResolution;
|
|
9
10
|
projectKey: string;
|
|
10
11
|
inputs: string[];
|
|
11
12
|
agentName?: string;
|
|
12
13
|
agentStream?: boolean;
|
|
14
|
+
rateAgents?: boolean;
|
|
13
15
|
maxEpics?: number;
|
|
14
16
|
maxStoriesPerEpic?: number;
|
|
15
17
|
maxTasksPerStory?: number;
|
|
@@ -33,6 +35,7 @@ export declare class CreateTasksService {
|
|
|
33
35
|
private workspaceRepo;
|
|
34
36
|
private routingService;
|
|
35
37
|
private workspace;
|
|
38
|
+
private ratingService?;
|
|
36
39
|
constructor(workspace: WorkspaceResolution, deps: {
|
|
37
40
|
docdex: DocdexClient;
|
|
38
41
|
jobService: JobService;
|
|
@@ -40,11 +43,14 @@ export declare class CreateTasksService {
|
|
|
40
43
|
repo: GlobalRepository;
|
|
41
44
|
workspaceRepo: WorkspaceRepository;
|
|
42
45
|
routingService: RoutingService;
|
|
46
|
+
ratingService?: AgentRatingService;
|
|
43
47
|
});
|
|
44
48
|
static create(workspace: WorkspaceResolution): Promise<CreateTasksService>;
|
|
45
49
|
close(): Promise<void>;
|
|
46
50
|
private resolveAgent;
|
|
51
|
+
private ensureRatingService;
|
|
47
52
|
private prepareDocs;
|
|
53
|
+
private resolveDefaultDocInputs;
|
|
48
54
|
private buildDocContext;
|
|
49
55
|
private buildPrompt;
|
|
50
56
|
private fallbackPlan;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateTasksService.d.ts","sourceRoot":"","sources":["../../../src/services/planning/CreateTasksService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAEL,OAAO,EACP,gBAAgB,EAEhB,QAAQ,EAER,iBAAiB,EAEjB,OAAO,EACP,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,YAAY,EAAkB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"CreateTasksService.d.ts","sourceRoot":"","sources":["../../../src/services/planning/CreateTasksService.ts"],"names":[],"mappings":"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"}
|