@sudosandwich/limps 2.8.0 → 2.10.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.
Files changed (123) hide show
  1. package/README.md +86 -0
  2. package/dist/agent-parser.d.ts +6 -0
  3. package/dist/agent-parser.d.ts.map +1 -1
  4. package/dist/agent-parser.js +30 -0
  5. package/dist/agent-parser.js.map +1 -1
  6. package/dist/cli/config-cmd.d.ts +12 -0
  7. package/dist/cli/config-cmd.d.ts.map +1 -1
  8. package/dist/cli/config-cmd.js +143 -1
  9. package/dist/cli/config-cmd.js.map +1 -1
  10. package/dist/cli/json-output.d.ts +3 -0
  11. package/dist/cli/json-output.d.ts.map +1 -1
  12. package/dist/cli/json-output.js +3 -0
  13. package/dist/cli/json-output.js.map +1 -1
  14. package/dist/cli/list-agents.d.ts.map +1 -1
  15. package/dist/cli/list-agents.js +10 -4
  16. package/dist/cli/list-agents.js.map +1 -1
  17. package/dist/cli/next-task.d.ts +27 -3
  18. package/dist/cli/next-task.d.ts.map +1 -1
  19. package/dist/cli/next-task.js +261 -35
  20. package/dist/cli/next-task.js.map +1 -1
  21. package/dist/cli/plan-repair.d.ts +26 -0
  22. package/dist/cli/plan-repair.d.ts.map +1 -0
  23. package/dist/cli/plan-repair.js +145 -0
  24. package/dist/cli/plan-repair.js.map +1 -0
  25. package/dist/cli.js +3 -1
  26. package/dist/cli.js.map +1 -1
  27. package/dist/commands/config/index.d.ts.map +1 -1
  28. package/dist/commands/config/index.js +31 -2
  29. package/dist/commands/config/index.js.map +1 -1
  30. package/dist/commands/config/list.d.ts.map +1 -1
  31. package/dist/commands/config/list.js +13 -3
  32. package/dist/commands/config/list.js.map +1 -1
  33. package/dist/commands/config/scoring.d.ts +13 -0
  34. package/dist/commands/config/scoring.d.ts.map +1 -0
  35. package/dist/commands/config/scoring.js +104 -0
  36. package/dist/commands/config/scoring.js.map +1 -0
  37. package/dist/commands/config/sync-mcp.d.ts +1 -1
  38. package/dist/commands/index.d.ts.map +1 -1
  39. package/dist/commands/index.js +1 -1
  40. package/dist/commands/index.js.map +1 -1
  41. package/dist/commands/list-agents.d.ts +1 -0
  42. package/dist/commands/list-agents.d.ts.map +1 -1
  43. package/dist/commands/list-agents.js +54 -15
  44. package/dist/commands/list-agents.js.map +1 -1
  45. package/dist/commands/list-plans.d.ts +1 -0
  46. package/dist/commands/list-plans.d.ts.map +1 -1
  47. package/dist/commands/list-plans.js +41 -16
  48. package/dist/commands/list-plans.js.map +1 -1
  49. package/dist/commands/next-task.d.ts +1 -0
  50. package/dist/commands/next-task.d.ts.map +1 -1
  51. package/dist/commands/next-task.js +61 -25
  52. package/dist/commands/next-task.js.map +1 -1
  53. package/dist/commands/reindex.d.ts +12 -0
  54. package/dist/commands/reindex.d.ts.map +1 -0
  55. package/dist/commands/reindex.js +64 -0
  56. package/dist/commands/reindex.js.map +1 -0
  57. package/dist/commands/repair-plans.d.ts +16 -0
  58. package/dist/commands/repair-plans.d.ts.map +1 -0
  59. package/dist/commands/repair-plans.js +141 -0
  60. package/dist/commands/repair-plans.js.map +1 -0
  61. package/dist/commands/score-all.d.ts +15 -0
  62. package/dist/commands/score-all.d.ts.map +1 -0
  63. package/dist/commands/score-all.js +96 -0
  64. package/dist/commands/score-all.js.map +1 -0
  65. package/dist/commands/score-task.d.ts +15 -0
  66. package/dist/commands/score-task.d.ts.map +1 -0
  67. package/dist/commands/score-task.js +104 -0
  68. package/dist/commands/score-task.js.map +1 -0
  69. package/dist/commands/serve.d.ts +1 -0
  70. package/dist/commands/serve.d.ts.map +1 -1
  71. package/dist/commands/serve.js +6 -3
  72. package/dist/commands/serve.js.map +1 -1
  73. package/dist/commands/status.d.ts +1 -0
  74. package/dist/commands/status.d.ts.map +1 -1
  75. package/dist/commands/status.js +68 -20
  76. package/dist/commands/status.js.map +1 -1
  77. package/dist/components/NextTask.d.ts.map +1 -1
  78. package/dist/components/NextTask.js +2 -1
  79. package/dist/components/NextTask.js.map +1 -1
  80. package/dist/config.d.ts +17 -2
  81. package/dist/config.d.ts.map +1 -1
  82. package/dist/config.js +136 -5
  83. package/dist/config.js.map +1 -1
  84. package/dist/graph/schema.d.ts +4 -0
  85. package/dist/graph/schema.d.ts.map +1 -0
  86. package/dist/graph/schema.js +77 -0
  87. package/dist/graph/schema.js.map +1 -0
  88. package/dist/graph/storage.d.ts +26 -0
  89. package/dist/graph/storage.d.ts.map +1 -0
  90. package/dist/graph/storage.js +441 -0
  91. package/dist/graph/storage.js.map +1 -0
  92. package/dist/graph/types.d.ts +32 -0
  93. package/dist/graph/types.d.ts.map +1 -0
  94. package/dist/graph/types.js +11 -0
  95. package/dist/graph/types.js.map +1 -0
  96. package/dist/indexer.d.ts +6 -0
  97. package/dist/indexer.d.ts.map +1 -1
  98. package/dist/indexer.js +11 -0
  99. package/dist/indexer.js.map +1 -1
  100. package/dist/tools/configure-scoring.d.ts +38 -0
  101. package/dist/tools/configure-scoring.d.ts.map +1 -0
  102. package/dist/tools/configure-scoring.js +325 -0
  103. package/dist/tools/configure-scoring.js.map +1 -0
  104. package/dist/tools/get-next-task.d.ts.map +1 -1
  105. package/dist/tools/get-next-task.js +47 -0
  106. package/dist/tools/get-next-task.js.map +1 -1
  107. package/dist/tools/index.d.ts +3 -1
  108. package/dist/tools/index.d.ts.map +1 -1
  109. package/dist/tools/index.js +121 -22
  110. package/dist/tools/index.js.map +1 -1
  111. package/dist/tools/process-docs.d.ts.map +1 -1
  112. package/dist/tools/process-docs.js +10 -1
  113. package/dist/tools/process-docs.js.map +1 -1
  114. package/dist/tools/update-task-status.d.ts +1 -1
  115. package/dist/utils/cli-help.d.ts +32 -0
  116. package/dist/utils/cli-help.d.ts.map +1 -0
  117. package/dist/utils/cli-help.js +79 -0
  118. package/dist/utils/cli-help.js.map +1 -0
  119. package/dist/utils/config-resolver.d.ts +8 -0
  120. package/dist/utils/config-resolver.d.ts.map +1 -1
  121. package/dist/utils/config-resolver.js +22 -1
  122. package/dist/utils/config-resolver.js.map +1 -1
  123. package/package.json +1 -1
@@ -2,8 +2,148 @@
2
2
  * CLI command: next-task
3
3
  * Get the next best task with scoring breakdown.
4
4
  */
5
+ import { existsSync, readFileSync } from 'fs';
6
+ import { join } from 'path';
5
7
  import { getScoringWeights, getScoringBiases, } from '../config.js';
6
8
  import { findPlanDirectory, getAgentFiles } from './list-agents.js';
9
+ import { FrontmatterHandler } from '../utils/frontmatter.js';
10
+ const PLAN_SIGNAL_WEIGHTS = {
11
+ low: 0,
12
+ medium: 5,
13
+ high: 10,
14
+ critical: 20,
15
+ };
16
+ const frontmatterHandler = new FrontmatterHandler();
17
+ function normalizePlanSignal(value) {
18
+ if (typeof value !== 'string') {
19
+ return undefined;
20
+ }
21
+ const normalized = value.trim().toLowerCase();
22
+ if (normalized === 'low' ||
23
+ normalized === 'medium' ||
24
+ normalized === 'high' ||
25
+ normalized === 'critical') {
26
+ return normalized;
27
+ }
28
+ return undefined;
29
+ }
30
+ function detectPlanSignalKeys(content) {
31
+ return /(^|\n)\s*priority\s*:/i.test(content) || /(^|\n)\s*severity\s*:/i.test(content);
32
+ }
33
+ function detectPlanScoringKeys(content) {
34
+ return /(^|\n)\s*scoring\s*:/i.test(content);
35
+ }
36
+ function parseScoringBias(value) {
37
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
38
+ return undefined;
39
+ }
40
+ return value;
41
+ }
42
+ function parseScoringWeights(value) {
43
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
44
+ return undefined;
45
+ }
46
+ const weightsValue = value;
47
+ const weights = {};
48
+ const dependency = parseScoringBias(weightsValue.dependency);
49
+ const priority = parseScoringBias(weightsValue.priority);
50
+ const workload = parseScoringBias(weightsValue.workload);
51
+ if (dependency !== undefined) {
52
+ weights.dependency = dependency;
53
+ }
54
+ if (priority !== undefined) {
55
+ weights.priority = priority;
56
+ }
57
+ if (workload !== undefined) {
58
+ weights.workload = workload;
59
+ }
60
+ return Object.keys(weights).length > 0 ? weights : undefined;
61
+ }
62
+ function getPlanScoringOverrides(planDir, options) {
63
+ const planFolder = planDir.split('/').pop();
64
+ if (!planFolder) {
65
+ return {};
66
+ }
67
+ const planFilePath = join(planDir, `${planFolder}-plan.md`);
68
+ if (!existsSync(planFilePath)) {
69
+ return {};
70
+ }
71
+ const content = readFileSync(planFilePath, 'utf-8');
72
+ const parsed = frontmatterHandler.parse(content);
73
+ const priority = normalizePlanSignal(parsed.frontmatter.priority);
74
+ const severity = normalizePlanSignal(parsed.frontmatter.severity);
75
+ const scoring = parsed.frontmatter.scoring;
76
+ const scoringRecord = scoring && typeof scoring === 'object' && !Array.isArray(scoring)
77
+ ? scoring
78
+ : undefined;
79
+ const scoringBias = scoringRecord ? parseScoringBias(scoringRecord.bias) : undefined;
80
+ const scoringWeights = scoringRecord ? parseScoringWeights(scoringRecord.weights) : undefined;
81
+ const hasSignalBias = priority !== undefined || severity !== undefined;
82
+ const planSignalBias = (priority ? PLAN_SIGNAL_WEIGHTS[priority] : 0) + (severity ? PLAN_SIGNAL_WEIGHTS[severity] : 0);
83
+ const hasAnyOverrides = scoringBias !== undefined || scoringWeights !== undefined || hasSignalBias;
84
+ if (!options?.suppressWarnings &&
85
+ content.startsWith('---') &&
86
+ (detectPlanSignalKeys(content) || detectPlanScoringKeys(content)) &&
87
+ !hasAnyOverrides) {
88
+ console.warn(`Malformed frontmatter in plan file: ${planFilePath}. Run \`limps repair-plans --check --json\` for a structured report.`);
89
+ }
90
+ if (!hasAnyOverrides) {
91
+ return {};
92
+ }
93
+ const overrides = {};
94
+ if (scoringWeights) {
95
+ overrides.weights = scoringWeights;
96
+ }
97
+ if (scoringBias !== undefined || hasSignalBias) {
98
+ overrides.bias = (scoringBias ?? 0) + (hasSignalBias ? planSignalBias : 0);
99
+ }
100
+ return overrides;
101
+ }
102
+ function applyPlanBiasOverride(biases, planFolder, planBias) {
103
+ if (planBias === undefined) {
104
+ return biases;
105
+ }
106
+ return {
107
+ ...biases,
108
+ plans: {
109
+ ...(biases.plans ?? {}),
110
+ [planFolder]: planBias,
111
+ },
112
+ };
113
+ }
114
+ function getBlockedDependencies(deps, allAgents) {
115
+ const blocked = [];
116
+ for (const dep of deps) {
117
+ const depAgent = allAgents.find((agent) => agent.agentNumber === dep);
118
+ if (!depAgent) {
119
+ blocked.push({ id: dep, status: 'MISSING' });
120
+ continue;
121
+ }
122
+ if (depAgent.frontmatter.status !== 'PASS') {
123
+ blocked.push({ id: dep, status: depAgent.frontmatter.status });
124
+ }
125
+ }
126
+ return blocked;
127
+ }
128
+ function mergeScoringWeights(base, overrides) {
129
+ if (!overrides) {
130
+ return base;
131
+ }
132
+ return {
133
+ ...base,
134
+ ...overrides,
135
+ };
136
+ }
137
+ function getAgentScoringOverrides(agent) {
138
+ const scoring = agent.frontmatter.scoring;
139
+ if (!scoring || typeof scoring !== 'object' || Array.isArray(scoring)) {
140
+ return {};
141
+ }
142
+ const scoringRecord = scoring;
143
+ const bias = parseScoringBias(scoringRecord.bias);
144
+ const weights = parseScoringWeights(scoringRecord.weights);
145
+ return { bias, weights };
146
+ }
7
147
  /**
8
148
  * Calculate dependency score.
9
149
  * Higher score when all dependencies are satisfied.
@@ -19,20 +159,13 @@ function calculateDependencyScore(agent, allAgents, maxScore = 40) {
19
159
  reasons.push('No dependencies (unblocked)');
20
160
  return { score: maxScore, reasons };
21
161
  }
22
- let satisfiedCount = 0;
23
- for (const dep of deps) {
24
- // Find the dependent agent by number (deps are just agent numbers like "000")
25
- const depAgent = allAgents.find((a) => a.agentNumber === dep);
26
- if (depAgent && depAgent.frontmatter.status === 'PASS') {
27
- satisfiedCount++;
28
- }
29
- }
30
- if (satisfiedCount === deps.length) {
162
+ const blockedDeps = getBlockedDependencies(deps, allAgents);
163
+ if (blockedDeps.length === 0) {
31
164
  reasons.push(`All ${deps.length} dependencies satisfied`);
32
165
  return { score: maxScore, reasons };
33
166
  }
34
- const unsatisfied = deps.length - satisfiedCount;
35
- reasons.push(`${unsatisfied}/${deps.length} dependencies not satisfied`);
167
+ const blockedList = blockedDeps.map((dep) => `${dep.id} (${dep.status})`).join(', ');
168
+ reasons.push(`Blocked by: ${blockedList}`);
36
169
  return { score: 0, reasons };
37
170
  }
38
171
  /**
@@ -75,14 +208,24 @@ function calculateWorkloadScore(agent, maxScore = 30) {
75
208
  * @param agent - Agent to score
76
209
  * @param biases - Scoring biases configuration
77
210
  */
78
- function calculateBiasScore(agent, biases) {
211
+ function calculateBiasScore(agent, biases, agentBias) {
79
212
  let score = 0;
80
213
  const reasons = [];
214
+ const breakdown = {
215
+ plan: 0,
216
+ persona: 0,
217
+ status: 0,
218
+ agent: 0,
219
+ };
81
220
  // Plan bias
82
- if (biases.plans?.[agent.planFolder]) {
83
- const bias = biases.plans[agent.planFolder];
221
+ const planBias = biases.plans?.[agent.planFolder];
222
+ if (planBias !== undefined) {
223
+ const bias = planBias;
84
224
  score += bias;
85
- reasons.push(`Plan bias: ${bias > 0 ? '+' : ''}${bias}`);
225
+ breakdown.plan = bias;
226
+ if (bias !== 0) {
227
+ reasons.push(`Plan bias: ${bias > 0 ? '+' : ''}${bias}`);
228
+ }
86
229
  }
87
230
  // Persona bias
88
231
  const persona = agent.frontmatter.persona;
@@ -91,16 +234,29 @@ function calculateBiasScore(agent, biases) {
91
234
  : undefined;
92
235
  if (personaBias !== undefined) {
93
236
  score += personaBias;
94
- reasons.push(`Persona bias (${persona}): ${personaBias > 0 ? '+' : ''}${personaBias}`);
237
+ breakdown.persona = personaBias;
238
+ if (personaBias !== 0) {
239
+ reasons.push(`Persona bias (${persona}): ${personaBias > 0 ? '+' : ''}${personaBias}`);
240
+ }
95
241
  }
96
242
  // Status bias (mainly for GAP tasks)
97
243
  const status = agent.frontmatter.status;
98
244
  const statusBias = biases.statuses?.[status];
99
245
  if (statusBias !== undefined) {
100
246
  score += statusBias;
101
- reasons.push(`Status bias (${status}): ${statusBias > 0 ? '+' : ''}${statusBias}`);
247
+ breakdown.status = statusBias;
248
+ if (statusBias !== 0) {
249
+ reasons.push(`Status bias (${status}): ${statusBias > 0 ? '+' : ''}${statusBias}`);
250
+ }
102
251
  }
103
- return { score, reasons };
252
+ if (agentBias !== undefined) {
253
+ score += agentBias;
254
+ breakdown.agent = agentBias;
255
+ if (agentBias !== 0) {
256
+ reasons.push(`Agent bias: ${agentBias > 0 ? '+' : ''}${agentBias}`);
257
+ }
258
+ }
259
+ return { score, reasons, breakdown };
104
260
  }
105
261
  /**
106
262
  * Check if task is eligible (GAP status, dependencies satisfied).
@@ -112,16 +268,13 @@ function isTaskEligible(agent, allAgents) {
112
268
  reason: `Status is ${agent.frontmatter.status}, not GAP`,
113
269
  };
114
270
  }
115
- // Check dependency satisfaction (using agent frontmatter status)
116
- for (const dep of agent.frontmatter.dependencies) {
117
- // Find the dependent agent by number (deps are just agent numbers like "000")
118
- const depAgent = allAgents.find((a) => a.agentNumber === dep);
119
- if (!depAgent || depAgent.frontmatter.status !== 'PASS') {
120
- return {
121
- eligible: false,
122
- reason: `Dependency ${dep} not satisfied`,
123
- };
124
- }
271
+ const blockedDeps = getBlockedDependencies(agent.frontmatter.dependencies, allAgents);
272
+ if (blockedDeps.length > 0) {
273
+ const blockedList = blockedDeps.map((dep) => `${dep.id} (${dep.status})`).join(', ');
274
+ return {
275
+ eligible: false,
276
+ reason: `Blocked by: ${blockedList}`,
277
+ };
125
278
  }
126
279
  return { eligible: true };
127
280
  }
@@ -133,7 +286,7 @@ function isTaskEligible(agent, allAgents) {
133
286
  * @param weights - Scoring weights configuration
134
287
  * @param biases - Scoring biases configuration
135
288
  */
136
- function scoreTask(agent, allAgents, weights, biases) {
289
+ function scoreTask(agent, allAgents, weights, biases, agentBias) {
137
290
  const eligibility = isTaskEligible(agent, allAgents);
138
291
  if (!eligibility.eligible) {
139
292
  return null;
@@ -141,7 +294,7 @@ function scoreTask(agent, allAgents, weights, biases) {
141
294
  const depResult = calculateDependencyScore(agent, allAgents, weights.dependency);
142
295
  const priorityResult = calculatePriorityScore(agent, weights.priority);
143
296
  const workloadResult = calculateWorkloadScore(agent, weights.workload);
144
- const biasResult = calculateBiasScore(agent, biases);
297
+ const biasResult = calculateBiasScore(agent, biases, agentBias);
145
298
  const baseScore = depResult.score + priorityResult.score + workloadResult.score;
146
299
  // Floor total at 0 (no negative scores)
147
300
  const totalScore = Math.max(0, baseScore + biasResult.score);
@@ -154,6 +307,8 @@ function scoreTask(agent, allAgents, weights, biases) {
154
307
  priorityScore: priorityResult.score,
155
308
  workloadScore: workloadResult.score,
156
309
  biasScore: biasResult.score,
310
+ biasBreakdown: biasResult.breakdown,
311
+ weights,
157
312
  reasons: [
158
313
  ...depResult.reasons,
159
314
  ...priorityResult.reasons,
@@ -170,7 +325,7 @@ function scoreTask(agent, allAgents, weights, biases) {
170
325
  * @param planId - Plan number or name
171
326
  * @returns Structured task data or error message
172
327
  */
173
- export async function getNextTaskData(config, planId) {
328
+ export async function getNextTaskData(config, planId, options) {
174
329
  const planDir = findPlanDirectory(config.plansPath, planId);
175
330
  if (!planDir) {
176
331
  return { error: `Plan not found: ${planId}` };
@@ -179,13 +334,17 @@ export async function getNextTaskData(config, planId) {
179
334
  if (agents.length === 0) {
180
335
  return { error: 'No agents found' };
181
336
  }
337
+ const planFolder = planDir.split('/').pop() || planId;
338
+ const planOverrides = getPlanScoringOverrides(planDir, options);
182
339
  // Get scoring weights and biases from config
183
- const weights = getScoringWeights(config);
184
- const biases = getScoringBiases(config);
340
+ const weights = mergeScoringWeights(getScoringWeights(config), planOverrides.weights);
341
+ const biases = applyPlanBiasOverride(getScoringBiases(config), planFolder, planOverrides.bias);
185
342
  // Score all eligible tasks
186
343
  const scoredTasks = [];
187
344
  for (const agent of agents) {
188
- const score = scoreTask(agent, agents, weights, biases);
345
+ const agentOverrides = getAgentScoringOverrides(agent);
346
+ const agentWeights = mergeScoringWeights(weights, agentOverrides.weights);
347
+ const score = scoreTask(agent, agents, agentWeights, biases, agentOverrides.bias);
189
348
  if (score) {
190
349
  scoredTasks.push(score);
191
350
  }
@@ -206,6 +365,73 @@ export async function getNextTaskData(config, planId) {
206
365
  otherAvailableTasks: scoredTasks.length - 1,
207
366
  };
208
367
  }
368
+ export function getScoredTasksData(config, planId, options) {
369
+ const planDir = findPlanDirectory(config.plansPath, planId);
370
+ if (!planDir) {
371
+ return { error: `Plan not found: ${planId}` };
372
+ }
373
+ const agents = getAgentFiles(planDir);
374
+ if (agents.length === 0) {
375
+ return { error: 'No agents found' };
376
+ }
377
+ const planFolder = planDir.split('/').pop() || planId;
378
+ const planOverrides = getPlanScoringOverrides(planDir, options);
379
+ const weights = mergeScoringWeights(getScoringWeights(config), planOverrides.weights);
380
+ const biases = applyPlanBiasOverride(getScoringBiases(config), planFolder, planOverrides.bias);
381
+ const scoredTasks = [];
382
+ for (const agent of agents) {
383
+ const agentOverrides = getAgentScoringOverrides(agent);
384
+ const agentWeights = mergeScoringWeights(weights, agentOverrides.weights);
385
+ const score = scoreTask(agent, agents, agentWeights, biases, agentOverrides.bias);
386
+ if (score) {
387
+ scoredTasks.push(score);
388
+ }
389
+ }
390
+ if (scoredTasks.length === 0) {
391
+ const passCount = agents.filter((a) => a.frontmatter.status === 'PASS').length;
392
+ if (passCount === agents.length) {
393
+ return { error: 'All tasks completed!' };
394
+ }
395
+ return { error: 'No available tasks (all blocked or in progress)' };
396
+ }
397
+ scoredTasks.sort((a, b) => b.totalScore - a.totalScore);
398
+ const planName = planDir.split('/').pop() || planId;
399
+ return { planName, tasks: scoredTasks };
400
+ }
401
+ export function getScoredTaskById(config, taskId, options) {
402
+ const [planPart] = taskId.split('#');
403
+ if (!planPart) {
404
+ return { error: `Invalid task ID: ${taskId}` };
405
+ }
406
+ const planDir = findPlanDirectory(config.plansPath, planPart);
407
+ if (!planDir) {
408
+ return { error: `Plan not found: ${planPart}` };
409
+ }
410
+ const agents = getAgentFiles(planDir);
411
+ if (agents.length === 0) {
412
+ return { error: 'No agents found' };
413
+ }
414
+ const target = agents.find((agent) => agent.taskId === taskId);
415
+ if (!target) {
416
+ return { error: `Task not found: ${taskId}` };
417
+ }
418
+ const eligibility = isTaskEligible(target, agents);
419
+ if (!eligibility.eligible) {
420
+ return { error: `Task not available: ${eligibility.reason ?? 'Not eligible'}` };
421
+ }
422
+ const planFolder = planDir.split('/').pop() || planPart;
423
+ const planOverrides = getPlanScoringOverrides(planDir, options);
424
+ const weights = mergeScoringWeights(getScoringWeights(config), planOverrides.weights);
425
+ const biases = applyPlanBiasOverride(getScoringBiases(config), planFolder, planOverrides.bias);
426
+ const agentOverrides = getAgentScoringOverrides(target);
427
+ const agentWeights = mergeScoringWeights(weights, agentOverrides.weights);
428
+ const score = scoreTask(target, agents, agentWeights, biases, agentOverrides.bias);
429
+ if (!score) {
430
+ return { error: `Task not available: ${taskId}` };
431
+ }
432
+ const planName = planDir.split('/').pop() || planPart;
433
+ return { planName, task: score };
434
+ }
209
435
  /**
210
436
  * Get the next best task from a plan.
211
437
  *
@@ -219,7 +445,7 @@ export async function nextTask(config, planId) {
219
445
  return result.error;
220
446
  }
221
447
  const { task: best, otherAvailableTasks } = result;
222
- const weights = getScoringWeights(config);
448
+ const weights = best.weights;
223
449
  const totalMax = weights.dependency + weights.priority + weights.workload;
224
450
  // Format output
225
451
  const lines = [];
@@ -1 +1 @@
1
- {"version":3,"file":"next-task.js","sourceRoot":"","sources":["../../src/cli/next-task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiBpE;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAC/B,KAAsB,EACtB,SAA4B,EAC5B,QAAQ,GAAG,EAAE;IAEb,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;IAE5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC;QAC9D,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACvD,cAAc,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,cAAc,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,yBAAyB,CAAC,CAAC;QAC1D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,6BAA6B,CAAC,CAAC;IACzE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAC7B,KAAsB,EACtB,QAAQ,GAAG,EAAE;IAEb,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEjD,qCAAqC;IACrC,8EAA8E;IAC9E,MAAM,iBAAiB,GAAG,QAAQ,GAAG,GAAG,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,UAAU,QAAQ,cAAc,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;IAElE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAC7B,KAAsB,EACtB,QAAQ,GAAG,EAAE;IAEb,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;IAEjD,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,QAAQ,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,qBAAqB,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;IAEnE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,KAAsB,EACtB,MAAqB;IAErB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,YAAY;IACZ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,KAAK,IAAI,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,eAAe;IACf,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAuC,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,IAAI,WAAW,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,qCAAqC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAsC,CAAC,CAAC;IAC7E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,IAAI,UAAU,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,gBAAgB,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,KAAsB,EACtB,SAA4B;IAE5B,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACvC,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,aAAa,KAAK,CAAC,WAAW,CAAC,MAAM,WAAW;SACzD,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACjD,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACxD,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,cAAc,GAAG,gBAAgB;aAC1C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAChB,KAAsB,EACtB,SAA4B,EAC5B,OAAuB,EACvB,MAAqB;IAErB,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;IAChF,wCAAwC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS,KAAK,CAAC,WAAW,EAAE;QAClD,UAAU;QACV,eAAe,EAAE,SAAS,CAAC,KAAK;QAChC,aAAa,EAAE,cAAc,CAAC,KAAK;QACnC,aAAa,EAAE,cAAc,CAAC,KAAK;QACnC,SAAS,EAAE,UAAU,CAAC,KAAK;QAC3B,OAAO,EAAE;YACP,GAAG,SAAS,CAAC,OAAO;YACpB,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,UAAU,CAAC,OAAO;SACtB;KACF,CAAC;AACJ,CAAC;AAUD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAoB,EACpB,MAAc;IAEd,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,mBAAmB,MAAM,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAED,6CAA6C;IAC7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAExC,2BAA2B;IAC3B,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,kCAAkC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAC/E,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IACtE,CAAC;IAED,mCAAmC;IACnC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,IAAI,EAAE,IAAI;QACV,mBAAmB,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAoB,EAAE,MAAc;IACjE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE1E,gBAAgB;IAChB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CACR,kBAAkB,IAAI,CAAC,UAAU,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7F,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,mBAAmB,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,uCAAuC;AACvC,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,SAAS,GACV,CAAC"}
1
+ {"version":3,"file":"next-task.js","sourceRoot":"","sources":["../../src/cli/next-task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ type PlanSignal = 'low' | 'medium' | 'high' | 'critical';
2
+ export interface PlanFrontmatterIssue {
3
+ code: 'missing_frontmatter' | 'malformed_frontmatter' | 'invalid_priority' | 'invalid_severity';
4
+ message: string;
5
+ value?: string;
6
+ }
7
+ export interface PlanFrontmatterInspection {
8
+ status: 'valid' | 'needs_repair' | 'no_signals' | 'missing';
9
+ issues: PlanFrontmatterIssue[];
10
+ priority?: PlanSignal;
11
+ severity?: PlanSignal;
12
+ priorityRaw?: string;
13
+ severityRaw?: string;
14
+ }
15
+ export declare function inspectPlanFrontmatter(content: string): PlanFrontmatterInspection;
16
+ export type PlanRepairResult = {
17
+ repaired: true;
18
+ priority?: PlanSignal;
19
+ severity?: PlanSignal;
20
+ } | {
21
+ repaired: false;
22
+ reason: 'missing' | 'valid' | 'no-signals';
23
+ };
24
+ export declare function repairPlanFrontmatter(planFilePath: string): PlanRepairResult;
25
+ export {};
26
+ //# sourceMappingURL=plan-repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-repair.d.ts","sourceRoot":"","sources":["../../src/cli/plan-repair.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AA2DzD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;IAChG,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,GAAG,cAAc,GAAG,YAAY,GAAG,SAAS,CAAC;IAC5D,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAqEjF;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;CAAE,GAChE;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,CAAA;CAAE,CAAC;AAEpE,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CA4B5E"}
@@ -0,0 +1,145 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'fs';
2
+ import { parse as parseYaml } from 'yaml';
3
+ import { FrontmatterHandler } from '../utils/frontmatter.js';
4
+ const frontmatterHandler = new FrontmatterHandler();
5
+ const normalizePlanSignal = (value) => {
6
+ if (typeof value !== 'string') {
7
+ return undefined;
8
+ }
9
+ const normalized = value.trim().toLowerCase();
10
+ if (normalized === 'low' ||
11
+ normalized === 'medium' ||
12
+ normalized === 'high' ||
13
+ normalized === 'critical') {
14
+ return normalized;
15
+ }
16
+ return undefined;
17
+ };
18
+ const stripFrontmatter = (content) => {
19
+ if (!content.startsWith('---')) {
20
+ return content;
21
+ }
22
+ const endIndex = content.indexOf('\n---', 3);
23
+ if (endIndex === -1) {
24
+ return content;
25
+ }
26
+ return content.slice(endIndex + 4).trim();
27
+ };
28
+ const extractPrioritySeverity = (content) => {
29
+ const priorityMatch = content.match(/^\s*priority\s*:\s*(.+)\s*$/im);
30
+ const severityMatch = content.match(/^\s*severity\s*:\s*(.+)\s*$/im);
31
+ return {
32
+ priority: normalizePlanSignal(priorityMatch?.[1]),
33
+ severity: normalizePlanSignal(severityMatch?.[1]),
34
+ };
35
+ };
36
+ const extractFrontmatterBlock = (content) => {
37
+ if (!content.startsWith('---')) {
38
+ return null;
39
+ }
40
+ const endIndex = content.indexOf('\n---', 3);
41
+ if (endIndex === -1) {
42
+ return null;
43
+ }
44
+ return {
45
+ yaml: content.slice(4, endIndex),
46
+ body: content.slice(endIndex + 4).trim(),
47
+ };
48
+ };
49
+ export function inspectPlanFrontmatter(content) {
50
+ const block = extractFrontmatterBlock(content);
51
+ if (!block) {
52
+ return {
53
+ status: 'missing',
54
+ issues: [
55
+ {
56
+ code: 'missing_frontmatter',
57
+ message: 'No frontmatter block found.',
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ let parsed = null;
63
+ try {
64
+ parsed = parseYaml(block.yaml) || {};
65
+ }
66
+ catch {
67
+ return {
68
+ status: 'needs_repair',
69
+ issues: [
70
+ {
71
+ code: 'malformed_frontmatter',
72
+ message: 'Frontmatter YAML is malformed.',
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ const priorityRaw = typeof parsed.priority === 'string' ? parsed.priority : undefined;
78
+ const severityRaw = typeof parsed.severity === 'string' ? parsed.severity : undefined;
79
+ const priority = normalizePlanSignal(priorityRaw);
80
+ const severity = normalizePlanSignal(severityRaw);
81
+ const issues = [];
82
+ if (priorityRaw && !priority) {
83
+ issues.push({
84
+ code: 'invalid_priority',
85
+ message: 'Invalid priority value.',
86
+ value: priorityRaw,
87
+ });
88
+ }
89
+ if (severityRaw && !severity) {
90
+ issues.push({
91
+ code: 'invalid_severity',
92
+ message: 'Invalid severity value.',
93
+ value: severityRaw,
94
+ });
95
+ }
96
+ if (!priority && !severity) {
97
+ return {
98
+ status: issues.length > 0 ? 'needs_repair' : 'no_signals',
99
+ issues,
100
+ priority,
101
+ severity,
102
+ priorityRaw,
103
+ severityRaw,
104
+ };
105
+ }
106
+ return {
107
+ status: issues.length > 0 ? 'needs_repair' : 'valid',
108
+ issues,
109
+ priority,
110
+ severity,
111
+ priorityRaw,
112
+ severityRaw,
113
+ };
114
+ }
115
+ export function repairPlanFrontmatter(planFilePath) {
116
+ if (!existsSync(planFilePath)) {
117
+ return { repaired: false, reason: 'missing' };
118
+ }
119
+ const content = readFileSync(planFilePath, 'utf-8');
120
+ try {
121
+ const parsed = frontmatterHandler.parse(content);
122
+ const priority = normalizePlanSignal(parsed.frontmatter.priority);
123
+ const severity = normalizePlanSignal(parsed.frontmatter.severity);
124
+ if (priority || severity) {
125
+ return { repaired: false, reason: 'valid' };
126
+ }
127
+ }
128
+ catch {
129
+ // Ignore parse errors and attempt repair below.
130
+ }
131
+ const { priority, severity } = extractPrioritySeverity(content);
132
+ if (!priority && !severity) {
133
+ return { repaired: false, reason: 'no-signals' };
134
+ }
135
+ const body = stripFrontmatter(content);
136
+ const repairedFrontmatter = {};
137
+ if (priority)
138
+ repairedFrontmatter.priority = priority;
139
+ if (severity)
140
+ repairedFrontmatter.severity = severity;
141
+ const repairedContent = frontmatterHandler.stringify(repairedFrontmatter, body);
142
+ writeFileSync(planFilePath, repairedContent, 'utf-8');
143
+ return { repaired: true, priority, severity };
144
+ }
145
+ //# sourceMappingURL=plan-repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-repair.js","sourceRoot":"","sources":["../../src/cli/plan-repair.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -5,7 +5,9 @@ import { getPackageVersion, getPackageName } from './utils/version.js';
5
5
  import { startMcpServer } from './server-main.js';
6
6
  // Check if running serve command - needs clean stdio, bypass Pastel/Ink
7
7
  const args = process.argv.slice(2);
8
- if (args[0] === 'serve') {
8
+ const isServeCommand = args[0] === 'serve';
9
+ const wantsHelp = args.includes('--help') || args.includes('-h') || (isServeCommand && args.includes('help'));
10
+ if (isServeCommand && !wantsHelp) {
9
11
  // Parse --config option
10
12
  const configIndex = args.indexOf('--config');
11
13
  const configPath = configIndex !== -1 ? args[configIndex + 1] : undefined;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,wEAAwE;AACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IACxB,wBAAwB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,wDAAwD;IACxD,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QAC9C,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,yDAAyD;IACzD,yEAAyE;IACzE,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,cAAc,EAAE;QACtB,OAAO,EAAE,iBAAiB,EAAE;KAC7B,CAAC;IAEF,cAAc,CAAC;QACb,GAAG;QACH,mBAAmB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,sBAAsB;KACrE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEZ,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,iBAAiB,EAAE;QAC5B,WAAW,EAAE,uCAAuC;KACrD,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,wEAAwE;AACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAC3C,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9F,IAAI,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,wBAAwB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,wDAAwD;IACxD,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QAC9C,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,yDAAyD;IACzD,yEAAyE;IACzE,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,cAAc,EAAE;QACtB,OAAO,EAAE,iBAAiB,EAAE;KAC7B,CAAC;IAEF,cAAc,CAAC;QACb,GAAG;QACH,mBAAmB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,sBAAsB;KACrE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEZ,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,iBAAiB,EAAE;QAC5B,WAAW,EAAE,uCAAuC;KACrD,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC"}