@prodbeam/mcp 0.1.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 (141) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/LICENSE +21 -0
  3. package/README.md +208 -0
  4. package/dist/CLAUDE.md +7 -0
  5. package/dist/adapters/github-mcp.d.ts +25 -0
  6. package/dist/adapters/github-mcp.d.ts.map +1 -0
  7. package/dist/adapters/github-mcp.js +307 -0
  8. package/dist/adapters/github-mcp.js.map +1 -0
  9. package/dist/adapters/jira-mcp.d.ts +14 -0
  10. package/dist/adapters/jira-mcp.d.ts.map +1 -0
  11. package/dist/adapters/jira-mcp.js +159 -0
  12. package/dist/adapters/jira-mcp.js.map +1 -0
  13. package/dist/cli.d.ts +3 -0
  14. package/dist/cli.d.ts.map +1 -0
  15. package/dist/cli.js +256 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/clients/github-client.d.ts +29 -0
  18. package/dist/clients/github-client.d.ts.map +1 -0
  19. package/dist/clients/github-client.js +116 -0
  20. package/dist/clients/github-client.js.map +1 -0
  21. package/dist/clients/jira-client.d.ts +30 -0
  22. package/dist/clients/jira-client.d.ts.map +1 -0
  23. package/dist/clients/jira-client.js +115 -0
  24. package/dist/clients/jira-client.js.map +1 -0
  25. package/dist/clients/types.d.ts +155 -0
  26. package/dist/clients/types.d.ts.map +1 -0
  27. package/dist/clients/types.js +2 -0
  28. package/dist/clients/types.js.map +1 -0
  29. package/dist/commands/init.d.ts +2 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +426 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/commands/prompt.d.ts +18 -0
  34. package/dist/commands/prompt.d.ts.map +1 -0
  35. package/dist/commands/prompt.js +122 -0
  36. package/dist/commands/prompt.js.map +1 -0
  37. package/dist/config/credentials.d.ts +9 -0
  38. package/dist/config/credentials.d.ts.map +1 -0
  39. package/dist/config/credentials.js +87 -0
  40. package/dist/config/credentials.js.map +1 -0
  41. package/dist/config/paths.d.ts +6 -0
  42. package/dist/config/paths.d.ts.map +1 -0
  43. package/dist/config/paths.js +31 -0
  44. package/dist/config/paths.js.map +1 -0
  45. package/dist/config/team-config.d.ts +204 -0
  46. package/dist/config/team-config.d.ts.map +1 -0
  47. package/dist/config/team-config.js +86 -0
  48. package/dist/config/team-config.js.map +1 -0
  49. package/dist/config/thresholds.d.ts +15 -0
  50. package/dist/config/thresholds.d.ts.map +1 -0
  51. package/dist/config/thresholds.js +18 -0
  52. package/dist/config/thresholds.js.map +1 -0
  53. package/dist/config/types.d.ts +42 -0
  54. package/dist/config/types.d.ts.map +1 -0
  55. package/dist/config/types.js +2 -0
  56. package/dist/config/types.js.map +1 -0
  57. package/dist/discovery/github-discovery.d.ts +4 -0
  58. package/dist/discovery/github-discovery.d.ts.map +1 -0
  59. package/dist/discovery/github-discovery.js +46 -0
  60. package/dist/discovery/github-discovery.js.map +1 -0
  61. package/dist/discovery/jira-discovery.d.ts +4 -0
  62. package/dist/discovery/jira-discovery.d.ts.map +1 -0
  63. package/dist/discovery/jira-discovery.js +68 -0
  64. package/dist/discovery/jira-discovery.js.map +1 -0
  65. package/dist/discovery/types.d.ts +40 -0
  66. package/dist/discovery/types.d.ts.map +1 -0
  67. package/dist/discovery/types.js +2 -0
  68. package/dist/discovery/types.js.map +1 -0
  69. package/dist/generators/metrics-calculator.d.ts +5 -0
  70. package/dist/generators/metrics-calculator.d.ts.map +1 -0
  71. package/dist/generators/metrics-calculator.js +101 -0
  72. package/dist/generators/metrics-calculator.js.map +1 -0
  73. package/dist/generators/report-generator.d.ts +25 -0
  74. package/dist/generators/report-generator.d.ts.map +1 -0
  75. package/dist/generators/report-generator.js +375 -0
  76. package/dist/generators/report-generator.js.map +1 -0
  77. package/dist/generators/sprint-analyzer.d.ts +5 -0
  78. package/dist/generators/sprint-analyzer.d.ts.map +1 -0
  79. package/dist/generators/sprint-analyzer.js +88 -0
  80. package/dist/generators/sprint-analyzer.js.map +1 -0
  81. package/dist/history/history-store.d.ts +15 -0
  82. package/dist/history/history-store.d.ts.map +1 -0
  83. package/dist/history/history-store.js +197 -0
  84. package/dist/history/history-store.js.map +1 -0
  85. package/dist/history/snapshot-builder.d.ts +15 -0
  86. package/dist/history/snapshot-builder.d.ts.map +1 -0
  87. package/dist/history/snapshot-builder.js +45 -0
  88. package/dist/history/snapshot-builder.js.map +1 -0
  89. package/dist/history/types.d.ts +33 -0
  90. package/dist/history/types.d.ts.map +1 -0
  91. package/dist/history/types.js +2 -0
  92. package/dist/history/types.js.map +1 -0
  93. package/dist/index.d.ts +3 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +797 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/insights/anomaly-detector.d.ts +28 -0
  98. package/dist/insights/anomaly-detector.d.ts.map +1 -0
  99. package/dist/insights/anomaly-detector.js +154 -0
  100. package/dist/insights/anomaly-detector.js.map +1 -0
  101. package/dist/insights/team-health.d.ts +24 -0
  102. package/dist/insights/team-health.d.ts.map +1 -0
  103. package/dist/insights/team-health.js +151 -0
  104. package/dist/insights/team-health.js.map +1 -0
  105. package/dist/insights/trend-analyzer.d.ts +5 -0
  106. package/dist/insights/trend-analyzer.d.ts.map +1 -0
  107. package/dist/insights/trend-analyzer.js +79 -0
  108. package/dist/insights/trend-analyzer.js.map +1 -0
  109. package/dist/insights/types.d.ts +10 -0
  110. package/dist/insights/types.d.ts.map +1 -0
  111. package/dist/insights/types.js +2 -0
  112. package/dist/insights/types.js.map +1 -0
  113. package/dist/orchestrator/data-fetcher.d.ts +16 -0
  114. package/dist/orchestrator/data-fetcher.d.ts.map +1 -0
  115. package/dist/orchestrator/data-fetcher.js +169 -0
  116. package/dist/orchestrator/data-fetcher.js.map +1 -0
  117. package/dist/orchestrator/time-range.d.ts +8 -0
  118. package/dist/orchestrator/time-range.d.ts.map +1 -0
  119. package/dist/orchestrator/time-range.js +27 -0
  120. package/dist/orchestrator/time-range.js.map +1 -0
  121. package/dist/types/github.d.ts +40 -0
  122. package/dist/types/github.d.ts.map +1 -0
  123. package/dist/types/github.js +2 -0
  124. package/dist/types/github.js.map +1 -0
  125. package/dist/types/jira.d.ts +18 -0
  126. package/dist/types/jira.d.ts.map +1 -0
  127. package/dist/types/jira.js +2 -0
  128. package/dist/types/jira.js.map +1 -0
  129. package/dist/types/retrospective.d.ts +38 -0
  130. package/dist/types/retrospective.d.ts.map +1 -0
  131. package/dist/types/retrospective.js +2 -0
  132. package/dist/types/retrospective.js.map +1 -0
  133. package/dist/types/weekly.d.ts +41 -0
  134. package/dist/types/weekly.d.ts.map +1 -0
  135. package/dist/types/weekly.js +2 -0
  136. package/dist/types/weekly.js.map +1 -0
  137. package/dist/validators.d.ts +236 -0
  138. package/dist/validators.d.ts.map +1 -0
  139. package/dist/validators.js +62 -0
  140. package/dist/validators.js.map +1 -0
  141. package/package.json +72 -0
@@ -0,0 +1,169 @@
1
+ const MAX_REVIEW_PRS = 25;
2
+ export async function fetchGitHubActivityForUser(client, username, repos, timeRange) {
3
+ const allCommits = [];
4
+ const allPRs = [];
5
+ const allReviews = [];
6
+ const results = await Promise.allSettled(repos.map((repoFullName) => fetchRepoForUser(client, repoFullName, username, timeRange)));
7
+ for (const result of results) {
8
+ if (result.status === 'fulfilled') {
9
+ allCommits.push(...result.value.commits);
10
+ allPRs.push(...result.value.pullRequests);
11
+ allReviews.push(...result.value.reviews);
12
+ }
13
+ }
14
+ return {
15
+ username,
16
+ commits: allCommits,
17
+ pullRequests: allPRs,
18
+ reviews: allReviews,
19
+ timeRange,
20
+ };
21
+ }
22
+ export async function fetchTeamGitHubActivity(client, usernames, repos, timeRange) {
23
+ const repoResults = await Promise.allSettled(repos.map((repoFullName) => fetchRepoAll(client, repoFullName, timeRange)));
24
+ const allCommits = [];
25
+ const allPRs = [];
26
+ const allReviews = [];
27
+ for (const result of repoResults) {
28
+ if (result.status === 'fulfilled') {
29
+ allCommits.push(...result.value.commits);
30
+ allPRs.push(...result.value.pullRequests);
31
+ allReviews.push(...result.value.reviews);
32
+ }
33
+ }
34
+ const usernameSet = new Set(usernames.map((u) => u.toLowerCase()));
35
+ return usernames.map((username) => {
36
+ const lowerUsername = username.toLowerCase();
37
+ return {
38
+ username,
39
+ commits: allCommits.filter((c) => c.author.toLowerCase() === lowerUsername),
40
+ pullRequests: allPRs.filter((pr) => pr.author.toLowerCase() === lowerUsername),
41
+ reviews: allReviews.filter((r) => r.author.toLowerCase() === lowerUsername && !usernameSet.has(r.author.toLowerCase())
42
+ ? false
43
+ : r.author.toLowerCase() === lowerUsername),
44
+ timeRange,
45
+ };
46
+ });
47
+ }
48
+ export async function fetchJiraActivityForUser(client, accountId, projects, timeRange) {
49
+ if (projects.length === 0) {
50
+ return { issues: [], timeRange };
51
+ }
52
+ const projectList = projects.map((p) => `"${p}"`).join(', ');
53
+ const sinceDate = timeRange.from.split('T')[0];
54
+ const jql = `project in (${projectList}) AND assignee = "${accountId}" AND updated >= "${sinceDate}" ORDER BY updated DESC`;
55
+ try {
56
+ const issues = await client.searchIssues(jql);
57
+ return { issues, timeRange };
58
+ }
59
+ catch {
60
+ return { issues: [], timeRange };
61
+ }
62
+ }
63
+ export async function fetchTeamJiraActivity(client, projects, timeRange) {
64
+ if (projects.length === 0) {
65
+ return { issues: [], timeRange };
66
+ }
67
+ const projectList = projects.map((p) => `"${p}"`).join(', ');
68
+ const sinceDate = timeRange.from.split('T')[0];
69
+ const jql = `project in (${projectList}) AND updated >= "${sinceDate}" ORDER BY updated DESC`;
70
+ try {
71
+ const issues = await client.searchIssues(jql);
72
+ return { issues, timeRange };
73
+ }
74
+ catch {
75
+ return { issues: [], timeRange };
76
+ }
77
+ }
78
+ export async function fetchSprintJiraActivity(client, sprintName, timeRange) {
79
+ const jql = `sprint = "${sprintName}" ORDER BY status ASC, updated DESC`;
80
+ try {
81
+ const issues = await client.searchIssues(jql);
82
+ return { issues, timeRange };
83
+ }
84
+ catch {
85
+ return { issues: [], timeRange };
86
+ }
87
+ }
88
+ export async function detectActiveSprint(client, projects) {
89
+ for (const project of projects) {
90
+ try {
91
+ const boards = await client.getBoards(project);
92
+ for (const board of boards) {
93
+ try {
94
+ const sprints = await client.getSprints(board.id, 'active');
95
+ if (sprints.length > 0) {
96
+ const sorted = [...sprints].sort((a, b) => new Date(b.startDate ?? 0).getTime() - new Date(a.startDate ?? 0).getTime());
97
+ const best = sorted[0];
98
+ if (best.startDate && best.endDate) {
99
+ return {
100
+ name: best.name,
101
+ startDate: best.startDate,
102
+ endDate: best.endDate,
103
+ };
104
+ }
105
+ }
106
+ }
107
+ catch {
108
+ }
109
+ }
110
+ }
111
+ catch {
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+ async function fetchRepoForUser(client, repoFullName, username, timeRange) {
117
+ const [owner, repo] = repoFullName.split('/');
118
+ if (!owner || !repo)
119
+ return { commits: [], pullRequests: [], reviews: [] };
120
+ const [commits, allPRs] = await Promise.all([
121
+ client.getCommits(owner, repo, {
122
+ since: timeRange.from,
123
+ until: timeRange.to,
124
+ author: username,
125
+ }),
126
+ client.getPullRequests(owner, repo, { state: 'all', since: timeRange.from }),
127
+ ]);
128
+ const userPRs = allPRs.filter((pr) => pr.author.toLowerCase() === username.toLowerCase());
129
+ const reviews = await fetchReviewsForUser(client, owner, repo, allPRs, username);
130
+ return { commits, pullRequests: userPRs, reviews };
131
+ }
132
+ async function fetchRepoAll(client, repoFullName, timeRange) {
133
+ const [owner, repo] = repoFullName.split('/');
134
+ if (!owner || !repo)
135
+ return { commits: [], pullRequests: [], reviews: [] };
136
+ const [commits, allPRs] = await Promise.all([
137
+ client.getCommits(owner, repo, {
138
+ since: timeRange.from,
139
+ until: timeRange.to,
140
+ }),
141
+ client.getPullRequests(owner, repo, { state: 'all', since: timeRange.from }),
142
+ ]);
143
+ const reviews = await fetchAllReviews(client, owner, repo, allPRs);
144
+ return { commits, pullRequests: allPRs, reviews };
145
+ }
146
+ async function fetchReviewsForUser(client, owner, repo, prs, username) {
147
+ const limited = prs.slice(0, MAX_REVIEW_PRS);
148
+ const allReviews = [];
149
+ const results = await Promise.allSettled(limited.map((pr) => client.getReviews(owner, repo, pr.number, pr.title)));
150
+ for (const result of results) {
151
+ if (result.status === 'fulfilled') {
152
+ const userReviews = result.value.filter((r) => r.author.toLowerCase() === username.toLowerCase());
153
+ allReviews.push(...userReviews);
154
+ }
155
+ }
156
+ return allReviews;
157
+ }
158
+ async function fetchAllReviews(client, owner, repo, prs) {
159
+ const limited = prs.slice(0, MAX_REVIEW_PRS);
160
+ const allReviews = [];
161
+ const results = await Promise.allSettled(limited.map((pr) => client.getReviews(owner, repo, pr.number, pr.title)));
162
+ for (const result of results) {
163
+ if (result.status === 'fulfilled') {
164
+ allReviews.push(...result.value);
165
+ }
166
+ }
167
+ return allReviews;
168
+ }
169
+ //# sourceMappingURL=data-fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-fetcher.js","sourceRoot":"","sources":["../../src/orchestrator/data-fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface TimeRange {
2
+ from: string;
3
+ to: string;
4
+ }
5
+ export declare function dailyTimeRange(): TimeRange;
6
+ export declare function weeklyTimeRange(weeksAgo?: number): TimeRange;
7
+ export declare function sprintTimeRange(startDate: string, endDate: string): TimeRange;
8
+ //# sourceMappingURL=time-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-range.d.ts","sourceRoot":"","sources":["../../src/orchestrator/time-range.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD,wBAAgB,cAAc,IAAI,SAAS,CAO1C;AAOD,wBAAgB,eAAe,CAAC,QAAQ,SAAI,GAAG,SAAS,CASvD;AAOD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAO7E"}
@@ -0,0 +1,27 @@
1
+ export function dailyTimeRange() {
2
+ const now = new Date();
3
+ const from = new Date(now.getTime() - 24 * 60 * 60 * 1000);
4
+ return {
5
+ from: from.toISOString(),
6
+ to: now.toISOString(),
7
+ };
8
+ }
9
+ export function weeklyTimeRange(weeksAgo = 0) {
10
+ const now = new Date();
11
+ const offset = weeksAgo * 7 * 24 * 60 * 60 * 1000;
12
+ const to = new Date(now.getTime() - offset);
13
+ const from = new Date(to.getTime() - 7 * 24 * 60 * 60 * 1000);
14
+ return {
15
+ from: from.toISOString(),
16
+ to: to.toISOString(),
17
+ };
18
+ }
19
+ export function sprintTimeRange(startDate, endDate) {
20
+ const now = new Date();
21
+ const end = new Date(endDate);
22
+ return {
23
+ from: new Date(startDate).toISOString(),
24
+ to: end > now ? now.toISOString() : end.toISOString(),
25
+ };
26
+ }
27
+ //# sourceMappingURL=time-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-range.js","sourceRoot":"","sources":["../../src/orchestrator/time-range.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;QACxB,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE;KACtB,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,eAAe,CAAC,QAAQ,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;QACxB,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE;KACrB,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,OAAe;IAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACvC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;KACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,40 @@
1
+ export interface GitHubCommit {
2
+ sha: string;
3
+ message: string;
4
+ author: string;
5
+ date: string;
6
+ repo: string;
7
+ url: string;
8
+ }
9
+ export interface GitHubPullRequest {
10
+ number: number;
11
+ title: string;
12
+ state: 'open' | 'closed' | 'merged';
13
+ author: string;
14
+ createdAt: string;
15
+ updatedAt: string;
16
+ mergedAt?: string;
17
+ repo: string;
18
+ url: string;
19
+ additions?: number;
20
+ deletions?: number;
21
+ }
22
+ export interface GitHubReview {
23
+ pullRequestNumber: number;
24
+ pullRequestTitle: string;
25
+ author: string;
26
+ state: 'APPROVED' | 'CHANGES_REQUESTED' | 'COMMENTED' | 'PENDING';
27
+ submittedAt: string;
28
+ repo: string;
29
+ }
30
+ export interface GitHubActivity {
31
+ username: string;
32
+ commits: GitHubCommit[];
33
+ pullRequests: GitHubPullRequest[];
34
+ reviews: GitHubReview[];
35
+ timeRange: {
36
+ from: string;
37
+ to: string;
38
+ };
39
+ }
40
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/types/github.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,GAAG,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAAC;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/types/github.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export interface JiraIssue {
2
+ key: string;
3
+ summary: string;
4
+ status: string;
5
+ priority: string;
6
+ assignee: string;
7
+ issueType: string;
8
+ updatedAt: string;
9
+ url: string;
10
+ }
11
+ export interface JiraActivity {
12
+ issues: JiraIssue[];
13
+ timeRange: {
14
+ from: string;
15
+ to: string;
16
+ };
17
+ }
18
+ //# sourceMappingURL=jira.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira.d.ts","sourceRoot":"","sources":["../../src/types/jira.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jira.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira.js","sourceRoot":"","sources":["../../src/types/jira.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import type { GitHubActivity } from './github.js';
2
+ import type { JiraActivity } from './jira.js';
3
+ export interface RetroReportInput {
4
+ sprintName: string;
5
+ dateRange: {
6
+ from: string;
7
+ to: string;
8
+ };
9
+ github: GitHubActivity;
10
+ jira?: JiraActivity;
11
+ }
12
+ export interface SprintMetrics {
13
+ totalCommits: number;
14
+ pullRequests: {
15
+ total: number;
16
+ merged: number;
17
+ open: number;
18
+ closed: number;
19
+ mergeRate: number;
20
+ };
21
+ additions: number;
22
+ deletions: number;
23
+ reviews: {
24
+ total: number;
25
+ approved: number;
26
+ changesRequested: number;
27
+ commented: number;
28
+ };
29
+ avgMergeTimeHours: number | null;
30
+ jira?: {
31
+ totalIssues: number;
32
+ completed: number;
33
+ completionRate: number;
34
+ byType: Record<string, number>;
35
+ byPriority: Record<string, number>;
36
+ };
37
+ }
38
+ //# sourceMappingURL=retrospective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrospective.d.ts","sourceRoot":"","sources":["../../src/types/retrospective.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAE5B,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,IAAI,CAAC,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=retrospective.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrospective.js","sourceRoot":"","sources":["../../src/types/retrospective.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import type { GitHubActivity } from './github.js';
2
+ import type { JiraActivity } from './jira.js';
3
+ export interface WeeklyReportInput {
4
+ github: GitHubActivity;
5
+ jira?: JiraActivity;
6
+ }
7
+ export interface RepoMetrics {
8
+ repo: string;
9
+ commits: number;
10
+ pullRequests: number;
11
+ merged: number;
12
+ additions: number;
13
+ deletions: number;
14
+ reviews: number;
15
+ }
16
+ export interface JiraWeeklyMetrics {
17
+ totalIssues: number;
18
+ byStatus: Record<string, number>;
19
+ byPriority: Record<string, number>;
20
+ byType: Record<string, number>;
21
+ }
22
+ export interface WeeklyMetrics {
23
+ totalCommits: number;
24
+ pullRequests: {
25
+ total: number;
26
+ open: number;
27
+ merged: number;
28
+ closed: number;
29
+ };
30
+ additions: number;
31
+ deletions: number;
32
+ reviews: {
33
+ total: number;
34
+ approved: number;
35
+ changesRequested: number;
36
+ commented: number;
37
+ };
38
+ repoBreakdown: RepoMetrics[];
39
+ jira?: JiraWeeklyMetrics;
40
+ }
41
+ //# sourceMappingURL=weekly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekly.d.ts","sourceRoot":"","sources":["../../src/types/weekly.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=weekly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekly.js","sourceRoot":"","sources":["../../src/types/weekly.ts"],"names":[],"mappings":""}
@@ -0,0 +1,236 @@
1
+ import { z } from 'zod';
2
+ export declare const GitHubActivitySchema: z.ZodObject<{
3
+ username: z.ZodDefault<z.ZodString>;
4
+ commits: z.ZodDefault<z.ZodArray<z.ZodObject<{
5
+ sha: z.ZodDefault<z.ZodString>;
6
+ message: z.ZodDefault<z.ZodString>;
7
+ author: z.ZodDefault<z.ZodString>;
8
+ date: z.ZodDefault<z.ZodString>;
9
+ repo: z.ZodDefault<z.ZodString>;
10
+ url: z.ZodDefault<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ message: string;
13
+ date: string;
14
+ author: string;
15
+ repo: string;
16
+ url: string;
17
+ sha: string;
18
+ }, {
19
+ message?: string | undefined;
20
+ date?: string | undefined;
21
+ author?: string | undefined;
22
+ repo?: string | undefined;
23
+ url?: string | undefined;
24
+ sha?: string | undefined;
25
+ }>, "many">>;
26
+ pullRequests: z.ZodDefault<z.ZodArray<z.ZodObject<{
27
+ number: z.ZodDefault<z.ZodNumber>;
28
+ title: z.ZodDefault<z.ZodString>;
29
+ state: z.ZodDefault<z.ZodEnum<["open", "closed", "merged"]>>;
30
+ author: z.ZodDefault<z.ZodString>;
31
+ createdAt: z.ZodDefault<z.ZodString>;
32
+ updatedAt: z.ZodDefault<z.ZodString>;
33
+ mergedAt: z.ZodOptional<z.ZodString>;
34
+ repo: z.ZodDefault<z.ZodString>;
35
+ url: z.ZodDefault<z.ZodString>;
36
+ additions: z.ZodOptional<z.ZodNumber>;
37
+ deletions: z.ZodOptional<z.ZodNumber>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ number: number;
40
+ author: string;
41
+ state: "open" | "closed" | "merged";
42
+ repo: string;
43
+ url: string;
44
+ title: string;
45
+ createdAt: string;
46
+ updatedAt: string;
47
+ additions?: number | undefined;
48
+ deletions?: number | undefined;
49
+ mergedAt?: string | undefined;
50
+ }, {
51
+ number?: number | undefined;
52
+ author?: string | undefined;
53
+ state?: "open" | "closed" | "merged" | undefined;
54
+ repo?: string | undefined;
55
+ additions?: number | undefined;
56
+ deletions?: number | undefined;
57
+ url?: string | undefined;
58
+ title?: string | undefined;
59
+ createdAt?: string | undefined;
60
+ updatedAt?: string | undefined;
61
+ mergedAt?: string | undefined;
62
+ }>, "many">>;
63
+ reviews: z.ZodDefault<z.ZodArray<z.ZodObject<{
64
+ pullRequestNumber: z.ZodDefault<z.ZodNumber>;
65
+ pullRequestTitle: z.ZodDefault<z.ZodString>;
66
+ author: z.ZodDefault<z.ZodString>;
67
+ state: z.ZodDefault<z.ZodEnum<["APPROVED", "CHANGES_REQUESTED", "COMMENTED", "PENDING"]>>;
68
+ submittedAt: z.ZodDefault<z.ZodString>;
69
+ repo: z.ZodDefault<z.ZodString>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ author: string;
72
+ state: "APPROVED" | "CHANGES_REQUESTED" | "COMMENTED" | "PENDING";
73
+ repo: string;
74
+ pullRequestNumber: number;
75
+ pullRequestTitle: string;
76
+ submittedAt: string;
77
+ }, {
78
+ author?: string | undefined;
79
+ state?: "APPROVED" | "CHANGES_REQUESTED" | "COMMENTED" | "PENDING" | undefined;
80
+ repo?: string | undefined;
81
+ pullRequestNumber?: number | undefined;
82
+ pullRequestTitle?: string | undefined;
83
+ submittedAt?: string | undefined;
84
+ }>, "many">>;
85
+ timeRange: z.ZodDefault<z.ZodObject<{
86
+ from: z.ZodDefault<z.ZodString>;
87
+ to: z.ZodDefault<z.ZodString>;
88
+ }, "strip", z.ZodTypeAny, {
89
+ from: string;
90
+ to: string;
91
+ }, {
92
+ from?: string | undefined;
93
+ to?: string | undefined;
94
+ }>>;
95
+ }, "strip", z.ZodTypeAny, {
96
+ username: string;
97
+ commits: {
98
+ message: string;
99
+ date: string;
100
+ author: string;
101
+ repo: string;
102
+ url: string;
103
+ sha: string;
104
+ }[];
105
+ pullRequests: {
106
+ number: number;
107
+ author: string;
108
+ state: "open" | "closed" | "merged";
109
+ repo: string;
110
+ url: string;
111
+ title: string;
112
+ createdAt: string;
113
+ updatedAt: string;
114
+ additions?: number | undefined;
115
+ deletions?: number | undefined;
116
+ mergedAt?: string | undefined;
117
+ }[];
118
+ reviews: {
119
+ author: string;
120
+ state: "APPROVED" | "CHANGES_REQUESTED" | "COMMENTED" | "PENDING";
121
+ repo: string;
122
+ pullRequestNumber: number;
123
+ pullRequestTitle: string;
124
+ submittedAt: string;
125
+ }[];
126
+ timeRange: {
127
+ from: string;
128
+ to: string;
129
+ };
130
+ }, {
131
+ username?: string | undefined;
132
+ commits?: {
133
+ message?: string | undefined;
134
+ date?: string | undefined;
135
+ author?: string | undefined;
136
+ repo?: string | undefined;
137
+ url?: string | undefined;
138
+ sha?: string | undefined;
139
+ }[] | undefined;
140
+ pullRequests?: {
141
+ number?: number | undefined;
142
+ author?: string | undefined;
143
+ state?: "open" | "closed" | "merged" | undefined;
144
+ repo?: string | undefined;
145
+ additions?: number | undefined;
146
+ deletions?: number | undefined;
147
+ url?: string | undefined;
148
+ title?: string | undefined;
149
+ createdAt?: string | undefined;
150
+ updatedAt?: string | undefined;
151
+ mergedAt?: string | undefined;
152
+ }[] | undefined;
153
+ reviews?: {
154
+ author?: string | undefined;
155
+ state?: "APPROVED" | "CHANGES_REQUESTED" | "COMMENTED" | "PENDING" | undefined;
156
+ repo?: string | undefined;
157
+ pullRequestNumber?: number | undefined;
158
+ pullRequestTitle?: string | undefined;
159
+ submittedAt?: string | undefined;
160
+ }[] | undefined;
161
+ timeRange?: {
162
+ from?: string | undefined;
163
+ to?: string | undefined;
164
+ } | undefined;
165
+ }>;
166
+ export declare const JiraActivitySchema: z.ZodObject<{
167
+ issues: z.ZodDefault<z.ZodArray<z.ZodObject<{
168
+ key: z.ZodDefault<z.ZodString>;
169
+ summary: z.ZodDefault<z.ZodString>;
170
+ status: z.ZodDefault<z.ZodString>;
171
+ priority: z.ZodDefault<z.ZodString>;
172
+ assignee: z.ZodDefault<z.ZodString>;
173
+ issueType: z.ZodDefault<z.ZodString>;
174
+ updatedAt: z.ZodDefault<z.ZodString>;
175
+ url: z.ZodDefault<z.ZodString>;
176
+ }, "strip", z.ZodTypeAny, {
177
+ status: string;
178
+ summary: string;
179
+ priority: string;
180
+ assignee: string;
181
+ key: string;
182
+ url: string;
183
+ updatedAt: string;
184
+ issueType: string;
185
+ }, {
186
+ status?: string | undefined;
187
+ summary?: string | undefined;
188
+ priority?: string | undefined;
189
+ assignee?: string | undefined;
190
+ key?: string | undefined;
191
+ url?: string | undefined;
192
+ updatedAt?: string | undefined;
193
+ issueType?: string | undefined;
194
+ }>, "many">>;
195
+ timeRange: z.ZodDefault<z.ZodObject<{
196
+ from: z.ZodDefault<z.ZodString>;
197
+ to: z.ZodDefault<z.ZodString>;
198
+ }, "strip", z.ZodTypeAny, {
199
+ from: string;
200
+ to: string;
201
+ }, {
202
+ from?: string | undefined;
203
+ to?: string | undefined;
204
+ }>>;
205
+ }, "strip", z.ZodTypeAny, {
206
+ issues: {
207
+ status: string;
208
+ summary: string;
209
+ priority: string;
210
+ assignee: string;
211
+ key: string;
212
+ url: string;
213
+ updatedAt: string;
214
+ issueType: string;
215
+ }[];
216
+ timeRange: {
217
+ from: string;
218
+ to: string;
219
+ };
220
+ }, {
221
+ issues?: {
222
+ status?: string | undefined;
223
+ summary?: string | undefined;
224
+ priority?: string | undefined;
225
+ assignee?: string | undefined;
226
+ key?: string | undefined;
227
+ url?: string | undefined;
228
+ updatedAt?: string | undefined;
229
+ issueType?: string | undefined;
230
+ }[] | undefined;
231
+ timeRange?: {
232
+ from?: string | undefined;
233
+ to?: string | undefined;
234
+ } | undefined;
235
+ }>;
236
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAaH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B,CAAC"}