ralph-hero-mcp-server 2.4.102 → 2.4.108

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.
@@ -123,6 +123,7 @@ function buildSnapshot(state, items, now) {
123
123
  ageHours: Math.max(0, (now - new Date(item.updatedAt).getTime()) / (1000 * 60 * 60)),
124
124
  isLocked: LOCK_STATES.includes(state),
125
125
  blockedBy: item.blockedBy,
126
+ subIssueCount: item.subIssueCount,
126
127
  })),
127
128
  };
128
129
  }
@@ -202,9 +203,10 @@ export function detectHealthIssues(phases, config = DEFAULT_HEALTH_CONFIG) {
202
203
  issues: [issue.number],
203
204
  });
204
205
  }
205
- // Oversized in pipeline: M/L/XL estimate past Backlog
206
+ // Oversized in pipeline: M/L/XL estimate past Backlog (skip already-split parents)
206
207
  if (issue.estimate &&
207
208
  OVERSIZED_ESTIMATES.has(issue.estimate) &&
209
+ issue.subIssueCount === 0 &&
208
210
  phase.state !== "Backlog" &&
209
211
  !TERMINAL_STATES.includes(phase.state) &&
210
212
  phase.state !== "Human Needed") {
@@ -91,6 +91,7 @@ export function toDashboardItems(raw, projectNumber, projectTitle) {
91
91
  priority: getFieldValue(r, "Priority"),
92
92
  estimate: getFieldValue(r, "Estimate"),
93
93
  assignees: r.content.assignees?.nodes?.map((a) => a.login) ?? [],
94
+ subIssueCount: r.content.subIssues?.totalCount ?? 0,
94
95
  blockedBy: [], // blockedBy requires separate queries; omit for now
95
96
  ...(projectNumber !== undefined ? { projectNumber } : {}),
96
97
  ...(projectTitle !== undefined ? { projectTitle } : {}),
@@ -121,6 +122,7 @@ export const DASHBOARD_ITEMS_QUERY = `query($projectId: ID!, $cursor: String, $f
121
122
  closedAt
122
123
  assignees(first: 5) { nodes { login } }
123
124
  repository { nameWithOwner name }
125
+ subIssues { totalCount }
124
126
  }
125
127
  ... on PullRequest {
126
128
  __typename
@@ -14,7 +14,7 @@ import { resolveState } from "../lib/state-resolution.js";
14
14
  import { parseDateMath } from "../lib/date-math.js";
15
15
  import { expandProfile } from "../lib/filter-profiles.js";
16
16
  import { toolSuccess, toolError } from "../types.js";
17
- import { ensureFieldCache, resolveIssueNodeId, resolveProjectItemId, updateProjectItemField, resolveConfig, resolveFullConfig, resolveFullConfigOptionalRepo, } from "../lib/helpers.js";
17
+ import { ensureFieldCache, resolveIssueNodeId, resolveProjectItemId, updateProjectItemField, resolveConfig, resolveFullConfig, resolveFullConfigOptionalRepo, syncStatusField, } from "../lib/helpers.js";
18
18
  // ---------------------------------------------------------------------------
19
19
  // Register issue tools
20
20
  // ---------------------------------------------------------------------------
@@ -705,6 +705,7 @@ export function registerIssueTools(server, client, fieldCache) {
705
705
  // Step 5: Set field values
706
706
  if (args.workflowState) {
707
707
  await updateProjectItemField(client, fieldCache, projectItemId, "Workflow State", args.workflowState, projectNumber);
708
+ await syncStatusField(client, fieldCache, projectItemId, args.workflowState, projectNumber);
708
709
  }
709
710
  if (args.estimate) {
710
711
  await updateProjectItemField(client, fieldCache, projectItemId, "Estimate", args.estimate, projectNumber);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ralph-hero-mcp-server",
3
- "version": "2.4.102",
3
+ "version": "2.4.108",
4
4
  "description": "MCP server for GitHub Projects V2 - Ralph workflow automation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",