@trentapps/manager-protocol 1.3.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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +639 -0
  3. package/dist/analyzers/ArchitectureDetector.d.ts +44 -0
  4. package/dist/analyzers/ArchitectureDetector.d.ts.map +1 -0
  5. package/dist/analyzers/ArchitectureDetector.js +218 -0
  6. package/dist/analyzers/ArchitectureDetector.js.map +1 -0
  7. package/dist/analyzers/CSSAnalyzer.d.ts +284 -0
  8. package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -0
  9. package/dist/analyzers/CSSAnalyzer.js +1180 -0
  10. package/dist/analyzers/CSSAnalyzer.js.map +1 -0
  11. package/dist/analyzers/index.d.ts +5 -0
  12. package/dist/analyzers/index.d.ts.map +1 -0
  13. package/dist/analyzers/index.js +5 -0
  14. package/dist/analyzers/index.js.map +1 -0
  15. package/dist/cli.d.ts +8 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/design-system/index.d.ts +6 -0
  20. package/dist/design-system/index.d.ts.map +1 -0
  21. package/dist/design-system/index.js +6 -0
  22. package/dist/design-system/index.js.map +1 -0
  23. package/dist/design-system/tokens.d.ts +106 -0
  24. package/dist/design-system/tokens.d.ts.map +1 -0
  25. package/dist/design-system/tokens.js +554 -0
  26. package/dist/design-system/tokens.js.map +1 -0
  27. package/dist/engine/AuditLogger.d.ts +506 -0
  28. package/dist/engine/AuditLogger.d.ts.map +1 -0
  29. package/dist/engine/AuditLogger.js +1491 -0
  30. package/dist/engine/AuditLogger.js.map +1 -0
  31. package/dist/engine/GitHubApprovalManager.d.ts +123 -0
  32. package/dist/engine/GitHubApprovalManager.d.ts.map +1 -0
  33. package/dist/engine/GitHubApprovalManager.js +347 -0
  34. package/dist/engine/GitHubApprovalManager.js.map +1 -0
  35. package/dist/engine/GitHubClient.d.ts +183 -0
  36. package/dist/engine/GitHubClient.d.ts.map +1 -0
  37. package/dist/engine/GitHubClient.js +411 -0
  38. package/dist/engine/GitHubClient.js.map +1 -0
  39. package/dist/engine/RateLimiter.d.ts +81 -0
  40. package/dist/engine/RateLimiter.d.ts.map +1 -0
  41. package/dist/engine/RateLimiter.js +215 -0
  42. package/dist/engine/RateLimiter.js.map +1 -0
  43. package/dist/engine/RuleDependencyAnalyzer.d.ts +73 -0
  44. package/dist/engine/RuleDependencyAnalyzer.d.ts.map +1 -0
  45. package/dist/engine/RuleDependencyAnalyzer.js +475 -0
  46. package/dist/engine/RuleDependencyAnalyzer.js.map +1 -0
  47. package/dist/engine/RulesEngine.d.ts +176 -0
  48. package/dist/engine/RulesEngine.d.ts.map +1 -0
  49. package/dist/engine/RulesEngine.js +705 -0
  50. package/dist/engine/RulesEngine.js.map +1 -0
  51. package/dist/engine/TaskManager.d.ts +174 -0
  52. package/dist/engine/TaskManager.d.ts.map +1 -0
  53. package/dist/engine/TaskManager.js +663 -0
  54. package/dist/engine/TaskManager.js.map +1 -0
  55. package/dist/engine/index.d.ts +11 -0
  56. package/dist/engine/index.d.ts.map +1 -0
  57. package/dist/engine/index.js +13 -0
  58. package/dist/engine/index.js.map +1 -0
  59. package/dist/index.d.ts +21 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +29 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/rules/architecture.d.ts +9 -0
  64. package/dist/rules/architecture.d.ts.map +1 -0
  65. package/dist/rules/architecture.js +322 -0
  66. package/dist/rules/architecture.js.map +1 -0
  67. package/dist/rules/azure.d.ts +7 -0
  68. package/dist/rules/azure.d.ts.map +1 -0
  69. package/dist/rules/azure.js +136 -0
  70. package/dist/rules/azure.js.map +1 -0
  71. package/dist/rules/compliance.d.ts +9 -0
  72. package/dist/rules/compliance.d.ts.map +1 -0
  73. package/dist/rules/compliance.js +286 -0
  74. package/dist/rules/compliance.js.map +1 -0
  75. package/dist/rules/condition-optimizer.d.ts +151 -0
  76. package/dist/rules/condition-optimizer.d.ts.map +1 -0
  77. package/dist/rules/condition-optimizer.js +479 -0
  78. package/dist/rules/condition-optimizer.js.map +1 -0
  79. package/dist/rules/css.d.ts +10 -0
  80. package/dist/rules/css.d.ts.map +1 -0
  81. package/dist/rules/css.js +1777 -0
  82. package/dist/rules/css.js.map +1 -0
  83. package/dist/rules/field-standards.d.ts +1172 -0
  84. package/dist/rules/field-standards.d.ts.map +1 -0
  85. package/dist/rules/field-standards.js +908 -0
  86. package/dist/rules/field-standards.js.map +1 -0
  87. package/dist/rules/flask.d.ts +7 -0
  88. package/dist/rules/flask.d.ts.map +1 -0
  89. package/dist/rules/flask.js +142 -0
  90. package/dist/rules/flask.js.map +1 -0
  91. package/dist/rules/index.d.ts +827 -0
  92. package/dist/rules/index.d.ts.map +1 -0
  93. package/dist/rules/index.js +556 -0
  94. package/dist/rules/index.js.map +1 -0
  95. package/dist/rules/ml-ai.d.ts +7 -0
  96. package/dist/rules/ml-ai.d.ts.map +1 -0
  97. package/dist/rules/ml-ai.js +148 -0
  98. package/dist/rules/ml-ai.js.map +1 -0
  99. package/dist/rules/operational.d.ts +9 -0
  100. package/dist/rules/operational.d.ts.map +1 -0
  101. package/dist/rules/operational.js +318 -0
  102. package/dist/rules/operational.js.map +1 -0
  103. package/dist/rules/patterns.d.ts +568 -0
  104. package/dist/rules/patterns.d.ts.map +1 -0
  105. package/dist/rules/patterns.js +1359 -0
  106. package/dist/rules/patterns.js.map +1 -0
  107. package/dist/rules/security.d.ts +9 -0
  108. package/dist/rules/security.d.ts.map +1 -0
  109. package/dist/rules/security.js +848 -0
  110. package/dist/rules/security.js.map +1 -0
  111. package/dist/rules/shared-patterns.d.ts +268 -0
  112. package/dist/rules/shared-patterns.d.ts.map +1 -0
  113. package/dist/rules/shared-patterns.js +556 -0
  114. package/dist/rules/shared-patterns.js.map +1 -0
  115. package/dist/rules/storage.d.ts +13 -0
  116. package/dist/rules/storage.d.ts.map +1 -0
  117. package/dist/rules/storage.js +672 -0
  118. package/dist/rules/storage.js.map +1 -0
  119. package/dist/rules/stripe.d.ts +7 -0
  120. package/dist/rules/stripe.d.ts.map +1 -0
  121. package/dist/rules/stripe.js +133 -0
  122. package/dist/rules/stripe.js.map +1 -0
  123. package/dist/rules/testing.d.ts +7 -0
  124. package/dist/rules/testing.d.ts.map +1 -0
  125. package/dist/rules/testing.js +135 -0
  126. package/dist/rules/testing.js.map +1 -0
  127. package/dist/rules/ux.d.ts +9 -0
  128. package/dist/rules/ux.d.ts.map +1 -0
  129. package/dist/rules/ux.js +280 -0
  130. package/dist/rules/ux.js.map +1 -0
  131. package/dist/rules/websocket.d.ts +7 -0
  132. package/dist/rules/websocket.d.ts.map +1 -0
  133. package/dist/rules/websocket.js +128 -0
  134. package/dist/rules/websocket.js.map +1 -0
  135. package/dist/server.d.ts +43 -0
  136. package/dist/server.d.ts.map +1 -0
  137. package/dist/server.js +1967 -0
  138. package/dist/server.js.map +1 -0
  139. package/dist/supervisor/AgentSupervisor.d.ts +195 -0
  140. package/dist/supervisor/AgentSupervisor.d.ts.map +1 -0
  141. package/dist/supervisor/AgentSupervisor.js +569 -0
  142. package/dist/supervisor/AgentSupervisor.js.map +1 -0
  143. package/dist/supervisor/ManagedServerRegistry.d.ts +185 -0
  144. package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -0
  145. package/dist/supervisor/ManagedServerRegistry.js +729 -0
  146. package/dist/supervisor/ManagedServerRegistry.js.map +1 -0
  147. package/dist/supervisor/ProjectTracker.d.ts +210 -0
  148. package/dist/supervisor/ProjectTracker.d.ts.map +1 -0
  149. package/dist/supervisor/ProjectTracker.js +709 -0
  150. package/dist/supervisor/ProjectTracker.js.map +1 -0
  151. package/dist/supervisor/index.d.ts +6 -0
  152. package/dist/supervisor/index.d.ts.map +1 -0
  153. package/dist/supervisor/index.js +6 -0
  154. package/dist/supervisor/index.js.map +1 -0
  155. package/dist/testing/index.d.ts +11 -0
  156. package/dist/testing/index.d.ts.map +1 -0
  157. package/dist/testing/index.js +12 -0
  158. package/dist/testing/index.js.map +1 -0
  159. package/dist/testing/rule-tester.d.ts +217 -0
  160. package/dist/testing/rule-tester.d.ts.map +1 -0
  161. package/dist/testing/rule-tester.examples.d.ts +57 -0
  162. package/dist/testing/rule-tester.examples.d.ts.map +1 -0
  163. package/dist/testing/rule-tester.examples.js +375 -0
  164. package/dist/testing/rule-tester.examples.js.map +1 -0
  165. package/dist/testing/rule-tester.js +381 -0
  166. package/dist/testing/rule-tester.js.map +1 -0
  167. package/dist/testing/rule-validator.d.ts +141 -0
  168. package/dist/testing/rule-validator.d.ts.map +1 -0
  169. package/dist/testing/rule-validator.js +640 -0
  170. package/dist/testing/rule-validator.js.map +1 -0
  171. package/dist/types/index.d.ts +1282 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/index.js +386 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/utils/errors.d.ts +86 -0
  176. package/dist/utils/errors.d.ts.map +1 -0
  177. package/dist/utils/errors.js +171 -0
  178. package/dist/utils/errors.js.map +1 -0
  179. package/dist/utils/index.d.ts +7 -0
  180. package/dist/utils/index.d.ts.map +1 -0
  181. package/dist/utils/index.js +7 -0
  182. package/dist/utils/index.js.map +1 -0
  183. package/dist/utils/rate-limiting.d.ts +268 -0
  184. package/dist/utils/rate-limiting.d.ts.map +1 -0
  185. package/dist/utils/rate-limiting.js +403 -0
  186. package/dist/utils/rate-limiting.js.map +1 -0
  187. package/dist/utils/shared.d.ts +306 -0
  188. package/dist/utils/shared.d.ts.map +1 -0
  189. package/dist/utils/shared.js +464 -0
  190. package/dist/utils/shared.js.map +1 -0
  191. package/dist/utils/shell.d.ts +22 -0
  192. package/dist/utils/shell.d.ts.map +1 -0
  193. package/dist/utils/shell.js +29 -0
  194. package/dist/utils/shell.js.map +1 -0
  195. package/package.json +67 -0
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - GitHub Client
3
+ *
4
+ * Provides a clean wrapper around the GitHub API via Octokit.
5
+ * Used by TaskManager for GitHub Issues operations.
6
+ *
7
+ * Features:
8
+ * - Singleton pattern for connection reuse
9
+ * - Automatic authentication via GITHUB_TOKEN
10
+ * - Repository auto-detection from git remote
11
+ * - Proper TypeScript types
12
+ * - Structured error handling
13
+ */
14
+ export interface GitHubIssue {
15
+ number: number;
16
+ title: string;
17
+ body: string | null;
18
+ state: 'open' | 'closed';
19
+ state_reason?: 'completed' | 'not_planned' | 'reopened' | null;
20
+ labels: Array<{
21
+ name: string;
22
+ color?: string;
23
+ description?: string | null;
24
+ }>;
25
+ assignees: Array<{
26
+ login: string;
27
+ }> | null;
28
+ created_at: string;
29
+ updated_at: string;
30
+ closed_at: string | null;
31
+ html_url: string;
32
+ milestone?: {
33
+ title: string;
34
+ } | null;
35
+ }
36
+ export interface GitHubLabel {
37
+ name: string;
38
+ color: string;
39
+ description: string | null;
40
+ }
41
+ export interface CreateIssueParams {
42
+ owner: string;
43
+ repo: string;
44
+ title: string;
45
+ body?: string;
46
+ labels?: string[];
47
+ assignees?: string[];
48
+ milestone?: number;
49
+ }
50
+ export interface UpdateIssueParams {
51
+ owner: string;
52
+ repo: string;
53
+ issue_number: number;
54
+ title?: string;
55
+ body?: string;
56
+ state?: 'open' | 'closed';
57
+ state_reason?: 'completed' | 'not_planned' | 'reopened';
58
+ labels?: string[];
59
+ assignees?: string[];
60
+ milestone?: number | null;
61
+ }
62
+ export interface ListIssuesParams {
63
+ owner: string;
64
+ repo: string;
65
+ state?: 'open' | 'closed' | 'all';
66
+ labels?: string;
67
+ assignee?: string;
68
+ per_page?: number;
69
+ page?: number;
70
+ }
71
+ export interface SearchIssuesParams {
72
+ query: string;
73
+ per_page?: number;
74
+ page?: number;
75
+ }
76
+ export interface GitHubClientError extends Error {
77
+ status?: number;
78
+ code?: string;
79
+ }
80
+ /**
81
+ * GitHub API client using Octokit
82
+ */
83
+ export declare class GitHubClient {
84
+ private static instance;
85
+ private octokit;
86
+ private cachedRepo;
87
+ private authenticated;
88
+ private constructor();
89
+ /**
90
+ * Get singleton instance
91
+ */
92
+ static getInstance(): GitHubClient;
93
+ /**
94
+ * Reset singleton instance (for testing)
95
+ */
96
+ static resetInstance(): void;
97
+ /**
98
+ * Verify authentication and get current user
99
+ */
100
+ verifyAuth(): Promise<{
101
+ ok: boolean;
102
+ user?: string;
103
+ error?: string;
104
+ }>;
105
+ /**
106
+ * Parse owner/repo string into components
107
+ */
108
+ parseRepo(repoString: string): {
109
+ owner: string;
110
+ repo: string;
111
+ };
112
+ /**
113
+ * Get current repository from git remote
114
+ */
115
+ getCurrentRepo(): Promise<{
116
+ owner: string;
117
+ repo: string;
118
+ } | null>;
119
+ /**
120
+ * Handle API errors consistently
121
+ */
122
+ private handleError;
123
+ /**
124
+ * Create a new issue
125
+ */
126
+ createIssue(params: CreateIssueParams): Promise<GitHubIssue>;
127
+ /**
128
+ * Get a single issue by number
129
+ */
130
+ getIssue(owner: string, repo: string, issueNumber: number): Promise<GitHubIssue>;
131
+ /**
132
+ * List issues for a repository
133
+ */
134
+ listIssues(params: ListIssuesParams): Promise<GitHubIssue[]>;
135
+ /**
136
+ * Update an existing issue
137
+ */
138
+ updateIssue(params: UpdateIssueParams): Promise<GitHubIssue>;
139
+ /**
140
+ * Close an issue
141
+ */
142
+ closeIssue(owner: string, repo: string, issueNumber: number, reason?: 'completed' | 'not_planned'): Promise<GitHubIssue>;
143
+ /**
144
+ * Reopen an issue
145
+ */
146
+ reopenIssue(owner: string, repo: string, issueNumber: number): Promise<GitHubIssue>;
147
+ /**
148
+ * Add a comment to an issue
149
+ */
150
+ addComment(owner: string, repo: string, issueNumber: number, body: string): Promise<void>;
151
+ /**
152
+ * Get a label
153
+ */
154
+ getLabel(owner: string, repo: string, labelName: string): Promise<GitHubLabel | null>;
155
+ /**
156
+ * Create a label
157
+ */
158
+ createLabel(owner: string, repo: string, name: string, color: string, description?: string): Promise<GitHubLabel>;
159
+ /**
160
+ * Add labels to an issue
161
+ */
162
+ addLabels(owner: string, repo: string, issueNumber: number, labels: string[]): Promise<void>;
163
+ /**
164
+ * Remove a label from an issue
165
+ */
166
+ removeLabel(owner: string, repo: string, issueNumber: number, label: string): Promise<void>;
167
+ /**
168
+ * Search issues
169
+ */
170
+ searchIssues(params: SearchIssuesParams): Promise<GitHubIssue[]>;
171
+ /**
172
+ * List repositories for authenticated user
173
+ */
174
+ listRepos(limit?: number): Promise<Array<{
175
+ nameWithOwner: string;
176
+ }>>;
177
+ /**
178
+ * Normalize issue data to our interface
179
+ */
180
+ private normalizeIssue;
181
+ }
182
+ export declare const gitHubClient: GitHubClient;
183
+ //# sourceMappingURL=GitHubClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubClient.d.ts","sourceRoot":"","sources":["../../src/engine/GitHubClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,411 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - GitHub Client
3
+ *
4
+ * Provides a clean wrapper around the GitHub API via Octokit.
5
+ * Used by TaskManager for GitHub Issues operations.
6
+ *
7
+ * Features:
8
+ * - Singleton pattern for connection reuse
9
+ * - Automatic authentication via GITHUB_TOKEN
10
+ * - Repository auto-detection from git remote
11
+ * - Proper TypeScript types
12
+ * - Structured error handling
13
+ */
14
+ import { Octokit } from '@octokit/rest';
15
+ import { exec } from 'child_process';
16
+ import { promisify } from 'util';
17
+ const execAsync = promisify(exec);
18
+ /**
19
+ * GitHub API client using Octokit
20
+ */
21
+ export class GitHubClient {
22
+ static instance = null;
23
+ octokit;
24
+ cachedRepo = null;
25
+ authenticated = false;
26
+ constructor() {
27
+ const token = process.env.GITHUB_TOKEN;
28
+ if (!token) {
29
+ console.warn('[GitHubClient] GITHUB_TOKEN not set - some operations may fail');
30
+ }
31
+ this.octokit = new Octokit({
32
+ auth: token,
33
+ userAgent: 'enterprise-agent-supervisor/1.1.3',
34
+ });
35
+ }
36
+ /**
37
+ * Get singleton instance
38
+ */
39
+ static getInstance() {
40
+ if (!GitHubClient.instance) {
41
+ GitHubClient.instance = new GitHubClient();
42
+ }
43
+ return GitHubClient.instance;
44
+ }
45
+ /**
46
+ * Reset singleton instance (for testing)
47
+ */
48
+ static resetInstance() {
49
+ GitHubClient.instance = null;
50
+ }
51
+ /**
52
+ * Verify authentication and get current user
53
+ */
54
+ async verifyAuth() {
55
+ if (this.authenticated) {
56
+ return { ok: true };
57
+ }
58
+ try {
59
+ const { data } = await this.octokit.users.getAuthenticated();
60
+ this.authenticated = true;
61
+ return { ok: true, user: data.login };
62
+ }
63
+ catch (error) {
64
+ const err = error;
65
+ if (err.status === 401) {
66
+ return { ok: false, error: 'GitHub authentication failed. Set GITHUB_TOKEN environment variable.' };
67
+ }
68
+ return { ok: false, error: err.message || 'Unknown authentication error' };
69
+ }
70
+ }
71
+ /**
72
+ * Parse owner/repo string into components
73
+ */
74
+ parseRepo(repoString) {
75
+ const parts = repoString.split('/');
76
+ if (parts.length !== 2) {
77
+ throw new Error(`Invalid repository format: ${repoString}. Expected "owner/repo".`);
78
+ }
79
+ return { owner: parts[0], repo: parts[1] };
80
+ }
81
+ /**
82
+ * Get current repository from git remote
83
+ */
84
+ async getCurrentRepo() {
85
+ if (this.cachedRepo) {
86
+ return this.cachedRepo;
87
+ }
88
+ try {
89
+ // Try to get repo from git remote
90
+ const { stdout } = await execAsync('git remote get-url origin 2>/dev/null');
91
+ const url = stdout.trim();
92
+ // Parse various git remote URL formats:
93
+ // https://github.com/owner/repo.git
94
+ // git@github.com:owner/repo.git
95
+ // https://github.com/owner/repo
96
+ let match = url.match(/github\.com[:/]([^/]+)\/([^/.]+)/);
97
+ if (match) {
98
+ this.cachedRepo = { owner: match[1], repo: match[2] };
99
+ return this.cachedRepo;
100
+ }
101
+ }
102
+ catch {
103
+ // Git command failed
104
+ }
105
+ return null;
106
+ }
107
+ /**
108
+ * Handle API errors consistently
109
+ */
110
+ handleError(error, operation) {
111
+ const err = error;
112
+ if (err.status === 401) {
113
+ throw new Error(`Authentication failed for ${operation}. Check GITHUB_TOKEN.`);
114
+ }
115
+ if (err.status === 403) {
116
+ throw new Error(`Permission denied for ${operation}. Check repository access.`);
117
+ }
118
+ if (err.status === 404) {
119
+ throw new Error(`Not found during ${operation}. Check repository/issue exists.`);
120
+ }
121
+ if (err.status === 422) {
122
+ throw new Error(`Validation failed for ${operation}: ${err.message}`);
123
+ }
124
+ throw new Error(`GitHub API error during ${operation}: ${err.message || 'Unknown error'}`);
125
+ }
126
+ // ============================================================================
127
+ // ISSUE OPERATIONS
128
+ // ============================================================================
129
+ /**
130
+ * Create a new issue
131
+ */
132
+ async createIssue(params) {
133
+ try {
134
+ const { data } = await this.octokit.issues.create({
135
+ owner: params.owner,
136
+ repo: params.repo,
137
+ title: params.title,
138
+ body: params.body,
139
+ labels: params.labels,
140
+ assignees: params.assignees,
141
+ milestone: params.milestone,
142
+ });
143
+ return this.normalizeIssue(data);
144
+ }
145
+ catch (error) {
146
+ this.handleError(error, 'createIssue');
147
+ }
148
+ }
149
+ /**
150
+ * Get a single issue by number
151
+ */
152
+ async getIssue(owner, repo, issueNumber) {
153
+ try {
154
+ const { data } = await this.octokit.issues.get({
155
+ owner,
156
+ repo,
157
+ issue_number: issueNumber,
158
+ });
159
+ return this.normalizeIssue(data);
160
+ }
161
+ catch (error) {
162
+ this.handleError(error, 'getIssue');
163
+ }
164
+ }
165
+ /**
166
+ * List issues for a repository
167
+ */
168
+ async listIssues(params) {
169
+ try {
170
+ const { data } = await this.octokit.issues.listForRepo({
171
+ owner: params.owner,
172
+ repo: params.repo,
173
+ state: params.state || 'all',
174
+ labels: params.labels,
175
+ assignee: params.assignee,
176
+ per_page: params.per_page || 100,
177
+ page: params.page || 1,
178
+ });
179
+ // Filter out pull requests (GitHub API returns PRs in issues endpoint)
180
+ return data
181
+ .filter((issue) => !('pull_request' in issue))
182
+ .map((issue) => this.normalizeIssue(issue));
183
+ }
184
+ catch (error) {
185
+ this.handleError(error, 'listIssues');
186
+ }
187
+ }
188
+ /**
189
+ * Update an existing issue
190
+ */
191
+ async updateIssue(params) {
192
+ try {
193
+ const { data } = await this.octokit.issues.update({
194
+ owner: params.owner,
195
+ repo: params.repo,
196
+ issue_number: params.issue_number,
197
+ title: params.title,
198
+ body: params.body,
199
+ state: params.state,
200
+ state_reason: params.state_reason,
201
+ labels: params.labels,
202
+ assignees: params.assignees,
203
+ milestone: params.milestone,
204
+ });
205
+ return this.normalizeIssue(data);
206
+ }
207
+ catch (error) {
208
+ this.handleError(error, 'updateIssue');
209
+ }
210
+ }
211
+ /**
212
+ * Close an issue
213
+ */
214
+ async closeIssue(owner, repo, issueNumber, reason = 'completed') {
215
+ return this.updateIssue({
216
+ owner,
217
+ repo,
218
+ issue_number: issueNumber,
219
+ state: 'closed',
220
+ state_reason: reason,
221
+ });
222
+ }
223
+ /**
224
+ * Reopen an issue
225
+ */
226
+ async reopenIssue(owner, repo, issueNumber) {
227
+ return this.updateIssue({
228
+ owner,
229
+ repo,
230
+ issue_number: issueNumber,
231
+ state: 'open',
232
+ state_reason: 'reopened',
233
+ });
234
+ }
235
+ // ============================================================================
236
+ // COMMENT OPERATIONS
237
+ // ============================================================================
238
+ /**
239
+ * Add a comment to an issue
240
+ */
241
+ async addComment(owner, repo, issueNumber, body) {
242
+ try {
243
+ await this.octokit.issues.createComment({
244
+ owner,
245
+ repo,
246
+ issue_number: issueNumber,
247
+ body,
248
+ });
249
+ }
250
+ catch (error) {
251
+ this.handleError(error, 'addComment');
252
+ }
253
+ }
254
+ // ============================================================================
255
+ // LABEL OPERATIONS
256
+ // ============================================================================
257
+ /**
258
+ * Get a label
259
+ */
260
+ async getLabel(owner, repo, labelName) {
261
+ try {
262
+ const { data } = await this.octokit.issues.getLabel({
263
+ owner,
264
+ repo,
265
+ name: labelName,
266
+ });
267
+ return {
268
+ name: data.name,
269
+ color: data.color,
270
+ description: data.description,
271
+ };
272
+ }
273
+ catch (error) {
274
+ const err = error;
275
+ if (err.status === 404) {
276
+ return null;
277
+ }
278
+ this.handleError(error, 'getLabel');
279
+ }
280
+ }
281
+ /**
282
+ * Create a label
283
+ */
284
+ async createLabel(owner, repo, name, color, description) {
285
+ try {
286
+ const { data } = await this.octokit.issues.createLabel({
287
+ owner,
288
+ repo,
289
+ name,
290
+ color,
291
+ description,
292
+ });
293
+ return {
294
+ name: data.name,
295
+ color: data.color,
296
+ description: data.description,
297
+ };
298
+ }
299
+ catch (error) {
300
+ const err = error;
301
+ // If label already exists, ignore the error
302
+ if (err.status === 422) {
303
+ return { name, color, description: description || null };
304
+ }
305
+ this.handleError(error, 'createLabel');
306
+ }
307
+ }
308
+ /**
309
+ * Add labels to an issue
310
+ */
311
+ async addLabels(owner, repo, issueNumber, labels) {
312
+ try {
313
+ await this.octokit.issues.addLabels({
314
+ owner,
315
+ repo,
316
+ issue_number: issueNumber,
317
+ labels,
318
+ });
319
+ }
320
+ catch (error) {
321
+ this.handleError(error, 'addLabels');
322
+ }
323
+ }
324
+ /**
325
+ * Remove a label from an issue
326
+ */
327
+ async removeLabel(owner, repo, issueNumber, label) {
328
+ try {
329
+ await this.octokit.issues.removeLabel({
330
+ owner,
331
+ repo,
332
+ issue_number: issueNumber,
333
+ name: label,
334
+ });
335
+ }
336
+ catch (error) {
337
+ const err = error;
338
+ // Ignore if label doesn't exist on the issue
339
+ if (err.status === 404) {
340
+ return;
341
+ }
342
+ this.handleError(error, 'removeLabel');
343
+ }
344
+ }
345
+ // ============================================================================
346
+ // SEARCH OPERATIONS
347
+ // ============================================================================
348
+ /**
349
+ * Search issues
350
+ */
351
+ async searchIssues(params) {
352
+ try {
353
+ const { data } = await this.octokit.search.issuesAndPullRequests({
354
+ q: params.query + ' is:issue',
355
+ per_page: params.per_page || 50,
356
+ page: params.page || 1,
357
+ });
358
+ return data.items.map((item) => this.normalizeIssue(item));
359
+ }
360
+ catch (error) {
361
+ this.handleError(error, 'searchIssues');
362
+ }
363
+ }
364
+ // ============================================================================
365
+ // REPOSITORY OPERATIONS
366
+ // ============================================================================
367
+ /**
368
+ * List repositories for authenticated user
369
+ */
370
+ async listRepos(limit = 20) {
371
+ try {
372
+ const { data } = await this.octokit.repos.listForAuthenticatedUser({
373
+ per_page: limit,
374
+ sort: 'pushed',
375
+ });
376
+ return data.map((repo) => ({ nameWithOwner: repo.full_name }));
377
+ }
378
+ catch (error) {
379
+ this.handleError(error, 'listRepos');
380
+ }
381
+ }
382
+ // ============================================================================
383
+ // HELPERS
384
+ // ============================================================================
385
+ /**
386
+ * Normalize issue data to our interface
387
+ */
388
+ normalizeIssue(data) {
389
+ return {
390
+ number: data.number,
391
+ title: data.title,
392
+ body: data.body,
393
+ state: data.state,
394
+ state_reason: data.state_reason,
395
+ labels: (data.labels || []).map((label) => ({
396
+ name: typeof label === 'string' ? label : label.name,
397
+ color: typeof label === 'string' ? undefined : label.color,
398
+ description: typeof label === 'string' ? null : label.description,
399
+ })),
400
+ assignees: data.assignees || [],
401
+ created_at: data.created_at,
402
+ updated_at: data.updated_at,
403
+ closed_at: data.closed_at,
404
+ html_url: data.html_url,
405
+ milestone: data.milestone ? { title: data.milestone.title } : null,
406
+ };
407
+ }
408
+ }
409
+ // Export singleton getter for convenience
410
+ export const gitHubClient = GitHubClient.getInstance();
411
+ //# sourceMappingURL=GitHubClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubClient.js","sourceRoot":"","sources":["../../src/engine/GitHubClient.ts"],"names":[],"mappings":"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"}