@framers/agentos-ext-github 0.1.0 → 0.1.1

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 (140) hide show
  1. package/LICENSE +96 -21
  2. package/dist/GitHubRepoIndexer.d.ts +88 -0
  3. package/dist/GitHubRepoIndexer.d.ts.map +1 -0
  4. package/dist/GitHubRepoIndexer.js +252 -0
  5. package/dist/GitHubRepoIndexer.js.map +1 -0
  6. package/dist/GitHubService.d.ts +58 -1
  7. package/dist/GitHubService.d.ts.map +1 -1
  8. package/dist/GitHubService.js +83 -1
  9. package/dist/GitHubService.js.map +1 -1
  10. package/dist/__tests__/fileAndBranchTools.test.d.ts +6 -0
  11. package/dist/__tests__/fileAndBranchTools.test.d.ts.map +1 -0
  12. package/dist/__tests__/fileAndBranchTools.test.js +310 -0
  13. package/dist/__tests__/fileAndBranchTools.test.js.map +1 -0
  14. package/dist/__tests__/indexer.test.d.ts +6 -0
  15. package/dist/__tests__/indexer.test.d.ts.map +1 -0
  16. package/dist/__tests__/indexer.test.js +239 -0
  17. package/dist/__tests__/indexer.test.js.map +1 -0
  18. package/dist/__tests__/issueTools.test.d.ts +5 -0
  19. package/dist/__tests__/issueTools.test.d.ts.map +1 -0
  20. package/dist/__tests__/issueTools.test.js +183 -0
  21. package/dist/__tests__/issueTools.test.js.map +1 -0
  22. package/dist/__tests__/prTools.test.d.ts +5 -0
  23. package/dist/__tests__/prTools.test.d.ts.map +1 -0
  24. package/dist/__tests__/prTools.test.js +318 -0
  25. package/dist/__tests__/prTools.test.js.map +1 -0
  26. package/dist/__tests__/releaseAndActionsTools.test.d.ts +6 -0
  27. package/dist/__tests__/releaseAndActionsTools.test.d.ts.map +1 -0
  28. package/dist/__tests__/releaseAndActionsTools.test.js +315 -0
  29. package/dist/__tests__/releaseAndActionsTools.test.js.map +1 -0
  30. package/dist/__tests__/repoTools.test.d.ts +6 -0
  31. package/dist/__tests__/repoTools.test.d.ts.map +1 -0
  32. package/dist/__tests__/repoTools.test.js +308 -0
  33. package/dist/__tests__/repoTools.test.js.map +1 -0
  34. package/dist/__tests__/service.test.d.ts +6 -0
  35. package/dist/__tests__/service.test.d.ts.map +1 -0
  36. package/dist/__tests__/service.test.js +173 -0
  37. package/dist/__tests__/service.test.js.map +1 -0
  38. package/dist/index.d.ts +41 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +60 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/tools/actionsList.d.ts +48 -0
  43. package/dist/tools/actionsList.d.ts.map +1 -0
  44. package/dist/tools/actionsList.js +71 -0
  45. package/dist/tools/actionsList.js.map +1 -0
  46. package/dist/tools/actionsTrigger.d.ts +56 -0
  47. package/dist/tools/actionsTrigger.d.ts.map +1 -0
  48. package/dist/tools/actionsTrigger.js +62 -0
  49. package/dist/tools/actionsTrigger.js.map +1 -0
  50. package/dist/tools/branchCreate.d.ts +47 -0
  51. package/dist/tools/branchCreate.d.ts.map +1 -0
  52. package/dist/tools/branchCreate.js +68 -0
  53. package/dist/tools/branchCreate.js.map +1 -0
  54. package/dist/tools/branchList.d.ts +45 -0
  55. package/dist/tools/branchList.d.ts.map +1 -0
  56. package/dist/tools/branchList.js +47 -0
  57. package/dist/tools/branchList.js.map +1 -0
  58. package/dist/tools/commentList.d.ts +48 -0
  59. package/dist/tools/commentList.d.ts.map +1 -0
  60. package/dist/tools/commentList.js +52 -0
  61. package/dist/tools/commentList.js.map +1 -0
  62. package/dist/tools/commitList.d.ts +65 -0
  63. package/dist/tools/commitList.d.ts.map +1 -0
  64. package/dist/tools/commitList.js +58 -0
  65. package/dist/tools/commitList.js.map +1 -0
  66. package/dist/tools/fileRead.d.ts.map +1 -1
  67. package/dist/tools/fileRead.js +1 -0
  68. package/dist/tools/fileRead.js.map +1 -1
  69. package/dist/tools/fileWrite.d.ts +61 -0
  70. package/dist/tools/fileWrite.d.ts.map +1 -0
  71. package/dist/tools/fileWrite.js +56 -0
  72. package/dist/tools/fileWrite.js.map +1 -0
  73. package/dist/tools/gistCreate.d.ts.map +1 -1
  74. package/dist/tools/gistCreate.js +1 -0
  75. package/dist/tools/gistCreate.js.map +1 -1
  76. package/dist/tools/issueCreate.d.ts.map +1 -1
  77. package/dist/tools/issueCreate.js +1 -0
  78. package/dist/tools/issueCreate.js.map +1 -1
  79. package/dist/tools/issueList.d.ts.map +1 -1
  80. package/dist/tools/issueList.js +1 -0
  81. package/dist/tools/issueList.js.map +1 -1
  82. package/dist/tools/issueUpdate.d.ts +75 -0
  83. package/dist/tools/issueUpdate.d.ts.map +1 -0
  84. package/dist/tools/issueUpdate.js +80 -0
  85. package/dist/tools/issueUpdate.js.map +1 -0
  86. package/dist/tools/prCommentCreate.d.ts +48 -0
  87. package/dist/tools/prCommentCreate.d.ts.map +1 -0
  88. package/dist/tools/prCommentCreate.js +50 -0
  89. package/dist/tools/prCommentCreate.js.map +1 -0
  90. package/dist/tools/prCommentList.d.ts +48 -0
  91. package/dist/tools/prCommentList.d.ts.map +1 -0
  92. package/dist/tools/prCommentList.js +53 -0
  93. package/dist/tools/prCommentList.js.map +1 -0
  94. package/dist/tools/prCreate.d.ts.map +1 -1
  95. package/dist/tools/prCreate.js +1 -0
  96. package/dist/tools/prCreate.js.map +1 -1
  97. package/dist/tools/prDiff.d.ts +48 -0
  98. package/dist/tools/prDiff.d.ts.map +1 -0
  99. package/dist/tools/prDiff.js +75 -0
  100. package/dist/tools/prDiff.js.map +1 -0
  101. package/dist/tools/prList.d.ts.map +1 -1
  102. package/dist/tools/prList.js +1 -0
  103. package/dist/tools/prList.js.map +1 -1
  104. package/dist/tools/prMerge.d.ts +59 -0
  105. package/dist/tools/prMerge.d.ts.map +1 -0
  106. package/dist/tools/prMerge.js +58 -0
  107. package/dist/tools/prMerge.js.map +1 -0
  108. package/dist/tools/prReview.d.ts +81 -0
  109. package/dist/tools/prReview.d.ts.map +1 -0
  110. package/dist/tools/prReview.js +70 -0
  111. package/dist/tools/prReview.js.map +1 -0
  112. package/dist/tools/releaseCreate.d.ts +73 -0
  113. package/dist/tools/releaseCreate.d.ts.map +1 -0
  114. package/dist/tools/releaseCreate.js +69 -0
  115. package/dist/tools/releaseCreate.js.map +1 -0
  116. package/dist/tools/releaseList.d.ts +42 -0
  117. package/dist/tools/releaseList.d.ts.map +1 -0
  118. package/dist/tools/releaseList.js +50 -0
  119. package/dist/tools/releaseList.js.map +1 -0
  120. package/dist/tools/repoCreate.d.ts +55 -0
  121. package/dist/tools/repoCreate.d.ts.map +1 -0
  122. package/dist/tools/repoCreate.js +54 -0
  123. package/dist/tools/repoCreate.js.map +1 -0
  124. package/dist/tools/repoIndex.d.ts +47 -0
  125. package/dist/tools/repoIndex.d.ts.map +1 -0
  126. package/dist/tools/repoIndex.js +127 -0
  127. package/dist/tools/repoIndex.js.map +1 -0
  128. package/dist/tools/repoInfo.d.ts +35 -0
  129. package/dist/tools/repoInfo.d.ts.map +1 -0
  130. package/dist/tools/repoInfo.js +60 -0
  131. package/dist/tools/repoInfo.js.map +1 -0
  132. package/dist/tools/repoList.d.ts +47 -0
  133. package/dist/tools/repoList.d.ts.map +1 -0
  134. package/dist/tools/repoList.js +74 -0
  135. package/dist/tools/repoList.js.map +1 -0
  136. package/dist/tools/search.d.ts.map +1 -1
  137. package/dist/tools/search.js +1 -0
  138. package/dist/tools/search.js.map +1 -1
  139. package/manifest.json +30 -6
  140. package/package.json +10 -6
@@ -0,0 +1,183 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @fileoverview Tests for GitHubIssueUpdateTool and GitHubCommentListTool.
4
+ */
5
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
6
+ import { GitHubIssueUpdateTool } from '../tools/issueUpdate.js';
7
+ import { GitHubCommentListTool } from '../tools/commentList.js';
8
+ /** Creates a mock GitHubService whose octokit methods can be spied on. */
9
+ function createMockService(overrides = {}) {
10
+ const octokit = {
11
+ rest: {
12
+ issues: {
13
+ update: vi.fn(),
14
+ listComments: vi.fn(),
15
+ ...overrides,
16
+ },
17
+ },
18
+ };
19
+ return { getOctokit: () => octokit };
20
+ }
21
+ /* -------------------------------------------------------------------------- */
22
+ /* GitHubIssueUpdateTool */
23
+ /* -------------------------------------------------------------------------- */
24
+ describe('GitHubIssueUpdateTool', () => {
25
+ let service;
26
+ let tool;
27
+ beforeEach(() => {
28
+ service = createMockService();
29
+ tool = new GitHubIssueUpdateTool(service);
30
+ });
31
+ it('has correct metadata', () => {
32
+ expect(tool.name).toBe('github_issue_update');
33
+ expect(tool.category).toBe('developer');
34
+ expect(tool.hasSideEffects).toBe(true);
35
+ });
36
+ it('updates issue with all provided fields', async () => {
37
+ const octokit = service.getOctokit();
38
+ octokit.rest.issues.update.mockResolvedValue({
39
+ data: {
40
+ number: 42,
41
+ title: 'Updated Title',
42
+ state: 'closed',
43
+ labels: [{ name: 'bug' }, { name: 'urgent' }],
44
+ assignees: [{ login: 'alice' }],
45
+ html_url: 'https://github.com/owner/repo/issues/42',
46
+ },
47
+ });
48
+ const result = await tool.execute({
49
+ owner: 'owner',
50
+ repo: 'repo',
51
+ issue_number: 42,
52
+ title: 'Updated Title',
53
+ body: 'New body',
54
+ state: 'closed',
55
+ labels: ['bug', 'urgent'],
56
+ assignees: ['alice'],
57
+ });
58
+ expect(result.success).toBe(true);
59
+ expect(result.data).toEqual({
60
+ number: 42,
61
+ title: 'Updated Title',
62
+ state: 'closed',
63
+ labels: ['bug', 'urgent'],
64
+ assignees: ['alice'],
65
+ url: 'https://github.com/owner/repo/issues/42',
66
+ });
67
+ // Verify all fields were passed through
68
+ const callArgs = octokit.rest.issues.update.mock.calls[0][0];
69
+ expect(callArgs.title).toBe('Updated Title');
70
+ expect(callArgs.body).toBe('New body');
71
+ expect(callArgs.state).toBe('closed');
72
+ expect(callArgs.labels).toEqual(['bug', 'urgent']);
73
+ expect(callArgs.assignees).toEqual(['alice']);
74
+ });
75
+ it('only passes provided fields (partial update)', async () => {
76
+ const octokit = service.getOctokit();
77
+ octokit.rest.issues.update.mockResolvedValue({
78
+ data: {
79
+ number: 7,
80
+ title: 'Same Title',
81
+ state: 'open',
82
+ labels: [],
83
+ assignees: [],
84
+ html_url: 'https://github.com/o/r/issues/7',
85
+ },
86
+ });
87
+ await tool.execute({
88
+ owner: 'o',
89
+ repo: 'r',
90
+ issue_number: 7,
91
+ state: 'open',
92
+ });
93
+ const callArgs = octokit.rest.issues.update.mock.calls[0][0];
94
+ expect(callArgs).toHaveProperty('state', 'open');
95
+ expect(callArgs).not.toHaveProperty('title');
96
+ expect(callArgs).not.toHaveProperty('body');
97
+ expect(callArgs).not.toHaveProperty('labels');
98
+ expect(callArgs).not.toHaveProperty('assignees');
99
+ });
100
+ it('returns error on API failure', async () => {
101
+ const octokit = service.getOctokit();
102
+ octokit.rest.issues.update.mockRejectedValue(new Error('Not Found'));
103
+ const result = await tool.execute({
104
+ owner: 'x',
105
+ repo: 'y',
106
+ issue_number: 999,
107
+ });
108
+ expect(result.success).toBe(false);
109
+ expect(result.error).toBe('Not Found');
110
+ });
111
+ });
112
+ /* -------------------------------------------------------------------------- */
113
+ /* GitHubCommentListTool */
114
+ /* -------------------------------------------------------------------------- */
115
+ describe('GitHubCommentListTool', () => {
116
+ let service;
117
+ let tool;
118
+ beforeEach(() => {
119
+ service = createMockService();
120
+ tool = new GitHubCommentListTool(service);
121
+ });
122
+ it('has correct metadata', () => {
123
+ expect(tool.name).toBe('github_comment_list');
124
+ expect(tool.category).toBe('developer');
125
+ expect(tool.hasSideEffects).toBe(false);
126
+ });
127
+ it('lists comments with default per_page', async () => {
128
+ const octokit = service.getOctokit();
129
+ octokit.rest.issues.listComments.mockResolvedValue({
130
+ data: [
131
+ {
132
+ id: 100,
133
+ user: { login: 'bob' },
134
+ body: 'Looks good!',
135
+ created_at: '2024-01-01T00:00:00Z',
136
+ html_url: 'https://github.com/owner/repo/issues/1#issuecomment-100',
137
+ },
138
+ {
139
+ id: 101,
140
+ user: { login: 'alice' },
141
+ body: 'Merging now.',
142
+ created_at: '2024-01-02T00:00:00Z',
143
+ html_url: 'https://github.com/owner/repo/issues/1#issuecomment-101',
144
+ },
145
+ ],
146
+ });
147
+ const result = await tool.execute({ owner: 'owner', repo: 'repo', issue_number: 1 });
148
+ expect(result.success).toBe(true);
149
+ expect(result.data).toEqual([
150
+ {
151
+ id: 100,
152
+ author: 'bob',
153
+ body: 'Looks good!',
154
+ createdAt: '2024-01-01T00:00:00Z',
155
+ url: 'https://github.com/owner/repo/issues/1#issuecomment-100',
156
+ },
157
+ {
158
+ id: 101,
159
+ author: 'alice',
160
+ body: 'Merging now.',
161
+ createdAt: '2024-01-02T00:00:00Z',
162
+ url: 'https://github.com/owner/repo/issues/1#issuecomment-101',
163
+ },
164
+ ]);
165
+ const callArgs = octokit.rest.issues.listComments.mock.calls[0][0];
166
+ expect(callArgs.per_page).toBe(10);
167
+ });
168
+ it('clamps per_page to 30', async () => {
169
+ const octokit = service.getOctokit();
170
+ octokit.rest.issues.listComments.mockResolvedValue({ data: [] });
171
+ await tool.execute({ owner: 'o', repo: 'r', issue_number: 5, per_page: 100 });
172
+ const callArgs = octokit.rest.issues.listComments.mock.calls[0][0];
173
+ expect(callArgs.per_page).toBe(30);
174
+ });
175
+ it('returns error on API failure', async () => {
176
+ const octokit = service.getOctokit();
177
+ octokit.rest.issues.listComments.mockRejectedValue(new Error('Forbidden'));
178
+ const result = await tool.execute({ owner: 'x', repo: 'y', issue_number: 1 });
179
+ expect(result.success).toBe(false);
180
+ expect(result.error).toBe('Forbidden');
181
+ });
182
+ });
183
+ //# sourceMappingURL=issueTools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issueTools.test.js","sourceRoot":"","sources":["../../src/__tests__/issueTools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @fileoverview Tests for PR tools: diff, review, merge, comment list, comment create.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=prTools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prTools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/prTools.test.ts"],"names":[],"mappings":"AACA;;GAEG"}
@@ -0,0 +1,318 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @fileoverview Tests for PR tools: diff, review, merge, comment list, comment create.
4
+ */
5
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
6
+ import { GitHubPrDiffTool } from '../tools/prDiff.js';
7
+ import { GitHubPrReviewTool } from '../tools/prReview.js';
8
+ import { GitHubPrMergeTool } from '../tools/prMerge.js';
9
+ import { GitHubPrCommentListTool } from '../tools/prCommentList.js';
10
+ import { GitHubPrCommentCreateTool } from '../tools/prCommentCreate.js';
11
+ /** Creates a mock GitHubService with all octokit stubs needed by PR tools. */
12
+ function createMockService(overrides = {}) {
13
+ const octokit = {
14
+ rest: {
15
+ pulls: {
16
+ listFiles: vi.fn(),
17
+ createReview: vi.fn(),
18
+ merge: vi.fn(),
19
+ listReviewComments: vi.fn(),
20
+ ...overrides.pulls,
21
+ },
22
+ issues: {
23
+ createComment: vi.fn(),
24
+ ...overrides.issues,
25
+ },
26
+ },
27
+ };
28
+ return { getOctokit: () => octokit };
29
+ }
30
+ /* -------------------------------------------------------------------------- */
31
+ /* GitHubPrDiffTool */
32
+ /* -------------------------------------------------------------------------- */
33
+ describe('GitHubPrDiffTool', () => {
34
+ let service;
35
+ let tool;
36
+ beforeEach(() => {
37
+ service = createMockService();
38
+ tool = new GitHubPrDiffTool(service);
39
+ });
40
+ it('has correct metadata', () => {
41
+ expect(tool.name).toBe('github_pr_diff');
42
+ expect(tool.hasSideEffects).toBe(false);
43
+ });
44
+ it('returns file summary without patches by default', async () => {
45
+ const octokit = service.getOctokit();
46
+ octokit.rest.pulls.listFiles.mockResolvedValue({
47
+ data: [
48
+ { filename: 'a.ts', status: 'modified', additions: 5, deletions: 2, changes: 7, patch: '@@ -1 +1 @@' },
49
+ { filename: 'b.ts', status: 'added', additions: 10, deletions: 0, changes: 10, patch: '+new' },
50
+ ],
51
+ });
52
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 1 });
53
+ expect(result.success).toBe(true);
54
+ const data = result.data;
55
+ expect(data.totalFiles).toBe(2);
56
+ expect(data.totalAdditions).toBe(15);
57
+ expect(data.totalDeletions).toBe(2);
58
+ expect(data.files[0]).not.toHaveProperty('patch');
59
+ expect(data.files[1]).not.toHaveProperty('patch');
60
+ });
61
+ it('includes patches when include_patch is true', async () => {
62
+ const octokit = service.getOctokit();
63
+ octokit.rest.pulls.listFiles.mockResolvedValue({
64
+ data: [
65
+ { filename: 'c.ts', status: 'modified', additions: 1, deletions: 1, changes: 2, patch: 'short patch' },
66
+ ],
67
+ });
68
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 2, include_patch: true });
69
+ const data = result.data;
70
+ expect(data.files[0].patch).toBe('short patch');
71
+ });
72
+ it('truncates long patches to 3000 chars', async () => {
73
+ const octokit = service.getOctokit();
74
+ const longPatch = 'x'.repeat(5000);
75
+ octokit.rest.pulls.listFiles.mockResolvedValue({
76
+ data: [
77
+ { filename: 'd.ts', status: 'modified', additions: 1, deletions: 1, changes: 2, patch: longPatch },
78
+ ],
79
+ });
80
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 3, include_patch: true });
81
+ const data = result.data;
82
+ expect(data.files[0].patch.length).toBeLessThan(5000);
83
+ expect(data.files[0].patch).toContain('... (truncated)');
84
+ });
85
+ it('returns error on API failure', async () => {
86
+ const octokit = service.getOctokit();
87
+ octokit.rest.pulls.listFiles.mockRejectedValue(new Error('Not Found'));
88
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 999 });
89
+ expect(result.success).toBe(false);
90
+ expect(result.error).toBe('Not Found');
91
+ });
92
+ });
93
+ /* -------------------------------------------------------------------------- */
94
+ /* GitHubPrReviewTool */
95
+ /* -------------------------------------------------------------------------- */
96
+ describe('GitHubPrReviewTool', () => {
97
+ let service;
98
+ let tool;
99
+ beforeEach(() => {
100
+ service = createMockService();
101
+ tool = new GitHubPrReviewTool(service);
102
+ });
103
+ it('has correct metadata', () => {
104
+ expect(tool.name).toBe('github_pr_review');
105
+ expect(tool.hasSideEffects).toBe(true);
106
+ });
107
+ it('creates a review with event and body', async () => {
108
+ const octokit = service.getOctokit();
109
+ octokit.rest.pulls.createReview.mockResolvedValue({
110
+ data: {
111
+ id: 500,
112
+ state: 'APPROVED',
113
+ html_url: 'https://github.com/o/r/pull/1#pullrequestreview-500',
114
+ },
115
+ });
116
+ const result = await tool.execute({
117
+ owner: 'o',
118
+ repo: 'r',
119
+ pull_number: 1,
120
+ event: 'APPROVE',
121
+ body: 'Ship it!',
122
+ });
123
+ expect(result.success).toBe(true);
124
+ expect(result.data).toEqual({
125
+ id: 500,
126
+ state: 'APPROVED',
127
+ url: 'https://github.com/o/r/pull/1#pullrequestreview-500',
128
+ });
129
+ });
130
+ it('passes inline comments through', async () => {
131
+ const octokit = service.getOctokit();
132
+ octokit.rest.pulls.createReview.mockResolvedValue({
133
+ data: { id: 501, state: 'COMMENTED', html_url: 'https://example.com' },
134
+ });
135
+ const comments = [{ path: 'src/index.ts', line: 42, body: 'Nit: typo' }];
136
+ await tool.execute({
137
+ owner: 'o',
138
+ repo: 'r',
139
+ pull_number: 2,
140
+ event: 'COMMENT',
141
+ comments,
142
+ });
143
+ const callArgs = octokit.rest.pulls.createReview.mock.calls[0][0];
144
+ expect(callArgs.comments).toEqual(comments);
145
+ });
146
+ it('returns error on API failure', async () => {
147
+ const octokit = service.getOctokit();
148
+ octokit.rest.pulls.createReview.mockRejectedValue(new Error('Validation Failed'));
149
+ const result = await tool.execute({
150
+ owner: 'o',
151
+ repo: 'r',
152
+ pull_number: 1,
153
+ event: 'REQUEST_CHANGES',
154
+ body: 'Please fix',
155
+ });
156
+ expect(result.success).toBe(false);
157
+ expect(result.error).toBe('Validation Failed');
158
+ });
159
+ });
160
+ /* -------------------------------------------------------------------------- */
161
+ /* GitHubPrMergeTool */
162
+ /* -------------------------------------------------------------------------- */
163
+ describe('GitHubPrMergeTool', () => {
164
+ let service;
165
+ let tool;
166
+ beforeEach(() => {
167
+ service = createMockService();
168
+ tool = new GitHubPrMergeTool(service);
169
+ });
170
+ it('has correct metadata', () => {
171
+ expect(tool.name).toBe('github_pr_merge');
172
+ expect(tool.hasSideEffects).toBe(true);
173
+ });
174
+ it('merges with default method', async () => {
175
+ const octokit = service.getOctokit();
176
+ octokit.rest.pulls.merge.mockResolvedValue({
177
+ data: { merged: true, sha: 'abc123', message: 'Pull Request successfully merged' },
178
+ });
179
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 10 });
180
+ expect(result.success).toBe(true);
181
+ expect(result.data).toEqual({
182
+ merged: true,
183
+ sha: 'abc123',
184
+ message: 'Pull Request successfully merged',
185
+ });
186
+ const callArgs = octokit.rest.pulls.merge.mock.calls[0][0];
187
+ expect(callArgs.merge_method).toBe('merge');
188
+ });
189
+ it('uses squash method with custom title', async () => {
190
+ const octokit = service.getOctokit();
191
+ octokit.rest.pulls.merge.mockResolvedValue({
192
+ data: { merged: true, sha: 'def456', message: 'Merged' },
193
+ });
194
+ await tool.execute({
195
+ owner: 'o',
196
+ repo: 'r',
197
+ pull_number: 11,
198
+ merge_method: 'squash',
199
+ commit_title: 'feat: big feature',
200
+ commit_message: 'All changes squashed',
201
+ });
202
+ const callArgs = octokit.rest.pulls.merge.mock.calls[0][0];
203
+ expect(callArgs.merge_method).toBe('squash');
204
+ expect(callArgs.commit_title).toBe('feat: big feature');
205
+ expect(callArgs.commit_message).toBe('All changes squashed');
206
+ });
207
+ it('returns error on merge conflict', async () => {
208
+ const octokit = service.getOctokit();
209
+ octokit.rest.pulls.merge.mockRejectedValue(new Error('Pull Request is not mergeable'));
210
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 12 });
211
+ expect(result.success).toBe(false);
212
+ expect(result.error).toBe('Pull Request is not mergeable');
213
+ });
214
+ });
215
+ /* -------------------------------------------------------------------------- */
216
+ /* GitHubPrCommentListTool */
217
+ /* -------------------------------------------------------------------------- */
218
+ describe('GitHubPrCommentListTool', () => {
219
+ let service;
220
+ let tool;
221
+ beforeEach(() => {
222
+ service = createMockService();
223
+ tool = new GitHubPrCommentListTool(service);
224
+ });
225
+ it('has correct metadata', () => {
226
+ expect(tool.name).toBe('github_pr_comment_list');
227
+ expect(tool.hasSideEffects).toBe(false);
228
+ });
229
+ it('lists review comments', async () => {
230
+ const octokit = service.getOctokit();
231
+ octokit.rest.pulls.listReviewComments.mockResolvedValue({
232
+ data: [
233
+ {
234
+ id: 200,
235
+ user: { login: 'reviewer' },
236
+ body: 'This looks wrong',
237
+ path: 'src/foo.ts',
238
+ line: 15,
239
+ created_at: '2024-03-01T00:00:00Z',
240
+ },
241
+ ],
242
+ });
243
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 5 });
244
+ expect(result.success).toBe(true);
245
+ expect(result.data).toEqual([
246
+ {
247
+ id: 200,
248
+ author: 'reviewer',
249
+ body: 'This looks wrong',
250
+ path: 'src/foo.ts',
251
+ line: 15,
252
+ createdAt: '2024-03-01T00:00:00Z',
253
+ },
254
+ ]);
255
+ });
256
+ it('clamps per_page to 30', async () => {
257
+ const octokit = service.getOctokit();
258
+ octokit.rest.pulls.listReviewComments.mockResolvedValue({ data: [] });
259
+ await tool.execute({ owner: 'o', repo: 'r', pull_number: 5, per_page: 100 });
260
+ const callArgs = octokit.rest.pulls.listReviewComments.mock.calls[0][0];
261
+ expect(callArgs.per_page).toBe(30);
262
+ });
263
+ it('returns error on API failure', async () => {
264
+ const octokit = service.getOctokit();
265
+ octokit.rest.pulls.listReviewComments.mockRejectedValue(new Error('Forbidden'));
266
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 5 });
267
+ expect(result.success).toBe(false);
268
+ expect(result.error).toBe('Forbidden');
269
+ });
270
+ });
271
+ /* -------------------------------------------------------------------------- */
272
+ /* GitHubPrCommentCreateTool */
273
+ /* -------------------------------------------------------------------------- */
274
+ describe('GitHubPrCommentCreateTool', () => {
275
+ let service;
276
+ let tool;
277
+ beforeEach(() => {
278
+ service = createMockService();
279
+ tool = new GitHubPrCommentCreateTool(service);
280
+ });
281
+ it('has correct metadata', () => {
282
+ expect(tool.name).toBe('github_pr_comment_create');
283
+ expect(tool.hasSideEffects).toBe(true);
284
+ });
285
+ it('creates a top-level PR comment via issues API', async () => {
286
+ const octokit = service.getOctokit();
287
+ octokit.rest.issues.createComment.mockResolvedValue({
288
+ data: {
289
+ id: 300,
290
+ html_url: 'https://github.com/o/r/pull/3#issuecomment-300',
291
+ body: 'Nice work!',
292
+ },
293
+ });
294
+ const result = await tool.execute({
295
+ owner: 'o',
296
+ repo: 'r',
297
+ pull_number: 3,
298
+ body: 'Nice work!',
299
+ });
300
+ expect(result.success).toBe(true);
301
+ expect(result.data).toEqual({
302
+ id: 300,
303
+ url: 'https://github.com/o/r/pull/3#issuecomment-300',
304
+ body: 'Nice work!',
305
+ });
306
+ // Verify it uses issue_number (PRs are issues)
307
+ const callArgs = octokit.rest.issues.createComment.mock.calls[0][0];
308
+ expect(callArgs.issue_number).toBe(3);
309
+ });
310
+ it('returns error on API failure', async () => {
311
+ const octokit = service.getOctokit();
312
+ octokit.rest.issues.createComment.mockRejectedValue(new Error('Resource not accessible'));
313
+ const result = await tool.execute({ owner: 'o', repo: 'r', pull_number: 99, body: 'test' });
314
+ expect(result.success).toBe(false);
315
+ expect(result.error).toBe('Resource not accessible');
316
+ });
317
+ });
318
+ //# sourceMappingURL=prTools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prTools.test.js","sourceRoot":"","sources":["../../src/__tests__/prTools.test.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,YAAiC,EAAE;IAC5D,MAAM,OAAO,GAAG;QACd,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;gBAClB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;gBACrB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;gBACd,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,GAAG,SAAS,CAAC,KAAK;aACnB;YACD,MAAM,EAAE;gBACN,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;gBACtB,GAAG,SAAS,CAAC,MAAM;aACpB;SACF;KACF,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAc,EAA8B,CAAC;AAC1E,CAAC;AAED,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAsB,CAAC;IAC3B,IAAI,IAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAiB,CAAC,iBAAiB,CAAC;YACtD,IAAI,EAAE;gBACJ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;gBACtG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aAC/F;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAE7E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAW,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAiB,CAAC,iBAAiB,CAAC;YACtD,IAAI,EAAE;gBACJ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;aACvG;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAW,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAiB,CAAC,iBAAiB,CAAC;YACtD,IAAI,EAAE;gBACJ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;aACnG;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAW,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAiB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,OAAsB,CAAC;IAC3B,IAAI,IAAwB,CAAC;IAE7B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAoB,CAAC,iBAAiB,CAAC;YACzD,IAAI,EAAE;gBACJ,EAAE,EAAE,GAAG;gBACP,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,qDAAqD;aAChE;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAChC,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC1B,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,qDAAqD;SAC3D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAoB,CAAC,iBAAiB,CAAC;YACzD,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,qBAAqB,EAAE;SACvE,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,SAAS;YAChB,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAoB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAChC,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,OAAsB,CAAC;IAC3B,IAAI,IAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAa,CAAC,iBAAiB,CAAC;YAClD,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,kCAAkC,EAAE;SACnF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAE9E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC1B,MAAM,EAAE,IAAI;YACZ,GAAG,EAAE,QAAQ;YACb,OAAO,EAAE,kCAAkC;SAC5C,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAa,CAAC,iBAAiB,CAAC;YAClD,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;SACzD,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,QAAQ;YACtB,YAAY,EAAE,mBAAmB;YACjC,cAAc,EAAE,sBAAsB;SACvC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAa,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAEhG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,OAAsB,CAAC;IAC3B,IAAI,IAA6B,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAA0B,CAAC,iBAAiB,CAAC;YAC/D,IAAI,EAAE;gBACJ;oBACE,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;oBAC3B,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,EAAE;oBACR,UAAU,EAAE,sBAAsB;iBACnC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC1B;gBACE,EAAE,EAAE,GAAG;gBACP,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,sBAAsB;aAClC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAA0B,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/E,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAA0B,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,OAAsB,CAAC;IAC3B,IAAI,IAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAqB,CAAC,iBAAiB,CAAC;YAC3D,IAAI,EAAE;gBACJ,EAAE,EAAE,GAAG;gBACP,QAAQ,EAAE,gDAAgD;gBAC1D,IAAI,EAAE,YAAY;aACnB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAChC,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC1B,EAAE,EAAE,GAAG;YACP,GAAG,EAAE,gDAAgD;YACrD,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QAEH,+CAA+C;QAC/C,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAqB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAEnG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Tests for release and actions tools:
3
+ * releaseList, releaseCreate, actionsList, actionsTrigger.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=releaseAndActionsTools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseAndActionsTools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/releaseAndActionsTools.test.ts"],"names":[],"mappings":"AACA;;;GAGG"}