agent-nuvira 1.34.0 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,7 +36,9 @@ agent-nuvira config list
36
36
  - **Docker sandbox isolation** — resource-limited, network-isolated container execution with 8 base images
37
37
  - **Provider health dashboard** — `agent-nuvira doctor` with color-coded status, watch mode, and auto-fix
38
38
  - **Memory compression & pruning** — automatic trajectory summarization with configurable retention policies
39
- - **VS Code extension** — 9 commands, inline code suggestions, diff viewer, agent progress panel
39
+ - **VS Code extension** — Chat Panel with streaming responses, slash commands, and session history;
40
+ Diagnostic → AI Fix from lightbulb menu; Code Lens actions (Test/Review/Explain/Fix) above functions
41
+ and classes; 9 commands, inline code suggestions, diff viewer, agent progress panel
40
42
  - **Remote agent federation** — multi-machine collaboration with protocol, server, and client
41
43
  - **Web UI dashboard** — React dashboard with DAG visualization, model health, cost charts, and history browser
42
44
  - **Hybrid model routing** — intelligent model selection based on task complexity, cost, and availability
@@ -1360,8 +1362,11 @@ npx tsc --noEmit
1360
1362
  | 2.5 | Provider health dashboard — `buff doctor` | ✅ Complete |
1361
1363
  | 2.6 | Memory compression & pruning — trajectory summarization | ✅ Complete |
1362
1364
  | **Phase 3: Major Upgrades** | | |
1363
- | 3.1 | VS Code extension — 9 commands, inline suggestions, diff viewer | ✅ Complete |
1364
- | 3.2 | Remote agent federationmulti-machine collaboration | ✅ Complete |
1365
+ | 3.1 | VS Code extension — 9 commands, inline suggestions, diff viewer, agent progress panel | ✅ Complete |
1366
+ | 3.2 | **B1: Chat Panel**Multi-turn chat with streaming, 6 slash commands, session history, file context | ✅ Complete (v1.33.0) |
1367
+ | 3.3 | **B3: Diagnostic → AI Fix** — "Fix with Agent-Nuvira" in lightbulb menu on red squiggles | ✅ Complete (v1.33.0) |
1368
+ | 3.4 | **B5: Code Lens Actions** — Test/Review/Explain/Fix actions above functions and classes | ✅ Complete (v1.34.0) |
1369
+ | 3.5 | Remote agent federation — multi-machine collaboration | ✅ Complete |
1365
1370
  | 3.3 | Web UI dashboard — React + Recharts + DAG visualization | ✅ Complete |
1366
1371
  | 3.4 | Hybrid model routing — complexity-based model selection | ✅ Complete |
1367
1372
  | 3.5 | Team collaboration — shared config, memory, and review pipelines | ✅ Complete |
@@ -1443,6 +1448,9 @@ npx tsc --noEmit
1443
1448
  | **v1.29.0** | Sep 2026 | Phase 10 — Autonomous publish + phase-wise execution (CredentialStore, PhaseEngine, `buff publish`, `buff phase`, git push, npm auth) + 86 new tests |
1444
1449
  | **v1.30.0** | Sep 2026 | Phase 10 tests + docs — 80 unit tests (CredentialStore + PhaseExecutionEngine), README/Product_Guide/website updated with Phase 10 progress |
1445
1450
  | **v1.31.0** | Sep 2026 | Phase 11 — TS Compiler API-Aware Structural Editing (ts-adapter.ts, transform.ts, edit.ts rewrite, 66 new tests), proper parser-level accuracy for TS/JS edits |
1451
+ | **v1.32.0** | Oct 2026 | Pillar A — GitLab Agent (MRs, issues, pipelines) + PR Review Agent (inline review, security scans) + website Git & PR section |
1452
+ | **v1.33.0** | Oct 2026 | Pillar B1+B3 — VS Code Chat Panel with streaming, slash commands, session history + Diagnostic → AI Fix from lightbulb menu |
1453
+ | **v1.34.0** | Oct 2026 | Pillar B5 — VS Code Code Lens actions (Test/Review/Explain/Fix) via quick pick menu above functions and classes |
1446
1454
 
1447
1455
  ---
1448
1456
 
@@ -1487,7 +1495,7 @@ npx tsc --noEmit
1487
1495
  ### Phase 3: Major Upgrades — Advanced Agent Systems
1488
1496
  | Feature | Description |
1489
1497
  |---------|-------------|
1490
- | **VS Code Extension** | 9 commands, inline code suggestions, diff viewer, agent progress panel |
1498
+ | **VS Code Extension** | Chat Panel (streaming, slash commands), Diagnostic→AI Fix, Code Lens actions, 9 commands, inline suggestions, diff viewer, agent progress panel |
1491
1499
  | **Agent Federation** | Multi-machine collaboration via A2A protocol, server, and client |
1492
1500
  | **Web Dashboard** | React + Recharts + DAG visualization, model health, cost charts |
1493
1501
  | **Hybrid Model Routing** | Complexity-based model selection with cost optimization |
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Issue Triage Agent — Fetches open issues, classifies them via LLM, assigns priority,
3
+ * suggests labels, and optionally posts triage comments with analysis.
4
+ *
5
+ * Capabilities:
6
+ * - Fetch open unlabeled issues from GitHub or GitLab
7
+ * - Classify issues by type: bug, feature, question, docs, chore
8
+ * - Assign priority: critical, high, medium, low
9
+ * - Suggest relevant labels (e.g., "bug", "enhancement", "good first issue")
10
+ * - Estimate difficulty: easy, medium, hard
11
+ * - Optionally auto-assign based on git blame expertise heuristics
12
+ * - Post triage comment with analysis and suggested action
13
+ *
14
+ * Authentication (GitHub, priority order):
15
+ * 1. GH_TOKEN env var
16
+ * 2. GITHUB_TOKEN env var
17
+ * 3. githubToken from context metadata
18
+ *
19
+ * Authentication (GitLab):
20
+ * 1. GITLAB_TOKEN env var
21
+ * 2. GITLAB_ACCESS_TOKEN env var
22
+ * 3. gitlabToken from context metadata
23
+ *
24
+ * Usage in task plans:
25
+ * ```json
26
+ * { "id": "step-triage", "description": "Triage open issues in my-org/my-repo", "agentType": "issue-triage", "dependsOn": [] }
27
+ * ```
28
+ */
29
+ import { Agent, type AgentContext, type AgentResult } from '../agent.js';
30
+ import type { LLMCallFn } from '../agent.js';
31
+ import { GitLabAPIClient } from './gitlab-api-client.js';
32
+ /** Classification categories for issues */
33
+ export type IssueClassification = 'bug' | 'feature' | 'question' | 'docs' | 'chore';
34
+ /** Priority levels for issues */
35
+ export type IssuePriority = 'critical' | 'high' | 'medium' | 'low';
36
+ /** Difficulty estimate for issue resolution */
37
+ export type IssueDifficulty = 'easy' | 'medium' | 'hard';
38
+ /** A triaged issue with classification results */
39
+ export interface TriageResult {
40
+ issueNumber: number;
41
+ title: string;
42
+ classification: IssueClassification;
43
+ priority: IssuePriority;
44
+ suggestedLabels: string[];
45
+ suggestedAssignee?: string;
46
+ suggestedMilestone?: string;
47
+ estimatedDifficulty: IssueDifficulty;
48
+ suggestedAction: string;
49
+ reasoning: string;
50
+ }
51
+ /** A simplified issue from GitHub or GitLab */
52
+ export interface IssueSummary {
53
+ number: number;
54
+ title: string;
55
+ body: string;
56
+ author: string;
57
+ labels: string[];
58
+ createdAt: string;
59
+ updatedAt: string;
60
+ url: string;
61
+ comments: number;
62
+ }
63
+ /**
64
+ * Issue Triage Agent — Fetches open issues and classifies them via LLM.
65
+ */
66
+ export declare class IssueTriageAgent extends Agent {
67
+ readonly name = "Issue Triage";
68
+ readonly description = "Classifies, prioritizes, and labels open issues from GitHub and GitLab";
69
+ private gitlabClient;
70
+ private ghToken;
71
+ private glToken;
72
+ constructor(gitlabClient?: GitLabAPIClient);
73
+ execute(context: AgentContext, callLLM: LLMCallFn): Promise<AgentResult>;
74
+ private detectOperation;
75
+ private detectSource;
76
+ private resolveGitHubRepo;
77
+ private resolveGitLabProject;
78
+ private get ghHeaders();
79
+ private githubGet;
80
+ private githubPatch;
81
+ private githubPost;
82
+ /** Fetch open issues from GitHub */
83
+ private fetchGitHubIssues;
84
+ /** Fetch open issues from GitLab */
85
+ private fetchGitLabIssues;
86
+ /** Fetch issues from the appropriate source */
87
+ private fetchIssues;
88
+ /** Ensure labels exist on a GitHub repo (create if missing) */
89
+ private ensureGitHubLabels;
90
+ /** Get a hex color for a label based on its name */
91
+ private getLabelColor;
92
+ /** Use git blame to determine who has the most expertise in files mentioned in the issue */
93
+ private inferAssigneeFromGitBlame;
94
+ /** Build a prompt for the LLM to classify a single issue */
95
+ private buildClassificationPrompt;
96
+ /** Parse the LLM classification response into a TriageResult */
97
+ private parseClassificationResponse;
98
+ private validateClassification;
99
+ private validatePriority;
100
+ private validateDifficulty;
101
+ /** List unlabeled open issues */
102
+ private listUnlabeledIssues;
103
+ /** Triage a single issue by number */
104
+ private triageSingleIssue;
105
+ /** Triage all unlabeled open issues */
106
+ private triageAllOpenIssues;
107
+ /** Extract an issue number from a description */
108
+ private extractIssueNumber;
109
+ /** Build a triage comment for an issue */
110
+ private buildTriageComment;
111
+ /** Group triage results by classification */
112
+ private groupByClassification;
113
+ /** Group triage results by priority */
114
+ private groupByPriority;
115
+ /** Group triage results by difficulty */
116
+ private groupByDifficulty;
117
+ }
118
+ //# sourceMappingURL=issue-triage-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-triage-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/agents/issue-triage-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,834 @@
1
+ /**
2
+ * Issue Triage Agent — Fetches open issues, classifies them via LLM, assigns priority,
3
+ * suggests labels, and optionally posts triage comments with analysis.
4
+ *
5
+ * Capabilities:
6
+ * - Fetch open unlabeled issues from GitHub or GitLab
7
+ * - Classify issues by type: bug, feature, question, docs, chore
8
+ * - Assign priority: critical, high, medium, low
9
+ * - Suggest relevant labels (e.g., "bug", "enhancement", "good first issue")
10
+ * - Estimate difficulty: easy, medium, hard
11
+ * - Optionally auto-assign based on git blame expertise heuristics
12
+ * - Post triage comment with analysis and suggested action
13
+ *
14
+ * Authentication (GitHub, priority order):
15
+ * 1. GH_TOKEN env var
16
+ * 2. GITHUB_TOKEN env var
17
+ * 3. githubToken from context metadata
18
+ *
19
+ * Authentication (GitLab):
20
+ * 1. GITLAB_TOKEN env var
21
+ * 2. GITLAB_ACCESS_TOKEN env var
22
+ * 3. gitlabToken from context metadata
23
+ *
24
+ * Usage in task plans:
25
+ * ```json
26
+ * { "id": "step-triage", "description": "Triage open issues in my-org/my-repo", "agentType": "issue-triage", "dependsOn": [] }
27
+ * ```
28
+ */
29
+ import { execSync } from 'node:child_process';
30
+ import { Agent } from '../agent.js';
31
+ import { GitLabAPIClient } from './gitlab-api-client.js';
32
+ // ─── Classification Labels ──────────────────────────────────────────────────
33
+ /** Label suggestions based on classification */
34
+ const CLASSIFICATION_LABELS = {
35
+ bug: ['bug', 'needs-triage', 'needs-reproduction'],
36
+ feature: ['enhancement', 'feature-request', 'needs-discussion'],
37
+ question: ['question', 'support', 'needs-clarification'],
38
+ docs: ['documentation', 'docs', 'good-first-issue'],
39
+ chore: ['chore', 'tech-debt', 'refactor'],
40
+ };
41
+ /** Priority color mapping for comment headers */
42
+ const PRIORITY_EMOJI = {
43
+ critical: '🔴',
44
+ high: '🟠',
45
+ medium: '🟡',
46
+ low: '🟢',
47
+ };
48
+ /** Priority keywords for LLM context */
49
+ const PRIORITY_GUIDELINES = `
50
+ Priority Guidelines:
51
+ - CRITICAL: Security vulnerabilities, data loss, production outage, broken auth
52
+ - HIGH: Major feature broken, regression, blocking work, no workaround
53
+ - MEDIUM: Non-critical bug, nice-to-have feature, minor improvement
54
+ - LOW: Cosmetic issue, documentation, wishlist, nice-to-have
55
+ `;
56
+ const CLASSIFICATION_GUIDELINES = `
57
+ Classification Guidelines:
58
+ - bug: A behavior that is incorrect, unexpected, or broken
59
+ - feature: A request for new functionality, capability, or enhancement
60
+ - question: A request for information, help, or clarification
61
+ - docs: Issues with documentation, comments, or examples
62
+ - chore: Maintenance, refactoring, tech debt, dependencies, tooling
63
+ `;
64
+ const DIFFICULTY_GUIDELINES = `
65
+ Difficulty Guidelines:
66
+ - easy: Small change, well-understood, limited scope (< 20 lines)
67
+ - medium: Moderate change, multiple files, requires some investigation
68
+ - hard: Large change, architectural impact, deep domain knowledge needed
69
+ `;
70
+ const MAX_BODY_CHARS = 2000; // Max chars of issue body to include in LLM prompt
71
+ const DEFAULT_MAX_ISSUES = 10; // Max issues to triage per run
72
+ // ─── Agent ──────────────────────────────────────────────────────────────────
73
+ /**
74
+ * Issue Triage Agent — Fetches open issues and classifies them via LLM.
75
+ */
76
+ export class IssueTriageAgent extends Agent {
77
+ name = 'Issue Triage';
78
+ description = 'Classifies, prioritizes, and labels open issues from GitHub and GitLab';
79
+ gitlabClient;
80
+ ghToken;
81
+ glToken;
82
+ constructor(gitlabClient) {
83
+ super();
84
+ this.gitlabClient = gitlabClient ?? new GitLabAPIClient();
85
+ this.ghToken = process.env.GH_TOKEN || process.env.GITHUB_TOKEN || '';
86
+ this.glToken = process.env.GITLAB_TOKEN || process.env.GITLAB_ACCESS_TOKEN || '';
87
+ }
88
+ async execute(context, callLLM) {
89
+ try {
90
+ // Refresh tokens from context metadata
91
+ this.ghToken = context.metadata?.githubToken ||
92
+ context.metadata?.githubApiKey ||
93
+ process.env.GH_TOKEN || process.env.GITHUB_TOKEN || '';
94
+ this.glToken = context.metadata?.gitlabToken ||
95
+ process.env.GITLAB_TOKEN || process.env.GITLAB_ACCESS_TOKEN || '';
96
+ const taskDesc = context.taskPlan.find((s) => s.agentType === 'issue-triage' && s.status === 'running')?.description || context.goal;
97
+ const operation = this.detectOperation(taskDesc);
98
+ const source = this.detectSource(taskDesc);
99
+ // Resolve repo info based on the source
100
+ // For 'auto' mode, try both GitHub and GitLab
101
+ let repoInfo = null;
102
+ let gitlabProjectId = null;
103
+ if (source === 'github') {
104
+ repoInfo = await this.resolveGitHubRepo(context, taskDesc);
105
+ if (!repoInfo) {
106
+ return {
107
+ success: false,
108
+ summary: 'Could not resolve GitHub repository',
109
+ error: 'Specify owner/repo in the goal (e.g., "Triage issues in owner/repo") or ensure git remote points to GitHub',
110
+ };
111
+ }
112
+ }
113
+ else if (source === 'gitlab') {
114
+ gitlabProjectId = await this.resolveGitLabProject(context, taskDesc);
115
+ if (!gitlabProjectId) {
116
+ return {
117
+ success: false,
118
+ summary: 'Could not resolve GitLab project',
119
+ error: 'Set GITLAB_TOKEN or ensure git remote points to GitLab',
120
+ };
121
+ }
122
+ }
123
+ else {
124
+ // Auto mode: try GitHub first, fall back to GitLab
125
+ repoInfo = await this.resolveGitHubRepo(context, taskDesc);
126
+ if (!repoInfo) {
127
+ gitlabProjectId = await this.resolveGitLabProject(context, taskDesc);
128
+ if (!gitlabProjectId) {
129
+ return {
130
+ success: false,
131
+ summary: 'Could not resolve any repository',
132
+ error: 'Ensure git remote points to GitHub or GitLab, or specify owner/repo in the goal',
133
+ };
134
+ }
135
+ }
136
+ }
137
+ const maxIssues = context.metadata?.maxIssuesToTriage || DEFAULT_MAX_ISSUES;
138
+ switch (operation) {
139
+ case 'list-unlabeled':
140
+ return await this.listUnlabeledIssues(source, repoInfo, gitlabProjectId, maxIssues);
141
+ case 'classify': {
142
+ const issueNumber = this.extractIssueNumber(taskDesc);
143
+ if (!issueNumber) {
144
+ return { success: false, summary: 'Issue number required', error: 'Specify #number (e.g., "Classify #42")' };
145
+ }
146
+ return await this.triageSingleIssue(source, repoInfo, gitlabProjectId, issueNumber, callLLM);
147
+ }
148
+ case 'triage-specific': {
149
+ const issueNumber = this.extractIssueNumber(taskDesc);
150
+ if (!issueNumber) {
151
+ return { success: false, summary: 'Issue number required', error: 'Specify #number (e.g., "Triage #42")' };
152
+ }
153
+ return await this.triageSingleIssue(source, repoInfo, gitlabProjectId, issueNumber, callLLM);
154
+ }
155
+ case 'triage-all':
156
+ default:
157
+ return await this.triageAllOpenIssues(source, repoInfo, gitlabProjectId, maxIssues, callLLM, context);
158
+ }
159
+ }
160
+ catch (err) {
161
+ const msg = err instanceof Error ? err.message : String(err);
162
+ return { success: false, summary: 'Issue triage failed', error: msg };
163
+ }
164
+ }
165
+ // ─── Operation Detection ──────────────────────────────────────────────────
166
+ detectOperation(description) {
167
+ const lower = description.toLowerCase();
168
+ if ((lower.includes('list') || lower.includes('show') || lower.includes('find')) &&
169
+ (lower.includes('unlabeled') || lower.includes('un-labelled') || lower.includes('no label'))) {
170
+ return 'list-unlabeled';
171
+ }
172
+ if ((lower.includes('classify') || lower.includes('categorize')) &&
173
+ (lower.includes('#') || /\d+/.test(description)) &&
174
+ this.extractIssueNumber(description)) {
175
+ return 'classify';
176
+ }
177
+ if ((lower.includes('triage') || lower.includes('review') || lower.includes('assess') || lower.includes('analyze')) &&
178
+ (lower.includes('#') || /\d+/.test(description)) &&
179
+ this.extractIssueNumber(description)) {
180
+ return 'triage-specific';
181
+ }
182
+ if (lower.includes('triage') || lower.includes('all') || lower.includes('open issues') ||
183
+ lower.includes('unlabeled') || lower.includes('un-triaged')) {
184
+ return 'triage-all';
185
+ }
186
+ return 'triage-all'; // Default: triage all open issues
187
+ }
188
+ // ─── Source Detection ────────────────────────────────────────────────────
189
+ detectSource(description) {
190
+ const lower = description.toLowerCase();
191
+ if (lower.includes('gitlab'))
192
+ return 'gitlab';
193
+ if (lower.includes('github'))
194
+ return 'github';
195
+ // Check tokens to infer source
196
+ if (this.glToken && !this.ghToken)
197
+ return 'gitlab';
198
+ if (this.ghToken && !this.glToken)
199
+ return 'github';
200
+ return 'auto';
201
+ }
202
+ // ─── Repository Resolution ────────────────────────────────────────────────
203
+ async resolveGitHubRepo(context, description) {
204
+ // Check description for explicit owner/repo
205
+ const explicitMatch = description.match(/\b([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_.-]+)\b/);
206
+ if (explicitMatch) {
207
+ return { owner: explicitMatch[1], repo: explicitMatch[2] };
208
+ }
209
+ // Check context metadata
210
+ const metaOwner = context.metadata?.githubOwner;
211
+ const metaRepo = context.metadata?.githubRepo;
212
+ if (metaOwner && metaRepo)
213
+ return { owner: metaOwner, repo: metaRepo };
214
+ // Try git remote
215
+ try {
216
+ const remote = execSync('git remote get-url origin 2>&1', {
217
+ timeout: 10_000,
218
+ encoding: 'utf-8',
219
+ stdio: 'pipe',
220
+ }).trim();
221
+ const match = remote.match(/github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/);
222
+ if (match)
223
+ return { owner: match[1], repo: match[2] };
224
+ }
225
+ catch {
226
+ // Fall through
227
+ }
228
+ return null;
229
+ }
230
+ async resolveGitLabProject(context, description) {
231
+ // Check description for numeric project ID
232
+ const idMatch = description.match(/project\s*[#:]\s*(\d+)/i);
233
+ if (idMatch)
234
+ return parseInt(idMatch[1], 10);
235
+ // Check context metadata
236
+ const metaId = context.metadata?.gitlabProjectId;
237
+ if (typeof metaId === 'number')
238
+ return metaId;
239
+ if (typeof metaId === 'string' && /^\d+$/.test(metaId))
240
+ return Number(metaId);
241
+ const metaPath = context.metadata?.gitlabProjectPath;
242
+ if (metaPath) {
243
+ try {
244
+ return (await this.gitlabClient.getProject(metaPath)).id;
245
+ }
246
+ catch { /* fall through */ }
247
+ }
248
+ // Try git remote
249
+ try {
250
+ const remote = execSync('git remote get-url origin 2>&1', {
251
+ timeout: 10_000,
252
+ encoding: 'utf-8',
253
+ stdio: 'pipe',
254
+ }).trim();
255
+ const match = remote.match(/gitlab\.com[/:]([^/]+\/[^/.]+?)(?:\.git)?$/);
256
+ if (match) {
257
+ try {
258
+ return (await this.gitlabClient.getProject(match[1])).id;
259
+ }
260
+ catch { /* fall through */ }
261
+ }
262
+ }
263
+ catch {
264
+ // Fall through
265
+ }
266
+ return null;
267
+ }
268
+ // ─── GitHub API Helpers ──────────────────────────────────────────────────
269
+ get ghHeaders() {
270
+ const h = {
271
+ 'Accept': 'application/vnd.github.v3+json',
272
+ 'Content-Type': 'application/json',
273
+ 'User-Agent': 'agent-nuvira/1.0',
274
+ };
275
+ if (this.ghToken)
276
+ h['Authorization'] = `Bearer ${this.ghToken}`;
277
+ return h;
278
+ }
279
+ async githubGet(path) {
280
+ const response = await fetch(`https://api.github.com${path}`, {
281
+ method: 'GET',
282
+ headers: this.ghHeaders,
283
+ });
284
+ if (!response.ok) {
285
+ const body = await response.text().catch(() => '');
286
+ if (response.status === 401)
287
+ throw new Error('GitHub authentication failed. Set GH_TOKEN or GITHUB_TOKEN.');
288
+ if (response.status === 403)
289
+ throw new Error('GitHub API rate limit exceeded or access denied.');
290
+ if (response.status === 404)
291
+ throw new Error('GitHub resource not found.');
292
+ throw new Error(`GitHub API error ${response.status}: ${body.slice(0, 200)}`);
293
+ }
294
+ return response.json();
295
+ }
296
+ async githubPatch(path, body) {
297
+ const response = await fetch(`https://api.github.com${path}`, {
298
+ method: 'PATCH',
299
+ headers: this.ghHeaders,
300
+ body: JSON.stringify(body),
301
+ });
302
+ if (!response.ok) {
303
+ const text = await response.text().catch(() => '');
304
+ throw new Error(`GitHub API error ${response.status}: ${text.slice(0, 200)}`);
305
+ }
306
+ return response.json();
307
+ }
308
+ async githubPost(path, body) {
309
+ const response = await fetch(`https://api.github.com${path}`, {
310
+ method: 'POST',
311
+ headers: this.ghHeaders,
312
+ body: JSON.stringify(body),
313
+ });
314
+ if (!response.ok) {
315
+ const text = await response.text().catch(() => '');
316
+ throw new Error(`GitHub API error ${response.status}: ${text.slice(0, 200)}`);
317
+ }
318
+ return response.json();
319
+ }
320
+ // ─── Fetch Issues ─────────────────────────────────────────────────────────
321
+ /** Fetch open issues from GitHub */
322
+ async fetchGitHubIssues(repo, maxIssues, unlabeledOnly) {
323
+ const params = new URLSearchParams({
324
+ state: 'open',
325
+ per_page: String(maxIssues),
326
+ sort: 'created',
327
+ direction: 'desc',
328
+ });
329
+ const raw = await this.githubGet(`/repos/${repo.owner}/${repo.repo}/issues?${params}`);
330
+ // Filter out pull requests (GitHub API returns PRs as issues)
331
+ const issues = raw.filter((i) => !i.pull_request);
332
+ return issues.map((i) => ({
333
+ number: i.number,
334
+ title: i.title,
335
+ body: (i.body || '').slice(0, MAX_BODY_CHARS),
336
+ author: i.user?.login || 'unknown',
337
+ labels: i.labels?.map((l) => l.name) || [],
338
+ createdAt: i.created_at,
339
+ updatedAt: i.updated_at,
340
+ url: i.html_url,
341
+ comments: i.comments || 0,
342
+ }));
343
+ }
344
+ /** Fetch open issues from GitLab */
345
+ async fetchGitLabIssues(projectId, maxIssues, unlabeledOnly) {
346
+ const issues = await this.gitlabClient.listIssues(projectId, {
347
+ state: 'opened',
348
+ perPage: maxIssues,
349
+ });
350
+ return issues.map((i) => ({
351
+ number: i.iid,
352
+ title: i.title,
353
+ body: (i.description || '').slice(0, MAX_BODY_CHARS),
354
+ author: i.author?.username || 'unknown',
355
+ labels: i.labels || [],
356
+ createdAt: i.createdAt,
357
+ updatedAt: i.updatedAt,
358
+ url: i.webUrl,
359
+ comments: 0,
360
+ }));
361
+ }
362
+ /** Fetch issues from the appropriate source */
363
+ async fetchIssues(source, repoInfo, gitlabProjectId, maxIssues, unlabeledOnly) {
364
+ if (source === 'github' && repoInfo) {
365
+ const all = await this.fetchGitHubIssues(repoInfo, maxIssues, unlabeledOnly);
366
+ return unlabeledOnly ? all.filter((i) => i.labels.length === 0) : all;
367
+ }
368
+ if (source === 'gitlab' && gitlabProjectId) {
369
+ const all = await this.fetchGitLabIssues(gitlabProjectId, maxIssues, unlabeledOnly);
370
+ return unlabeledOnly ? all.filter((i) => i.labels.length === 0) : all;
371
+ }
372
+ // Auto-detect: try GitHub first, then GitLab
373
+ if (source === 'auto') {
374
+ if (repoInfo) {
375
+ const all = await this.fetchGitHubIssues(repoInfo, maxIssues, unlabeledOnly);
376
+ return unlabeledOnly ? all.filter((i) => i.labels.length === 0) : all;
377
+ }
378
+ if (gitlabProjectId) {
379
+ const all = await this.fetchGitLabIssues(gitlabProjectId, maxIssues, unlabeledOnly);
380
+ return unlabeledOnly ? all.filter((i) => i.labels.length === 0) : all;
381
+ }
382
+ }
383
+ return [];
384
+ }
385
+ // ─── GitHub Label Helpers ────────────────────────────────────────────────
386
+ /** Ensure labels exist on a GitHub repo (create if missing) */
387
+ async ensureGitHubLabels(repo, labels) {
388
+ for (const label of labels) {
389
+ try {
390
+ await this.githubGet(`/repos/${repo.owner}/${repo.repo}/labels/${encodeURIComponent(label)}`);
391
+ }
392
+ catch {
393
+ // Label doesn't exist — create it
394
+ try {
395
+ const color = this.getLabelColor(label);
396
+ await this.githubPost(`/repos/${repo.owner}/${repo.repo}/labels`, {
397
+ name: label,
398
+ color,
399
+ description: `Auto-managed by agent-nuvira issue triage`,
400
+ });
401
+ }
402
+ catch {
403
+ // Best-effort label creation
404
+ }
405
+ }
406
+ }
407
+ }
408
+ /** Get a hex color for a label based on its name */
409
+ getLabelColor(label) {
410
+ const colorMap = {
411
+ bug: 'd73a4a', // Red
412
+ critical: 'b60205', // Dark red
413
+ high: 'e99695', // Light red
414
+ medium: 'f9d0c4', // Peach
415
+ low: 'c2e0c6', // Light green
416
+ 'needs-triage': 'fbca04', // Yellow
417
+ 'needs-reproduction': 'fbca04',
418
+ 'needs-discussion': 'fbca04',
419
+ 'needs-clarification': 'fbca04',
420
+ enhancement: 'a2eeef', // Teal
421
+ 'feature-request': 'a2eeef',
422
+ question: 'd876e3', // Purple
423
+ support: 'd876e3',
424
+ documentation: '0075ca', // Blue
425
+ docs: '0075ca',
426
+ chore: 'bfdadc', // Gray-blue
427
+ 'tech-debt': 'bfdadc',
428
+ refactor: 'bfdadc',
429
+ 'good-first-issue': '7057ff', // Indigo
430
+ };
431
+ return colorMap[label.toLowerCase()] || 'c5def5'; // Default light blue
432
+ }
433
+ // ─── Git Blame Expertise Heuristic ───────────────────────────────────────
434
+ /** Use git blame to determine who has the most expertise in files mentioned in the issue */
435
+ async inferAssigneeFromGitBlame(issueBody) {
436
+ try {
437
+ // Extract file paths from the issue body
438
+ const filePatterns = [
439
+ /`([a-zA-Z0-9_/.-]+\.[a-zA-Z]+)`/g, // `src/app.ts`
440
+ /(?:in|file|at)\s+`([^`]+)`/gi, // in `file.ts`
441
+ /(?:file|path):\s*([^\s,;]+)/gi, // file: src/app.ts
442
+ ];
443
+ const mentionedFiles = [];
444
+ for (const pattern of filePatterns) {
445
+ let match;
446
+ while ((match = pattern.exec(issueBody)) !== null) {
447
+ const filePath = match[1].replace(/['"`]/g, '').trim();
448
+ if (filePath && !mentionedFiles.includes(filePath)) {
449
+ mentionedFiles.push(filePath);
450
+ }
451
+ }
452
+ }
453
+ if (mentionedFiles.length === 0)
454
+ return undefined;
455
+ // Run git blame on the first mentioned file that exists
456
+ for (const file of mentionedFiles.slice(0, 3)) {
457
+ try {
458
+ const blameOutput = execSync(`git blame --line-porcelain "${file}" 2>/dev/null | grep "^author " | sort | uniq -c | sort -rn | head -3`, {
459
+ timeout: 10_000,
460
+ encoding: 'utf-8',
461
+ stdio: 'pipe',
462
+ });
463
+ const lines = blameOutput.trim().split('\n').filter(Boolean);
464
+ if (lines.length > 0) {
465
+ // Extract the author name from the first line: "42 author Name"
466
+ const topAuthor = lines[0].replace(/^\s*\d+\s+author\s+/, '').trim();
467
+ if (topAuthor)
468
+ return topAuthor;
469
+ }
470
+ }
471
+ catch {
472
+ continue; // Try next file
473
+ }
474
+ }
475
+ }
476
+ catch {
477
+ // Git blame failed
478
+ }
479
+ return undefined;
480
+ }
481
+ // ─── LLM Classification ──────────────────────────────────────────────────
482
+ /** Build a prompt for the LLM to classify a single issue */
483
+ buildClassificationPrompt(issue) {
484
+ return [
485
+ `You are an expert issue triager for a software project. Analyze the following issue and respond with a valid JSON object.`,
486
+ ``,
487
+ CLASSIFICATION_GUIDELINES,
488
+ PRIORITY_GUIDELINES,
489
+ DIFFICULTY_GUIDELINES,
490
+ ``,
491
+ `## Issue #${issue.number}: ${issue.title}`,
492
+ ``,
493
+ `**Author:** ${issue.author}`,
494
+ `**Labels:** ${issue.labels.length > 0 ? issue.labels.join(', ') : '(none)'}`,
495
+ `**Created:** ${issue.createdAt}`,
496
+ `**Comments:** ${issue.comments}`,
497
+ ``,
498
+ issue.body ? `**Description:**\n${issue.body.slice(0, MAX_BODY_CHARS)}\n` : '**Description:** (no description)',
499
+ ``,
500
+ `Respond with ONLY a valid JSON object (no markdown, no code blocks):`,
501
+ `{`,
502
+ ` "classification": "bug" | "feature" | "question" | "docs" | "chore",`,
503
+ ` "priority": "critical" | "high" | "medium" | "low",`,
504
+ ` "suggestedLabels": ["label1", "label2", ...],`,
505
+ ` "estimatedDifficulty": "easy" | "medium" | "hard",`,
506
+ ` "reasoning": "Brief 1-2 sentence explanation",`,
507
+ ` "suggestedAction": "What should be done to address this issue"`,
508
+ `}`,
509
+ ].join('\n');
510
+ }
511
+ /** Parse the LLM classification response into a TriageResult */
512
+ parseClassificationResponse(response) {
513
+ // Strip markdown code block markers if present
514
+ let cleaned = response.trim();
515
+ const jsonMatch = cleaned.match(/```(?:json)?\s*\n?([\s\S]*?)```/);
516
+ if (jsonMatch) {
517
+ cleaned = jsonMatch[1].trim();
518
+ }
519
+ // Find JSON object boundaries
520
+ const start = cleaned.indexOf('{');
521
+ const end = cleaned.lastIndexOf('}');
522
+ if (start === -1 || end === -1) {
523
+ return {
524
+ classification: 'question',
525
+ priority: 'medium',
526
+ suggestedLabels: ['needs-triage'],
527
+ estimatedDifficulty: 'medium',
528
+ reasoning: 'Could not parse LLM response',
529
+ suggestedAction: 'Manual review required',
530
+ };
531
+ }
532
+ try {
533
+ const parsed = JSON.parse(cleaned.slice(start, end + 1));
534
+ return {
535
+ classification: this.validateClassification(parsed.classification) ? parsed.classification : 'question',
536
+ priority: this.validatePriority(parsed.priority) ? parsed.priority : 'medium',
537
+ suggestedLabels: Array.isArray(parsed.suggestedLabels) ? parsed.suggestedLabels : ['needs-triage'],
538
+ estimatedDifficulty: this.validateDifficulty(parsed.estimatedDifficulty) ? parsed.estimatedDifficulty : 'medium',
539
+ reasoning: typeof parsed.reasoning === 'string' ? parsed.reasoning.slice(0, 300) : 'No reasoning provided',
540
+ suggestedAction: typeof parsed.suggestedAction === 'string' ? parsed.suggestedAction.slice(0, 500) : 'Review and triage',
541
+ };
542
+ }
543
+ catch {
544
+ return {
545
+ classification: 'question',
546
+ priority: 'medium',
547
+ suggestedLabels: ['needs-triage'],
548
+ estimatedDifficulty: 'medium',
549
+ reasoning: 'Failed to parse LLM response as JSON',
550
+ suggestedAction: 'Manual review required',
551
+ };
552
+ }
553
+ }
554
+ validateClassification(c) {
555
+ return typeof c === 'string' && ['bug', 'feature', 'question', 'docs', 'chore'].includes(c);
556
+ }
557
+ validatePriority(p) {
558
+ return typeof p === 'string' && ['critical', 'high', 'medium', 'low'].includes(p);
559
+ }
560
+ validateDifficulty(d) {
561
+ return typeof d === 'string' && ['easy', 'medium', 'hard'].includes(d);
562
+ }
563
+ // ─── Operations ──────────────────────────────────────────────────────────
564
+ /** List unlabeled open issues */
565
+ async listUnlabeledIssues(source, repoInfo, gitlabProjectId, maxIssues) {
566
+ const issues = await this.fetchIssues(source, repoInfo, gitlabProjectId, maxIssues, true);
567
+ if (issues.length === 0) {
568
+ return { success: true, summary: 'No unlabeled issues found' };
569
+ }
570
+ const details = issues.map((i) => ` • #${i.number} ${i.title} (by ${i.author})`).join('\n');
571
+ return {
572
+ success: true,
573
+ summary: `Found ${issues.length} unlabeled issue(s)`,
574
+ details,
575
+ };
576
+ }
577
+ /** Triage a single issue by number */
578
+ async triageSingleIssue(source, repoInfo, gitlabProjectId, issueNumber, callLLM) {
579
+ // Fetch the specific issue
580
+ let issue = null;
581
+ if (source === 'github' && repoInfo) {
582
+ const all = await this.fetchGitHubIssues(repoInfo, 50, false);
583
+ issue = all.find((i) => i.number === issueNumber) || null;
584
+ }
585
+ else if (source === 'gitlab' && gitlabProjectId) {
586
+ const all = await this.fetchGitLabIssues(gitlabProjectId, 50, false);
587
+ issue = all.find((i) => i.number === issueNumber) || null;
588
+ }
589
+ else if (source === 'auto') {
590
+ if (repoInfo) {
591
+ const all = await this.fetchGitHubIssues(repoInfo, 50, false);
592
+ issue = all.find((i) => i.number === issueNumber) || null;
593
+ }
594
+ if (!issue && gitlabProjectId) {
595
+ const all = await this.fetchGitLabIssues(gitlabProjectId, 50, false);
596
+ issue = all.find((i) => i.number === issueNumber) || null;
597
+ }
598
+ }
599
+ if (!issue) {
600
+ return {
601
+ success: false,
602
+ summary: `Issue #${issueNumber} not found`,
603
+ error: `Issue #${issueNumber} was not found in the repository`,
604
+ };
605
+ }
606
+ // Classify via LLM
607
+ const prompt = this.buildClassificationPrompt(issue);
608
+ const llmResponse = await callLLM(prompt, { temperature: 0.2, maxTokens: 600 });
609
+ const classification = this.parseClassificationResponse(llmResponse);
610
+ // Try to infer assignee from git blame
611
+ let suggestedAssignee;
612
+ if (issue.body) {
613
+ suggestedAssignee = await this.inferAssigneeFromGitBlame(issue.body);
614
+ }
615
+ const result = {
616
+ issueNumber: issue.number,
617
+ title: issue.title,
618
+ classification: classification.classification || 'question',
619
+ priority: classification.priority || 'medium',
620
+ suggestedLabels: classification.suggestedLabels || ['needs-triage'],
621
+ suggestedAssignee,
622
+ estimatedDifficulty: classification.estimatedDifficulty || 'medium',
623
+ suggestedAction: classification.suggestedAction || '',
624
+ reasoning: classification.reasoning || '',
625
+ };
626
+ // Apply labels (GitHub only — GitLab labels are project-managed)
627
+ if (source === 'github' && repoInfo) {
628
+ try {
629
+ // Ensure labels exist on the repo
630
+ await this.ensureGitHubLabels(repoInfo, result.suggestedLabels);
631
+ // Add labels to the issue
632
+ await this.githubPost(`/repos/${repoInfo.owner}/${repoInfo.repo}/issues/${issue.number}/labels`, { labels: result.suggestedLabels });
633
+ }
634
+ catch {
635
+ // Best-effort label application
636
+ }
637
+ }
638
+ // Post a triage comment
639
+ const triageComment = this.buildTriageComment(result);
640
+ if (source === 'github' && repoInfo) {
641
+ try {
642
+ await this.githubPost(`/repos/${repoInfo.owner}/${repoInfo.repo}/issues/${issue.number}/comments`, { body: triageComment });
643
+ }
644
+ catch {
645
+ // Best-effort comment
646
+ }
647
+ }
648
+ else if (source === 'gitlab' && gitlabProjectId) {
649
+ try {
650
+ await this.gitlabClient.createIssueNote(gitlabProjectId, issue.number, triageComment);
651
+ }
652
+ catch {
653
+ // Best-effort comment
654
+ }
655
+ }
656
+ const details = [
657
+ `##${result.issueNumber}: ${result.title}`,
658
+ `Classification: ${result.classification}`,
659
+ `Priority: ${PRIORITY_EMOJI[result.priority]} ${result.priority}`,
660
+ `Difficulty: ${result.estimatedDifficulty}`,
661
+ `Labels: ${result.suggestedLabels.join(', ')}`,
662
+ result.suggestedAssignee ? `Suggested Assignee: ${result.suggestedAssignee}` : '',
663
+ `Reasoning: ${result.reasoning}`,
664
+ ].filter(Boolean).join('\n');
665
+ return {
666
+ success: true,
667
+ summary: `Triaged #${issue.number}: ${result.classification} (${result.priority})`,
668
+ details,
669
+ };
670
+ }
671
+ /** Triage all unlabeled open issues */
672
+ async triageAllOpenIssues(source, repoInfo, gitlabProjectId, maxIssues, callLLM, context) {
673
+ const issues = await this.fetchIssues(source, repoInfo, gitlabProjectId, maxIssues, true);
674
+ if (issues.length === 0) {
675
+ return { success: true, summary: 'No unlabeled issues to triage' };
676
+ }
677
+ const triaged = [];
678
+ let successCount = 0;
679
+ let failCount = 0;
680
+ for (const issue of issues) {
681
+ try {
682
+ const prompt = this.buildClassificationPrompt(issue);
683
+ const llmResponse = await callLLM(prompt, { temperature: 0.2, maxTokens: 600 });
684
+ const classification = this.parseClassificationResponse(llmResponse);
685
+ let suggestedAssignee;
686
+ if (issue.body) {
687
+ suggestedAssignee = await this.inferAssigneeFromGitBlame(issue.body);
688
+ }
689
+ const result = {
690
+ issueNumber: issue.number,
691
+ title: issue.title,
692
+ classification: classification.classification || 'question',
693
+ priority: classification.priority || 'medium',
694
+ suggestedLabels: classification.suggestedLabels || ['needs-triage'],
695
+ suggestedAssignee,
696
+ estimatedDifficulty: classification.estimatedDifficulty || 'medium',
697
+ suggestedAction: classification.suggestedAction || '',
698
+ reasoning: classification.reasoning || '',
699
+ };
700
+ triaged.push(result);
701
+ // Apply labels (GitHub only)
702
+ if (source === 'github' && repoInfo) {
703
+ try {
704
+ await this.ensureGitHubLabels(repoInfo, result.suggestedLabels);
705
+ await this.githubPost(`/repos/${repoInfo.owner}/${repoInfo.repo}/issues/${issue.number}/labels`, { labels: result.suggestedLabels });
706
+ }
707
+ catch {
708
+ // Best-effort
709
+ }
710
+ }
711
+ // Post triage comment
712
+ const triageComment = this.buildTriageComment(result);
713
+ if (source === 'github' && repoInfo) {
714
+ try {
715
+ await this.githubPost(`/repos/${repoInfo.owner}/${repoInfo.repo}/issues/${issue.number}/comments`, { body: triageComment });
716
+ }
717
+ catch {
718
+ // Best-effort
719
+ }
720
+ }
721
+ else if (source === 'gitlab' && gitlabProjectId) {
722
+ try {
723
+ await this.gitlabClient.createIssueNote(gitlabProjectId, issue.number, triageComment);
724
+ }
725
+ catch {
726
+ // Best-effort
727
+ }
728
+ }
729
+ successCount++;
730
+ }
731
+ catch (err) {
732
+ failCount++;
733
+ triaged.push({
734
+ issueNumber: issue.number,
735
+ title: issue.title,
736
+ classification: 'question',
737
+ priority: 'medium',
738
+ suggestedLabels: ['needs-triage'],
739
+ estimatedDifficulty: 'medium',
740
+ suggestedAction: 'LLM classification failed',
741
+ reasoning: err instanceof Error ? err.message.slice(0, 100) : 'Unknown error',
742
+ });
743
+ }
744
+ }
745
+ // Build summary
746
+ const byClassification = this.groupByClassification(triaged);
747
+ const byPriority = this.groupByPriority(triaged);
748
+ const byDifficulty = this.groupByDifficulty(triaged);
749
+ const details = [
750
+ `## Triage Results (${triaged.length} issues)`,
751
+ ``,
752
+ `**By Classification:**`,
753
+ ...Object.entries(byClassification).map(([k, v]) => ` • ${k}: ${v}`),
754
+ ``,
755
+ `**By Priority:**`,
756
+ ...Object.entries(byPriority).map(([k, v]) => ` • ${k}: ${v}`),
757
+ ``,
758
+ `**By Difficulty:**`,
759
+ ...Object.entries(byDifficulty).map(([k, v]) => ` • ${k}: ${v}`),
760
+ ``,
761
+ `**Breakdown:**`,
762
+ ...triaged.map((t) => ` • #${t.issueNumber}: ${t.classification} (${PRIORITY_EMOJI[t.priority]} ${t.priority}, ${t.estimatedDifficulty})`),
763
+ ``,
764
+ `Successfully triaged: ${successCount}`,
765
+ failCount > 0 ? `Failed: ${failCount}` : '',
766
+ ].filter(Boolean).join('\n');
767
+ return {
768
+ success: failCount === 0,
769
+ summary: `Triaged ${triaged.length} issue(s): ${successCount} succeeded, ${failCount} failed`,
770
+ details,
771
+ };
772
+ }
773
+ // ─── Helpers ──────────────────────────────────────────────────────────────
774
+ /** Extract an issue number from a description */
775
+ extractIssueNumber(description) {
776
+ const patterns = [
777
+ /#(\d+)/,
778
+ /issue\s*#?(\d+)/i,
779
+ ];
780
+ for (const p of patterns) {
781
+ const match = description.match(p);
782
+ if (match)
783
+ return parseInt(match[1], 10);
784
+ }
785
+ return null;
786
+ }
787
+ /** Build a triage comment for an issue */
788
+ buildTriageComment(result) {
789
+ const lines = [
790
+ `## 🤖 Agent-Nuvira Triage`,
791
+ ``,
792
+ `| Field | Value |`,
793
+ `|-------|-------|`,
794
+ `| **Classification** | ${result.classification} |`,
795
+ `| **Priority** | ${PRIORITY_EMOJI[result.priority]} ${result.priority} |`,
796
+ `| **Difficulty** | ${result.estimatedDifficulty} |`,
797
+ `| **Suggested Labels** | ${result.suggestedLabels.join(', ')} |`,
798
+ result.suggestedAssignee ? `| **Suggested Assignee** | ${result.suggestedAssignee} |` : '',
799
+ ``,
800
+ `### Reasoning`,
801
+ result.reasoning,
802
+ ``,
803
+ result.suggestedAction ? `### Suggested Action\n${result.suggestedAction}\n` : '',
804
+ `---`,
805
+ `*Triaged by agent-nuvira issue-triage agent*`,
806
+ ];
807
+ return lines.filter(Boolean).join('\n');
808
+ }
809
+ /** Group triage results by classification */
810
+ groupByClassification(results) {
811
+ const groups = {};
812
+ for (const r of results) {
813
+ groups[r.classification] = (groups[r.classification] || 0) + 1;
814
+ }
815
+ return groups;
816
+ }
817
+ /** Group triage results by priority */
818
+ groupByPriority(results) {
819
+ const groups = {};
820
+ for (const r of results) {
821
+ groups[r.priority] = (groups[r.priority] || 0) + 1;
822
+ }
823
+ return groups;
824
+ }
825
+ /** Group triage results by difficulty */
826
+ groupByDifficulty(results) {
827
+ const groups = {};
828
+ for (const r of results) {
829
+ groups[r.estimatedDifficulty] = (groups[r.estimatedDifficulty] || 0) + 1;
830
+ }
831
+ return groups;
832
+ }
833
+ }
834
+ //# sourceMappingURL=issue-triage-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-triage-agent.js","sourceRoot":"","sources":["../../../src/agents/agents/issue-triage-agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/agents/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAiBnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAI9D,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC;AAEvC,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,8CAA8C;AAC9C,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,SAAS,EAAE,MAAM;CAI9B;AAID;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IACzB,kDAAkD;IAClD,OAAO,CAAC,SAAS,CAAmC;IACpD,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAqC;IACrD,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,CAAC,EAAE,QAAQ;IAM/B;;;;;;;;OAQG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9E,IAAI;IAsBP;;;OAGG;IACH,kBAAkB,CAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9E,IAAI;IAiBP;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAetC;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK;IAQnC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIrC;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,GAAG,cAAc,EAAE;IAKzE;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIlC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,cAAc;CA+G/D;AAMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,GAAG,IAAI,CAIjF"}
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/agents/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAkBnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAI9D,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC;AAEvC,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,8CAA8C;AAC9C,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,SAAS,EAAE,MAAM;CAI9B;AAID;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IACzB,kDAAkD;IAClD,OAAO,CAAC,SAAS,CAAmC;IACpD,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAqC;IACrD,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,CAAC,EAAE,QAAQ;IAM/B;;;;;;;;OAQG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9E,IAAI;IAsBP;;;OAGG;IACH,kBAAkB,CAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9E,IAAI;IAiBP;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAetC;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK;IAQnC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIrC;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,GAAG,cAAc,EAAE;IAKzE;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIlC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,cAAc;CAsH/D;AAMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,GAAG,IAAI,CAIjF"}
@@ -23,6 +23,7 @@ import { SecurityAgent } from './agents/security-agent.js';
23
23
  import { SkillRunnerAgent } from './agents/skill-runner.js';
24
24
  import { MCPAgent } from './agents/mcp-agent.js';
25
25
  import { PRReviewAgent } from './agents/pr-review-agent.js';
26
+ import { IssueTriageAgent } from './agents/issue-triage-agent.js';
26
27
  import { getEventBus, EventNames } from '../observability/event-bus.js';
27
28
  /** Error thrown when a module lookup fails */
28
29
  export class ModuleNotFoundError extends Error {
@@ -259,6 +260,12 @@ export class ModuleRegistry {
259
260
  icon: '👁️',
260
261
  isBuiltin: true,
261
262
  });
263
+ registry.register('issue-triage', () => new IssueTriageAgent(), {
264
+ name: 'Issue Triage',
265
+ description: 'Classifies, prioritizes, and labels open issues from GitHub and GitLab',
266
+ icon: '🏷️',
267
+ isBuiltin: true,
268
+ });
262
269
  return registry;
263
270
  }
264
271
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/agents/module-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/agents/module-registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-nuvira",
3
- "version": "1.34.0",
3
+ "version": "1.35.0",
4
4
  "description": "Agent-Nuvira: Multi-agent AI coding CLI — plan, write, review, test, and publish code with local models (Ollama) or cloud APIs (Groq, NVIDIA NIM, Google Gemini, OpenRouter)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",