@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.
Files changed (71) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/README.md +22 -3
  3. package/dist/api/AgentsApi.d.ts +8 -1
  4. package/dist/api/AgentsApi.d.ts.map +1 -1
  5. package/dist/api/AgentsApi.js +70 -0
  6. package/dist/api/QaTasksApi.d.ts.map +1 -1
  7. package/dist/api/QaTasksApi.js +2 -0
  8. package/dist/api/TasksApi.d.ts.map +1 -1
  9. package/dist/api/TasksApi.js +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -0
  13. package/dist/prompts/PdrPrompts.d.ts.map +1 -1
  14. package/dist/prompts/PdrPrompts.js +3 -1
  15. package/dist/prompts/SdsPrompts.d.ts.map +1 -1
  16. package/dist/prompts/SdsPrompts.js +2 -0
  17. package/dist/services/agents/AgentRatingFormula.d.ts +27 -0
  18. package/dist/services/agents/AgentRatingFormula.d.ts.map +1 -0
  19. package/dist/services/agents/AgentRatingFormula.js +45 -0
  20. package/dist/services/agents/AgentRatingService.d.ts +41 -0
  21. package/dist/services/agents/AgentRatingService.d.ts.map +1 -0
  22. package/dist/services/agents/AgentRatingService.js +299 -0
  23. package/dist/services/agents/GatewayAgentService.d.ts +3 -0
  24. package/dist/services/agents/GatewayAgentService.d.ts.map +1 -1
  25. package/dist/services/agents/GatewayAgentService.js +68 -24
  26. package/dist/services/agents/GatewayHandoff.d.ts +7 -0
  27. package/dist/services/agents/GatewayHandoff.d.ts.map +1 -0
  28. package/dist/services/agents/GatewayHandoff.js +108 -0
  29. package/dist/services/backlog/TaskOrderingService.d.ts +1 -0
  30. package/dist/services/backlog/TaskOrderingService.d.ts.map +1 -1
  31. package/dist/services/backlog/TaskOrderingService.js +19 -16
  32. package/dist/services/docs/DocsService.d.ts +11 -1
  33. package/dist/services/docs/DocsService.d.ts.map +1 -1
  34. package/dist/services/docs/DocsService.js +240 -52
  35. package/dist/services/execution/GatewayTrioService.d.ts +133 -0
  36. package/dist/services/execution/GatewayTrioService.d.ts.map +1 -0
  37. package/dist/services/execution/GatewayTrioService.js +1125 -0
  38. package/dist/services/execution/QaFollowupService.d.ts +1 -0
  39. package/dist/services/execution/QaFollowupService.d.ts.map +1 -1
  40. package/dist/services/execution/QaFollowupService.js +1 -0
  41. package/dist/services/execution/QaProfileService.d.ts +6 -0
  42. package/dist/services/execution/QaProfileService.d.ts.map +1 -1
  43. package/dist/services/execution/QaProfileService.js +165 -3
  44. package/dist/services/execution/QaTasksService.d.ts +18 -0
  45. package/dist/services/execution/QaTasksService.d.ts.map +1 -1
  46. package/dist/services/execution/QaTasksService.js +712 -34
  47. package/dist/services/execution/WorkOnTasksService.d.ts +14 -0
  48. package/dist/services/execution/WorkOnTasksService.d.ts.map +1 -1
  49. package/dist/services/execution/WorkOnTasksService.js +1497 -240
  50. package/dist/services/openapi/OpenApiService.d.ts +10 -0
  51. package/dist/services/openapi/OpenApiService.d.ts.map +1 -1
  52. package/dist/services/openapi/OpenApiService.js +66 -10
  53. package/dist/services/planning/CreateTasksService.d.ts +6 -0
  54. package/dist/services/planning/CreateTasksService.d.ts.map +1 -1
  55. package/dist/services/planning/CreateTasksService.js +261 -28
  56. package/dist/services/planning/RefineTasksService.d.ts +5 -0
  57. package/dist/services/planning/RefineTasksService.d.ts.map +1 -1
  58. package/dist/services/planning/RefineTasksService.js +184 -35
  59. package/dist/services/review/CodeReviewService.d.ts +14 -0
  60. package/dist/services/review/CodeReviewService.d.ts.map +1 -1
  61. package/dist/services/review/CodeReviewService.js +657 -61
  62. package/dist/services/shared/ProjectGuidance.d.ts +6 -0
  63. package/dist/services/shared/ProjectGuidance.d.ts.map +1 -0
  64. package/dist/services/shared/ProjectGuidance.js +21 -0
  65. package/dist/services/tasks/TaskCommentFormatter.d.ts +20 -0
  66. package/dist/services/tasks/TaskCommentFormatter.d.ts.map +1 -0
  67. package/dist/services/tasks/TaskCommentFormatter.js +54 -0
  68. package/dist/workspace/WorkspaceManager.d.ts +4 -0
  69. package/dist/workspace/WorkspaceManager.d.ts.map +1 -1
  70. package/dist/workspace/WorkspaceManager.js +3 -0
  71. package/package.json +5 -5
@@ -5,6 +5,7 @@ import { DocdexClient } from "@mcoda/integrations";
5
5
  import { GlobalRepository, WorkspaceRepository } from "@mcoda/db";
6
6
  import { JobService } from "../jobs/JobService.js";
7
7
  import { RoutingService } from "../agents/RoutingService.js";
8
+ import { AgentRatingService } from "../agents/AgentRatingService.js";
8
9
  import { createTaskKeyGenerator } from "./KeyHelpers.js";
9
10
  const DEFAULT_STRATEGY = "auto";
10
11
  const FORBIDDEN_TARGET_STATUSES = new Set(["ready_to_review", "ready_to_qa", "completed"]);
@@ -12,48 +13,142 @@ const DEFAULT_MAX_TASKS = 250;
12
13
  const MAX_AGENT_OUTPUT_CHARS = 10000000;
13
14
  const estimateTokens = (text) => Math.max(1, Math.ceil(text.length / 4));
14
15
  const extractJson = (raw) => {
16
+ const fencedMatches = [...raw.matchAll(/```json([\s\S]*?)```/g)].map((match) => match[1]);
17
+ const stripped = raw.replace(/<think>[\s\S]*?<\/think>/g, "");
18
+ const candidates = [...fencedMatches, stripped, raw].filter((candidate) => candidate.trim().length > 0);
19
+ for (const candidate of candidates) {
20
+ const parsed = tryParseJson(candidate);
21
+ if (parsed !== undefined)
22
+ return parsed;
23
+ }
24
+ return undefined;
25
+ };
26
+ const tryParseJson = (value) => {
15
27
  try {
16
- const fenced = raw.match(/```json([\s\S]*?)```/);
17
- const candidate = fenced ? fenced[1] : raw;
18
- const start = candidate.indexOf("{");
19
- const end = candidate.lastIndexOf("}");
20
- if (start === -1 || end === -1 || end <= start)
21
- return JSON.parse(raw);
22
- return JSON.parse(candidate.slice(start, end + 1));
28
+ return JSON.parse(value);
23
29
  }
24
30
  catch {
31
+ // continue
32
+ }
33
+ const objects = extractJsonObjects(value).reverse();
34
+ for (const obj of objects) {
35
+ try {
36
+ return JSON.parse(obj);
37
+ }
38
+ catch {
39
+ // continue
40
+ }
41
+ }
42
+ return undefined;
43
+ };
44
+ const extractJsonObjects = (value) => {
45
+ const results = [];
46
+ let depth = 0;
47
+ let start = -1;
48
+ let inString = false;
49
+ let escaped = false;
50
+ for (let i = 0; i < value.length; i += 1) {
51
+ const ch = value[i];
52
+ if (inString) {
53
+ if (escaped) {
54
+ escaped = false;
55
+ continue;
56
+ }
57
+ if (ch === "\\") {
58
+ escaped = true;
59
+ continue;
60
+ }
61
+ if (ch === "\"")
62
+ inString = false;
63
+ continue;
64
+ }
65
+ if (ch === "\"") {
66
+ inString = true;
67
+ continue;
68
+ }
69
+ if (ch === "{") {
70
+ if (depth === 0)
71
+ start = i;
72
+ depth += 1;
73
+ }
74
+ else if (ch === "}") {
75
+ if (depth === 0)
76
+ continue;
77
+ depth -= 1;
78
+ if (depth === 0 && start >= 0) {
79
+ results.push(value.slice(start, i + 1));
80
+ start = -1;
81
+ }
82
+ }
83
+ }
84
+ return results;
85
+ };
86
+ const normalizePlanJson = (parsed) => {
87
+ if (!parsed)
25
88
  return undefined;
89
+ if (Array.isArray(parsed)) {
90
+ return { operations: parsed };
26
91
  }
92
+ if (Array.isArray(parsed.operations))
93
+ return parsed;
94
+ if (parsed.op) {
95
+ return { operations: [parsed] };
96
+ }
97
+ return undefined;
27
98
  };
28
99
  const normalizeOperation = (op) => {
29
100
  if (!op || typeof op !== "object")
30
101
  return op;
31
- if (op.op !== "update_task")
32
- return op;
102
+ const opType = op.op;
33
103
  const taskKey = op.taskKey ?? op.key ?? op.task ?? op.targetTaskKey ?? null;
34
- const updates = { ...op.updates };
35
- const inlineFields = ["title", "description", "acceptanceCriteria", "type", "status", "storyPoints", "priority", "dependsOn", "metadata"];
36
- for (const field of inlineFields) {
37
- if (op[field] !== undefined && updates[field] === undefined) {
38
- updates[field] = op[field];
104
+ if (opType === "update_task") {
105
+ const updates = { ...op.updates };
106
+ const inlineFields = [
107
+ "title",
108
+ "description",
109
+ "acceptanceCriteria",
110
+ "type",
111
+ "status",
112
+ "storyPoints",
113
+ "priority",
114
+ "dependsOn",
115
+ "metadata",
116
+ ];
117
+ for (const field of inlineFields) {
118
+ if (op[field] !== undefined && updates[field] === undefined) {
119
+ updates[field] = op[field];
120
+ }
39
121
  }
122
+ return {
123
+ ...op,
124
+ taskKey,
125
+ updates,
126
+ };
127
+ }
128
+ if (opType === "split_task") {
129
+ const children = Array.isArray(op.children)
130
+ ? op.children
131
+ : Array.isArray(op.subtasks)
132
+ ? op.subtasks
133
+ : Array.isArray(op.newTasks)
134
+ ? op.newTasks
135
+ : Array.isArray(op.tasks)
136
+ ? op.tasks
137
+ : undefined;
138
+ return {
139
+ ...op,
140
+ taskKey,
141
+ children,
142
+ };
40
143
  }
41
144
  return {
42
145
  ...op,
43
146
  taskKey,
44
- updates,
45
147
  };
46
148
  };
47
149
  const safeParsePlan = (content) => {
48
- try {
49
- const parsed = JSON.parse(content);
50
- if (parsed && Array.isArray(parsed.operations))
51
- return parsed;
52
- }
53
- catch {
54
- /* ignore */
55
- }
56
- return undefined;
150
+ const parsed = extractJson(content);
151
+ return normalizePlanJson(parsed);
57
152
  };
58
153
  const formatTaskSummary = (task) => {
59
154
  return [
@@ -73,6 +168,7 @@ export class RefineTasksService {
73
168
  this.repo = deps.repo;
74
169
  this.workspaceRepo = deps.workspaceRepo;
75
170
  this.routingService = deps.routingService;
171
+ this.ratingService = deps.ratingService;
76
172
  }
77
173
  static async create(workspace) {
78
174
  const repo = await GlobalRepository.create();
@@ -119,6 +215,17 @@ export class RefineTasksService {
119
215
  });
120
216
  return resolved.agent;
121
217
  }
218
+ ensureRatingService() {
219
+ if (!this.ratingService) {
220
+ this.ratingService = new AgentRatingService(this.workspace, {
221
+ workspaceRepo: this.workspaceRepo,
222
+ globalRepo: this.repo,
223
+ agentService: this.agentService,
224
+ routingService: this.routingService,
225
+ });
226
+ }
227
+ return this.ratingService;
228
+ }
122
229
  async selectTasks(projectKey, filters) {
123
230
  const db = this.workspaceRepo.getDb();
124
231
  const warnings = [];
@@ -411,6 +518,8 @@ export class RefineTasksService {
411
518
  group.historySummary || "(none)",
412
519
  "Constraints:",
413
520
  constraints,
521
+ "Example JSON:",
522
+ "{\"operations\":[{\"op\":\"update_task\",\"taskKey\":\"web-01-us-01-t01\",\"updates\":{\"title\":\"Refined title\",\"storyPoints\":3}}]}",
414
523
  "Return JSON ONLY matching: { \"operations\": [UpdateTaskOp | SplitTaskOp | MergeTasksOp | UpdateEstimateOp] } where each item has an `op` discriminator (update_task|split_task|merge_tasks|update_estimate).",
415
524
  ].join("\n\n");
416
525
  }
@@ -989,7 +1098,7 @@ export class RefineTasksService {
989
1098
  timestamp: new Date().toISOString(),
990
1099
  metadata: { command: "refine-tasks", action: "agent_refine", ...(metadata ?? {}) },
991
1100
  });
992
- return { raw: output, promptTokens, completionTokens };
1101
+ return { raw: output, promptTokens, completionTokens, agentId: agent.id };
993
1102
  }
994
1103
  async refineTasks(options) {
995
1104
  const strategy = options.strategy ?? DEFAULT_STRATEGY;
@@ -1025,6 +1134,30 @@ export class RefineTasksService {
1025
1134
  planOut: options.planOutPath,
1026
1135
  },
1027
1136
  });
1137
+ let ratingAgentId;
1138
+ const maybeRateAgent = async () => {
1139
+ if (!options.rateAgents || !ratingAgentId)
1140
+ return;
1141
+ try {
1142
+ const ratingService = this.ensureRatingService();
1143
+ await ratingService.rate({
1144
+ workspace: this.workspace,
1145
+ agentId: ratingAgentId,
1146
+ commandName: "refine-tasks",
1147
+ jobId: job.id,
1148
+ commandRunId: commandRun.id,
1149
+ });
1150
+ }
1151
+ catch (error) {
1152
+ const message = `Agent rating failed: ${error.message ?? String(error)}`;
1153
+ try {
1154
+ await this.jobService.appendLog(job.id, `${message}\n`);
1155
+ }
1156
+ catch {
1157
+ /* ignore rating log failures */
1158
+ }
1159
+ }
1160
+ };
1028
1161
  try {
1029
1162
  if (options.fromDb === false) {
1030
1163
  throw new Error("refine-tasks currently only supports DB-backed selection; set --from-db true");
@@ -1166,17 +1299,30 @@ export class RefineTasksService {
1166
1299
  await this.logWarningsToTasks(group.tasks.map((t) => t.id), job.id, commandRun.id, docWarnings.join("; "));
1167
1300
  }
1168
1301
  const prompt = this.buildStoryPrompt(group, strategy, docSummary);
1169
- const { raw } = await this.invokeAgent(options.agentName, prompt, agentStream, job.id, commandRun.id, { epicKey: group.epic.key, storyKey: group.story.key });
1170
- const parsed = extractJson(raw);
1171
- const ops = parsed?.operations && Array.isArray(parsed.operations) ? parsed.operations : [];
1172
- const normalized = ops.map(normalizeOperation);
1173
- const filtered = normalized.filter((op) => {
1174
- const { valid, reason } = this.validateOperation(group, op);
1175
- if (!valid && reason) {
1176
- plan.warnings?.push(`Skipped op for story ${group.story.key}: ${reason}`);
1302
+ const parseOps = (raw) => {
1303
+ const parsed = normalizePlanJson(extractJson(raw));
1304
+ const ops = parsed?.operations && Array.isArray(parsed.operations) ? parsed.operations : [];
1305
+ const normalized = ops.map(normalizeOperation);
1306
+ return normalized.filter((op) => {
1307
+ const { valid, reason } = this.validateOperation(group, op);
1308
+ if (!valid && reason) {
1309
+ plan.warnings?.push(`Skipped op for story ${group.story.key}: ${reason}`);
1310
+ }
1311
+ return valid;
1312
+ });
1313
+ };
1314
+ const { raw, agentId } = await this.invokeAgent(options.agentName, prompt, agentStream, job.id, commandRun.id, { epicKey: group.epic.key, storyKey: group.story.key });
1315
+ ratingAgentId = agentId;
1316
+ let filtered = parseOps(raw);
1317
+ if (filtered.length === 0) {
1318
+ const retryPrompt = `${prompt}\n\nRETRY: Your previous response did not match the JSON schema. Return only a JSON object with an operations array (no prose, no markdown, no <think> tags).`;
1319
+ const retry = await this.invokeAgent(options.agentName, retryPrompt, agentStream, job.id, commandRun.id, { epicKey: group.epic.key, storyKey: group.story.key, retry: true });
1320
+ ratingAgentId = retry.agentId;
1321
+ filtered = parseOps(retry.raw);
1322
+ if (filtered.length === 0) {
1323
+ plan.warnings?.push(`No valid operations returned for story ${group.story.key}.`);
1177
1324
  }
1178
- return valid;
1179
- });
1325
+ }
1180
1326
  plan.operations.push(...filtered);
1181
1327
  }
1182
1328
  catch (error) {
@@ -1222,6 +1368,7 @@ export class RefineTasksService {
1222
1368
  lastCheckpoint: "no_operations",
1223
1369
  });
1224
1370
  await this.jobService.finishCommandRun(commandRun.id, "succeeded");
1371
+ await maybeRateAgent();
1225
1372
  return {
1226
1373
  jobId: job.id,
1227
1374
  commandRunId: commandRun.id,
@@ -1246,6 +1393,7 @@ export class RefineTasksService {
1246
1393
  lastCheckpoint: "dry_run",
1247
1394
  });
1248
1395
  await this.jobService.finishCommandRun(commandRun.id, "succeeded");
1396
+ await maybeRateAgent();
1249
1397
  return {
1250
1398
  jobId: job.id,
1251
1399
  commandRunId: commandRun.id,
@@ -1303,6 +1451,7 @@ export class RefineTasksService {
1303
1451
  lastCheckpoint: "completed",
1304
1452
  });
1305
1453
  await this.jobService.finishCommandRun(commandRun.id, "succeeded");
1454
+ await maybeRateAgent();
1306
1455
  return {
1307
1456
  jobId: job.id,
1308
1457
  commandRunId: commandRun.id,
@@ -6,13 +6,16 @@ import { JobService } from "../jobs/JobService.js";
6
6
  import { TaskSelectionFilters, TaskSelectionService } from "../execution/TaskSelectionService.js";
7
7
  import { TaskStateService } from "../execution/TaskStateService.js";
8
8
  import { RoutingService } from "../agents/RoutingService.js";
9
+ import { AgentRatingService } from "../agents/AgentRatingService.js";
9
10
  export interface CodeReviewRequest extends TaskSelectionFilters {
10
11
  workspace: WorkspaceResolution;
11
12
  baseRef?: string;
12
13
  dryRun?: boolean;
13
14
  agentName?: string;
14
15
  agentStream?: boolean;
16
+ rateAgents?: boolean;
15
17
  resumeJobId?: string;
18
+ abortSignal?: AbortSignal;
16
19
  }
17
20
  export interface ReviewFinding {
18
21
  type?: string;
@@ -27,6 +30,8 @@ export interface ReviewAgentResult {
27
30
  summary?: string;
28
31
  findings: ReviewFinding[];
29
32
  testRecommendations?: string[];
33
+ resolvedSlugs?: string[];
34
+ unresolvedSlugs?: string[];
30
35
  raw?: string;
31
36
  }
32
37
  export interface TaskReviewResult {
@@ -59,6 +64,7 @@ export declare class CodeReviewService {
59
64
  private vcs;
60
65
  private taskLogSeq;
61
66
  private routingService;
67
+ private ratingService?;
62
68
  constructor(workspace: WorkspaceResolution, deps: {
63
69
  agentService: AgentService;
64
70
  docdex: DocdexClient;
@@ -69,6 +75,7 @@ export declare class CodeReviewService {
69
75
  repo: GlobalRepository;
70
76
  vcsClient?: VcsClient;
71
77
  routingService: RoutingService;
78
+ ratingService?: AgentRatingService;
72
79
  });
73
80
  static create(workspace: WorkspaceResolution): Promise<CodeReviewService>;
74
81
  close(): Promise<void>;
@@ -77,6 +84,8 @@ export declare class CodeReviewService {
77
84
  private loadPrompts;
78
85
  private loadRunbookAndChecklists;
79
86
  private resolveAgent;
87
+ private ensureRatingService;
88
+ private resolveTaskComplexity;
80
89
  private selectTasksViaApi;
81
90
  private persistState;
82
91
  private loadState;
@@ -85,6 +94,11 @@ export declare class CodeReviewService {
85
94
  private gatherDocContext;
86
95
  private buildReviewPrompt;
87
96
  private buildHistorySummary;
97
+ private loadCommentContext;
98
+ private commentSlugKey;
99
+ private buildCommentSlugIndex;
100
+ private resolveFindingSlug;
101
+ private applyCommentResolutions;
88
102
  private extractPathsFromDiff;
89
103
  private buildOpenApiSlice;
90
104
  private buildDiff;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeReviewService.d.ts","sourceRoot":"","sources":["../../../src/services/review/CodeReviewService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeReviewService.d.ts","sourceRoot":"","sources":["../../../src/services/review/CodeReviewService.ts"],"names":[],"mappings":"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"}