ralph-hero-mcp-server 2.4.74 → 2.4.80

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.
@@ -171,7 +171,7 @@ function computeSuggestedRoster(phase, issues) {
171
171
  // Phase-aware: if past research, analyst = 0
172
172
  const needsResearch = issues.filter(i => ['Research Needed', 'Research in Progress'].includes(i.workflowState));
173
173
  let analyst = 0;
174
- if (phase === 'RESEARCH' || phase === 'SPLIT' || phase === 'TRIAGE') {
174
+ if (phase === 'RESEARCH' || phase === 'SPLIT' || phase === 'TRIAGE' || phase === 'PLAN') {
175
175
  analyst = needsResearch.length <= 1 ? 1
176
176
  : needsResearch.length <= 5 ? 2
177
177
  : 3;
@@ -179,7 +179,8 @@ function computeSuggestedRoster(phase, issues) {
179
179
  // Builder scaling: default 1; 2 if 5+ issues with M/L estimates
180
180
  const largeSized = issues.filter(i => i.estimate != null && ['M', 'L', 'XL'].includes(i.estimate));
181
181
  const builder = largeSized.length >= 5 ? 2 : 1;
182
- return { analyst, builder, validator: 1, integrator: 1 };
182
+ const integrator = issues.length >= 5 ? 2 : 1;
183
+ return { analyst, builder, integrator };
183
184
  }
184
185
  function buildResult(phase, reason, issues, isGroup, groupPrimary, convergence) {
185
186
  // Derive recommendation from convergence state
@@ -160,7 +160,12 @@ export function registerBatchTools(server, client, fieldCache) {
160
160
  field: z
161
161
  .enum(["workflow_state", "estimate", "priority"])
162
162
  .describe("Field to update"),
163
- value: z.string().describe("Target value (e.g., 'Research Needed', 'XS', 'P1')"),
163
+ value: z.string().describe("Target value. " +
164
+ "For workflow_state: Backlog, Research Needed, Research in Progress, Ready for Plan, " +
165
+ "Plan in Progress, Plan in Review, In Progress, In Review, Done, Human Needed, Canceled. " +
166
+ "For estimate: XS, S, M, L, XL. " +
167
+ "For priority: P0, P1, P2, P3. " +
168
+ "Note: 'Todo' is a Status field value, NOT a valid workflow state."),
164
169
  }))
165
170
  .min(1)
166
171
  .max(MAX_OPERATIONS)
@@ -50,6 +50,11 @@ export function registerIssueTools(server, client, fieldCache) {
50
50
  .optional()
51
51
  .describe("Filter by Priority (P0, P1, P2, P3)"),
52
52
  label: z.string().optional().describe("Filter by label name"),
53
+ repoFilter: z
54
+ .string()
55
+ .optional()
56
+ .describe("Filter items to only those from the specified repository. " +
57
+ "Accepts 'name' or 'owner/name' format. Case-insensitive."),
53
58
  query: z.string().optional().describe("Additional search query string"),
54
59
  state: z
55
60
  .enum(["OPEN", "CLOSED"])
@@ -148,6 +153,7 @@ export function registerIssueTools(server, client, fieldCache) {
148
153
  updatedAt
149
154
  labels(first: 10) { nodes { name } }
150
155
  assignees(first: 5) { nodes { login } }
156
+ repository { name nameWithOwner }
151
157
  }
152
158
  }
153
159
  fieldValues(first: 20) {
@@ -203,6 +209,19 @@ export function registerIssueTools(server, client, fieldCache) {
203
209
  return labels.some((l) => l.name === args.label);
204
210
  });
205
211
  }
212
+ // Filter by repository
213
+ if (args.repoFilter) {
214
+ const rf = args.repoFilter.toLowerCase();
215
+ const useFullName = rf.includes("/");
216
+ items = items.filter((item) => {
217
+ const content = item.content;
218
+ const repo = content?.repository;
219
+ const repoName = useFullName
220
+ ? repo?.nameWithOwner?.toLowerCase()
221
+ : repo?.name?.toLowerCase();
222
+ return repoName === rf;
223
+ });
224
+ }
206
225
  // Filter by field presence (has)
207
226
  if (args.has && args.has.length > 0) {
208
227
  items = items.filter((item) => args.has.every((field) => hasField(item, field)));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ralph-hero-mcp-server",
3
- "version": "2.4.74",
3
+ "version": "2.4.80",
4
4
  "description": "MCP server for GitHub Projects V2 - Ralph workflow automation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",