ghagga 3.2.0 → 3.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 (37) hide show
  1. package/dist/commands/index-cmd.d.ts +49 -0
  2. package/dist/commands/index-cmd.d.ts.map +1 -0
  3. package/dist/commands/index-cmd.js +367 -0
  4. package/dist/commands/index-cmd.js.map +1 -0
  5. package/dist/commands/index-cmd.test.d.ts +17 -0
  6. package/dist/commands/index-cmd.test.d.ts.map +1 -0
  7. package/dist/commands/index-cmd.test.js +541 -0
  8. package/dist/commands/index-cmd.test.js.map +1 -0
  9. package/dist/commands/indexer-registry.d.ts +93 -0
  10. package/dist/commands/indexer-registry.d.ts.map +1 -0
  11. package/dist/commands/indexer-registry.js +342 -0
  12. package/dist/commands/indexer-registry.js.map +1 -0
  13. package/dist/commands/indexer-registry.test.d.ts +10 -0
  14. package/dist/commands/indexer-registry.test.d.ts.map +1 -0
  15. package/dist/commands/indexer-registry.test.js +538 -0
  16. package/dist/commands/indexer-registry.test.js.map +1 -0
  17. package/dist/commands/review-blast-radius.test.d.ts +13 -0
  18. package/dist/commands/review-blast-radius.test.d.ts.map +1 -0
  19. package/dist/commands/review-blast-radius.test.js +179 -0
  20. package/dist/commands/review-blast-radius.test.js.map +1 -0
  21. package/dist/commands/review.d.ts +112 -1
  22. package/dist/commands/review.d.ts.map +1 -1
  23. package/dist/commands/review.js +264 -2
  24. package/dist/commands/review.js.map +1 -1
  25. package/dist/commands/review.test.js +290 -0
  26. package/dist/commands/review.test.js.map +1 -1
  27. package/dist/commands/triage.d.ts +14 -0
  28. package/dist/commands/triage.d.ts.map +1 -0
  29. package/dist/commands/triage.js +153 -0
  30. package/dist/commands/triage.js.map +1 -0
  31. package/dist/commands/triage.test.d.ts +8 -0
  32. package/dist/commands/triage.test.d.ts.map +1 -0
  33. package/dist/commands/triage.test.js +184 -0
  34. package/dist/commands/triage.test.js.map +1 -0
  35. package/dist/index.js +35 -0
  36. package/dist/index.js.map +1 -1
  37. package/package.json +4 -3
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `ghagga triage` command group — thin CLI wiring around
3
+ * `ghagga-triage-engine`'s engine facade (config-driven code-aware issue
4
+ * triage with a local human-approval queue). All logic lives in the
5
+ * package; this file only parses args and calls the right engine function.
6
+ *
7
+ * SAFETY: triage NEVER posts by itself. A comment reaches the forge ONLY
8
+ * via `approve`, which a human runs explicitly (CLI or the `serve` web UI),
9
+ * and only the (edited) client reply is posted — see
10
+ * `ghagga-triage-engine`'s queue/approval.ts for the enforced guarantee.
11
+ */
12
+ import { Command } from 'commander';
13
+ export declare const triageCommand: Command;
14
+ //# sourceMappingURL=triage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../src/commands/triage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DpC,eAAO,MAAM,aAAa,SAEzB,CAAC"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * `ghagga triage` command group — thin CLI wiring around
3
+ * `ghagga-triage-engine`'s engine facade (config-driven code-aware issue
4
+ * triage with a local human-approval queue). All logic lives in the
5
+ * package; this file only parses args and calls the right engine function.
6
+ *
7
+ * SAFETY: triage NEVER posts by itself. A comment reaches the forge ONLY
8
+ * via `approve`, which a human runs explicitly (CLI or the `serve` web UI),
9
+ * and only the (edited) client reply is posted — see
10
+ * `ghagga-triage-engine`'s queue/approval.ts for the enforced guarantee.
11
+ */
12
+ import { Command } from 'commander';
13
+ import { createCLIBridgeGenerateFn } from 'ghagga-core';
14
+ import { approveIssue, editDraft, listQueue, loadConfig, rejectIssue, resolveConfigPath, showDraft, startTriageServer, triageIssue, triageNew, } from 'ghagga-triage-engine';
15
+ import * as tui from '../ui/tui.js';
16
+ /**
17
+ * Fallback model for the (opt-in) live-app reproduction agentic loop, used
18
+ * when the config's `models.reproduce` field is absent. Matches the model
19
+ * used during the reproduce() PoC.
20
+ */
21
+ const DEFAULT_REPRODUCE_MODEL = 'opencode-go/kimi-k2.7-code';
22
+ /**
23
+ * Resolves the TriageConfig + generateFns from `--config` (or its defaults).
24
+ *
25
+ * `reproduce: true` additionally wires a `reproduceGenerateFn`, which makes
26
+ * `triageIssue` attempt a live-app reproduction (browser + LLM agentic loop)
27
+ * before triaging. Opt-in only — see the `--reproduce` flag on `triage <iid>`.
28
+ */
29
+ function resolveEngineOptions(configPath, opts = {}) {
30
+ const path = resolveConfigPath({ explicitPath: configPath });
31
+ const config = loadConfig(path);
32
+ return {
33
+ config,
34
+ rerankGenerateFn: createCLIBridgeGenerateFn({
35
+ preferredCLI: 'opencode',
36
+ cliModel: config.models.rerank,
37
+ }),
38
+ analysisGenerateFn: createCLIBridgeGenerateFn({
39
+ preferredCLI: 'opencode',
40
+ cliModel: config.models.analysis,
41
+ }),
42
+ ...(opts.reproduce
43
+ ? {
44
+ reproduceGenerateFn: createCLIBridgeGenerateFn({
45
+ preferredCLI: 'opencode',
46
+ cliModel: config.models?.reproduce ?? DEFAULT_REPRODUCE_MODEL,
47
+ }),
48
+ }
49
+ : {}),
50
+ };
51
+ }
52
+ export const triageCommand = new Command('triage').description('Code-aware issue triage with a local human-approval queue (never auto-posts)');
53
+ triageCommand.option('--config <path>', 'Path to the triage config file (default: ./.ghagga/triage.config.json)');
54
+ // ─── triage <iid> | --new ───────────────────────────────────────
55
+ triageCommand
56
+ .command('triage [iid]')
57
+ .description('Triage one issue by iid, or every new issue not already queued with --new')
58
+ .option('--new', 'Triage every issue returned by the forge that is not already queued')
59
+ .option('--reproduce', 'Attempt a live-app reproduction before triaging this issue (single-issue only: ' +
60
+ 'launches a browser + costs LLM calls, so it is ignored with --new)')
61
+ .action(async (iid, opts) => {
62
+ const configPath = triageCommand.opts().config;
63
+ if (opts.new) {
64
+ if (opts.reproduce) {
65
+ tui.log.warn('--reproduce is ignored with --new (too slow/costly across many issues). ' +
66
+ 'Reproduce per-issue instead: ghagga triage triage <iid> --reproduce');
67
+ }
68
+ const options = resolveEngineOptions(configPath);
69
+ const drafts = await triageNew(options);
70
+ tui.log.success(`Triaged ${drafts.length} new issue(s).`);
71
+ return;
72
+ }
73
+ if (!iid) {
74
+ tui.log.error('Usage: ghagga triage triage <iid> | ghagga triage triage --new');
75
+ process.exitCode = 1;
76
+ return;
77
+ }
78
+ const options = resolveEngineOptions(configPath, { reproduce: opts.reproduce });
79
+ const draft = await triageIssue(options, iid);
80
+ tui.log.success(`#${iid} triaged -> ${draft.status} (queued for review).`);
81
+ });
82
+ // ─── list ───────────────────────────────────────────────────────
83
+ triageCommand
84
+ .command('list')
85
+ .description('List the local approval queue')
86
+ .action(() => {
87
+ const options = resolveEngineOptions(triageCommand.opts().config);
88
+ const queue = listQueue(options);
89
+ const drafts = Object.values(queue);
90
+ if (!drafts.length) {
91
+ tui.log.info('Queue is empty.');
92
+ return;
93
+ }
94
+ for (const draft of drafts) {
95
+ tui.log.message(`#${draft.issueIid} [${draft.status}]`);
96
+ }
97
+ });
98
+ // ─── show <iid> ─────────────────────────────────────────────────
99
+ triageCommand
100
+ .command('show <iid>')
101
+ .description('Show a queued draft in full (technical analysis + client reply)')
102
+ .action((iid) => {
103
+ const options = resolveEngineOptions(triageCommand.opts().config);
104
+ const draft = showDraft(options, iid);
105
+ tui.log.message(`#${draft.issueIid} status=${draft.status}`);
106
+ tui.log.message('--- technical analysis (internal, NEVER posted) ---');
107
+ tui.log.message(draft.report);
108
+ tui.log.message('--- client reply (what gets posted on approve) ---');
109
+ tui.log.message(draft.clientReply);
110
+ });
111
+ // ─── edit <iid> ─────────────────────────────────────────────────
112
+ triageCommand
113
+ .command('edit <iid>')
114
+ .description('Edit the client reply of a queued draft')
115
+ .requiredOption('--reply <text>', 'New client-reply text')
116
+ .action((iid, opts) => {
117
+ const options = resolveEngineOptions(triageCommand.opts().config);
118
+ editDraft(options, iid, opts.reply);
119
+ tui.log.success(`#${iid} client reply updated.`);
120
+ });
121
+ // ─── approve <iid> ──────────────────────────────────────────────
122
+ triageCommand
123
+ .command('approve <iid>')
124
+ .description('Approve a queued draft and post the client reply to the forge')
125
+ .option('--reply <text>', 'Override the client reply text before posting')
126
+ .action(async (iid, opts) => {
127
+ const options = resolveEngineOptions(triageCommand.opts().config);
128
+ const result = await approveIssue(options, iid, opts.reply);
129
+ if (result.posted) {
130
+ tui.log.success(`#${iid} posted to ${options.config.forge} and marked POSTED.`);
131
+ }
132
+ else {
133
+ tui.log.info(`#${iid} was already POSTED — no repost.`);
134
+ }
135
+ });
136
+ // ─── reject <iid> ───────────────────────────────────────────────
137
+ triageCommand
138
+ .command('reject <iid>')
139
+ .description('Reject a queued draft (never posts)')
140
+ .action((iid) => {
141
+ const options = resolveEngineOptions(triageCommand.opts().config);
142
+ rejectIssue(options, iid);
143
+ tui.log.success(`#${iid} rejected — nothing was posted.`);
144
+ });
145
+ // ─── serve [port] ───────────────────────────────────────────────
146
+ triageCommand
147
+ .command('serve [port]')
148
+ .description('Start the local web review UI (default port 4599)')
149
+ .action((port) => {
150
+ const options = resolveEngineOptions(triageCommand.opts().config);
151
+ startTriageServer(options, port ? Number(port) : undefined);
152
+ });
153
+ //# sourceMappingURL=triage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/commands/triage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `ghagga triage` command tests — arg parsing dispatches to the right
3
+ * engine function. The engine and config-loading modules are mocked; this
4
+ * file verifies WIRING only (the engine itself is tested in
5
+ * packages/triage-engine).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=triage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage.test.d.ts","sourceRoot":"","sources":["../../src/commands/triage.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * `ghagga triage` command tests — arg parsing dispatches to the right
3
+ * engine function. The engine and config-loading modules are mocked; this
4
+ * file verifies WIRING only (the engine itself is tested in
5
+ * packages/triage-engine).
6
+ */
7
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
8
+ // ─── Mocks ─────────────────────────────────────────────────────
9
+ const mockTriageIssue = vi.fn();
10
+ const mockTriageNew = vi.fn();
11
+ const mockListQueue = vi.fn();
12
+ const mockShowDraft = vi.fn();
13
+ const mockEditDraft = vi.fn();
14
+ const mockApproveIssue = vi.fn();
15
+ const mockRejectIssue = vi.fn();
16
+ const mockStartTriageServer = vi.fn();
17
+ const mockLoadConfig = vi.fn();
18
+ const mockResolveConfigPath = vi.fn();
19
+ vi.mock('ghagga-triage-engine', () => ({
20
+ triageIssue: (...args) => mockTriageIssue(...args),
21
+ triageNew: (...args) => mockTriageNew(...args),
22
+ listQueue: (...args) => mockListQueue(...args),
23
+ showDraft: (...args) => mockShowDraft(...args),
24
+ editDraft: (...args) => mockEditDraft(...args),
25
+ approveIssue: (...args) => mockApproveIssue(...args),
26
+ rejectIssue: (...args) => mockRejectIssue(...args),
27
+ startTriageServer: (...args) => mockStartTriageServer(...args),
28
+ loadConfig: (...args) => mockLoadConfig(...args),
29
+ resolveConfigPath: (...args) => mockResolveConfigPath(...args),
30
+ }));
31
+ vi.mock('ghagga-core', () => ({
32
+ createCLIBridgeGenerateFn: vi.fn(() => vi.fn()),
33
+ }));
34
+ vi.mock('../ui/tui.js', () => ({
35
+ log: {
36
+ info: vi.fn(),
37
+ message: vi.fn(),
38
+ success: vi.fn(),
39
+ warn: vi.fn(),
40
+ error: vi.fn(),
41
+ step: vi.fn(),
42
+ },
43
+ }));
44
+ const BASE_CONFIG = {
45
+ forge: 'gitlab',
46
+ repo: 'acme/widgets',
47
+ codeRoot: '/tmp/repo',
48
+ language: 'go',
49
+ graphExpand: false,
50
+ models: { rerank: 'r-model', analysis: 'a-model' },
51
+ };
52
+ describe('ghagga triage command', () => {
53
+ beforeEach(async () => {
54
+ vi.clearAllMocks();
55
+ mockResolveConfigPath.mockReturnValue('/tmp/repo/.ghagga/triage.config.json');
56
+ mockLoadConfig.mockReturnValue(BASE_CONFIG);
57
+ });
58
+ async function loadCommand() {
59
+ const mod = await import('./triage.js');
60
+ return mod.triageCommand;
61
+ }
62
+ it('dispatches "triage <iid>" to triageIssue with the resolved config', async () => {
63
+ mockTriageIssue.mockResolvedValue({ issueIid: '42', status: 'PENDING_APPROVAL' });
64
+ const triageCommand = await loadCommand();
65
+ await triageCommand.parseAsync(['triage', '42'], { from: 'user' });
66
+ expect(mockTriageIssue).toHaveBeenCalledTimes(1);
67
+ const [options, iid] = mockTriageIssue.mock.calls[0];
68
+ expect(iid).toBe('42');
69
+ expect(options.config).toEqual(BASE_CONFIG);
70
+ });
71
+ it('dispatches "triage --new" to triageNew', async () => {
72
+ mockTriageNew.mockResolvedValue([]);
73
+ const triageCommand = await loadCommand();
74
+ await triageCommand.parseAsync(['triage', '--new'], { from: 'user' });
75
+ expect(mockTriageNew).toHaveBeenCalledTimes(1);
76
+ expect(mockTriageIssue).not.toHaveBeenCalled();
77
+ });
78
+ it('"triage <iid>" without --reproduce does NOT add reproduceGenerateFn to EngineOptions', async () => {
79
+ mockTriageIssue.mockResolvedValue({ issueIid: '42', status: 'PENDING_APPROVAL' });
80
+ const triageCommand = await loadCommand();
81
+ await triageCommand.parseAsync(['triage', '42'], { from: 'user' });
82
+ const [options] = mockTriageIssue.mock.calls[0];
83
+ expect(options.reproduceGenerateFn).toBeUndefined();
84
+ });
85
+ it('"triage <iid> --reproduce" adds a reproduceGenerateFn to EngineOptions', async () => {
86
+ mockTriageIssue.mockResolvedValue({ issueIid: '42', status: 'PENDING_APPROVAL' });
87
+ const triageCommand = await loadCommand();
88
+ await triageCommand.parseAsync(['triage', '42', '--reproduce'], { from: 'user' });
89
+ const [options] = mockTriageIssue.mock.calls[0];
90
+ expect(options.reproduceGenerateFn).toBeTypeOf('function');
91
+ });
92
+ it('"triage <iid> --reproduce" uses config.models.reproduce as cliModel when set', async () => {
93
+ mockLoadConfig.mockReturnValue({
94
+ ...BASE_CONFIG,
95
+ models: { ...BASE_CONFIG.models, reproduce: 'configured/reproduce-model' },
96
+ });
97
+ mockTriageIssue.mockResolvedValue({ issueIid: '42', status: 'PENDING_APPROVAL' });
98
+ const triageCommand = await loadCommand();
99
+ await triageCommand.parseAsync(['triage', '42', '--reproduce'], { from: 'user' });
100
+ const { createCLIBridgeGenerateFn } = await import('ghagga-core');
101
+ expect(createCLIBridgeGenerateFn).toHaveBeenCalledWith(expect.objectContaining({ cliModel: 'configured/reproduce-model' }));
102
+ });
103
+ it('"triage <iid> --reproduce" falls back to the default model when config.models.reproduce is absent', async () => {
104
+ mockTriageIssue.mockResolvedValue({ issueIid: '42', status: 'PENDING_APPROVAL' });
105
+ const triageCommand = await loadCommand();
106
+ await triageCommand.parseAsync(['triage', '42', '--reproduce'], { from: 'user' });
107
+ const { createCLIBridgeGenerateFn } = await import('ghagga-core');
108
+ expect(createCLIBridgeGenerateFn).toHaveBeenCalledWith(expect.objectContaining({ cliModel: 'opencode-go/kimi-k2.7-code' }));
109
+ });
110
+ it('"triage --new --reproduce" ignores --reproduce (too slow/costly across many issues) and warns', async () => {
111
+ mockTriageNew.mockResolvedValue([]);
112
+ const triageCommand = await loadCommand();
113
+ await triageCommand.parseAsync(['triage', '--new', '--reproduce'], { from: 'user' });
114
+ expect(mockTriageNew).toHaveBeenCalledTimes(1);
115
+ const [options] = mockTriageNew.mock.calls[0];
116
+ expect(options.reproduceGenerateFn).toBeUndefined();
117
+ const tui = await import('../ui/tui.js');
118
+ expect(tui.log.warn).toHaveBeenCalledWith(expect.stringContaining('--reproduce'));
119
+ });
120
+ it('dispatches "list" to listQueue', async () => {
121
+ mockListQueue.mockReturnValue({});
122
+ const triageCommand = await loadCommand();
123
+ await triageCommand.parseAsync(['list'], { from: 'user' });
124
+ expect(mockListQueue).toHaveBeenCalledTimes(1);
125
+ });
126
+ it('dispatches "show <iid>" to showDraft', async () => {
127
+ mockShowDraft.mockReturnValue({
128
+ issueIid: '42',
129
+ status: 'PENDING_APPROVAL',
130
+ report: 'r',
131
+ clientReply: 'c',
132
+ });
133
+ const triageCommand = await loadCommand();
134
+ await triageCommand.parseAsync(['show', '42'], { from: 'user' });
135
+ expect(mockShowDraft).toHaveBeenCalledWith(expect.anything(), '42');
136
+ });
137
+ it('dispatches "edit <iid> --reply <text>" to editDraft with the given text', async () => {
138
+ mockEditDraft.mockReturnValue({ issueIid: '42', clientReply: 'new text' });
139
+ const triageCommand = await loadCommand();
140
+ await triageCommand.parseAsync(['edit', '42', '--reply', 'new text'], { from: 'user' });
141
+ expect(mockEditDraft).toHaveBeenCalledWith(expect.anything(), '42', 'new text');
142
+ });
143
+ it('dispatches "approve <iid>" to approveIssue and NEVER calls reject/triageIssue', async () => {
144
+ mockApproveIssue.mockResolvedValue({ posted: true, draft: { status: 'POSTED' }, queue: {} });
145
+ const triageCommand = await loadCommand();
146
+ await triageCommand.parseAsync(['approve', '42'], { from: 'user' });
147
+ expect(mockApproveIssue).toHaveBeenCalledWith(expect.anything(), '42', undefined);
148
+ expect(mockRejectIssue).not.toHaveBeenCalled();
149
+ expect(mockTriageIssue).not.toHaveBeenCalled();
150
+ });
151
+ it('"approve <iid> --reply <text>" forwards the edited reply', async () => {
152
+ mockApproveIssue.mockResolvedValue({ posted: true, draft: { status: 'POSTED' }, queue: {} });
153
+ const triageCommand = await loadCommand();
154
+ await triageCommand.parseAsync(['approve', '42', '--reply', 'final text'], { from: 'user' });
155
+ expect(mockApproveIssue).toHaveBeenCalledWith(expect.anything(), '42', 'final text');
156
+ });
157
+ it('dispatches "reject <iid>" to rejectIssue and NEVER calls approveIssue', async () => {
158
+ mockRejectIssue.mockReturnValue({ issueIid: '42', status: 'REJECTED' });
159
+ const triageCommand = await loadCommand();
160
+ await triageCommand.parseAsync(['reject', '42'], { from: 'user' });
161
+ expect(mockRejectIssue).toHaveBeenCalledWith(expect.anything(), '42');
162
+ expect(mockApproveIssue).not.toHaveBeenCalled();
163
+ });
164
+ it('dispatches "serve [port]" to startTriageServer with the parsed port', async () => {
165
+ mockStartTriageServer.mockReturnValue({ close: vi.fn() });
166
+ const triageCommand = await loadCommand();
167
+ await triageCommand.parseAsync(['serve', '5000'], { from: 'user' });
168
+ expect(mockStartTriageServer).toHaveBeenCalledWith(expect.anything(), 5000);
169
+ });
170
+ it('serve with no port arg lets startTriageServer use its own default', async () => {
171
+ mockStartTriageServer.mockReturnValue({ close: vi.fn() });
172
+ const triageCommand = await loadCommand();
173
+ await triageCommand.parseAsync(['serve'], { from: 'user' });
174
+ expect(mockStartTriageServer).toHaveBeenCalledWith(expect.anything(), undefined);
175
+ });
176
+ it('resolves the config path from --config on the parent command', async () => {
177
+ mockListQueue.mockReturnValue({});
178
+ const triageCommand = await loadCommand();
179
+ await triageCommand.parseAsync(['--config', '/custom/path.json', 'list'], { from: 'user' });
180
+ expect(mockResolveConfigPath).toHaveBeenCalledWith({ explicitPath: '/custom/path.json' });
181
+ expect(mockLoadConfig).toHaveBeenCalledWith('/tmp/repo/.ghagga/triage.config.json');
182
+ });
183
+ });
184
+ //# sourceMappingURL=triage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage.test.js","sourceRoot":"","sources":["../../src/commands/triage.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -29,11 +29,13 @@ import { dismissCommand } from './commands/dismiss.js';
29
29
  import { feedbackCommand } from './commands/feedback.js';
30
30
  import { healthCommand } from './commands/health.js';
31
31
  import { hooksCommand } from './commands/hooks/index.js';
32
+ import { indexCommand } from './commands/index-cmd.js';
32
33
  import { loginCommand } from './commands/login.js';
33
34
  import { logoutCommand } from './commands/logout.js';
34
35
  import { memoryCommand } from './commands/memory/index.js';
35
36
  import { reviewCommand } from './commands/review.js';
36
37
  import { statusCommand } from './commands/status.js';
38
+ import { triageCommand } from './commands/triage.js';
37
39
  import { getStoredToken, loadConfig } from './lib/config.js';
38
40
  import { isLegacyProvider } from './lib/providers.js';
39
41
  import * as tui from './ui/tui.js';
@@ -95,6 +97,7 @@ program
95
97
  .option('--enable-tool <name>', 'Force-enable a specific tool (repeatable)', collect, [])
96
98
  .option('--list-tools', 'List all available analysis tools and exit')
97
99
  .option('--no-memory', 'Disable review memory')
100
+ .option('--no-blast-radius', 'Disable blast-radius filtering (auto-enabled when .ghagga/graph.json exists)')
98
101
  .option('-c, --config <path>', 'Path to .ghagga.json config file')
99
102
  .option('-v, --verbose', 'Show detailed progress during review')
100
103
  .option('--staged', 'Review only staged changes (for pre-commit hooks)')
@@ -245,6 +248,7 @@ program
245
248
  trivy: options.trivy,
246
249
  cpd: options.cpd,
247
250
  memory: options.memory,
251
+ blastRadius: options.blastRadius,
248
252
  memoryBackend: options.memoryBackend,
249
253
  config: options.config,
250
254
  verbose: options.verbose ?? false,
@@ -299,8 +303,39 @@ program
299
303
  save: options.save ?? false,
300
304
  });
301
305
  });
306
+ // ─── Index ──────────────────────────────────────────────────────
307
+ program
308
+ .command('index')
309
+ .description('Build the dependency graph consumed by blast-radius/review (.ghagga/graph.json). ' +
310
+ 'SCIP-backed cross-file resolution across 8 languages: stable — Go, TypeScript/JavaScript, ' +
311
+ 'Rust (captured fixtures, CI-validated); Python is stable (entry shipped, fixture capture ' +
312
+ 'deferred — scip-python 0.6.6 emits 0 docs in some environments); heavy — Java, Kotlin ' +
313
+ '(scip-java needs a Maven/Gradle build); experimental — C# (scip-dotnet), PHP (scip-php). ' +
314
+ 'Detects language markers at ANY depth (default 4 levels below repo root; override with ' +
315
+ '--marker-depth), not just repo root — each marker ' +
316
+ 'directory is indexed independently and merged into one repo-relative graph (a Go marker ' +
317
+ 'in apps/backend and another in services/worker both get indexed; two same-language marker ' +
318
+ "dirs never clobber each other's output). Vendored-tool directories (.tools, .ghagga, " +
319
+ '.worktrees, node_modules, vendor, .git, etc.) are always skipped. A marker nested deeper ' +
320
+ 'than the depth bound is silently not detected — this is a known limitation, not a bug. ' +
321
+ 'Per-marker-directory indexer runs are capped at 25 by ' +
322
+ 'default (cheaper/stabler indexers run first, root-first within a maturity tier) — beyond ' +
323
+ 'the cap, a warning names the skipped directories. scip-typescript is the one exception: ' +
324
+ 'its own --infer-tsconfig walk already recursively discovers every nested TS/JS package ' +
325
+ 'from repo root, so it always runs ONCE at repo root rather than once per nested marker dir. ' +
326
+ 'A missing indexer/toolchain for a detected language warns and skips it rather than failing ' +
327
+ 'the whole run; use --fallback-regex as the escape hatch when no language could be SCIP-indexed.')
328
+ .argument('[path]', 'Path to the repository', '.')
329
+ .option('--out <path>', 'Output path for graph.json, relative to the target repo')
330
+ .option('--fallback-regex', 'Use the regex-based indexer when no detected language could be SCIP-indexed')
331
+ .option('--marker-depth <n>', 'Maximum depth (repo root = 0) to walk when detecting nested language markers (positive integer, default: 4)')
332
+ .action(async (path, options) => {
333
+ await indexCommand(path, options);
334
+ });
302
335
  // ─── Memory ─────────────────────────────────────────────────────
303
336
  program.addCommand(memoryCommand);
337
+ // ─── Triage ─────────────────────────────────────────────────────
338
+ program.addCommand(triageCommand);
304
339
  // ─── Dismiss ─────────────────────────────────────────────────────
305
340
  program.addCommand(dismissCommand);
306
341
  // ─── Feedback ────────────────────────────────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghagga",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "AI-powered code review from the command line — free with GitHub Models",
@@ -43,8 +43,9 @@
43
43
  "fts5-sql-bundle": "^1.0.2",
44
44
  "commander": "^15.0.0",
45
45
  "dotenv": "^17.4.2",
46
- "ghagga-core": "3.2.0",
47
- "ghagga-forge": "3.2.0"
46
+ "ghagga-core": "3.3.0",
47
+ "ghagga-forge": "3.3.0",
48
+ "ghagga-triage-engine": "0.2.0"
48
49
  },
49
50
  "devDependencies": {
50
51
  "tsx": "^4.23.1",