@muzzamil-khan/redmine-agent-mcp 1.0.0 → 1.2.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.
- package/dist/config/env.d.ts +2 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +8 -0
- package/dist/config/env.js.map +1 -1
- package/dist/mcp/server.js +719 -147
- package/dist/mcp/server.js.map +1 -1
- package/dist/services/assigneeDirectory.d.ts +34 -0
- package/dist/services/assigneeDirectory.d.ts.map +1 -0
- package/dist/services/assigneeDirectory.js +138 -0
- package/dist/services/assigneeDirectory.js.map +1 -0
- package/dist/services/googleSheets.d.ts +32 -0
- package/dist/services/googleSheets.d.ts.map +1 -0
- package/dist/services/googleSheets.js +109 -0
- package/dist/services/googleSheets.js.map +1 -0
- package/dist/services/redmine.d.ts +72 -0
- package/dist/services/redmine.d.ts.map +1 -1
- package/dist/services/redmine.js +141 -0
- package/dist/services/redmine.js.map +1 -1
- package/dist/services/redmineConfig.d.ts +90 -0
- package/dist/services/redmineConfig.d.ts.map +1 -0
- package/dist/services/redmineConfig.js +300 -0
- package/dist/services/redmineConfig.js.map +1 -0
- package/dist/spreadsheet/batchColumnMapping.d.ts +93 -0
- package/dist/spreadsheet/batchColumnMapping.d.ts.map +1 -0
- package/dist/spreadsheet/batchColumnMapping.js +666 -0
- package/dist/spreadsheet/batchColumnMapping.js.map +1 -0
- package/dist/spreadsheet/batchCreationTypes.d.ts +61 -0
- package/dist/spreadsheet/batchCreationTypes.d.ts.map +1 -0
- package/dist/spreadsheet/batchCreationTypes.js +18 -0
- package/dist/spreadsheet/batchCreationTypes.js.map +1 -0
- package/dist/spreadsheet/batchIssueConfig.d.ts +26 -0
- package/dist/spreadsheet/batchIssueConfig.d.ts.map +1 -0
- package/dist/spreadsheet/batchIssueConfig.js +106 -0
- package/dist/spreadsheet/batchIssueConfig.js.map +1 -0
- package/dist/spreadsheet/batchPreviewFormat.d.ts +41 -0
- package/dist/spreadsheet/batchPreviewFormat.d.ts.map +1 -0
- package/dist/spreadsheet/batchPreviewFormat.js +194 -0
- package/dist/spreadsheet/batchPreviewFormat.js.map +1 -0
- package/dist/spreadsheet/batchSheetHeuristics.d.ts +13 -0
- package/dist/spreadsheet/batchSheetHeuristics.d.ts.map +1 -0
- package/dist/spreadsheet/batchSheetHeuristics.js +30 -0
- package/dist/spreadsheet/batchSheetHeuristics.js.map +1 -0
- package/dist/spreadsheet/bulkUpdateExtract.d.ts +14 -0
- package/dist/spreadsheet/bulkUpdateExtract.d.ts.map +1 -0
- package/dist/spreadsheet/bulkUpdateExtract.js +83 -0
- package/dist/spreadsheet/bulkUpdateExtract.js.map +1 -0
- package/dist/spreadsheet/csvUtils.d.ts +14 -0
- package/dist/spreadsheet/csvUtils.d.ts.map +1 -0
- package/dist/spreadsheet/csvUtils.js +113 -0
- package/dist/spreadsheet/csvUtils.js.map +1 -0
- package/dist/spreadsheet/extractRawBatchSheet.d.ts +14 -0
- package/dist/spreadsheet/extractRawBatchSheet.d.ts.map +1 -0
- package/dist/spreadsheet/extractRawBatchSheet.js +33 -0
- package/dist/spreadsheet/extractRawBatchSheet.js.map +1 -0
- package/dist/spreadsheet/featureRow.d.ts +15 -0
- package/dist/spreadsheet/featureRow.d.ts.map +1 -0
- package/dist/spreadsheet/featureRow.js +119 -0
- package/dist/spreadsheet/featureRow.js.map +1 -0
- package/dist/spreadsheet/parseBatchCreationCsv.d.ts +8 -0
- package/dist/spreadsheet/parseBatchCreationCsv.d.ts.map +1 -0
- package/dist/spreadsheet/parseBatchCreationCsv.js +22 -0
- package/dist/spreadsheet/parseBatchCreationCsv.js.map +1 -0
- package/dist/spreadsheet/parseBatchCreationCsvV1.d.ts +3 -0
- package/dist/spreadsheet/parseBatchCreationCsvV1.d.ts.map +1 -0
- package/dist/spreadsheet/parseBatchCreationCsvV1.js +226 -0
- package/dist/spreadsheet/parseBatchCreationCsvV1.js.map +1 -0
- package/dist/spreadsheet/parseBatchCreationCsvV2.d.ts +4 -0
- package/dist/spreadsheet/parseBatchCreationCsvV2.d.ts.map +1 -0
- package/dist/spreadsheet/parseBatchCreationCsvV2.js +180 -0
- package/dist/spreadsheet/parseBatchCreationCsvV2.js.map +1 -0
- package/dist/spreadsheet/redmineIssueCell.d.ts +38 -0
- package/dist/spreadsheet/redmineIssueCell.d.ts.map +1 -0
- package/dist/spreadsheet/redmineIssueCell.js +176 -0
- package/dist/spreadsheet/redmineIssueCell.js.map +1 -0
- package/dist/spreadsheet/sheetColumnMap.d.ts +38 -0
- package/dist/spreadsheet/sheetColumnMap.d.ts.map +1 -0
- package/dist/spreadsheet/sheetColumnMap.js +75 -0
- package/dist/spreadsheet/sheetColumnMap.js.map +1 -0
- package/dist/spreadsheet/sheetGridToCsv.d.ts +28 -0
- package/dist/spreadsheet/sheetGridToCsv.d.ts.map +1 -0
- package/dist/spreadsheet/sheetGridToCsv.js +88 -0
- package/dist/spreadsheet/sheetGridToCsv.js.map +1 -0
- package/dist/spreadsheet/sheetRedmineFields.d.ts +7 -0
- package/dist/spreadsheet/sheetRedmineFields.d.ts.map +1 -0
- package/dist/spreadsheet/sheetRedmineFields.js +22 -0
- package/dist/spreadsheet/sheetRedmineFields.js.map +1 -0
- package/dist/spreadsheet/sheetWriteBack.d.ts +27 -0
- package/dist/spreadsheet/sheetWriteBack.d.ts.map +1 -0
- package/dist/spreadsheet/sheetWriteBack.js +90 -0
- package/dist/spreadsheet/sheetWriteBack.js.map +1 -0
- package/dist/workflows/batchCreateIssuesWorkflow.d.ts +69 -0
- package/dist/workflows/batchCreateIssuesWorkflow.d.ts.map +1 -0
- package/dist/workflows/batchCreateIssuesWorkflow.js +1102 -0
- package/dist/workflows/batchCreateIssuesWorkflow.js.map +1 -0
- package/dist/workflows/bulkUpdateIssuesWorkflow.d.ts +21 -0
- package/dist/workflows/bulkUpdateIssuesWorkflow.d.ts.map +1 -0
- package/dist/workflows/bulkUpdateIssuesWorkflow.js +384 -0
- package/dist/workflows/bulkUpdateIssuesWorkflow.js.map +1 -0
- package/dist/workflows/createIssueWorkflow.d.ts +41 -0
- package/dist/workflows/createIssueWorkflow.d.ts.map +1 -0
- package/dist/workflows/createIssueWorkflow.js +697 -0
- package/dist/workflows/createIssueWorkflow.js.map +1 -0
- package/dist/workflows/getAllUsersWorkflow.d.ts +27 -0
- package/dist/workflows/getAllUsersWorkflow.d.ts.map +1 -0
- package/dist/workflows/getAllUsersWorkflow.js +48 -0
- package/dist/workflows/getAllUsersWorkflow.js.map +1 -0
- package/dist/workflows/issueCreationHelpers.d.ts +54 -0
- package/dist/workflows/issueCreationHelpers.d.ts.map +1 -0
- package/dist/workflows/issueCreationHelpers.js +272 -0
- package/dist/workflows/issueCreationHelpers.js.map +1 -0
- package/dist/workflows/logTimeWorkflow.d.ts +6 -1
- package/dist/workflows/logTimeWorkflow.d.ts.map +1 -1
- package/dist/workflows/logTimeWorkflow.js +139 -20
- package/dist/workflows/logTimeWorkflow.js.map +1 -1
- package/dist/workflows/sheetToCsvWorkflow.d.ts +15 -0
- package/dist/workflows/sheetToCsvWorkflow.d.ts.map +1 -0
- package/dist/workflows/sheetToCsvWorkflow.js +65 -0
- package/dist/workflows/sheetToCsvWorkflow.js.map +1 -0
- package/package.json +2 -2
package/dist/services/redmine.js
CHANGED
|
@@ -48,6 +48,20 @@ export async function getCurrentUser() {
|
|
|
48
48
|
const response = await redmine.get("/users/current.json");
|
|
49
49
|
return response.data;
|
|
50
50
|
}
|
|
51
|
+
export async function getCurrentUserWithMemberships() {
|
|
52
|
+
const response = await redmine.get("/users/current.json", {
|
|
53
|
+
params: { include: "memberships" },
|
|
54
|
+
});
|
|
55
|
+
return response.data;
|
|
56
|
+
}
|
|
57
|
+
export async function getRolePermissions(roleId) {
|
|
58
|
+
const response = await redmine.get(`/roles/${roleId}.json`);
|
|
59
|
+
return response.data.role ?? response.data;
|
|
60
|
+
}
|
|
61
|
+
export async function getIssueStatuses() {
|
|
62
|
+
const response = await redmine.get("/issue_statuses.json");
|
|
63
|
+
return response.data;
|
|
64
|
+
}
|
|
51
65
|
export async function getIssueById(issueId) {
|
|
52
66
|
const response = await redmine.get(`/issues/${issueId}.json`);
|
|
53
67
|
return response.data;
|
|
@@ -136,4 +150,131 @@ export async function updateTimeEntryComment(timeEntryId, comments, entry) {
|
|
|
136
150
|
});
|
|
137
151
|
return response.data;
|
|
138
152
|
}
|
|
153
|
+
export async function getTrackers() {
|
|
154
|
+
const response = await redmine.get("/trackers.json");
|
|
155
|
+
return response.data;
|
|
156
|
+
}
|
|
157
|
+
export async function getIssuePriorities() {
|
|
158
|
+
const response = await redmine.get("/enumerations/issue_priorities.json");
|
|
159
|
+
return response.data;
|
|
160
|
+
}
|
|
161
|
+
export async function getTimeEntryActivities() {
|
|
162
|
+
const response = await redmine.get("/enumerations/time_entry_activities.json");
|
|
163
|
+
return response.data;
|
|
164
|
+
}
|
|
165
|
+
export async function getUsers(params) {
|
|
166
|
+
const response = await redmine.get("/users.json", {
|
|
167
|
+
params: {
|
|
168
|
+
...(params?.name ? { name: params.name } : {}),
|
|
169
|
+
...(params?.status !== undefined ? { status: params.status } : {}),
|
|
170
|
+
limit: params?.limit ?? 100,
|
|
171
|
+
offset: params?.offset ?? 0,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
return response.data;
|
|
175
|
+
}
|
|
176
|
+
/** Paginated fetch of all users visible to the API key (for assignee matching). */
|
|
177
|
+
export async function getAllUsers(options) {
|
|
178
|
+
const limit = 100;
|
|
179
|
+
let offset = 0;
|
|
180
|
+
const all = [];
|
|
181
|
+
const statusParam = options?.status === "all" ? undefined : 1;
|
|
182
|
+
for (;;) {
|
|
183
|
+
const data = await getUsers({
|
|
184
|
+
limit,
|
|
185
|
+
offset,
|
|
186
|
+
...(statusParam !== undefined ? { status: statusParam } : {}),
|
|
187
|
+
});
|
|
188
|
+
const page = (data.users ?? []);
|
|
189
|
+
all.push(...page);
|
|
190
|
+
const total = data.total_count ?? page.length;
|
|
191
|
+
offset += page.length;
|
|
192
|
+
if (page.length === 0 || offset >= total)
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
return all;
|
|
196
|
+
}
|
|
197
|
+
export async function getProjectVersions(projectId) {
|
|
198
|
+
const response = await redmine.get(`/projects/${projectId}/versions.json`);
|
|
199
|
+
return response.data;
|
|
200
|
+
}
|
|
201
|
+
export async function createProjectVersion(projectId, name) {
|
|
202
|
+
const response = await redmine.post(`/projects/${projectId}/versions.json`, { version: { name: name.trim() } });
|
|
203
|
+
const version = response.data.version;
|
|
204
|
+
return { id: version.id, name: version.name };
|
|
205
|
+
}
|
|
206
|
+
export async function getCustomFields() {
|
|
207
|
+
const response = await redmine.get("/custom_fields.json");
|
|
208
|
+
return response.data;
|
|
209
|
+
}
|
|
210
|
+
export async function updateIssue(params) {
|
|
211
|
+
const response = await redmine.put(`/issues/${params.issueId}.json`, {
|
|
212
|
+
issue: {
|
|
213
|
+
...(params.trackerId !== undefined
|
|
214
|
+
? { tracker_id: params.trackerId }
|
|
215
|
+
: {}),
|
|
216
|
+
...(params.customFields && params.customFields.length > 0
|
|
217
|
+
? { custom_fields: params.customFields }
|
|
218
|
+
: {}),
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
return response.data;
|
|
222
|
+
}
|
|
223
|
+
/** Paginated list of all issues in a project (any status). */
|
|
224
|
+
export async function listProjectIssues(projectId) {
|
|
225
|
+
const limit = 100;
|
|
226
|
+
let offset = 0;
|
|
227
|
+
const all = [];
|
|
228
|
+
for (;;) {
|
|
229
|
+
const data = await getIssues({
|
|
230
|
+
projectId: String(projectId),
|
|
231
|
+
statusId: "*",
|
|
232
|
+
limit,
|
|
233
|
+
offset,
|
|
234
|
+
});
|
|
235
|
+
const page = (data.issues ?? []);
|
|
236
|
+
all.push(...page);
|
|
237
|
+
if (page.length < limit)
|
|
238
|
+
break;
|
|
239
|
+
offset += page.length;
|
|
240
|
+
}
|
|
241
|
+
return all;
|
|
242
|
+
}
|
|
243
|
+
export async function patchIssueFields(params) {
|
|
244
|
+
const issue = {};
|
|
245
|
+
if (params.description !== undefined) {
|
|
246
|
+
issue.description = params.description;
|
|
247
|
+
}
|
|
248
|
+
if (params.statusId !== undefined) {
|
|
249
|
+
issue.status_id = params.statusId;
|
|
250
|
+
}
|
|
251
|
+
const response = await redmine.put(`/issues/${params.issueId}.json`, {
|
|
252
|
+
issue,
|
|
253
|
+
});
|
|
254
|
+
return response.data;
|
|
255
|
+
}
|
|
256
|
+
export async function createIssue(params) {
|
|
257
|
+
const response = await redmine.post("/issues.json", {
|
|
258
|
+
issue: {
|
|
259
|
+
project_id: params.projectId,
|
|
260
|
+
tracker_id: params.trackerId,
|
|
261
|
+
subject: params.subject,
|
|
262
|
+
...(params.description ? { description: params.description } : {}),
|
|
263
|
+
status_id: params.statusId,
|
|
264
|
+
priority_id: params.priorityId,
|
|
265
|
+
...(params.assignedToId ? { assigned_to_id: params.assignedToId } : {}),
|
|
266
|
+
...(params.fixedVersionId ? { fixed_version_id: params.fixedVersionId } : {}),
|
|
267
|
+
...(params.parentIssueId ? { parent_issue_id: params.parentIssueId } : {}),
|
|
268
|
+
...(params.startDate ? { start_date: params.startDate } : {}),
|
|
269
|
+
...(params.dueDate ? { due_date: params.dueDate } : {}),
|
|
270
|
+
...(params.estimatedHours !== undefined
|
|
271
|
+
? { estimated_hours: params.estimatedHours }
|
|
272
|
+
: {}),
|
|
273
|
+
...(params.customFields && params.customFields.length > 0
|
|
274
|
+
? { custom_fields: params.customFields }
|
|
275
|
+
: {}),
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
return response.data;
|
|
279
|
+
}
|
|
139
280
|
//# sourceMappingURL=redmine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redmine.js","sourceRoot":"","sources":["../../src/services/redmine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"redmine.js","sourceRoot":"","sources":["../../src/services/redmine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export type RedmineEnumeration = {
|
|
2
|
+
id: number;
|
|
3
|
+
name: string;
|
|
4
|
+
is_default?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type RedmineConfig = {
|
|
7
|
+
fetchedAt: number;
|
|
8
|
+
activities: RedmineEnumeration[];
|
|
9
|
+
trackers: RedmineEnumeration[];
|
|
10
|
+
priorities: RedmineEnumeration[];
|
|
11
|
+
statuses: RedmineEnumeration[];
|
|
12
|
+
defaultActivityId: number;
|
|
13
|
+
defaultActivityName: string | null;
|
|
14
|
+
trackerAliases: Record<string, string>;
|
|
15
|
+
priorityAliases: Record<string, string>;
|
|
16
|
+
statusAliases: Record<string, string>;
|
|
17
|
+
};
|
|
18
|
+
/** Lowercase alias → canonical Redmine tracker name. */
|
|
19
|
+
export declare const TRACKER_ALIASES: Record<string, string>;
|
|
20
|
+
export declare const PRIORITY_ALIASES: Record<string, string>;
|
|
21
|
+
/** Lowercase sheet label → canonical Redmine status name. */
|
|
22
|
+
export declare const STATUS_ALIASES: Record<string, string>;
|
|
23
|
+
export declare function applyTrackerAlias(input: string): string;
|
|
24
|
+
export declare function applyPriorityAlias(input: string): string;
|
|
25
|
+
export declare function applyStatusAlias(input: string): string;
|
|
26
|
+
/** Parse "123 — Name" or plain name/id from intake selection. */
|
|
27
|
+
export declare function parseEnumerationSelection(value: string): string;
|
|
28
|
+
export declare function resolveTracker(input: string, config: RedmineConfig): RedmineEnumeration | undefined;
|
|
29
|
+
/** Acronym from config tracker name, e.g. "Change Request" → "CR". */
|
|
30
|
+
export declare function trackerNameAcronym(name: string): string;
|
|
31
|
+
/** Trackers that receive the Steps to Reproduce custom field on batch create. */
|
|
32
|
+
export declare const STEPS_TO_REPRODUCE_TRACKER_NAMES: readonly ["Bug", "Task"];
|
|
33
|
+
export declare function trackerNeedsStepsToReproduce(tracker: {
|
|
34
|
+
id: number;
|
|
35
|
+
name: string;
|
|
36
|
+
}): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve a sheet label or "id — name" to a live config tracker.
|
|
39
|
+
* Matches: numeric id, exact name (case-insensitive), acronym, then tracker aliases.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveTrackerFromConfig(input: string, config: RedmineConfig): RedmineEnumeration | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve priority from config without alias tables (exact name or id only).
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolvePriorityFromConfig(input: string, config: RedmineConfig): RedmineEnumeration | undefined;
|
|
46
|
+
export declare function resolveStatus(input: string, config: RedmineConfig): RedmineEnumeration | undefined;
|
|
47
|
+
export declare function resolvePriority(input: string, config: RedmineConfig): RedmineEnumeration | undefined;
|
|
48
|
+
export declare function resolveActivityFromPairAnswer(answer: string, config: RedmineConfig): number | undefined;
|
|
49
|
+
export declare function resolveActivity(input: string | number | undefined, config: RedmineConfig): RedmineEnumeration | undefined;
|
|
50
|
+
export declare function enumerationOptions(rows: RedmineEnumeration[]): string[];
|
|
51
|
+
export declare function formatEnumerationLine(label: string, rows: RedmineEnumeration[]): string;
|
|
52
|
+
export declare function formatConfigForInstructions(config: RedmineConfig): string;
|
|
53
|
+
export declare function loadRedmineConfig(options?: {
|
|
54
|
+
force?: boolean;
|
|
55
|
+
}): Promise<RedmineConfig>;
|
|
56
|
+
/** Resolved default activity for time logging (validates REDMINE_ACTIVITY_ID against API). */
|
|
57
|
+
export declare function getResolvedDefaultActivity(): Promise<{
|
|
58
|
+
activityId: number;
|
|
59
|
+
activityName: string | null;
|
|
60
|
+
}>;
|
|
61
|
+
export declare function defaultActivityOption(config: RedmineConfig): string;
|
|
62
|
+
/** How activities/trackers/etc. were loaded for this MCP session. */
|
|
63
|
+
export declare function configCacheMeta(config: RedmineConfig): {
|
|
64
|
+
source: "cache";
|
|
65
|
+
fetchedAt: number;
|
|
66
|
+
cacheAgeMs: number;
|
|
67
|
+
cacheTtlMs: number;
|
|
68
|
+
refreshed: boolean;
|
|
69
|
+
};
|
|
70
|
+
export declare function configOptionsPayload(config: RedmineConfig): {
|
|
71
|
+
activities: RedmineEnumeration[];
|
|
72
|
+
trackers: RedmineEnumeration[];
|
|
73
|
+
priorities: RedmineEnumeration[];
|
|
74
|
+
statuses: RedmineEnumeration[];
|
|
75
|
+
trackerOptions: string[];
|
|
76
|
+
statusOptions: string[];
|
|
77
|
+
priorityOptions: string[];
|
|
78
|
+
activityOptions: string[];
|
|
79
|
+
defaultActivityId: number;
|
|
80
|
+
defaultActivityName: string | null;
|
|
81
|
+
trackerAliases: Record<string, string>;
|
|
82
|
+
priorityAliases: Record<string, string>;
|
|
83
|
+
statusAliases: Record<string, string>;
|
|
84
|
+
source: "cache";
|
|
85
|
+
fetchedAt: number;
|
|
86
|
+
cacheAgeMs: number;
|
|
87
|
+
cacheTtlMs: number;
|
|
88
|
+
refreshed: boolean;
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=redmineConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redmineConfig.d.ts","sourceRoot":"","sources":["../../src/services/redmineConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { getTimeEntryDefaults } from "../config/env.js";
|
|
2
|
+
import { getIssuePriorities, getIssueStatuses, getTimeEntryActivities, getTrackers, } from "./redmine.js";
|
|
3
|
+
const CACHE_MS = 5 * 60_000;
|
|
4
|
+
/** Lowercase alias → canonical Redmine tracker name. */
|
|
5
|
+
export const TRACKER_ALIASES = {
|
|
6
|
+
cr: "Change Request",
|
|
7
|
+
bug: "Bug",
|
|
8
|
+
task: "Task",
|
|
9
|
+
ticket: "Ticket",
|
|
10
|
+
"user story": "User Story",
|
|
11
|
+
story: "User Story",
|
|
12
|
+
feature: "Feature",
|
|
13
|
+
};
|
|
14
|
+
export const PRIORITY_ALIASES = {
|
|
15
|
+
medium: "Normal",
|
|
16
|
+
highest: "Immediate",
|
|
17
|
+
lowest: "Low",
|
|
18
|
+
};
|
|
19
|
+
/** Lowercase sheet label → canonical Redmine status name. */
|
|
20
|
+
export const STATUS_ALIASES = {
|
|
21
|
+
"to do": "New",
|
|
22
|
+
"on hold": "Waiting for Support",
|
|
23
|
+
review: "Code Review",
|
|
24
|
+
"dev done": "Ready For QA",
|
|
25
|
+
done: "Closed",
|
|
26
|
+
"deployed on preprod": "Pre-production",
|
|
27
|
+
"deplyed on preprod": "Pre-production",
|
|
28
|
+
"ready for preprod": "Move to preprod",
|
|
29
|
+
"ready for pre-prod": "Move to preprod",
|
|
30
|
+
"verified preprod": "Ok for Release",
|
|
31
|
+
"verified pre-prod": "Ok for Release",
|
|
32
|
+
};
|
|
33
|
+
let cached = null;
|
|
34
|
+
function parseEnumerations(rows) {
|
|
35
|
+
return (rows ?? [])
|
|
36
|
+
.filter((r) => Boolean(r.id && r.name))
|
|
37
|
+
.map((r) => ({
|
|
38
|
+
id: r.id,
|
|
39
|
+
name: r.name.trim(),
|
|
40
|
+
...(r.is_default !== undefined ? { is_default: r.is_default } : {}),
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
export function applyTrackerAlias(input) {
|
|
44
|
+
const trimmed = input.trim();
|
|
45
|
+
if (!trimmed)
|
|
46
|
+
return trimmed;
|
|
47
|
+
return TRACKER_ALIASES[trimmed.toLowerCase()] ?? trimmed;
|
|
48
|
+
}
|
|
49
|
+
export function applyPriorityAlias(input) {
|
|
50
|
+
const trimmed = input.trim();
|
|
51
|
+
if (!trimmed)
|
|
52
|
+
return trimmed;
|
|
53
|
+
return PRIORITY_ALIASES[trimmed.toLowerCase()] ?? trimmed;
|
|
54
|
+
}
|
|
55
|
+
function normalizeStatusAliasKey(input) {
|
|
56
|
+
return input.trim().toLowerCase().replace(/\s+/g, " ");
|
|
57
|
+
}
|
|
58
|
+
export function applyStatusAlias(input) {
|
|
59
|
+
const trimmed = input.trim();
|
|
60
|
+
if (!trimmed)
|
|
61
|
+
return trimmed;
|
|
62
|
+
return STATUS_ALIASES[normalizeStatusAliasKey(trimmed)] ?? trimmed;
|
|
63
|
+
}
|
|
64
|
+
/** Parse "123 — Name" or plain name/id from intake selection. */
|
|
65
|
+
export function parseEnumerationSelection(value) {
|
|
66
|
+
const raw = value.trim();
|
|
67
|
+
const idPrefix = /^(\d+)\s*[-—]\s*/.exec(raw);
|
|
68
|
+
if (idPrefix) {
|
|
69
|
+
return idPrefix[1] ?? raw;
|
|
70
|
+
}
|
|
71
|
+
return raw;
|
|
72
|
+
}
|
|
73
|
+
function lookupByName(rows, name) {
|
|
74
|
+
const target = name.trim().toLowerCase();
|
|
75
|
+
return rows.find((row) => row.name.trim().toLowerCase() === target);
|
|
76
|
+
}
|
|
77
|
+
function lookupById(rows, id) {
|
|
78
|
+
return rows.find((row) => row.id === id);
|
|
79
|
+
}
|
|
80
|
+
export function resolveTracker(input, config) {
|
|
81
|
+
const raw = parseEnumerationSelection(input);
|
|
82
|
+
const asId = Number(raw);
|
|
83
|
+
if (Number.isInteger(asId) && asId > 0) {
|
|
84
|
+
return lookupById(config.trackers, asId);
|
|
85
|
+
}
|
|
86
|
+
const aliased = applyTrackerAlias(raw);
|
|
87
|
+
return lookupByName(config.trackers, aliased);
|
|
88
|
+
}
|
|
89
|
+
/** Acronym from config tracker name, e.g. "Change Request" → "CR". */
|
|
90
|
+
export function trackerNameAcronym(name) {
|
|
91
|
+
return name
|
|
92
|
+
.split(/\s+/)
|
|
93
|
+
.filter(Boolean)
|
|
94
|
+
.map((word) => word[0]?.toUpperCase() ?? "")
|
|
95
|
+
.join("");
|
|
96
|
+
}
|
|
97
|
+
/** Trackers that receive the Steps to Reproduce custom field on batch create. */
|
|
98
|
+
export const STEPS_TO_REPRODUCE_TRACKER_NAMES = ["Bug", "Task"];
|
|
99
|
+
export function trackerNeedsStepsToReproduce(tracker) {
|
|
100
|
+
const normalized = tracker.name.trim().toLowerCase();
|
|
101
|
+
return STEPS_TO_REPRODUCE_TRACKER_NAMES.some((name) => name.toLowerCase() === normalized);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Resolve a sheet label or "id — name" to a live config tracker.
|
|
105
|
+
* Matches: numeric id, exact name (case-insensitive), acronym, then tracker aliases.
|
|
106
|
+
*/
|
|
107
|
+
export function resolveTrackerFromConfig(input, config) {
|
|
108
|
+
const raw = parseEnumerationSelection(input.trim());
|
|
109
|
+
if (!raw)
|
|
110
|
+
return undefined;
|
|
111
|
+
const asId = Number(raw);
|
|
112
|
+
if (Number.isInteger(asId) && asId > 0) {
|
|
113
|
+
return lookupById(config.trackers, asId);
|
|
114
|
+
}
|
|
115
|
+
const byName = lookupByName(config.trackers, raw);
|
|
116
|
+
if (byName)
|
|
117
|
+
return byName;
|
|
118
|
+
const upper = raw.toUpperCase();
|
|
119
|
+
const byAcronym = config.trackers.find((tracker) => trackerNameAcronym(tracker.name) === upper);
|
|
120
|
+
if (byAcronym)
|
|
121
|
+
return byAcronym;
|
|
122
|
+
const aliased = applyTrackerAlias(raw);
|
|
123
|
+
if (aliased !== raw) {
|
|
124
|
+
return lookupByName(config.trackers, aliased);
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Resolve priority from config without alias tables (exact name or id only).
|
|
130
|
+
*/
|
|
131
|
+
export function resolvePriorityFromConfig(input, config) {
|
|
132
|
+
const raw = parseEnumerationSelection(input.trim());
|
|
133
|
+
if (!raw)
|
|
134
|
+
return undefined;
|
|
135
|
+
const asId = Number(raw);
|
|
136
|
+
if (Number.isInteger(asId) && asId > 0) {
|
|
137
|
+
return lookupById(config.priorities, asId);
|
|
138
|
+
}
|
|
139
|
+
return lookupByName(config.priorities, raw);
|
|
140
|
+
}
|
|
141
|
+
export function resolveStatus(input, config) {
|
|
142
|
+
const raw = parseEnumerationSelection(input);
|
|
143
|
+
const asId = Number(raw);
|
|
144
|
+
if (Number.isInteger(asId) && asId > 0) {
|
|
145
|
+
return lookupById(config.statuses, asId);
|
|
146
|
+
}
|
|
147
|
+
const aliased = applyStatusAlias(raw);
|
|
148
|
+
return lookupByName(config.statuses, aliased);
|
|
149
|
+
}
|
|
150
|
+
export function resolvePriority(input, config) {
|
|
151
|
+
const raw = parseEnumerationSelection(input);
|
|
152
|
+
const asId = Number(raw);
|
|
153
|
+
if (Number.isInteger(asId) && asId > 0) {
|
|
154
|
+
return lookupById(config.priorities, asId);
|
|
155
|
+
}
|
|
156
|
+
const aliased = applyPriorityAlias(raw);
|
|
157
|
+
return lookupByName(config.priorities, aliased);
|
|
158
|
+
}
|
|
159
|
+
export function resolveActivityFromPairAnswer(answer, config) {
|
|
160
|
+
const trimmed = answer.trim();
|
|
161
|
+
if (!trimmed) {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
if (trimmed.toLowerCase() === "default" || /^default\b/i.test(trimmed)) {
|
|
165
|
+
return config.defaultActivityId;
|
|
166
|
+
}
|
|
167
|
+
return resolveActivity(trimmed, config)?.id;
|
|
168
|
+
}
|
|
169
|
+
export function resolveActivity(input, config) {
|
|
170
|
+
if (input === undefined) {
|
|
171
|
+
return lookupById(config.activities, config.defaultActivityId);
|
|
172
|
+
}
|
|
173
|
+
if (typeof input === "number") {
|
|
174
|
+
return lookupById(config.activities, input);
|
|
175
|
+
}
|
|
176
|
+
const raw = parseEnumerationSelection(String(input));
|
|
177
|
+
const asId = Number(raw);
|
|
178
|
+
if (Number.isInteger(asId) && asId > 0) {
|
|
179
|
+
return lookupById(config.activities, asId);
|
|
180
|
+
}
|
|
181
|
+
return lookupByName(config.activities, raw);
|
|
182
|
+
}
|
|
183
|
+
export function enumerationOptions(rows) {
|
|
184
|
+
return rows.map((r) => `${r.id} — ${r.name}`);
|
|
185
|
+
}
|
|
186
|
+
export function formatEnumerationLine(label, rows) {
|
|
187
|
+
if (rows.length === 0) {
|
|
188
|
+
return `${label}: (none loaded)`;
|
|
189
|
+
}
|
|
190
|
+
return `${label}: ${rows.map((r) => `${r.id}=${r.name}`).join(", ")}`;
|
|
191
|
+
}
|
|
192
|
+
export function formatConfigForInstructions(config) {
|
|
193
|
+
const aliasLine = Object.entries(TRACKER_ALIASES)
|
|
194
|
+
.map(([k, v]) => `${k}→${v}`)
|
|
195
|
+
.join(", ");
|
|
196
|
+
const activityDefault = config.defaultActivityName
|
|
197
|
+
? `${config.defaultActivityId} (${config.defaultActivityName})`
|
|
198
|
+
: String(config.defaultActivityId);
|
|
199
|
+
return [
|
|
200
|
+
"Redmine config (loaded at MCP connect; TTL cache refreshed on tool calls):",
|
|
201
|
+
formatEnumerationLine("Activities", config.activities),
|
|
202
|
+
`Default time-log activity: ${activityDefault} (REDMINE_ACTIVITY_ID)`,
|
|
203
|
+
formatEnumerationLine("Trackers", config.trackers),
|
|
204
|
+
`Tracker aliases: ${aliasLine}`,
|
|
205
|
+
formatEnumerationLine("Priorities", config.priorities),
|
|
206
|
+
"Priority aliases: medium→Normal, highest→Immediate, lowest→Low",
|
|
207
|
+
formatEnumerationLine("Statuses", config.statuses),
|
|
208
|
+
`Status aliases: ${Object.entries(STATUS_ALIASES)
|
|
209
|
+
.map(([k, v]) => `${k}→${v}`)
|
|
210
|
+
.join(", ")}`,
|
|
211
|
+
].join("\n");
|
|
212
|
+
}
|
|
213
|
+
async function fetchRedmineConfig() {
|
|
214
|
+
const [activitiesData, trackersData, prioritiesData, statusesData] = await Promise.all([
|
|
215
|
+
getTimeEntryActivities(),
|
|
216
|
+
getTrackers(),
|
|
217
|
+
getIssuePriorities(),
|
|
218
|
+
getIssueStatuses(),
|
|
219
|
+
]);
|
|
220
|
+
const activities = parseEnumerations(activitiesData.time_entry_activities);
|
|
221
|
+
const trackers = parseEnumerations(trackersData.trackers);
|
|
222
|
+
const priorities = parseEnumerations(prioritiesData.issue_priorities);
|
|
223
|
+
const statuses = parseEnumerations(statusesData.issue_statuses);
|
|
224
|
+
const { activityId: envActivityId } = getTimeEntryDefaults();
|
|
225
|
+
let defaultActivityId = envActivityId;
|
|
226
|
+
let defaultActivityName = lookupById(activities, envActivityId)?.name ?? null;
|
|
227
|
+
if (!defaultActivityName) {
|
|
228
|
+
const fallback = activities.find((a) => a.is_default) ?? activities[0];
|
|
229
|
+
if (fallback) {
|
|
230
|
+
defaultActivityId = fallback.id;
|
|
231
|
+
defaultActivityName = fallback.name;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
fetchedAt: Date.now(),
|
|
236
|
+
activities,
|
|
237
|
+
trackers,
|
|
238
|
+
priorities,
|
|
239
|
+
statuses,
|
|
240
|
+
defaultActivityId,
|
|
241
|
+
defaultActivityName,
|
|
242
|
+
trackerAliases: { ...TRACKER_ALIASES },
|
|
243
|
+
priorityAliases: { ...PRIORITY_ALIASES },
|
|
244
|
+
statusAliases: { ...STATUS_ALIASES },
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
export async function loadRedmineConfig(options) {
|
|
248
|
+
if (!options?.force &&
|
|
249
|
+
cached &&
|
|
250
|
+
Date.now() - cached.fetchedAt < CACHE_MS) {
|
|
251
|
+
return cached;
|
|
252
|
+
}
|
|
253
|
+
cached = await fetchRedmineConfig();
|
|
254
|
+
return cached;
|
|
255
|
+
}
|
|
256
|
+
/** Resolved default activity for time logging (validates REDMINE_ACTIVITY_ID against API). */
|
|
257
|
+
export async function getResolvedDefaultActivity() {
|
|
258
|
+
const config = await loadRedmineConfig();
|
|
259
|
+
const activity = resolveActivity(config.defaultActivityId, config);
|
|
260
|
+
return {
|
|
261
|
+
activityId: activity?.id ?? config.defaultActivityId,
|
|
262
|
+
activityName: activity?.name ?? config.defaultActivityName,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
export function defaultActivityOption(config) {
|
|
266
|
+
if (config.defaultActivityName) {
|
|
267
|
+
return `default — ${config.defaultActivityName}`;
|
|
268
|
+
}
|
|
269
|
+
return "default";
|
|
270
|
+
}
|
|
271
|
+
/** How activities/trackers/etc. were loaded for this MCP session. */
|
|
272
|
+
export function configCacheMeta(config) {
|
|
273
|
+
const cacheAgeMs = Date.now() - config.fetchedAt;
|
|
274
|
+
return {
|
|
275
|
+
source: "cache",
|
|
276
|
+
fetchedAt: config.fetchedAt,
|
|
277
|
+
cacheAgeMs,
|
|
278
|
+
cacheTtlMs: CACHE_MS,
|
|
279
|
+
refreshed: cacheAgeMs < 1000,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
export function configOptionsPayload(config) {
|
|
283
|
+
return {
|
|
284
|
+
...configCacheMeta(config),
|
|
285
|
+
activities: config.activities,
|
|
286
|
+
trackers: config.trackers,
|
|
287
|
+
priorities: config.priorities,
|
|
288
|
+
statuses: config.statuses,
|
|
289
|
+
trackerOptions: enumerationOptions(config.trackers),
|
|
290
|
+
statusOptions: enumerationOptions(config.statuses),
|
|
291
|
+
priorityOptions: enumerationOptions(config.priorities),
|
|
292
|
+
activityOptions: enumerationOptions(config.activities),
|
|
293
|
+
defaultActivityId: config.defaultActivityId,
|
|
294
|
+
defaultActivityName: config.defaultActivityName,
|
|
295
|
+
trackerAliases: config.trackerAliases,
|
|
296
|
+
priorityAliases: config.priorityAliases,
|
|
297
|
+
statusAliases: config.statusAliases,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=redmineConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redmineConfig.js","sourceRoot":"","sources":["../../src/services/redmineConfig.ts"],"names":[],"mappings":"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"}
|