reviewflow 3.14.0 → 3.16.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 (90) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/frameworks/claude/claudeInvoker.d.ts.map +1 -1
  3. package/dist/frameworks/claude/claudeInvoker.js +28 -6
  4. package/dist/frameworks/claude/claudeInvoker.js.map +1 -1
  5. package/dist/frameworks/claude/timers/claudeInvocationTimers.d.ts.map +1 -1
  6. package/dist/frameworks/claude/timers/claudeInvocationTimers.js +0 -1
  7. package/dist/frameworks/claude/timers/claudeInvocationTimers.js.map +1 -1
  8. package/dist/frameworks/scheduler/worktreeSweepScheduler.d.ts +14 -0
  9. package/dist/frameworks/scheduler/worktreeSweepScheduler.d.ts.map +1 -0
  10. package/dist/frameworks/scheduler/worktreeSweepScheduler.js +35 -0
  11. package/dist/frameworks/scheduler/worktreeSweepScheduler.js.map +1 -0
  12. package/dist/main/dependencies.d.ts +4 -0
  13. package/dist/main/dependencies.d.ts.map +1 -1
  14. package/dist/main/dependencies.js +6 -0
  15. package/dist/main/dependencies.js.map +1 -1
  16. package/dist/main/routes.d.ts.map +1 -1
  17. package/dist/main/routes.js +3 -7
  18. package/dist/main/routes.js.map +1 -1
  19. package/dist/main/server.d.ts.map +1 -1
  20. package/dist/main/server.js +9 -0
  21. package/dist/main/server.js.map +1 -1
  22. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.gateway.d.ts +2 -0
  23. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.gateway.d.ts.map +1 -1
  24. package/dist/modules/claude-invocation/entities/claudeSession/sessionUsage.schema.d.ts +13 -0
  25. package/dist/modules/claude-invocation/entities/claudeSession/sessionUsage.schema.d.ts.map +1 -0
  26. package/dist/modules/claude-invocation/entities/claudeSession/sessionUsage.schema.js +12 -0
  27. package/dist/modules/claude-invocation/entities/claudeSession/sessionUsage.schema.js.map +1 -0
  28. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.d.ts +7 -1
  29. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.d.ts.map +1 -1
  30. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.js +90 -3
  31. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.js.map +1 -1
  32. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.d.ts +0 -2
  33. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.d.ts.map +1 -1
  34. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.js +6 -6
  35. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.js.map +1 -1
  36. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.d.ts +2 -0
  37. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.d.ts.map +1 -1
  38. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.js +9 -1
  39. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.js.map +1 -1
  40. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.d.ts +14 -0
  41. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.d.ts.map +1 -1
  42. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.js +13 -2
  43. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.js.map +1 -1
  44. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.d.ts.map +1 -1
  45. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js +14 -2
  46. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js.map +1 -1
  47. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.d.ts.map +1 -1
  48. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.js +2 -3
  49. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.js.map +1 -1
  50. package/dist/modules/token-accounting/entities/modelPricing/modelPricing.d.ts +16 -0
  51. package/dist/modules/token-accounting/entities/modelPricing/modelPricing.d.ts.map +1 -0
  52. package/dist/modules/token-accounting/entities/modelPricing/modelPricing.js +44 -0
  53. package/dist/modules/token-accounting/entities/modelPricing/modelPricing.js.map +1 -0
  54. package/dist/tests/acceptance/169-migrate-claude-invocation-to-bg-mode.acceptance.test.js +5 -5
  55. package/dist/tests/acceptance/169-migrate-claude-invocation-to-bg-mode.acceptance.test.js.map +1 -1
  56. package/dist/tests/acceptance/170-prebuilt-worktree-lifecycle.acceptance.test.d.ts +5 -4
  57. package/dist/tests/acceptance/170-prebuilt-worktree-lifecycle.acceptance.test.d.ts.map +1 -1
  58. package/dist/tests/acceptance/170-prebuilt-worktree-lifecycle.acceptance.test.js +246 -11
  59. package/dist/tests/acceptance/170-prebuilt-worktree-lifecycle.acceptance.test.js.map +1 -1
  60. package/dist/tests/acceptance/171-bg-token-usage-tracking.acceptance.test.d.ts +2 -0
  61. package/dist/tests/acceptance/171-bg-token-usage-tracking.acceptance.test.d.ts.map +1 -0
  62. package/dist/tests/acceptance/171-bg-token-usage-tracking.acceptance.test.js +320 -0
  63. package/dist/tests/acceptance/171-bg-token-usage-tracking.acceptance.test.js.map +1 -0
  64. package/dist/tests/integration/claudeInvocation.integration.test.js +5 -1
  65. package/dist/tests/integration/claudeInvocation.integration.test.js.map +1 -1
  66. package/dist/tests/stubs/claudeSession.stub.d.ts +8 -0
  67. package/dist/tests/stubs/claudeSession.stub.d.ts.map +1 -1
  68. package/dist/tests/stubs/claudeSession.stub.js +9 -0
  69. package/dist/tests/stubs/claudeSession.stub.js.map +1 -1
  70. package/dist/tests/units/entities/github/githubPullRequestEvent.guard.test.js +26 -0
  71. package/dist/tests/units/entities/github/githubPullRequestEvent.guard.test.js.map +1 -1
  72. package/dist/tests/units/frameworks/claude/timers/claudeInvocationTimers.test.js +3 -3
  73. package/dist/tests/units/frameworks/claude/timers/claudeInvocationTimers.test.js.map +1 -1
  74. package/dist/tests/units/frameworks/scheduler/worktreeSweepScheduler.test.d.ts +2 -0
  75. package/dist/tests/units/frameworks/scheduler/worktreeSweepScheduler.test.d.ts.map +1 -0
  76. package/dist/tests/units/frameworks/scheduler/worktreeSweepScheduler.test.js +119 -0
  77. package/dist/tests/units/frameworks/scheduler/worktreeSweepScheduler.test.js.map +1 -0
  78. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js +74 -2
  79. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js.map +1 -1
  80. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.js +135 -5
  81. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.js.map +1 -1
  82. package/dist/tests/units/modules/claude-invocation/usecases/auditBilling.usecase.test.js +2 -18
  83. package/dist/tests/units/modules/claude-invocation/usecases/auditBilling.usecase.test.js.map +1 -1
  84. package/dist/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.js +90 -0
  85. package/dist/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.js.map +1 -1
  86. package/dist/tests/units/modules/token-accounting/entities/modelPricing/modelPricing.test.d.ts +2 -0
  87. package/dist/tests/units/modules/token-accounting/entities/modelPricing/modelPricing.test.d.ts.map +1 -0
  88. package/dist/tests/units/modules/token-accounting/entities/modelPricing/modelPricing.test.js +90 -0
  89. package/dist/tests/units/modules/token-accounting/entities/modelPricing/modelPricing.test.js.map +1 -0
  90. package/package.json +1 -1
@@ -146,6 +146,96 @@ describe('runClaudeReviewJob orchestrator', () => {
146
146
  expect(result.reason).toContain('cancelled');
147
147
  }
148
148
  });
149
+ describe('SPEC-171 — session usage capture between completion and cleanup', () => {
150
+ it('calls getSessionUsage once when outcome is completed and returns the snapshot in the result', async () => {
151
+ const ctx = buildDeps();
152
+ ctx.sessionGateway.setDispatchResult({
153
+ status: 'dispatched',
154
+ sessionId: parseSessionId('usg00001'),
155
+ });
156
+ ctx.completionBridge.scheduleCompletion('gitlab:owner/repo:42', {
157
+ source: 'mcp',
158
+ outcome: 'completed',
159
+ reason: null,
160
+ });
161
+ ctx.sessionGateway.setSessionUsage({
162
+ model: 'claude-opus-4-7',
163
+ usage: {
164
+ inputTokens: 100,
165
+ outputTokens: 50,
166
+ cacheCreationInputTokens: 0,
167
+ cacheReadInputTokens: 0,
168
+ costUsd: 0.0019,
169
+ },
170
+ });
171
+ const runPromise = runClaudeReviewJob(buildInput(), ctx.deps);
172
+ await vi.runAllTimersAsync();
173
+ const result = await runPromise;
174
+ expect(ctx.sessionGateway.getSessionUsageCalls).toHaveLength(1);
175
+ expect(ctx.sessionGateway.getSessionUsageCalls[0]?.sessionId).toBe(parseSessionId('usg00001'));
176
+ expect(ctx.sessionGateway.getSessionUsageCalls[0]?.cwd).toBe('/tmp/project');
177
+ expect(result.status).toBe('completed');
178
+ if (result.status === 'completed') {
179
+ expect(result.usage).not.toBeNull();
180
+ expect(result.usage?.model).toBe('claude-opus-4-7');
181
+ expect(result.usage?.usage.inputTokens).toBe(100);
182
+ }
183
+ });
184
+ it('returns usage null in the completed result when the gateway returns null', async () => {
185
+ const ctx = buildDeps();
186
+ ctx.sessionGateway.setDispatchResult({
187
+ status: 'dispatched',
188
+ sessionId: parseSessionId('usg00002'),
189
+ });
190
+ ctx.completionBridge.scheduleCompletion('gitlab:owner/repo:42', {
191
+ source: 'mcp',
192
+ outcome: 'completed',
193
+ reason: null,
194
+ });
195
+ ctx.sessionGateway.setSessionUsage(null);
196
+ const runPromise = runClaudeReviewJob(buildInput(), ctx.deps);
197
+ await vi.runAllTimersAsync();
198
+ const result = await runPromise;
199
+ expect(result.status).toBe('completed');
200
+ if (result.status === 'completed') {
201
+ expect(result.usage).toBeNull();
202
+ }
203
+ });
204
+ it('does NOT call getSessionUsage when outcome is failed', async () => {
205
+ const ctx = buildDeps();
206
+ ctx.sessionGateway.setDispatchResult({
207
+ status: 'dispatched',
208
+ sessionId: parseSessionId('usg00003'),
209
+ });
210
+ ctx.completionBridge.scheduleCompletion('gitlab:owner/repo:42', {
211
+ source: 'mcp',
212
+ outcome: 'failed',
213
+ reason: 'agent-crash',
214
+ });
215
+ const runPromise = runClaudeReviewJob(buildInput(), ctx.deps);
216
+ await vi.runAllTimersAsync();
217
+ const result = await runPromise;
218
+ expect(ctx.sessionGateway.getSessionUsageCalls).toHaveLength(0);
219
+ expect(result.status).toBe('failed');
220
+ });
221
+ it('does NOT call getSessionUsage on timeout', async () => {
222
+ const ctx = buildDeps();
223
+ ctx.sessionGateway.setDispatchResult({
224
+ status: 'dispatched',
225
+ sessionId: parseSessionId('usg00004'),
226
+ });
227
+ let nowMs = new Date('2026-05-22T10:00:00Z').getTime();
228
+ const deps = { ...ctx.deps, now: () => new Date(nowMs) };
229
+ const runPromise = runClaudeReviewJob(buildInput(), deps);
230
+ await Promise.resolve();
231
+ await Promise.resolve();
232
+ await Promise.resolve();
233
+ nowMs += 16 * 60_000;
234
+ await vi.advanceTimersByTimeAsync(16 * 60_000);
235
+ await runPromise;
236
+ expect(ctx.sessionGateway.getSessionUsageCalls).toHaveLength(0);
237
+ });
238
+ });
149
239
  it('returns "failed" with reason "timeout" when no signal arrives in time', async () => {
150
240
  const ctx = buildDeps();
151
241
  ctx.sessionGateway.setDispatchResult({
@@ -1 +1 @@
1
- {"version":3,"file":"runClaudeReviewJob.usecase.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runClaudeReviewJob.usecase.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=modelPricing.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelPricing.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/tests/units/modules/token-accounting/entities/modelPricing/modelPricing.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,90 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { computeCostUsd, MODEL_PRICING_USD_PER_MILLION, } from '../../../../../../modules/token-accounting/entities/modelPricing/modelPricing.js';
3
+ describe('computeCostUsd', () => {
4
+ it('returns 0 when every token field is zero', () => {
5
+ const cost = computeCostUsd('claude-opus-4-7', {
6
+ inputTokens: 0,
7
+ outputTokens: 0,
8
+ cacheCreationInputTokens: 0,
9
+ cacheReadInputTokens: 0,
10
+ costUsd: 0,
11
+ });
12
+ expect(cost).toBe(0);
13
+ });
14
+ it('prices 1M input tokens at the opus rate (15 USD)', () => {
15
+ const cost = computeCostUsd('claude-opus-4-7', {
16
+ inputTokens: 1_000_000,
17
+ outputTokens: 0,
18
+ cacheCreationInputTokens: 0,
19
+ cacheReadInputTokens: 0,
20
+ costUsd: 0,
21
+ });
22
+ expect(cost).toBe(15);
23
+ });
24
+ it('prices 1M input tokens at the sonnet rate (3 USD)', () => {
25
+ const cost = computeCostUsd('claude-sonnet-4-5', {
26
+ inputTokens: 1_000_000,
27
+ outputTokens: 0,
28
+ cacheCreationInputTokens: 0,
29
+ cacheReadInputTokens: 0,
30
+ costUsd: 0,
31
+ });
32
+ expect(cost).toBe(3);
33
+ });
34
+ it('prices 1M input tokens at the haiku rate (1 USD)', () => {
35
+ const cost = computeCostUsd('claude-haiku-4-5', {
36
+ inputTokens: 1_000_000,
37
+ outputTokens: 0,
38
+ cacheCreationInputTokens: 0,
39
+ cacheReadInputTokens: 0,
40
+ costUsd: 0,
41
+ });
42
+ expect(cost).toBe(1);
43
+ });
44
+ it('sums input, output, cache-creation and cache-read at their respective rates (sonnet tier)', () => {
45
+ const cost = computeCostUsd('claude-sonnet-4-5', {
46
+ inputTokens: 1_000_000,
47
+ outputTokens: 1_000_000,
48
+ cacheCreationInputTokens: 1_000_000,
49
+ cacheReadInputTokens: 1_000_000,
50
+ costUsd: 0,
51
+ });
52
+ expect(cost).toBeCloseTo(3 + 15 + 3.75 + 0.3, 6);
53
+ });
54
+ it('falls back to opus pricing for an unknown model (never under-reports)', () => {
55
+ const cost = computeCostUsd('mystery-model-x', {
56
+ inputTokens: 1_000_000,
57
+ outputTokens: 0,
58
+ cacheCreationInputTokens: 0,
59
+ cacheReadInputTokens: 0,
60
+ costUsd: 0,
61
+ });
62
+ expect(cost).toBe(15);
63
+ });
64
+ it('matches versioned suffixes via prefix (claude-opus-4-7[1m] → opus tier)', () => {
65
+ const cost = computeCostUsd('claude-opus-4-7[1m]', {
66
+ inputTokens: 1_000_000,
67
+ outputTokens: 0,
68
+ cacheCreationInputTokens: 0,
69
+ cacheReadInputTokens: 0,
70
+ costUsd: 0,
71
+ });
72
+ expect(cost).toBe(15);
73
+ });
74
+ it('matches the dated versioned suffix (claude-haiku-4-5-20251022 → haiku tier)', () => {
75
+ const cost = computeCostUsd('claude-haiku-4-5-20251022', {
76
+ inputTokens: 1_000_000,
77
+ outputTokens: 0,
78
+ cacheCreationInputTokens: 0,
79
+ cacheReadInputTokens: 0,
80
+ costUsd: 0,
81
+ });
82
+ expect(cost).toBe(1);
83
+ });
84
+ it('exposes the public pricing table as a constant for inspection', () => {
85
+ expect(MODEL_PRICING_USD_PER_MILLION).toHaveProperty('claude-opus-4');
86
+ expect(MODEL_PRICING_USD_PER_MILLION).toHaveProperty('claude-sonnet-4');
87
+ expect(MODEL_PRICING_USD_PER_MILLION).toHaveProperty('claude-haiku-4-5');
88
+ });
89
+ });
90
+ //# sourceMappingURL=modelPricing.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelPricing.test.js","sourceRoot":"","sources":["../../../../../../../src/tests/units/modules/token-accounting/entities/modelPricing/modelPricing.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,kEAAkE,CAAC;AAE1E,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,EAAE;YAC7C,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,wBAAwB,EAAE,CAAC;YAC3B,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,EAAE;YAC7C,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,CAAC;YACf,wBAAwB,EAAE,CAAC;YAC3B,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,IAAI,GAAG,cAAc,CAAC,mBAAmB,EAAE;YAC/C,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,CAAC;YACf,wBAAwB,EAAE,CAAC;YAC3B,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,cAAc,CAAC,kBAAkB,EAAE;YAC9C,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,CAAC;YACf,wBAAwB,EAAE,CAAC;YAC3B,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2FAA2F,EAAE,GAAG,EAAE;QACnG,MAAM,IAAI,GAAG,cAAc,CAAC,mBAAmB,EAAE;YAC/C,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,SAAS;YACvB,wBAAwB,EAAE,SAAS;YACnC,oBAAoB,EAAE,SAAS;YAC/B,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,EAAE;YAC7C,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,CAAC;YACf,wBAAwB,EAAE,CAAC;YAC3B,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,IAAI,GAAG,cAAc,CAAC,qBAAqB,EAAE;YACjD,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,CAAC;YACf,wBAAwB,EAAE,CAAC;YAC3B,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,IAAI,GAAG,cAAc,CAAC,2BAA2B,EAAE;YACvD,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,CAAC;YACf,wBAAwB,EAAE,CAAC;YAC3B,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,6BAA6B,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,CAAC,6BAA6B,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxE,MAAM,CAAC,6BAA6B,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviewflow",
3
- "version": "3.14.0",
3
+ "version": "3.16.0",
4
4
  "description": "AI-powered code review automation for GitLab/GitHub using Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/main/server.js",