devchain-cli 0.8.2 → 0.8.4
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/dist/drizzle/0036_shared_watcher_event_names.sql +1 -0
- package/dist/drizzle/0037_idle_after_seconds.sql +2 -0
- package/dist/drizzle/meta/_journal.json +15 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +5 -0
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js +1 -0
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
- package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
- package/dist/server/app.module.js +2 -0
- package/dist/server/app.module.js.map +1 -1
- package/dist/server/modules/events/catalog/index.d.ts +2 -2
- package/dist/server/modules/events/catalog/terminal.watcher.triggered.d.ts +2 -2
- package/dist/server/modules/events/subscribers/chat-message-delivery.subscriber.js +1 -0
- package/dist/server/modules/events/subscribers/chat-message-delivery.subscriber.js.map +1 -1
- package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.js +2 -0
- package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.js.map +1 -1
- package/dist/server/modules/events/subscribers/review-comment-notifier.subscriber.js +1 -0
- package/dist/server/modules/events/subscribers/review-comment-notifier.subscriber.js.map +1 -1
- package/dist/server/modules/mcp/services/mcp.service.js +2 -0
- package/dist/server/modules/mcp/services/mcp.service.js.map +1 -1
- package/dist/server/modules/mcp/services/terminal-activity.service.js +1 -4
- package/dist/server/modules/mcp/services/terminal-activity.service.js.map +1 -1
- package/dist/server/modules/projects/controllers/projects.controller.d.ts +2 -0
- package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
- package/dist/server/modules/projects/services/projects.service.d.ts +1 -0
- package/dist/server/modules/projects/services/projects.service.js +19 -29
- package/dist/server/modules/projects/services/projects.service.js.map +1 -1
- package/dist/server/modules/providers/controllers/providers.controller.d.ts +3 -0
- package/dist/server/modules/providers/controllers/providers.controller.js +23 -0
- package/dist/server/modules/providers/controllers/providers.controller.js.map +1 -1
- package/dist/server/modules/registry/controllers/registry.controller.d.ts +11 -0
- package/dist/server/modules/registry/controllers/registry.controller.js +22 -0
- package/dist/server/modules/registry/controllers/registry.controller.js.map +1 -1
- package/dist/server/modules/registry/services/registry-orchestration.service.d.ts +19 -1
- package/dist/server/modules/registry/services/registry-orchestration.service.js +96 -0
- package/dist/server/modules/registry/services/registry-orchestration.service.js.map +1 -1
- package/dist/server/modules/seeders/seeders/0001_seed_compact_on_idle_watcher.d.ts +3 -0
- package/dist/server/modules/seeders/seeders/0001_seed_compact_on_idle_watcher.js +88 -0
- package/dist/server/modules/seeders/seeders/0001_seed_compact_on_idle_watcher.js.map +1 -0
- package/dist/server/modules/seeders/seeders.module.d.ts +2 -0
- package/dist/server/modules/seeders/seeders.module.js +31 -0
- package/dist/server/modules/seeders/seeders.module.js.map +1 -0
- package/dist/server/modules/seeders/services/data-seeder.service.d.ts +31 -0
- package/dist/server/modules/seeders/services/data-seeder.service.js +134 -0
- package/dist/server/modules/seeders/services/data-seeder.service.js.map +1 -0
- package/dist/server/modules/sessions/dtos/sessions.dto.d.ts +13 -0
- package/dist/server/modules/sessions/dtos/sessions.dto.js +5 -0
- package/dist/server/modules/sessions/dtos/sessions.dto.js.map +1 -1
- package/dist/server/modules/sessions/services/activity-tracker.service.js +1 -3
- package/dist/server/modules/sessions/services/activity-tracker.service.js.map +1 -1
- package/dist/server/modules/sessions/services/sessions.service.js +21 -1
- package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
- package/dist/server/modules/sessions/utils/claude-config.d.ts +10 -0
- package/dist/server/modules/sessions/utils/claude-config.js +114 -0
- package/dist/server/modules/sessions/utils/claude-config.js.map +1 -0
- package/dist/server/modules/settings/services/settings.service.js +2 -1
- package/dist/server/modules/settings/services/settings.service.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +17 -0
- package/dist/server/modules/storage/db/schema.js +1 -1
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/local/local-storage.service.d.ts +1 -0
- package/dist/server/modules/storage/local/local-storage.service.js +45 -3
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +1 -0
- package/dist/server/modules/subscribers/actions/restart-agent.action.js +1 -0
- package/dist/server/modules/subscribers/actions/restart-agent.action.js.map +1 -1
- package/dist/server/modules/watchers/controllers/watchers.controller.js +2 -0
- package/dist/server/modules/watchers/controllers/watchers.controller.js.map +1 -1
- package/dist/server/modules/watchers/dtos/watcher.dto.d.ts +9 -0
- package/dist/server/modules/watchers/dtos/watcher.dto.js +2 -0
- package/dist/server/modules/watchers/dtos/watcher.dto.js.map +1 -1
- package/dist/server/modules/watchers/services/watcher-runner.service.js +74 -0
- package/dist/server/modules/watchers/services/watcher-runner.service.js.map +1 -1
- package/dist/server/templates/dev-loop.json +74 -21
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/{ReviewDetailPage-YlFGGJv7.js → ReviewDetailPage-C4NizGFT.js} +2 -2
- package/dist/server/ui/assets/ReviewsPage-DLD6BGoH.js +6 -0
- package/dist/server/ui/assets/index-BkiWahA0.css +32 -0
- package/dist/server/ui/assets/index-CHBUsbMb.js +914 -0
- package/dist/server/ui/assets/{useReviewSubscription-CMhQ2m0h.js → useReviewSubscription-CptabtYL.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/dist/templates/dev-loop.json +74 -21
- package/package.json +9 -1
- package/dist/server/ui/assets/ReviewsPage-Diegg4jt.js +0 -19
- package/dist/server/ui/assets/index-DuMIsIyY.css +0 -32
- package/dist/server/ui/assets/index-sEtQpiB4.js +0 -868
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var fs=e=>{throw TypeError(e)};var gs=(e,t,n)=>t.has(e)||fs("Cannot "+n);var kt=(e,t,n)=>(gs(e,t,"read from private field"),n?n.call(e):t.get(e)),bs=(e,t,n)=>t.has(e)?fs("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),vs=(e,t,n,r)=>(gs(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);import{c as Be,r as w,
|
|
1
|
+
var fs=e=>{throw TypeError(e)};var gs=(e,t,n)=>t.has(e)||fs("Cannot "+n);var kt=(e,t,n)=>(gs(e,t,"read from private field"),n?n.call(e):t.get(e)),bs=(e,t,n)=>t.has(e)?fs("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),vs=(e,t,n,r)=>(gs(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);import{c as Be,r as w,G as mr,I as O,P as Xn,J as Ta,L as je,N as Aa,O as ka,Q as Po,U as $o,V as zo,j as u,a as H,W as Bo,X as Go,Y as hr,Z as fr,_ as gr,d as gn,e as bn,B as xe,M as ke,k as br,$ as Ia,n as ee,a0 as vn,a1 as on,a2 as $e,a3 as Ra,a4 as Ot,a5 as Uo,a6 as Ho,a7 as Ko,a8 as Wo,a9 as Yo,aa as qo,ab as Xo,ac as Ns,ad as Zo,ae as Qo,af as ln,ag as un,ah as cn,ai as pn,aj as dn,ak as Zn,al as vr,x as yt,am as _a,T as Ln,t as Fn,v as Pn,w as $n,an as Nr,ao as Jo,y as Pe,ap as zn,aq as ja,ar as el,as as tl,at as nl,au as Oa,av as rl,aw as sl,ax as al,ay as il,az as ol,aA as Va,aB as ll,aC as Ma,aD as Bn,S as ul,o as cl,p as pl,q as dl,s as ml,aE as hl,aF as fl,aG as ws,aH as gl,aI as bl,g as xt,m as Bt,aJ as vt,aK as vl,aL as Nl,aM as wl,K as yl,aN as xl}from"./index-CHBUsbMb.js";/**
|
|
2
2
|
* @license lucide-react v0.545.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
7
|
<title>Devchain - Local App</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CHBUsbMb.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BkiWahA0.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"slug": "dev-loop",
|
|
4
4
|
"name": "DevLoop",
|
|
5
5
|
"description": "A multi-agent development workflow that automates software delivery through three phases:\n\n1. Planning — A Brainstormer agent collaborates with a technical validator (SubBSM) to refine user requirements into an approved master plan, then breaks it down into epics and tasks.\n2. Execution — A Coder agent implements tasks while an Epic Manager reviews and controls the flow—approving, revising, or flagging issues until all work is complete.\n3. Code Review — A Code Reviewer audits the completed work against architectural standards, generating findings that feed back into new remediation tasks if needed.\n\nSupported agents: claude, codex, gemini, glm",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.4",
|
|
7
7
|
"category": "development",
|
|
8
8
|
"tags": [
|
|
9
9
|
"development",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
"glm"
|
|
14
14
|
],
|
|
15
15
|
"authorName": "Devchain",
|
|
16
|
-
"changelog": "
|
|
16
|
+
"changelog": "",
|
|
17
17
|
"minDevchainVersion": "0.8.0",
|
|
18
|
-
"publishedAt": "2026-02-
|
|
18
|
+
"publishedAt": "2026-02-07T19:28:10.288Z"
|
|
19
19
|
},
|
|
20
20
|
"version": 1,
|
|
21
|
-
"exportedAt": "2026-02-
|
|
21
|
+
"exportedAt": "2026-02-07T19:28:10.288Z",
|
|
22
22
|
"prompts": [
|
|
23
23
|
{
|
|
24
24
|
"id": "c12028e0-780b-462c-8065-e0b4f7f66be8",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
{
|
|
106
106
|
"name": "opus",
|
|
107
107
|
"providerName": "claude",
|
|
108
|
-
"options": "--model claude-opus-4-
|
|
108
|
+
"options": "--model claude-opus-4-6 --dangerously-skip-permissions --permission-mode plan",
|
|
109
109
|
"env": null,
|
|
110
110
|
"position": 0
|
|
111
111
|
},
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
{
|
|
155
155
|
"name": "opus",
|
|
156
156
|
"providerName": "claude",
|
|
157
|
-
"options": "--model claude-opus-4-
|
|
157
|
+
"options": "--model claude-opus-4-6 --dangerously-skip-permissions --permission-mode plan",
|
|
158
158
|
"env": null,
|
|
159
159
|
"position": 2
|
|
160
160
|
}
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
{
|
|
176
176
|
"name": "opus",
|
|
177
177
|
"providerName": "claude",
|
|
178
|
-
"options": "--model claude-opus-4-
|
|
178
|
+
"options": "--model claude-opus-4-6 --dangerously-skip-permissions",
|
|
179
179
|
"env": null,
|
|
180
180
|
"position": 0
|
|
181
181
|
},
|
|
@@ -186,19 +186,26 @@
|
|
|
186
186
|
"env": null,
|
|
187
187
|
"position": 1
|
|
188
188
|
},
|
|
189
|
+
{
|
|
190
|
+
"name": "gpt-codex-high",
|
|
191
|
+
"providerName": "codex",
|
|
192
|
+
"options": "--model=gpt-5.3-codex --config model_reasoning_effort=\"high\" --dangerously-bypass-approvals-and-sandbox",
|
|
193
|
+
"env": null,
|
|
194
|
+
"position": 2
|
|
195
|
+
},
|
|
189
196
|
{
|
|
190
197
|
"name": "gpt-high",
|
|
191
198
|
"providerName": "codex",
|
|
192
199
|
"options": "--model=gpt-5.2 --config model_reasoning_effort=\"high\" --dangerously-bypass-approvals-and-sandbox",
|
|
193
200
|
"env": null,
|
|
194
|
-
"position":
|
|
201
|
+
"position": 3
|
|
195
202
|
},
|
|
196
203
|
{
|
|
197
204
|
"name": "gpt-medium",
|
|
198
205
|
"providerName": "codex",
|
|
199
206
|
"options": "--model=gpt-5.2 --config model_reasoning_effort=\"medium\" --dangerously-bypass-approvals-and-sandbox",
|
|
200
207
|
"env": null,
|
|
201
|
-
"position":
|
|
208
|
+
"position": 4
|
|
202
209
|
},
|
|
203
210
|
{
|
|
204
211
|
"name": "glm",
|
|
@@ -208,7 +215,7 @@
|
|
|
208
215
|
"ANTHROPIC_AUTH_TOKEN": "{GLM_TOKEN}",
|
|
209
216
|
"ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic"
|
|
210
217
|
},
|
|
211
|
-
"position":
|
|
218
|
+
"position": 5
|
|
212
219
|
}
|
|
213
220
|
]
|
|
214
221
|
},
|
|
@@ -227,7 +234,7 @@
|
|
|
227
234
|
{
|
|
228
235
|
"name": "opus",
|
|
229
236
|
"providerName": "claude",
|
|
230
|
-
"options": "--model claude-opus-4-
|
|
237
|
+
"options": "--model claude-opus-4-6 --dangerously-skip-permissions",
|
|
231
238
|
"env": null,
|
|
232
239
|
"position": 0
|
|
233
240
|
},
|
|
@@ -269,7 +276,7 @@
|
|
|
269
276
|
{
|
|
270
277
|
"name": "opus",
|
|
271
278
|
"providerName": "claude",
|
|
272
|
-
"options": "--model claude-opus-4-
|
|
279
|
+
"options": "--model claude-opus-4-6 --dangerously-skip-permissions",
|
|
273
280
|
"env": null,
|
|
274
281
|
"position": 0
|
|
275
282
|
},
|
|
@@ -303,14 +310,14 @@
|
|
|
303
310
|
"name": "Coder",
|
|
304
311
|
"profileId": "61f6ebb6-69c4-487a-b646-aecfb9f90dc2",
|
|
305
312
|
"description": "This agent is responsible for sub epic execution; Sub Epics must be assigned onto this agent for implementation",
|
|
306
|
-
"providerConfigName": "
|
|
313
|
+
"providerConfigName": "opus"
|
|
307
314
|
},
|
|
308
315
|
{
|
|
309
316
|
"id": "86d56130-dbad-4f64-936b-7a262302992c",
|
|
310
317
|
"name": "Epic Manager",
|
|
311
318
|
"profileId": "869fb910-4cbe-451d-8e8d-3cf6ae5ec948",
|
|
312
319
|
"description": null,
|
|
313
|
-
"providerConfigName": "
|
|
320
|
+
"providerConfigName": "opus"
|
|
314
321
|
},
|
|
315
322
|
{
|
|
316
323
|
"id": "4e91e216-d6ea-48e9-98c2-a73771a1c36c",
|
|
@@ -400,6 +407,24 @@
|
|
|
400
407
|
"epicAssignedTemplate": "[Epic Assignment]\n{epic_title} is now assigned to {agent_name} in {project_name}. (Epic ID: {epic_id})"
|
|
401
408
|
},
|
|
402
409
|
"watchers": [
|
|
410
|
+
{
|
|
411
|
+
"id": "98ac66a9-abeb-447f-96e2-3e03bb753ab3",
|
|
412
|
+
"name": "Compact on idle",
|
|
413
|
+
"description": null,
|
|
414
|
+
"enabled": true,
|
|
415
|
+
"scope": "provider",
|
|
416
|
+
"scopeFilterName": "claude",
|
|
417
|
+
"pollIntervalMs": 60000,
|
|
418
|
+
"viewportLines": 20,
|
|
419
|
+
"idleAfterSeconds": 20,
|
|
420
|
+
"condition": {
|
|
421
|
+
"type": "regex",
|
|
422
|
+
"pattern": "Context low \\(0% remaining\\)"
|
|
423
|
+
},
|
|
424
|
+
"cooldownMs": 180000,
|
|
425
|
+
"cooldownMode": "until_clear",
|
|
426
|
+
"eventName": "watcher.conversation.compact_request"
|
|
427
|
+
},
|
|
403
428
|
{
|
|
404
429
|
"id": "5c76a56a-43d0-494c-b731-ad196562980d",
|
|
405
430
|
"name": "Compact monitor",
|
|
@@ -409,6 +434,7 @@
|
|
|
409
434
|
"scopeFilterName": "claude",
|
|
410
435
|
"pollIntervalMs": 60000,
|
|
411
436
|
"viewportLines": 20,
|
|
437
|
+
"idleAfterSeconds": 0,
|
|
412
438
|
"condition": {
|
|
413
439
|
"type": "regex",
|
|
414
440
|
"pattern": "(?:Context (low|limit)[^(]*·.*\\/compact|input tokens exceeds the model)"
|
|
@@ -426,6 +452,7 @@
|
|
|
426
452
|
"scopeFilterName": null,
|
|
427
453
|
"pollIntervalMs": 60000,
|
|
428
454
|
"viewportLines": 50,
|
|
455
|
+
"idleAfterSeconds": 0,
|
|
429
456
|
"condition": {
|
|
430
457
|
"type": "regex",
|
|
431
458
|
"pattern": "limit.*?·.*?resets|hit your usage limit",
|
|
@@ -623,28 +650,28 @@
|
|
|
623
650
|
]
|
|
624
651
|
},
|
|
625
652
|
{
|
|
626
|
-
"name": "Tier-S[
|
|
627
|
-
"description": "Best Results , High token consumption. \nMost of the of the load is handled by
|
|
653
|
+
"name": "Tier-S[opus:gpt53:gpt52]",
|
|
654
|
+
"description": "Best Results , High token consumption. \nMost of the of the load is handled by GPT5 model\nRecommended for Claude + Codex subscriptions",
|
|
628
655
|
"agentConfigs": [
|
|
629
656
|
{
|
|
630
657
|
"agentName": "Brainstormer",
|
|
631
|
-
"providerConfigName": "
|
|
658
|
+
"providerConfigName": "opus"
|
|
632
659
|
},
|
|
633
660
|
{
|
|
634
661
|
"agentName": "Coder",
|
|
635
|
-
"providerConfigName": "gpt-high"
|
|
662
|
+
"providerConfigName": "gpt-codex-high"
|
|
636
663
|
},
|
|
637
664
|
{
|
|
638
665
|
"agentName": "Epic Manager",
|
|
639
|
-
"providerConfigName": "
|
|
666
|
+
"providerConfigName": "opus"
|
|
640
667
|
},
|
|
641
668
|
{
|
|
642
669
|
"agentName": "SubBSM",
|
|
643
|
-
"providerConfigName": "
|
|
670
|
+
"providerConfigName": "gpt-high"
|
|
644
671
|
},
|
|
645
672
|
{
|
|
646
673
|
"agentName": "Code Reviewer",
|
|
647
|
-
"providerConfigName": "
|
|
674
|
+
"providerConfigName": "gpt-high"
|
|
648
675
|
}
|
|
649
676
|
]
|
|
650
677
|
},
|
|
@@ -673,6 +700,32 @@
|
|
|
673
700
|
"providerConfigName": "gpt-high"
|
|
674
701
|
}
|
|
675
702
|
]
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
"name": "Tier-S[gpt5h:opus:gpt5h]",
|
|
706
|
+
"description": "Best Results , High token consumption. \nMost of the of the load is handled by ChatGPT\nRecommended for ChatGPT Pro subscriptions",
|
|
707
|
+
"agentConfigs": [
|
|
708
|
+
{
|
|
709
|
+
"agentName": "Brainstormer",
|
|
710
|
+
"providerConfigName": "gpt-high"
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"agentName": "Coder",
|
|
714
|
+
"providerConfigName": "gpt-high"
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
"agentName": "Epic Manager",
|
|
718
|
+
"providerConfigName": "gpt-high"
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
"agentName": "SubBSM",
|
|
722
|
+
"providerConfigName": "opus"
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"agentName": "Code Reviewer",
|
|
726
|
+
"providerConfigName": "opus"
|
|
727
|
+
}
|
|
728
|
+
]
|
|
676
729
|
}
|
|
677
730
|
]
|
|
678
731
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devchain-cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"description": "AI driven development platform",
|
|
5
5
|
"homepage": "https://devchain.twitechlab.com/",
|
|
6
6
|
"repository": {
|
|
@@ -8,6 +8,14 @@
|
|
|
8
8
|
"url": "https://github.com/twitech-lab/devchain.git"
|
|
9
9
|
},
|
|
10
10
|
"changelog": {
|
|
11
|
+
"0.8.4": [
|
|
12
|
+
"Workaround for claude-cli auto-compact issue https://github.com/anthropics/claude-code/issues/7530",
|
|
13
|
+
"Check templates on start"
|
|
14
|
+
],
|
|
15
|
+
"0.8.3": [
|
|
16
|
+
"Claude auto-compact guard: blocks sessions when Claude's auto-compact conflicts with Devchain context management",
|
|
17
|
+
"Chat page help guide with improved markdown rendering"
|
|
18
|
+
],
|
|
11
19
|
"0.8.2": [
|
|
12
20
|
"Updated Dev Loop template"
|
|
13
21
|
],
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import{c as ge,j as e,a as Q,p as hs,g as ds,D as gs,b as fs,d as Ie,e as Ae,f as Fe,r,B as O,F as Ns,C as bs,h as vs,i as xs,k as ws,M as Ds,l as de,m as Es,u as Vs,n as js,o as Ps,q as Rs,s as S,t as ys,v as Le,w as Cs,S as Me,x as $e,y as qe,z as _e,A as me,R as Ss,T as ks,E as Ts,G as Is,K as As,H as Fs,I as Ls,J as k,L as Ms,N as $s}from"./index-sEtQpiB4.js";import{g as qs,i as pe,C as _s,N as He,u as Hs,a as zs,b as Ws,c as Ks,d as Bs,e as Os,f as ue,h as Gs,T as ze,j as B,R as We,k as ne,F as fe,l as Qs,m as Ke,D as Be,n as Oe,K as Us,o as Js,p as Ys,q as Xs,r as Zs,s as ei,t as si,v as ii}from"./useReviewSubscription-CMhQ2m0h.js";/**
|
|
2
|
-
* @license lucide-react v0.545.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const ai=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],ti=ge("circle-question-mark",ai);/**
|
|
7
|
-
* @license lucide-react v0.545.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const ni=[["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}]],li=ge("file-question-mark",ni);/**
|
|
12
|
-
* @license lucide-react v0.545.0 - ISC
|
|
13
|
-
*
|
|
14
|
-
* This source code is licensed under the ISC license.
|
|
15
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const oi=[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]],Ge=ge("git-commit-horizontal",oi);function he(l){return l.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}function A(l){return l.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function G(l){return l.replace(/`([^`]+)`/g,'<code class="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">$1</code>').replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g,(n,o,t)=>`<a href="${/^(https?:|mailto:|#|\/)/i.test(t)?t:"#"}" class="text-primary underline hover:text-primary/80" target="_blank" rel="noopener noreferrer">${o}</a>`)}function Qe(l,n,o){const t=[],a=o?/^\d+\.\s+(.*)$/:/^[-*]\s+(.*)$/;let d=n;for(;d<l.length;){const D=l[d].match(a);if(!D)break;t.push(`<li>${G(A(D[1]))}</li>`),d++}const p=o?"ol":"ul";return[`<${p} class="${o?"list-decimal":"list-disc"} pl-6 my-2 space-y-1">${t.join("")}</${p}>`,d]}function ci(l,n){const t=l[n].match(/^```(\w*)$/),a=(t==null?void 0:t[1])||"";let d=n+1;const p=[];for(;d<l.length&&!l[d].startsWith("```");)p.push(l[d]),d++;d<l.length&&l[d].startsWith("```")&&d++;const P=A(p.join(`
|
|
17
|
-
`));return[`<pre class="bg-muted p-4 rounded-md text-sm overflow-x-auto my-4"${a?` data-language="${a}"`:""}><code class="font-mono">${P}</code></pre>`,d]}function ri(l){const n=l.split(/\r?\n/),o=[];let t=0;for(;t<n.length;){const a=n[t];if(!a.trim()){t++;continue}if(a.startsWith("```")){const[u,b]=ci(n,t);o.push(u),t=b;continue}const d=a.match(/^###\s+(.+)$/);if(d){const u=d[1],b=he(u);o.push(`<h3 id="${b}" class="text-lg font-semibold mt-6 mb-2">${G(A(u))}</h3>`),t++;continue}const p=a.match(/^##\s+(.+)$/);if(p){const u=p[1],b=he(u);o.push(`<h2 id="${b}" class="text-xl font-semibold mt-8 mb-3">${G(A(u))}</h2>`),t++;continue}const P=a.match(/^#\s+(.+)$/);if(P){const u=P[1],b=he(u);o.push(`<h1 id="${b}" class="text-2xl font-bold mt-8 mb-4">${G(A(u))}</h1>`),t++;continue}if(/^[-*]\s+/.test(a)){const[u,b]=Qe(n,t,!1);o.push(u),t=b;continue}if(/^\d+\.\s+/.test(a)){const[u,b]=Qe(n,t,!0);o.push(u),t=b;continue}if(a.startsWith("|")&&a.endsWith("|")){const u=[];for(;t<n.length&&n[t].startsWith("|")&&n[t].endsWith("|");)u.push(n[t]),t++;o.push(`<pre class="bg-muted p-2 rounded text-sm overflow-x-auto my-2 font-mono">${A(u.join(`
|
|
18
|
-
`))}</pre>`);continue}const D=[];for(;t<n.length&&n[t].trim()&&!n[t].startsWith("#")&&!n[t].startsWith("```")&&!/^[-*]\s+/.test(n[t])&&!/^\d+\.\s+/.test(n[t])&&!(n[t].startsWith("|")&&n[t].endsWith("|"));)D.push(n[t]),t++;if(D.length>0){const u=D.join(" ");o.push(`<p class="my-3 leading-relaxed">${G(A(u))}</p>`)}}return hs.sanitize(o.join(`
|
|
19
|
-
`),{ALLOWED_TAGS:["h1","h2","h3","p","pre","code","strong","em","a","ul","ol","li","br"],ALLOWED_ATTR:["href","class","target","rel","id","data-language"],ALLOW_DATA_ATTR:!0})}function mi({content:l,className:n}){const o=ri(l);return e.jsxDEV("div",{className:Q("prose prose-sm max-w-none",n),dangerouslySetInnerHTML:{__html:o}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/MarkdownRenderer.tsx",lineNumber:294,columnNumber:5},this)}function pi({slug:l}){return e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsxDEV(li,{className:"h-12 w-12 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:31,columnNumber:7},this),e.jsxDEV("p",{className:"text-lg font-medium",children:"Document not found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:32,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm",children:['No documentation found for "',l,'"']},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:33,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:30,columnNumber:5},this)}function ui({open:l,onOpenChange:n,slug:o}){const t=ds(o);return e.jsxDEV(gs,{open:l,onOpenChange:n,children:e.jsxDEV(fs,{className:"max-w-4xl max-h-[90vh] flex flex-col",children:t?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Ie,{className:"shrink-0",children:[e.jsxDEV(Ae,{className:"text-xl",children:t.frontmatter.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:53,columnNumber:15},this),e.jsxDEV(Fe,{children:t.frontmatter.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:54,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:52,columnNumber:13},this),e.jsxDEV("div",{className:"flex-1 overflow-y-auto pr-2 -mr-2",children:e.jsxDEV(mi,{content:t.content,className:"pb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:57,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:56,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:51,columnNumber:11},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Ie,{className:"sr-only",children:[e.jsxDEV(Ae,{children:"Document not found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:63,columnNumber:15},this),e.jsxDEV(Fe,{children:"The requested documentation could not be found."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:64,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:62,columnNumber:13},this),e.jsxDEV(pi,{slug:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:66,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:61,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:49,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/DocsViewer.tsx",lineNumber:48,columnNumber:5},this)}function hi({featureId:l,className:n}){const[o,t]=r.useState(!1),a=Ns[l];return a?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(O,{variant:"ghost",size:"icon",className:Q("h-6 w-6",n),onClick:()=>t(!0),"aria-label":"Help",children:e.jsxDEV(ti,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/HelpButton.tsx",lineNumber:46,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/HelpButton.tsx",lineNumber:39,columnNumber:7},this),e.jsxDEV(ui,{open:o,onOpenChange:t,slug:a},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/HelpButton.tsx",lineNumber:48,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/HelpButton.tsx",lineNumber:38,columnNumber:5},this):null}function Ue({comments:l,selectedCommentId:n,isExpanded:o,onToggleExpand:t,onReply:a,onResolve:d,onDelete:p,onEdit:P,onApplySuggestion:D,isReplying:u=!1,isResolving:b=!1,isDeleting:U=!1,isEditing:h=!1,isApplyingSuggestion:F=!1,getSessionForAgent:g,onOpenTerminal:R,className:z}){const L=r.useRef(null),V=r.useMemo(()=>l.filter(f=>f.filePath===null),[l]),y=r.useMemo(()=>qs(V),[V]),T=r.useMemo(()=>V.filter(f=>f.parentId===null).sort((f,j)=>{const M=y.get(f.id)??[],s=y.get(j.id)??[],J=pe({comment:f,replies:M}),E=pe({comment:j,replies:s});if(J!==E)return J?-1:1;if(f.status!==j.status){if(f.status==="open")return-1;if(j.status==="open")return 1}return new Date(j.createdAt).getTime()-new Date(f.createdAt).getTime()}),[V,y]);return r.useEffect(()=>{n&&L.current&&o&&L.current.scrollIntoView({behavior:"smooth",block:"nearest"})},[n,o]),T.length===0?null:e.jsxDEV(bs,{open:o,onOpenChange:t,className:Q("border-b bg-card",z),"data-testid":"review-comments-section",children:[e.jsxDEV(vs,{asChild:!0,children:e.jsxDEV("button",{type:"button",className:"flex items-center gap-2 px-4 py-3 border-b bg-muted/30 w-full text-left hover:bg-muted/50 transition-colors","aria-label":o?"Collapse review comments":"Expand review comments",children:[o?e.jsxDEV(xs,{className:"h-4 w-4 text-muted-foreground","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:140,columnNumber:13},this):e.jsxDEV(ws,{className:"h-4 w-4 text-muted-foreground","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:142,columnNumber:13},this),e.jsxDEV("h3",{className:"font-medium text-sm flex items-center gap-2",id:"review-comments-heading",children:[e.jsxDEV(Ds,{className:"h-4 w-4","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:146,columnNumber:13},this),"Review Comments",e.jsxDEV(de,{variant:"secondary",className:"text-xs","aria-label":`${T.length} comments`,children:T.length},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:148,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:145,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:134,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:133,columnNumber:7},this),e.jsxDEV(Es,{children:e.jsxDEV("div",{className:"p-4 space-y-4",role:"region","aria-labelledby":"review-comments-heading",children:T.map(f=>{const j=y.get(f.id)??[],M=pe({comment:f,replies:j}),s=n===f.id;return e.jsxDEV("div",{ref:s?L:void 0,className:Q("transition-all duration-200",s&&"ring-2 ring-primary ring-offset-2 rounded-lg"),"data-comment-id":f.id,children:e.jsxDEV(_s,{comment:f,replies:j,isPending:M,getSessionForAgent:g,onOpenTerminal:R,onReply:a,onResolve:d,onDelete:p,onEdit:P,onApplySuggestion:D,isReplying:u,isResolving:b,isDeleting:U,isEditing:h,isApplyingSuggestion:F},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:178,columnNumber:17},this)},f.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:168,columnNumber:15},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:161,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:160,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/review/ReviewCommentsSection.tsx",lineNumber:126,columnNumber:5},this)}const Je="review-file-nav",Ye="review-comment-split";function di(){return e.jsxDEV("div",{className:"flex flex-col items-center justify-center h-full text-muted-foreground",children:[e.jsxDEV(fe,{className:"h-12 w-12 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:86,columnNumber:7},this),e.jsxDEV("p",{className:"text-lg font-medium",children:"No changes to review"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:87,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm",children:"Your working tree is clean"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:88,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:85,columnNumber:5},this)}function Xe(){return e.jsxDEV("div",{className:"flex flex-col items-center justify-center h-full text-muted-foreground",children:[e.jsxDEV(fe,{className:"h-12 w-12 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:97,columnNumber:7},this),e.jsxDEV("p",{className:"text-lg font-medium",children:"Select a file to view diff"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:98,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm",children:"Choose a file from the left panel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:99,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:96,columnNumber:5},this)}function gi(){return e.jsxDEV("div",{className:"flex flex-col h-full",children:[e.jsxDEV("div",{className:"border-b p-4",children:e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV(k,{className:"h-6 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:110,columnNumber:11},this),e.jsxDEV(k,{className:"h-9 w-40"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:111,columnNumber:11},this),e.jsxDEV(k,{className:"h-9 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:112,columnNumber:11},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:113,columnNumber:11},this),e.jsxDEV(k,{className:"h-9 w-24"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:114,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:109,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:108,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 flex",children:[e.jsxDEV("div",{className:"w-64 border-r p-4 space-y-2",children:Array.from({length:5}).map((l,n)=>e.jsxDEV(k,{className:"h-8 w-full"},n,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:121,columnNumber:13},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:119,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 p-4",children:e.jsxDEV(k,{className:"h-full w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:125,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:124,columnNumber:9},this),e.jsxDEV("div",{className:"w-80 border-l p-4 space-y-2",children:[e.jsxDEV(k,{className:"h-6 w-24 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:128,columnNumber:11},this),Array.from({length:3}).map((l,n)=>e.jsxDEV(k,{className:"h-16 w-full"},n,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:130,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:127,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:118,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:106,columnNumber:5},this)}function bi(){var ke;const l=Vs(),n=js(),{toast:o}=Ps(),{selectedProject:t,selectedProjectId:a,projectsLoading:d}=Rs(),[p,P]=r.useState("working-tree"),[D,u]=r.useState("all"),[b,U]=r.useState("HEAD"),[h,F]=r.useState(null),[g,R]=r.useState(null),[z,L]=r.useState("unified"),[V,y]=r.useState(null),[T,f]=r.useState(!0),j=He({id:Je,storage:localStorage}),M=He({id:Ye,storage:localStorage}),{data:s,isLoading:J}=S({queryKey:["active-review",a],queryFn:()=>ue(a),enabled:!!a});Hs((s==null?void 0:s.id)??null,a??null);const{data:E,isLoading:Ne,isError:Ze,refetch:be}=S({queryKey:["working-tree",a,D],queryFn:()=>Xs(a,D),enabled:!!a&&p==="working-tree",refetchInterval:5e3}),{data:$,isLoading:es,isError:ss}=S({queryKey:["commit-diff",a,h==null?void 0:h.sha],queryFn:()=>Zs(a,h.sha),enabled:!!a&&p==="commit"&&!!h}),{data:I=[]}=S({queryKey:["commits",a],queryFn:()=>ei(a,{limit:50}),enabled:!!a});r.useEffect(()=>{if(s){const i=s.mode==="working_tree"?"working-tree":"commit";if(P(i),U(s.baseRef),s.mode==="commit"&&I.length>0){const c=I.find(m=>m.sha===s.headRef);c&&F(c)}}},[s,I]);const{data:is=[]}=S({queryKey:["branches",a],queryFn:()=>si(a),enabled:!!a}),{data:N}=S({queryKey:["review-comments",s==null?void 0:s.id],queryFn:()=>ii(s.id),enabled:!!(s!=null&&s.id)}),{data:ve={}}=S({queryKey:["agent-presence",a],queryFn:()=>Ms(a),enabled:!!a,refetchInterval:1e4}),{data:xe=[]}=S({queryKey:["active-sessions",a],queryFn:()=>$s(a),enabled:!!a,refetchInterval:1e4}),Y=r.useCallback(i=>{const c=ve[i];return c!=null&&c.sessionId?xe.find(m=>m.id===c.sessionId)??null:null},[ve,xe]),X=ys(),Z=Le({mutationFn:()=>Ys(s.id,s.version),onSuccess:()=>{n.invalidateQueries({queryKey:["active-review",a]}),n.invalidateQueries({queryKey:["review-comments"]}),o({title:"Review closed",description:"The review has been closed successfully."})}}),W=Le({mutationFn:async()=>{const i=p==="commit"&&h?`Review: ${h.sha.slice(0,7)}`:"Pre-commit review",c=p==="commit"&&h?`${h.sha}^`:b,m=p==="commit"&&h?h.sha:"HEAD";return Js({projectId:a,title:i,mode:p==="working-tree"?"working_tree":"commit",baseRef:c,headRef:m,status:"draft"})},onSuccess:i=>{n.setQueryData(["active-review",a],i)}}),le=zs(),K=Ws(),C=Ks(),q=Bs(),_=Os(),we=r.useCallback(async(i,c,m,w,x,us)=>{let te=s==null?void 0:s.id;if(!te)try{te=(await W.mutateAsync()).id}catch(Te){const re=await ue(a);if(!re)throw Te;n.setQueryData(["active-review",a],re),te=re.id}await le.mutateAsync({reviewId:te,content:w,commentType:x,filePath:g,lineStart:i,lineEnd:c,side:m,targetAgentIds:us})},[s==null?void 0:s.id,W,le,n,a,g]),ee=r.useCallback(async(i,c)=>{let m=s==null?void 0:s.id;if(!m)try{m=(await W.mutateAsync()).id}catch(w){const x=await ue(a);if(!x)throw w;n.setQueryData(["active-review",a],x),m=x.id}await K.mutateAsync({reviewId:m,parentId:i,content:c})},[s==null?void 0:s.id,W,K,n,a]),De=r.useCallback(i=>{if((s==null?void 0:s.mode)==="commit"&&(h==null?void 0:h.sha)!==s.headRef){const c=I.find(m=>m.sha===s.headRef);c&&F(c)}i.filePath?(R(i.filePath),y(i.commentId)):(f(!0),y(i.commentId))},[s==null?void 0:s.mode,s==null?void 0:s.headRef,h==null?void 0:h.sha,I]),Ee=r.useCallback(()=>{y(null)},[]),Ve=r.useCallback(async(i,c,m)=>{s!=null&&s.id&&await C.mutateAsync({reviewId:s.id,commentId:i,status:c,version:m})},[s==null?void 0:s.id,C]),je=r.useCallback(async(i,c)=>{if(!(s!=null&&s.id)||!(N!=null&&N.items))return;const m=N.items.find(w=>w.id===i);m&&await C.mutateAsync({reviewId:s.id,commentId:i,status:c,version:m.version})},[s==null?void 0:s.id,N==null?void 0:N.items,C]),se=r.useCallback(async i=>{s!=null&&s.id&&await q.mutateAsync({reviewId:s.id,commentId:i})},[s==null?void 0:s.id,q]),ie=r.useCallback(async(i,c,m)=>{s!=null&&s.id&&await _.mutateAsync({reviewId:s.id,commentId:i,content:c,version:m})},[s==null?void 0:s.id,_]),Pe=W.isPending||le.isPending||K.isPending,v=r.useMemo(()=>{if(p==="working-tree"&&E){const{staged:i,unstaged:c,untracked:m}=E.changes,w=new Map;return i.forEach(x=>w.set(x.path,x)),c.forEach(x=>{w.has(x.path)||w.set(x.path,x)}),(m||[]).forEach(x=>{w.has(x)||w.set(x,{path:x,status:"added",additions:0,deletions:0})}),Array.from(w.values())}return p==="commit"&&$?$.changedFiles:[]},[p,E,$]),Re=p==="working-tree"?(E==null?void 0:E.diff)??"":($==null?void 0:$.diff)??"",ye=((ke=N==null?void 0:N.items)==null?void 0:ke.filter(i=>i.filePath===g))??[],Ce=g?v.find(i=>i.path===g):void 0,as=i=>{P(i),R(null),i==="commit"&&F(null)},ts=i=>{const c=I.find(m=>m.sha===i);F(c??null),R(null)},oe=i=>{R(i)},ns=r.useCallback(()=>{if(v.length===0)return;const c=((g?v.findIndex(m=>m.path===g):-1)+1)%v.length;R(v[c].path)},[v,g]),ls=r.useCallback(()=>{if(v.length===0)return;const i=g?v.findIndex(m=>m.path===g):0,c=i<=0?v.length-1:i-1;R(v[c].path)},[v,g]),Se=r.useRef(null),os=r.useCallback(()=>{var i;(i=Se.current)==null||i.focusNextComment()},[]),cs=r.useCallback(()=>{var i;(i=Se.current)==null||i.focusPreviousComment()},[]),{isHelpOpen:rs,closeHelp:ms,openHelp:ps}=Gs({enabled:!d,handlers:{onNextFile:ns,onPreviousFile:ls,onNextComment:os,onPreviousComment:cs}});if(!d&&!t)return e.jsxDEV("div",{className:"flex flex-col items-center justify-center h-full py-16",children:[e.jsxDEV(Cs,{className:"h-12 w-12 text-muted-foreground/50 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:595,columnNumber:9},this),e.jsxDEV("h2",{className:"text-lg font-medium mb-2",children:"No project selected"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:596,columnNumber:9},this),e.jsxDEV("p",{className:"text-muted-foreground mb-4",children:"Select a project to view code reviews."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:597,columnNumber:9},this),e.jsxDEV(O,{onClick:()=>l("/projects"),children:"Go to Projects"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:598,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:594,columnNumber:7},this);if(d||J)return e.jsxDEV(gi,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:605,columnNumber:12},this);const ae=p==="working-tree"?Ne:es,H=p==="working-tree"?Ze:ss,ce=v.length>0;return e.jsxDEV("div",{className:"flex flex-col h-full",children:[e.jsxDEV("div",{className:"border-b px-4 py-3 bg-card",children:e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("h1",{className:"text-lg font-semibold",children:"Code Review"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:619,columnNumber:13},this),e.jsxDEV(hi,{featureId:"reviews"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:620,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:618,columnNumber:11},this),e.jsxDEV(ze,{type:"single",value:p,onValueChange:i=>i&&as(i),className:"border rounded-md",children:[e.jsxDEV(B,{value:"working-tree",className:"text-xs px-3",children:"Working Changes"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:630,columnNumber:13},this),e.jsxDEV(B,{value:"commit",className:"text-xs px-3",children:[e.jsxDEV(Ge,{className:"h-3.5 w-3.5 mr-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:634,columnNumber:15},this),"Commit"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:633,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:624,columnNumber:11},this),p==="working-tree"?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Me,{value:b,onValueChange:U,children:[e.jsxDEV($e,{className:"w-36","aria-label":"Select base reference",children:e.jsxDEV(qe,{placeholder:"Base"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:645,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:644,columnNumber:17},this),e.jsxDEV(_e,{children:[e.jsxDEV(me,{value:"HEAD",children:"HEAD"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:648,columnNumber:19},this),is.filter(i=>["main","master"].includes(i.name)).map(i=>e.jsxDEV(me,{value:i.name,children:i.name},i.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:652,columnNumber:23},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:647,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:643,columnNumber:15},this),e.jsxDEV(ze,{type:"single",value:D,onValueChange:i=>i&&u(i),className:"border rounded-md",children:[e.jsxDEV(B,{value:"all",className:"text-xs px-3",children:"All"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:666,columnNumber:17},this),e.jsxDEV(B,{value:"staged",className:"text-xs px-3",children:"Staged"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:669,columnNumber:17},this),e.jsxDEV(B,{value:"unstaged",className:"text-xs px-3",children:"Unstaged"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:672,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:660,columnNumber:15},this),e.jsxDEV(O,{variant:"ghost",size:"icon",onClick:()=>be(),title:"Refresh",children:e.jsxDEV(Ss,{className:Q("h-4 w-4",Ne&&"animate-spin")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:684,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:678,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:641,columnNumber:13},this):e.jsxDEV(Me,{value:(h==null?void 0:h.sha)??"",onValueChange:ts,children:[e.jsxDEV($e,{className:"w-80","aria-label":"Select commit to review",children:e.jsxDEV(qe,{placeholder:"Select a commit to review"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:691,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:690,columnNumber:15},this),e.jsxDEV(_e,{children:I.map(i=>e.jsxDEV(me,{value:i.sha,children:[e.jsxDEV("span",{className:"font-mono text-xs",children:i.sha.slice(0,7)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:696,columnNumber:21},this),e.jsxDEV("span",{className:"ml-2 truncate",children:i.message},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:697,columnNumber:21},this)]},i.sha,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:695,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:693,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:689,columnNumber:13},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:704,columnNumber:11},this),ce&&e.jsxDEV("span",{className:"text-sm text-muted-foreground",children:[v.length," files",(E==null?void 0:E.untrackedDiffsCapped)&&e.jsxDEV("span",{className:"ml-1 text-amber-600",title:`Showing diffs for ${E.untrackedProcessed} of ${E.untrackedTotal} untracked files`,children:"(diffs capped)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:711,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:708,columnNumber:13},this),s&&e.jsxDEV(de,{variant:"secondary",className:"bg-blue-100 text-blue-800",children:"Active Review"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:723,columnNumber:13},this),e.jsxDEV(ks,{children:e.jsxDEV(Ts,{children:[e.jsxDEV(Is,{asChild:!0,children:e.jsxDEV(O,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:ps,title:"Keyboard shortcuts",children:e.jsxDEV(As,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:739,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:732,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:731,columnNumber:15},this),e.jsxDEV(Fs,{children:e.jsxDEV("p",{children:"Keyboard shortcuts (?)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:743,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:742,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:730,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:729,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:616,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:615,columnNumber:7},this),H&&e.jsxDEV("div",{className:"flex flex-col items-center justify-center h-full",children:[e.jsxDEV(Ls,{className:"h-12 w-12 text-destructive mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:753,columnNumber:11},this),e.jsxDEV("h2",{className:"text-lg font-medium mb-2",children:"Failed to load changes"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:754,columnNumber:11},this),e.jsxDEV("p",{className:"text-muted-foreground mb-4",children:"There was an error loading the changes. Please try again."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:755,columnNumber:11},this),e.jsxDEV(O,{onClick:()=>be(),children:"Retry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:758,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:752,columnNumber:9},this),!H&&!ae&&!ce&&p==="working-tree"&&e.jsxDEV(di,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:763,columnNumber:76},this),!H&&p==="commit"&&!h&&e.jsxDEV("div",{className:"flex flex-col items-center justify-center h-full text-muted-foreground",children:[e.jsxDEV(Ge,{className:"h-12 w-12 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:768,columnNumber:11},this),e.jsxDEV("p",{className:"text-lg font-medium",children:"Select a commit to review"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:769,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm",children:"Choose a commit from the dropdown above"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:770,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:767,columnNumber:9},this),!H&&ce&&e.jsxDEV(We,{orientation:"horizontal",className:"flex-1 min-h-0",id:Je,defaultLayout:j.defaultLayout,onLayoutChanged:j.onLayoutChanged,children:[e.jsxDEV(ne,{id:"file-nav",defaultSize:"256px",minSize:"150px",maxSize:"40%",children:e.jsxDEV("div",{className:"h-full border-r bg-card overflow-hidden flex flex-col",children:[e.jsxDEV("div",{className:"p-3 border-b shrink-0",children:e.jsxDEV("h2",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsxDEV(fe,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:788,columnNumber:19},this),"Files",v.length>0&&e.jsxDEV(de,{variant:"secondary",className:"text-xs",children:v.length},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:791,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:787,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:786,columnNumber:15},this),e.jsxDEV("div",{className:"flex-1 min-h-0",children:e.jsxDEV(Qs,{files:v,selectedFile:g,onSelectFile:oe,isLoading:ae},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:798,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:797,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:785,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:784,columnNumber:11},this),e.jsxDEV(Ke,{withHandle:!0},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:808,columnNumber:11},this),e.jsxDEV(ne,{id:"diff-comments",defaultSize:"80%",children:z==="split"?e.jsxDEV(We,{orientation:"vertical",className:"h-full",id:Ye,defaultLayout:M.defaultLayout,onLayoutChanged:M.onLayoutChanged,children:[e.jsxDEV(ne,{id:"diff-panel",defaultSize:"70%",minSize:"30%",children:e.jsxDEV("div",{className:"h-full min-w-0 bg-background overflow-auto flex flex-col",children:[s&&(N==null?void 0:N.items)&&e.jsxDEV(Ue,{comments:N.items,selectedCommentId:V,isExpanded:T,onToggleExpand:()=>f(i=>!i),onReply:ee,onResolve:je,onDelete:se,onEdit:ie,isReplying:K.isPending,isResolving:C.isPending,isDeleting:q.isPending,isEditing:_.isPending,getSessionForAgent:Y,onOpenTerminal:X},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:825,columnNumber:23},this),e.jsxDEV("div",{className:"flex-1 min-h-0",children:g?e.jsxDEV(Be,{diff:Re,filePath:g,isLoading:ae,error:H?"Failed to load diff":null,viewType:z,onViewTypeChange:L,projectId:a,comments:ye,onAddComment:we,onReplyToComment:ee,onResolveComment:Ve,onDeleteComment:se,onEditComment:ie,isSubmittingComment:Pe,isResolvingComment:C.isPending,isDeletingComment:q.isPending,isEditingComment:_.isPending,getSessionForAgent:Y,onOpenTerminal:X,fileInfo:Ce,selectedCommentId:V,onClearSelectedComment:Ee},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:845,columnNumber:25},this):e.jsxDEV(Xe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:870,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:843,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:822,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:821,columnNumber:17},this),e.jsxDEV(Ke,{withHandle:!0},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:875,columnNumber:17},this),e.jsxDEV(ne,{id:"comment-panel",defaultSize:"30%",minSize:"15%",children:e.jsxDEV("div",{className:"h-full bg-card overflow-hidden border-t",children:s?e.jsxDEV(Oe,{reviewId:s.id,review:s,projectId:a,selectedFile:g,onNavigateToComment:De,onSelectFile:oe,selectedCommentId:V,onCloseReview:()=>Z.mutate(),isClosingReview:Z.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:879,columnNumber:23},this):e.jsxDEV("div",{className:"p-4 text-center text-muted-foreground",children:e.jsxDEV("p",{className:"text-sm",children:"Add a comment to start a review"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:892,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:891,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:877,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:876,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:814,columnNumber:15},this):e.jsxDEV("div",{className:"h-full grid grid-cols-[1fr_320px]",children:[e.jsxDEV("div",{className:"min-w-0 bg-background overflow-auto flex flex-col",children:[s&&(N==null?void 0:N.items)&&e.jsxDEV(Ue,{comments:N.items,selectedCommentId:V,isExpanded:T,onToggleExpand:()=>f(i=>!i),onReply:ee,onResolve:je,onDelete:se,onEdit:ie,isReplying:K.isPending,isResolving:C.isPending,isDeleting:q.isPending,isEditing:_.isPending,getSessionForAgent:Y,onOpenTerminal:X},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:904,columnNumber:21},this),e.jsxDEV("div",{className:"flex-1 min-h-0",children:g?e.jsxDEV(Be,{diff:Re,filePath:g,isLoading:ae,error:H?"Failed to load diff":null,viewType:z,onViewTypeChange:L,projectId:a,comments:ye,onAddComment:we,onReplyToComment:ee,onResolveComment:Ve,onDeleteComment:se,onEditComment:ie,isSubmittingComment:Pe,isResolvingComment:C.isPending,isDeletingComment:q.isPending,isEditingComment:_.isPending,getSessionForAgent:Y,onOpenTerminal:X,fileInfo:Ce,selectedCommentId:V,onClearSelectedComment:Ee},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:924,columnNumber:23},this):e.jsxDEV(Xe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:949,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:922,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:901,columnNumber:17},this),e.jsxDEV("div",{className:"bg-card overflow-hidden border-l",children:s?e.jsxDEV(Oe,{reviewId:s.id,review:s,projectId:a,selectedFile:g,onNavigateToComment:De,onSelectFile:oe,selectedCommentId:V,onCloseReview:()=>Z.mutate(),isClosingReview:Z.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:955,columnNumber:21},this):e.jsxDEV("div",{className:"p-4 text-center text-muted-foreground",children:e.jsxDEV("p",{className:"text-sm",children:"Add a comment to start a review"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:968,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:967,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:953,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:900,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:811,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:776,columnNumber:9},this),e.jsxDEV(Us,{open:rs,onOpenChange:ms},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:979,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.tsx",lineNumber:613,columnNumber:5},this)}export{bi as ReviewsPage};
|