@mcoda/core 0.1.27 → 0.1.29

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.
@@ -198,6 +198,90 @@ const deriveParentDirs = (paths) => {
198
198
  }
199
199
  return Array.from(dirs);
200
200
  };
201
+ const isRecord = (value) => Boolean(value && typeof value === "object" && !Array.isArray(value));
202
+ const normalizeFailoverEvents = (value) => {
203
+ if (!Array.isArray(value))
204
+ return [];
205
+ const events = [];
206
+ for (const entry of value) {
207
+ if (!isRecord(entry))
208
+ continue;
209
+ if (typeof entry.type !== "string" || entry.type.trim().length === 0)
210
+ continue;
211
+ events.push({ ...entry });
212
+ }
213
+ return events;
214
+ };
215
+ const mergeFailoverEvents = (left, right) => {
216
+ if (!left.length)
217
+ return right;
218
+ if (!right.length)
219
+ return left;
220
+ const seen = new Set();
221
+ const merged = [];
222
+ const signature = (event) => [
223
+ event.type ?? "",
224
+ event.fromAgentId ?? "",
225
+ event.toAgentId ?? "",
226
+ event.at ?? "",
227
+ event.until ?? "",
228
+ event.durationMs ?? "",
229
+ ].join("|");
230
+ for (const event of [...left, ...right]) {
231
+ const key = signature(event);
232
+ if (seen.has(key))
233
+ continue;
234
+ seen.add(key);
235
+ merged.push(event);
236
+ }
237
+ return merged;
238
+ };
239
+ const mergeInvocationMetadata = (current, incoming) => {
240
+ if (!current && !incoming)
241
+ return undefined;
242
+ if (!incoming)
243
+ return current;
244
+ if (!current)
245
+ return { ...incoming };
246
+ const merged = { ...current, ...incoming };
247
+ const currentEvents = normalizeFailoverEvents(current.failoverEvents);
248
+ const incomingEvents = normalizeFailoverEvents(incoming.failoverEvents);
249
+ if (currentEvents.length > 0 || incomingEvents.length > 0) {
250
+ merged.failoverEvents = mergeFailoverEvents(currentEvents, incomingEvents);
251
+ }
252
+ return merged;
253
+ };
254
+ const describeFailoverEvent = (event) => {
255
+ const type = String(event.type ?? "unknown");
256
+ if (type === "switch_agent") {
257
+ const from = typeof event.fromAgentId === "string" ? event.fromAgentId : "unknown";
258
+ const to = typeof event.toAgentId === "string" ? event.toAgentId : "unknown";
259
+ return `switch_agent ${from} -> ${to}`;
260
+ }
261
+ if (type === "sleep_until_reset") {
262
+ const duration = typeof event.durationMs === "number" && Number.isFinite(event.durationMs)
263
+ ? `${Math.round(event.durationMs / 1000)}s`
264
+ : "unknown duration";
265
+ const until = typeof event.until === "string" ? event.until : "unknown";
266
+ return `sleep_until_reset ${duration} (until ${until})`;
267
+ }
268
+ if (type === "stream_restart_after_limit") {
269
+ const from = typeof event.fromAgentId === "string" ? event.fromAgentId : "unknown";
270
+ return `stream_restart_after_limit from ${from}`;
271
+ }
272
+ return type;
273
+ };
274
+ const resolveFailoverAgentId = (events, fallbackAgentId) => {
275
+ for (let index = events.length - 1; index >= 0; index -= 1) {
276
+ const event = events[index];
277
+ if (event?.type !== "switch_agent")
278
+ continue;
279
+ if (typeof event.toAgentId === "string" && event.toAgentId.trim().length > 0) {
280
+ return event.toAgentId;
281
+ }
282
+ }
283
+ return fallbackAgentId;
284
+ };
201
285
  const normalizeGatewayItem = (value) => {
202
286
  const trimmed = value.trim();
203
287
  if (!trimmed || trimmed === "(none)")
@@ -3479,6 +3563,42 @@ export class WorkOnTasksService {
3479
3563
  }
3480
3564
  return { ok: true, results };
3481
3565
  }
3566
+ selectMostDependedTask(candidates) {
3567
+ if (candidates.length === 0)
3568
+ return undefined;
3569
+ const candidateIds = new Set(candidates.map((candidate) => candidate.task.id));
3570
+ const dependentCounts = new Map();
3571
+ for (const candidate of candidates) {
3572
+ dependentCounts.set(candidate.task.id, 0);
3573
+ }
3574
+ for (const candidate of candidates) {
3575
+ for (const dependencyId of candidate.dependencies.ids) {
3576
+ if (!candidateIds.has(dependencyId))
3577
+ continue;
3578
+ dependentCounts.set(dependencyId, (dependentCounts.get(dependencyId) ?? 0) + 1);
3579
+ }
3580
+ }
3581
+ const ranked = candidates
3582
+ .map((candidate, index) => ({
3583
+ candidate,
3584
+ index,
3585
+ dependentCount: dependentCounts.get(candidate.task.id) ?? 0,
3586
+ }))
3587
+ .sort((a, b) => {
3588
+ if (a.dependentCount !== b.dependentCount)
3589
+ return b.dependentCount - a.dependentCount;
3590
+ const priorityA = a.candidate.task.priority ?? Number.MAX_SAFE_INTEGER;
3591
+ const priorityB = b.candidate.task.priority ?? Number.MAX_SAFE_INTEGER;
3592
+ if (priorityA !== priorityB)
3593
+ return priorityA - priorityB;
3594
+ const createdA = Date.parse(a.candidate.task.createdAt) || 0;
3595
+ const createdB = Date.parse(b.candidate.task.createdAt) || 0;
3596
+ if (createdA !== createdB)
3597
+ return createdA - createdB;
3598
+ return a.index - b.index;
3599
+ });
3600
+ return ranked[0]?.candidate;
3601
+ }
3482
3602
  async workOnTasks(request) {
3483
3603
  await this.ensureMcoda();
3484
3604
  const commandName = "work-on-tasks";
@@ -3639,6 +3759,16 @@ export class WorkOnTasksService {
3639
3759
  };
3640
3760
  try {
3641
3761
  const warnings = [...baseBranchWarnings, ...statusWarnings, ...runnerWarnings];
3762
+ const selectionWarningSet = new Set();
3763
+ const pushSelectionWarnings = (entries) => {
3764
+ for (const warning of entries) {
3765
+ const normalized = warning.trim();
3766
+ if (!normalized || selectionWarningSet.has(normalized))
3767
+ continue;
3768
+ selectionWarningSet.add(normalized);
3769
+ warnings.push(warning);
3770
+ }
3771
+ };
3642
3772
  try {
3643
3773
  const guidance = await ensureProjectGuidance(this.workspace.workspaceRoot, {
3644
3774
  mcodaDir: this.workspace.mcodaDir,
@@ -3676,6 +3806,37 @@ export class WorkOnTasksService {
3676
3806
  limit: request.limit,
3677
3807
  parallel: request.parallel,
3678
3808
  });
3809
+ if (selection.ordered.length === 0 && !ignoreDependencies && !explicitTaskSelection) {
3810
+ const dependencyBlocked = selection.warnings.some((warning) => warning.toLowerCase().includes("dependencies not ready"));
3811
+ if (dependencyBlocked) {
3812
+ const fallbackSelection = await this.selectionService.selectTasks({
3813
+ projectKey: request.projectKey,
3814
+ epicKey: request.epicKey,
3815
+ storyKey: request.storyKey,
3816
+ taskKeys: request.taskKeys,
3817
+ statusFilter,
3818
+ ignoreStatusFilter,
3819
+ includeTypes,
3820
+ excludeTypes,
3821
+ ignoreDependencies: true,
3822
+ missingContextPolicy: request.missingContextPolicy ?? "block",
3823
+ parallel: request.parallel,
3824
+ });
3825
+ pushSelectionWarnings(fallbackSelection.warnings);
3826
+ const fallbackTask = this.selectMostDependedTask(fallbackSelection.ordered);
3827
+ if (fallbackTask) {
3828
+ selection = {
3829
+ ...selection,
3830
+ project: selection.project ?? fallbackSelection.project,
3831
+ ordered: [fallbackTask],
3832
+ warnings: [
3833
+ ...selection.warnings,
3834
+ `No dependency-ready tasks available; selected ${fallbackTask.task.key} from dependency-loop fallback.`,
3835
+ ],
3836
+ };
3837
+ }
3838
+ }
3839
+ }
3679
3840
  await this.checkpoint(job.id, "selection", {
3680
3841
  ordered: selection.ordered.map((t) => t.task.key),
3681
3842
  });
@@ -3687,7 +3848,7 @@ export class WorkOnTasksService {
3687
3848
  totalItems: selection.ordered.length,
3688
3849
  processedItems: 0,
3689
3850
  });
3690
- warnings.push(...selection.warnings);
3851
+ pushSelectionWarnings(selection.warnings);
3691
3852
  const results = [];
3692
3853
  const taskSummaries = new Map();
3693
3854
  let preflightMissingHarnessTasks = await this.findMissingTestHarnessTasks(selection.ordered);
@@ -3917,8 +4078,98 @@ export class WorkOnTasksService {
3917
4078
  emitLine(" ░░░░░ END OF WORK TASK ░░░░░");
3918
4079
  emitBlank();
3919
4080
  };
4081
+ const maxSelectedTasks = typeof request.limit === "number" && request.limit > 0 ? request.limit : undefined;
4082
+ const selectedTaskIds = new Set(selection.ordered.map((entry) => entry.task.id));
4083
+ const refreshSelectionQueue = async (processedCount) => {
4084
+ if (maxSelectedTasks !== undefined && selectedTaskIds.size >= maxSelectedTasks)
4085
+ return;
4086
+ const remainingBudget = maxSelectedTasks === undefined ? undefined : Math.max(0, maxSelectedTasks - selectedTaskIds.size);
4087
+ if (remainingBudget === 0)
4088
+ return;
4089
+ const refreshedSelection = await this.selectionService.selectTasks({
4090
+ projectKey: request.projectKey,
4091
+ epicKey: request.epicKey,
4092
+ storyKey: request.storyKey,
4093
+ taskKeys: request.taskKeys,
4094
+ statusFilter,
4095
+ ignoreStatusFilter,
4096
+ includeTypes,
4097
+ excludeTypes,
4098
+ ignoreDependencies,
4099
+ missingContextPolicy: request.missingContextPolicy ?? "block",
4100
+ limit: remainingBudget,
4101
+ parallel: request.parallel,
4102
+ });
4103
+ pushSelectionWarnings(refreshedSelection.warnings);
4104
+ if (refreshedSelection.project && !selection.project) {
4105
+ selection = { ...selection, project: refreshedSelection.project };
4106
+ }
4107
+ const newlyEligible = [];
4108
+ for (const entry of refreshedSelection.ordered) {
4109
+ if (selectedTaskIds.has(entry.task.id))
4110
+ continue;
4111
+ if (maxSelectedTasks !== undefined && selectedTaskIds.size + newlyEligible.length >= maxSelectedTasks)
4112
+ break;
4113
+ newlyEligible.push(entry);
4114
+ }
4115
+ if (newlyEligible.length === 0 && !ignoreDependencies && !explicitTaskSelection) {
4116
+ const dependencyBlocked = refreshedSelection.warnings.some((warning) => warning.toLowerCase().includes("dependencies not ready"));
4117
+ if (dependencyBlocked) {
4118
+ const fallbackSelection = await this.selectionService.selectTasks({
4119
+ projectKey: request.projectKey,
4120
+ epicKey: request.epicKey,
4121
+ storyKey: request.storyKey,
4122
+ taskKeys: request.taskKeys,
4123
+ statusFilter,
4124
+ ignoreStatusFilter,
4125
+ includeTypes,
4126
+ excludeTypes,
4127
+ ignoreDependencies: true,
4128
+ missingContextPolicy: request.missingContextPolicy ?? "block",
4129
+ limit: remainingBudget,
4130
+ parallel: request.parallel,
4131
+ });
4132
+ pushSelectionWarnings(fallbackSelection.warnings);
4133
+ const fallbackTask = this.selectMostDependedTask(fallbackSelection.ordered.filter((entry) => !selectedTaskIds.has(entry.task.id)));
4134
+ if (fallbackTask) {
4135
+ const fallbackWarning = `No dependency-ready tasks available; selected ${fallbackTask.task.key} from dependency-loop fallback.`;
4136
+ selection = {
4137
+ ...selection,
4138
+ project: selection.project ?? refreshedSelection.project ?? fallbackSelection.project,
4139
+ warnings: [...selection.warnings, fallbackWarning],
4140
+ };
4141
+ pushSelectionWarnings([fallbackWarning]);
4142
+ newlyEligible.push(fallbackTask);
4143
+ }
4144
+ }
4145
+ }
4146
+ if (newlyEligible.length === 0)
4147
+ return;
4148
+ selection = {
4149
+ ...selection,
4150
+ ordered: [...selection.ordered, ...newlyEligible],
4151
+ };
4152
+ for (const entry of newlyEligible) {
4153
+ selectedTaskIds.add(entry.task.id);
4154
+ }
4155
+ await this.checkpoint(job.id, "selection_refresh", {
4156
+ appended: newlyEligible.map((entry) => entry.task.key),
4157
+ totalSelected: selection.ordered.length,
4158
+ processedItems: processedCount,
4159
+ });
4160
+ await this.deps.jobService.updateJobStatus(job.id, "running", {
4161
+ payload: {
4162
+ selection: selection.ordered.map((entry) => entry.task.key),
4163
+ },
4164
+ totalItems: selection.ordered.length,
4165
+ processedItems: processedCount,
4166
+ });
4167
+ };
3920
4168
  let abortRemainingReason = null;
3921
- taskLoop: for (const [index, task] of selection.ordered.entries()) {
4169
+ taskLoop: for (let index = 0; index < selection.ordered.length; index += 1) {
4170
+ const task = selection.ordered[index];
4171
+ if (!task)
4172
+ continue;
3922
4173
  if (abortRemainingReason)
3923
4174
  break taskLoop;
3924
4175
  abortIfSignaled();
@@ -4864,9 +5115,7 @@ export class WorkOnTasksService {
4864
5115
  if (aborted) {
4865
5116
  throw new Error(resolveAbortReason());
4866
5117
  }
4867
- if (!invocationMetadata && chunk.metadata) {
4868
- invocationMetadata = chunk.metadata;
4869
- }
5118
+ invocationMetadata = mergeInvocationMetadata(invocationMetadata, chunk.metadata);
4870
5119
  if (!invocationAdapter && typeof chunk.adapter === "string") {
4871
5120
  invocationAdapter = chunk.adapter;
4872
5121
  }
@@ -4922,7 +5171,7 @@ export class WorkOnTasksService {
4922
5171
  const result = await Promise.race([invokePromise, lockLostPromise]);
4923
5172
  if (result) {
4924
5173
  output = result.output ?? "";
4925
- invocationMetadata = result.metadata ?? invocationMetadata;
5174
+ invocationMetadata = mergeInvocationMetadata(invocationMetadata, result.metadata);
4926
5175
  invocationAdapter = result.adapter ?? invocationAdapter;
4927
5176
  invocationModel = result.model ?? invocationModel;
4928
5177
  }
@@ -5050,8 +5299,25 @@ export class WorkOnTasksService {
5050
5299
  if (!agentInvocation) {
5051
5300
  throw new Error("Agent invocation did not return a response.");
5052
5301
  }
5053
- await recordUsage("agent", agentInvocation.output ?? "", agentDuration, agentInput, agentInvocation.agentUsed, attempt);
5054
5302
  const invocationMeta = (agentInvocation.metadata ?? {});
5303
+ const failoverEvents = normalizeFailoverEvents(invocationMeta.failoverEvents);
5304
+ if (failoverEvents.length > 0) {
5305
+ for (const event of failoverEvents) {
5306
+ await this.logTask(taskRun.id, `Agent failover: ${describeFailoverEvent(event)}`, "agent_failover", event);
5307
+ }
5308
+ }
5309
+ const usageAgentId = resolveFailoverAgentId(failoverEvents, agentInvocation.agentUsed.id);
5310
+ let usageAgent = agentInvocation.agentUsed;
5311
+ if (usageAgentId !== agentInvocation.agentUsed.id) {
5312
+ try {
5313
+ const resolvedUsageAgent = await this.deps.agentService.resolveAgent(usageAgentId);
5314
+ usageAgent = { id: resolvedUsageAgent.id, defaultModel: resolvedUsageAgent.defaultModel };
5315
+ }
5316
+ catch (error) {
5317
+ await this.logTask(taskRun.id, `Unable to resolve failover agent (${usageAgentId}) for usage accounting: ${error instanceof Error ? error.message : String(error)}`, "agent_failover");
5318
+ }
5319
+ }
5320
+ await recordUsage("agent", agentInvocation.output ?? "", agentDuration, agentInput, usageAgent, attempt);
5055
5321
  const rawTouched = Array.isArray(invocationMeta.touchedFiles) ? invocationMeta.touchedFiles : [];
5056
5322
  const touchedFiles = rawTouched.filter((entry) => typeof entry === "string" && entry.trim().length > 0);
5057
5323
  const logPath = typeof invocationMeta.logPath === "string" ? invocationMeta.logPath : undefined;
@@ -6193,6 +6459,14 @@ export class WorkOnTasksService {
6193
6459
  }
6194
6460
  finally {
6195
6461
  await emitTaskEndOnce();
6462
+ if (!abortRemainingReason) {
6463
+ try {
6464
+ await refreshSelectionQueue(index + 1);
6465
+ }
6466
+ catch (error) {
6467
+ warnings.push(`selection_refresh_failed: ${error instanceof Error ? error.message : String(error)}`);
6468
+ }
6469
+ }
6196
6470
  }
6197
6471
  }
6198
6472
  if (abortRemainingReason) {
@@ -7,6 +7,7 @@ import { RoutingService } from "../agents/RoutingService.js";
7
7
  import { AgentRatingService } from "../agents/AgentRatingService.js";
8
8
  import { TaskOrderingService } from "../backlog/TaskOrderingService.js";
9
9
  import { TaskSufficiencyService } from "./TaskSufficiencyService.js";
10
+ import { SdsPreflightService } from "./SdsPreflightService.js";
10
11
  export interface CreateTasksOptions {
11
12
  workspace: WorkspaceResolution;
12
13
  projectKey: string;
@@ -22,6 +23,8 @@ export interface CreateTasksOptions {
22
23
  qaEntryUrl?: string;
23
24
  qaStartCommand?: string;
24
25
  qaRequires?: string[];
26
+ sdsPreflightCommit?: boolean;
27
+ sdsPreflightCommitMessage?: string;
25
28
  }
26
29
  export interface CreateTasksResult {
27
30
  jobId: string;
@@ -37,6 +40,8 @@ type TaskOrderingFactory = (workspace: WorkspaceResolution, options?: {
37
40
  }) => Promise<TaskOrderingClient>;
38
41
  type TaskSufficiencyClient = Pick<TaskSufficiencyService, "runAudit" | "close">;
39
42
  type TaskSufficiencyFactory = (workspace: WorkspaceResolution) => Promise<TaskSufficiencyClient>;
43
+ type SdsPreflightClient = Pick<SdsPreflightService, "runPreflight" | "close">;
44
+ type SdsPreflightFactory = (workspace: WorkspaceResolution) => Promise<SdsPreflightClient>;
40
45
  export declare class CreateTasksService {
41
46
  private static readonly MAX_BUSY_RETRIES;
42
47
  private static readonly BUSY_BACKOFF_MS;
@@ -50,6 +55,7 @@ export declare class CreateTasksService {
50
55
  private ratingService?;
51
56
  private taskOrderingFactory;
52
57
  private taskSufficiencyFactory;
58
+ private sdsPreflightFactory;
53
59
  constructor(workspace: WorkspaceResolution, deps: {
54
60
  docdex: DocdexClient;
55
61
  jobService: JobService;
@@ -60,6 +66,7 @@ export declare class CreateTasksService {
60
66
  ratingService?: AgentRatingService;
61
67
  taskOrderingFactory?: TaskOrderingFactory;
62
68
  taskSufficiencyFactory?: TaskSufficiencyFactory;
69
+ sdsPreflightFactory?: SdsPreflightFactory;
63
70
  });
64
71
  static create(workspace: WorkspaceResolution): Promise<CreateTasksService>;
65
72
  close(): Promise<void>;
@@ -72,6 +79,7 @@ export declare class CreateTasksService {
72
79
  private ensureRatingService;
73
80
  private prepareDocs;
74
81
  private normalizeDocInputForSet;
82
+ private mergeDocInputs;
75
83
  private docIdentity;
76
84
  private mergeDocs;
77
85
  private sortDocsForPlanning;
@@ -1 +1 @@
1
- {"version":3,"file":"CreateTasksService.d.ts","sourceRoot":"","sources":["../../../src/services/planning/CreateTasksService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateTasksService.d.ts","sourceRoot":"","sources":["../../../src/services/planning/CreateTasksService.ts"],"names":[],"mappings":"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"}