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.
package/dist/lib/dashboard.js
CHANGED
|
@@ -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);
|