chainlesschain 0.162.78 → 0.162.80

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 (194) hide show
  1. package/README.md +37 -1
  2. package/bin/chainlesschain.js +20 -1
  3. package/package.json +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-BhKMd38k.js → AIOps-CwebRiRI.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-BzhKY5C_.js → ActionButton-C7h2xsW3.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-CATIz2Jc.js → Analytics-BRdOQzzK.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-eCx64YWg.js → AppLayout-D_i-Jbsu.js} +5 -5
  8. package/src/assets/web-panel/assets/{Audit-CGOHfCHj.js → Audit-AgCF_nLK.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-Dyr6R0Ra.js → Backup-Be9up1Uo.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-CVhBu7NZ.js → BaseInput-2j-7gyTU.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-DOCCKp2k.js → Chat-ZyYadHdk.js} +6 -6
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-DcXCCnjN.js → ChatBubbleRenderer-CwnbmcAg.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-3yjnENud.js → Checkbox-Di0bejSO.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-D06sn8kB.js → Codegen-BgEwqrVh.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-Bjn5vFES.js → Col-FIduoerd.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-BYHpQHmf.js → Community-Bf7olKXg.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-MKRmnUDQ.js → Compact-CsjIF6B3.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-CVtPe8dh.js → Compliance-CQchRaQh.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-BRu5M3dv.js → Cowork-gJzDgX9E.js} +2 -2
  20. package/src/assets/web-panel/assets/{Cron-D_7eU5Ut.js → Cron-CDjeagXb.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-BFyVp_e9.js → Crosschain-D4UE5bt0.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-DRoG7638.js → DID-OwvsxTzD.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-NfM_v-Oe.js → Dashboard-CbmOlZ1l.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-CGN1Ksu0.js → Dropdown-B6tBUMev.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-DhsY_z_a.js → EmailListRenderer-DnM2-O3n.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-vW_VsKUG.js → FamilyGuardDashboard-DPD9znJH.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-D2ob_c7h.js → Federation-DjUj87Vr.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-Cpem15Pr.js → FormItemContext-DyPgrKLf.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-P6XfmXwT.js → GenericCardRenderer-D3fmbO1W.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-CfSeec1R.js → Git-IvwC_R2h.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-4ipIpqNl.js → Governance-CTVEvxpW.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-CiQY_P9Y.js → Inference-DQlp7Rf1.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-B3Qem78R.js → KnowledgeGraph-Cg8pVh5j.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-De2zWVy6.js → Logs-D7kLXyaK.js} +2 -2
  35. package/src/assets/web-panel/assets/{Marketplace-CTNu4c1A.js → Marketplace-QOj6g-oT.js} +1 -1
  36. package/src/assets/web-panel/assets/{McpTools-Xx25EA2f.js → McpTools-PO9yrTD6.js} +5 -5
  37. package/src/assets/web-panel/assets/{Memory-YzzCCrch.js → Memory-B1FwSFmt.js} +2 -2
  38. package/src/assets/web-panel/assets/{MobileBridge-CJZY98f0.js → MobileBridge-CYiQSoKu.js} +3 -3
  39. package/src/assets/web-panel/assets/{MobileProjects-Dw7yl4KN.js → MobileProjects-BThUga4r.js} +1 -1
  40. package/src/assets/web-panel/assets/{Mtc-D7TzGJhH.js → Mtc-B4pMzmr7.js} +4 -4
  41. package/src/assets/web-panel/assets/{MtcAudit-THyGhf0h.js → MtcAudit-D6-KGsvR.js} +6 -6
  42. package/src/assets/web-panel/assets/{Multisig-RVxuGPUR.js → Multisig-BlZigJMj.js} +3 -3
  43. package/src/assets/web-panel/assets/{NLProgramming-DK7TCzKF.js → NLProgramming-Dhy92OLw.js} +1 -1
  44. package/src/assets/web-panel/assets/{Notes-BaOU0psj.js → Notes-DOSv2Lb0.js} +4 -4
  45. package/src/assets/web-panel/assets/{NotificationSettings-BMivJy85.js → NotificationSettings-FRWsHQfi.js} +1 -1
  46. package/src/assets/web-panel/assets/{OrderTableRenderer-BZOiY8Yw.js → OrderTableRenderer-xRSRWRZg.js} +1 -1
  47. package/src/assets/web-panel/assets/{Organization-zVRtW1n_.js → Organization-DApwYY-B.js} +4 -4
  48. package/src/assets/web-panel/assets/{Overflow-C0YLldFH.js → Overflow-DyJQHxIY.js} +1 -1
  49. package/src/assets/web-panel/assets/{P2P-Xxgzghqp.js → P2P-NKTPd_Bn.js} +2 -2
  50. package/src/assets/web-panel/assets/{PdhVaultBrowser-DH_LO13b.js → PdhVaultBrowser-DCgGt1BE.js} +5 -5
  51. package/src/assets/web-panel/assets/{Permissions-CvAd1VBw.js → Permissions-BX9MCb2z.js} +4 -4
  52. package/src/assets/web-panel/assets/{PersonalDataHub-CWQGgCAK.js → PersonalDataHub-Bcg4az84.js} +3 -3
  53. package/src/assets/web-panel/assets/{Pipeline-BNAoh-Lb.js → Pipeline-DjsbfwbG.js} +1 -1
  54. package/src/assets/web-panel/assets/{Privacy-CNO5pFq-.js → Privacy-kDWl06vo.js} +1 -1
  55. package/src/assets/web-panel/assets/{ProjectInit-WaVVDsm3.js → ProjectInit-yCe-Imkv.js} +2 -2
  56. package/src/assets/web-panel/assets/{ProjectSettings-D1WfkuJ3.js → ProjectSettings-tVcxlGJ5.js} +2 -2
  57. package/src/assets/web-panel/assets/{Projects-BzjvJYMW.js → Projects-DGL4Za4o.js} +1 -1
  58. package/src/assets/web-panel/assets/{Providers-IOOJ4_wy.js → Providers-CciGxskW.js} +1 -1
  59. package/src/assets/web-panel/assets/{QuickAsk-ChHZqVZy.js → QuickAsk-It17rT4F.js} +1 -1
  60. package/src/assets/web-panel/assets/{Recommend-CSiW6Qv9.js → Recommend-CixKdpBl.js} +1 -1
  61. package/src/assets/web-panel/assets/{Reputation-BQe0rkfF.js → Reputation-LB0_D2lx.js} +1 -1
  62. package/src/assets/web-panel/assets/{Row-Dem0Wxxb.js → Row-BoiDd-zb.js} +1 -1
  63. package/src/assets/web-panel/assets/{RssFeed-pBY5G41C.js → RssFeed-yA5FdTgh.js} +2 -2
  64. package/src/assets/web-panel/assets/{Search-CtRepO6B.js → Search-xYldUFeJ.js} +1 -1
  65. package/src/assets/web-panel/assets/{Security-nrSlKpWq.js → Security-BtRMnkFm.js} +4 -4
  66. package/src/assets/web-panel/assets/{Services-DeaDBASi.js → Services-CNKTgE2v.js} +2 -2
  67. package/src/assets/web-panel/assets/{Skeleton-Cz9R-Wjb.js → Skeleton-B9goiUo_.js} +1 -1
  68. package/src/assets/web-panel/assets/{Skills-B3U-XLH3.js → Skills-CUf2Z5Ge.js} +1 -1
  69. package/src/assets/web-panel/assets/{Sla-Bu46dIA_.js → Sla-TPga8c2I.js} +1 -1
  70. package/src/assets/web-panel/assets/{SpeechSettings-C9Z0V0pk.js → SpeechSettings-B8zrmLP6.js} +1 -1
  71. package/src/assets/web-panel/assets/{SyncSettings-Ctj9KHHr.js → SyncSettings-DGyAbZ84.js} +2 -2
  72. package/src/assets/web-panel/assets/{Tasks-D4upQgR_.js → Tasks-DPeVrQNM.js} +1 -1
  73. package/src/assets/web-panel/assets/{Templates-JHsPGU_c.js → Templates-CNLco6pc.js} +1 -1
  74. package/src/assets/web-panel/assets/{Tenant-uoaQL3fB.js → Tenant-CL9Eczo8.js} +1 -1
  75. package/src/assets/web-panel/assets/Terminal-DGLvbp97.js +3 -0
  76. package/src/assets/web-panel/assets/{TimelineRenderer-BTicmSAV.js → TimelineRenderer-Cv0LxMwd.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tokens-Bp3BUe2K.js → Tokens-DLhHgtcS.js} +1 -1
  78. package/src/assets/web-panel/assets/{Trigger-CgoISw5d.js → Trigger-DzDaE-An.js} +1 -1
  79. package/src/assets/web-panel/assets/{Trust-CC29awNT.js → Trust-CRh-fhYe.js} +1 -1
  80. package/src/assets/web-panel/assets/{UkeySign-CB1SB6Nc.js → UkeySign-_xBJ16UC.js} +1 -1
  81. package/src/assets/web-panel/assets/{VideoEditing-D7vptDUg.js → VideoEditing-Z5m_edIa.js} +1 -1
  82. package/src/assets/web-panel/assets/{Wallet-BWfjzF7p.js → Wallet-DgmchNit.js} +4 -4
  83. package/src/assets/web-panel/assets/{WebAuthn-Dzz5OnPc.js → WebAuthn-BxuKxjuf.js} +5 -5
  84. package/src/assets/web-panel/assets/{WorkflowEditor-CiDeVmsG.js → WorkflowEditor-luJ180aM.js} +1 -1
  85. package/src/assets/web-panel/assets/{chat-DQbciNb5.js → chat-DzglnTps.js} +1 -1
  86. package/src/assets/web-panel/assets/{colors-DcLbPJzb.js → colors-DelLNoxZ.js} +1 -1
  87. package/src/assets/web-panel/assets/{compact-item-CvYrR3rc.js → compact-item-BZaabUge.js} +1 -1
  88. package/src/assets/web-panel/assets/{createContext-BR4P7Rgm.js → createContext-DqTSTjmk.js} +1 -1
  89. package/src/assets/web-panel/assets/devWarning-CJLMPKYL.js +1 -0
  90. package/src/assets/web-panel/assets/{hasIn-IQ88RNRJ.js → hasIn-CAeHUQj2.js} +1 -1
  91. package/src/assets/web-panel/assets/index-7CJalvEf.js +1 -0
  92. package/src/assets/web-panel/assets/{index-Bw0Dm_P6.js → index-7FxBHcH8.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-Db5LFFCN.js → index-BAcpfWwI.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-B5W1vQHV.js → index-BAfdWN9t.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-BUTN1VlO.js → index-BR-DF81e.js} +3 -3
  96. package/src/assets/web-panel/assets/{index-BmPuR0aA.js → index-BTbN0V4A.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-D8OJdOc_.js → index-Bv2Tp7kz.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BhkZZXtI.js → index-BzLgm3Jm.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CzERBV9P.js → index-CBZPDGTg.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-UbB2IcFR.js → index-CBtnHlYF.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-eKd1n8pw.js → index-CDw1am9U.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-JqOP7puJ.js → index-CI5cynRw.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BiMlLIZ-.js → index-CKZQVcH1.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CgP5aQmA.js → index-CV4FisuU.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-BH2RT15D.js → index-CaSLz8-6.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DgaCUxpi.js → index-Cj7oeTxA.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DdQBxvpt.js → index-Clq1OP4B.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-Bl1TSbTE.js → index-CppTZ4SW.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BQXs-5db.js → index-D-QuIaEh.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DGwa8mnJ.js → index-D-lVDXUg.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DHIp5msb.js → index-DE4-6oHW.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CCO8yc1h.js → index-DM7xncnU.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-b6FjzfoJ.js → index-DRt2lx0X.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Bo7HAK6G.js → index-DSATjRyg.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-Dpmnk2qv.js → index-DU9QWJO5.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Mn8_ryOe.js → index-DXvcxNo5.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-Dox9vEhP.js → index-DhMSUhbW.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-bRT7u-51.js → index-Dk1R9vFq.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BHxJnExB.js → index-DrSuq6t6.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CPOupQSX.js → index-DtfTElxo.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BxY0ozve.js → index-KeadEGaZ.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BvQpTO67.js → index-NZBXGj64.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CiOZ_Whh.js → index-OGKhEFZZ.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CeCWyiFl.js → index-RZ23Wlp8.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-BVb6RI7f.js → index-WzAdJ0PX.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-Cm74AosZ.js → index-Xo2WWPZ4.js} +1 -1
  127. package/src/assets/web-panel/assets/index-_hLbeSOT.js +1 -0
  128. package/src/assets/web-panel/assets/{index-CE2mqX8w.js → index-kJ30C4m8.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Bu8931Yi.js → index-vLR-ssxc.js} +1 -1
  130. package/src/assets/web-panel/assets/{initDefaultProps-C0arzCLE.js → initDefaultProps-BiHvIjo1.js} +1 -1
  131. package/src/assets/web-panel/assets/{motion-C1K6JxwD.js → motion-COD0OBOe.js} +1 -1
  132. package/src/assets/web-panel/assets/{move-DREsRLHj.js → move-DJNLMhIj.js} +1 -1
  133. package/src/assets/web-panel/assets/{omit-BtPS3EDq.js → omit-4qrDRhlN.js} +1 -1
  134. package/src/assets/web-panel/assets/{pickAttrs-BPz6tHoT.js → pickAttrs-3jv8tAgW.js} +1 -1
  135. package/src/assets/web-panel/assets/{placementArrow-B0CR_CSI.js → placementArrow-N1UVUOH_.js} +1 -1
  136. package/src/assets/web-panel/assets/{responsiveObserve-Ch2ojiNn.js → responsiveObserve-D67_gjCH.js} +1 -1
  137. package/src/assets/web-panel/assets/{slide-9qU9vOhj.js → slide-DiDh7_u4.js} +1 -1
  138. package/src/assets/web-panel/assets/{statusUtils-Cr4fICjV.js → statusUtils-Dzz3tSiz.js} +1 -1
  139. package/src/assets/web-panel/assets/{styleChecker-Cor2-FwV.js → styleChecker-L-tgt7xx.js} +1 -1
  140. package/src/assets/web-panel/assets/{useFlexGapSupport-BINo_rNH.js → useFlexGapSupport-vAgElNal.js} +1 -1
  141. package/src/assets/web-panel/assets/{useFs-Dm1tDNYC.js → useFs-af0c_HYI.js} +1 -1
  142. package/src/assets/web-panel/assets/{usePersonalDataHub-__JgBEkX.js → usePersonalDataHub-V9U2Mbny.js} +1 -1
  143. package/src/assets/web-panel/assets/{vnode-1hQKpRgP.js → vnode-C7zS_LLr.js} +1 -1
  144. package/src/assets/web-panel/assets/{zoom-C1EY9X2J.js → zoom-DdXBDemd.js} +1 -1
  145. package/src/assets/web-panel/index.html +1 -1
  146. package/src/commands/audit.js +4 -3
  147. package/src/commands/automation.js +6 -14
  148. package/src/commands/bi.js +10 -9
  149. package/src/commands/codegen.js +5 -13
  150. package/src/commands/dao.js +8 -6
  151. package/src/commands/dbevo.js +13 -14
  152. package/src/commands/economy.js +3 -2
  153. package/src/commands/evolution.js +3 -2
  154. package/src/commands/federation.js +4 -3
  155. package/src/commands/governance.js +9 -4
  156. package/src/commands/hardening.js +5 -4
  157. package/src/commands/incentive.js +6 -5
  158. package/src/commands/kg.js +17 -10
  159. package/src/commands/lowcode.js +23 -11
  160. package/src/commands/marketplace.js +4 -3
  161. package/src/commands/mcp.js +17 -5
  162. package/src/commands/ops.js +9 -4
  163. package/src/commands/recommend.js +7 -5
  164. package/src/commands/scim.js +3 -2
  165. package/src/commands/session.js +9 -6
  166. package/src/commands/social.js +4 -3
  167. package/src/commands/sync.js +3 -2
  168. package/src/commands/tenant.js +11 -6
  169. package/src/commands/zkp.js +8 -9
  170. package/src/gateways/ws/ws-agent-handler.js +12 -3
  171. package/src/gateways/ws/ws-server.js +6 -0
  172. package/src/harness/background-task-manager.js +44 -18
  173. package/src/harness/mcp-client.js +125 -46
  174. package/src/lib/chat-core.js +209 -107
  175. package/src/lib/claude-code-bridge.js +13 -1
  176. package/src/lib/dao-governance.js +3 -3
  177. package/src/lib/downloader.js +82 -25
  178. package/src/lib/headless-config-command.js +62 -0
  179. package/src/lib/json-schema-output.js +55 -11
  180. package/src/lib/mcp-oauth.js +110 -21
  181. package/src/lib/mcp-serve.js +70 -11
  182. package/src/lib/multisig-runtime.js +22 -3
  183. package/src/lib/parse-json-option.js +35 -0
  184. package/src/lib/parse-number-option.js +27 -0
  185. package/src/lib/runnable-provider.js +216 -0
  186. package/src/repl/agent-repl.js +76 -17
  187. package/src/repl/config-summary.js +66 -0
  188. package/src/runtime/agent-core.js +210 -37
  189. package/src/runtime/headless-runner.js +49 -1
  190. package/src/runtime/headless-stream.js +34 -0
  191. package/src/assets/web-panel/assets/Terminal-CWRWr8bq.js +0 -3
  192. package/src/assets/web-panel/assets/devWarning-CnV02N63.js +0 -1
  193. package/src/assets/web-panel/assets/index-DJ2gkaIH.js +0 -1
  194. package/src/assets/web-panel/assets/index-Dvm_-AOi.js +0 -1
@@ -1,8 +1,8 @@
1
- import{P as c,J as m,U as u,S as M,R as h,V as _,_ as K,b as y,$ as te,F as D,Z as B,L as le,w as V,n as L,o as J,x as re,r as A,I as R,c as v,K as I,Q as E,a1 as Te,a2 as Ae,M as ce,N as de,a as ue}from"./vendor-BvqAck49.js";import{_ as H,b as he}from"./index-BUTN1VlO.js";import{u as fe,M as Pe}from"./chat-DQbciNb5.js";import{ag as Re,L as ve,ah as Fe,a0 as Le,a as je,b as De,ai as qe,aj as Ne,o as Ve,c as Ue,f as We,a4 as Be,ak as Qe,a6 as Ke,a7 as He,al as $e,af as Ge,ab as Ye}from"./icons-DP3uiYxy.js";import{r as me}from"./markdown-Yo_c6Krv.js";import"./markdown-CsiA8-E5.js";const Je={__name:"ToolInvocationCard",props:{item:{type:Object,required:!0},expandable:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:["toggle"],setup(a,{expose:d,emit:t}){d();const e=a,n=t;function i(){e.expandable&&n("toggle")}const s={props:e,emit:n,onToggle:i,get CheckCircleFilled(){return je},get ClockCircleOutlined(){return Le},get DownOutlined(){return Fe},get LoadingOutlined(){return ve},get RightOutlined(){return Re}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Xe=["data-testid"],Ze={class:"cb-action__icon"},et={class:"cb-action__label"},tt={key:0,class:"cb-action__detail"},nt={key:1,class:"cb-action__caret"};function st(a,d,t,e,n,i){return c(),m("div",{class:K(["cb-action",[`cb-action--${t.item.status}`,{"cb-action--expandable":t.expandable,"cb-action--open":t.expanded}]]),"data-testid":`tool-card-${t.item.id}`,onClick:e.onToggle},[u("span",Ze,[t.item.status==="done"?(c(),M(e.CheckCircleFilled,{key:0})):t.item.status==="running"?(c(),M(e.LoadingOutlined,{key:1})):(c(),M(e.ClockCircleOutlined,{key:2}))]),u("span",et,h(t.item.label),1),t.item.detail?(c(),m("span",tt,h(t.item.detail),1)):_("v-if",!0),t.expandable?(c(),m("span",nt,[t.expanded?(c(),M(e.DownOutlined,{key:0})):(c(),M(e.RightOutlined,{key:1}))])):_("v-if",!0)],10,Xe)}const it=H(Je,[["render",st],["__scopeId","data-v-318f1edb"],["__file","/tmp/cc-web-panel-UKI3LY/repo/packages/web-panel/src/components/ToolInvocationCard.vue"]]),ot={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(a,{expose:d}){d();const t=a,e=y(()=>me(t.content||"")),n={props:t,rendered:e,computed:y,get renderMarkdown(){return me}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},at=["innerHTML"];function lt(a,d,t,e,n,i){return c(),m("div",{class:"markdown-content",innerHTML:e.rendered},null,8,at)}const rt=H(ot,[["render",lt],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-UKI3LY/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);function W(a,d,t){let e=t.initialDeps??[],n,i=!0;function s(){var o,p,f;let S;t.key&&((o=t.debug)!=null&&o.call(t))&&(S=Date.now());const x=a();if(!(x.length!==e.length||x.some((b,l)=>e[l]!==b)))return n;e=x;let g;if(t.key&&((p=t.debug)!=null&&p.call(t))&&(g=Date.now()),n=d(...x),t.key&&((f=t.debug)!=null&&f.call(t))){const b=Math.round((Date.now()-S)*100)/100,l=Math.round((Date.now()-g)*100)/100,C=l/16,k=(z,P)=>{for(z=String(z);z.length<P;)z=" "+z;return z};console.info(`%c⏱ ${k(l,5)} /${k(b,5)} ms`,`
1
+ import{P as c,J as m,U as u,S as M,R as h,V as _,_ as U,b as y,$ as te,F as D,Z as H,L as le,w as V,n as L,o as J,x as re,r as A,I as R,c as v,K as O,Q as E,a1 as Te,a2 as Ae,M as ce,N as de,a as ue}from"./vendor-BvqAck49.js";import{_ as K,b as he}from"./index-BR-DF81e.js";import{u as fe,M as Pe}from"./chat-DzglnTps.js";import{ag as Re,L as ve,ah as Fe,a0 as Le,a as je,b as De,ai as qe,aj as Ne,o as Ve,c as We,f as Be,a4 as He,ak as Qe,a6 as Ue,a7 as Ke,al as Xe,af as $e,ab as Ge}from"./icons-DP3uiYxy.js";import{r as me}from"./markdown-Yo_c6Krv.js";import"./markdown-CsiA8-E5.js";const Je={__name:"ToolInvocationCard",props:{item:{type:Object,required:!0},expandable:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:["toggle"],setup(a,{expose:d,emit:t}){d();const e=a,n=t;function i(){e.expandable&&n("toggle")}const s={props:e,emit:n,onToggle:i,get CheckCircleFilled(){return je},get ClockCircleOutlined(){return Le},get DownOutlined(){return Fe},get LoadingOutlined(){return ve},get RightOutlined(){return Re}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Ye=["data-testid"],Ze={class:"cb-action__icon"},et={class:"cb-action__label"},tt={key:0,class:"cb-action__detail"},nt={key:1,class:"cb-action__caret"};function st(a,d,t,e,n,i){return c(),m("div",{class:U(["cb-action",[`cb-action--${t.item.status}`,{"cb-action--expandable":t.expandable,"cb-action--open":t.expanded}]]),"data-testid":`tool-card-${t.item.id}`,onClick:e.onToggle},[u("span",Ze,[t.item.status==="done"?(c(),M(e.CheckCircleFilled,{key:0})):t.item.status==="running"?(c(),M(e.LoadingOutlined,{key:1})):(c(),M(e.ClockCircleOutlined,{key:2}))]),u("span",et,h(t.item.label),1),t.item.detail?(c(),m("span",tt,h(t.item.detail),1)):_("v-if",!0),t.expandable?(c(),m("span",nt,[t.expanded?(c(),M(e.DownOutlined,{key:0})):(c(),M(e.RightOutlined,{key:1}))])):_("v-if",!0)],10,Ye)}const it=K(Je,[["render",st],["__scopeId","data-v-318f1edb"],["__file","/tmp/cc-web-panel-Hs0OhX/repo/packages/web-panel/src/components/ToolInvocationCard.vue"]]),ot={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(a,{expose:d}){d();const t=a,e=y(()=>me(t.content||"")),n={props:t,rendered:e,computed:y,get renderMarkdown(){return me}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},at=["innerHTML"];function lt(a,d,t,e,n,i){return c(),m("div",{class:"markdown-content",innerHTML:e.rendered},null,8,at)}const rt=K(ot,[["render",lt],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-Hs0OhX/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);function B(a,d,t){let e=t.initialDeps??[],n,i=!0;function s(){var o,p,f;let S;t.key&&((o=t.debug)!=null&&o.call(t))&&(S=Date.now());const x=a();if(!(x.length!==e.length||x.some((b,l)=>e[l]!==b)))return n;e=x;let g;if(t.key&&((p=t.debug)!=null&&p.call(t))&&(g=Date.now()),n=d(...x),t.key&&((f=t.debug)!=null&&f.call(t))){const b=Math.round((Date.now()-S)*100)/100,l=Math.round((Date.now()-g)*100)/100,C=l/16,k=(z,P)=>{for(z=String(z);z.length<P;)z=" "+z;return z};console.info(`%c⏱ ${k(l,5)} /${k(b,5)} ms`,`
2
2
  font-size: .6rem;
3
3
  font-weight: bold;
4
- color: hsl(${Math.max(0,Math.min(120-120*C,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1,n}return s.updateDeps=o=>{e=o},s}function ge(a,d){if(a===void 0)throw new Error("Unexpected undefined");return a}const ct=(a,d)=>Math.abs(a-d)<1.01,dt=a=>a,ut=a=>{const d=Math.max(a.startIndex-a.overscan,0),t=Math.min(a.endIndex+a.overscan,a.count-1),e=[];for(let n=d;n<=t;n++)e.push(n);return e},ht=(a,d,t)=>{if(d?.borderBoxSize){const e=d.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return a[t.options.horizontal?"offsetWidth":"offsetHeight"]};class pe{constructor(d){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,n;return((n=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:n.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const s=()=>{const o=i.target,p=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);return}this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(o,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(s):s()})}));return{disconnect:()=>{var n;(n=e())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=e())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=e())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,n])=>{typeof n>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:dt,rangeExtractor:ut,onChange:()=>{},measureElement:ht,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...t}},this.notify=t=>{var e,n;(n=(e=this.options).onChange)==null||n.call(e,this,t)},this.maybeNotify=W(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{const n=new Map,i=new Map;for(let s=e-1;s>=0;s--){const o=t[s];if(n.has(o.lane))continue;const p=i.get(o.lane);if(p==null||o.end>p.end?i.set(o.lane,o):o.end<p.end&&n.set(o.lane,!0),n.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((s,o)=>s.end===o.end?s.index-o.index:s.end-o.end)[0]:void 0},this.getMeasurementOptions=W(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,e,n,i,s,o,p)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p}),{key:!1}),this.getMeasurements=W(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p},f)=>{if(!s)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const g of this.laneAssignments.keys())g>=t&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);const x=this.measurementsCache.slice(0,S),O=new Array(o).fill(void 0);for(let g=0;g<S;g++){const b=x[g];b&&(O[b.lane]=g)}for(let g=S;g<t;g++){const b=i(g),l=this.laneAssignments.get(g);let C,k;const z=p==="estimate"||f.has(b);if(l!==void 0&&this.options.lanes>1){C=l;const T=O[C],q=T!==void 0?x[T]:void 0;k=q?q.end+this.options.gap:e+n}else{const T=this.options.lanes===1?x[g-1]:this.getFurthestMeasurement(x,g);k=T?T.end+this.options.gap:e+n,C=T?T.lane:g%this.options.lanes,this.options.lanes>1&&z&&this.laneAssignments.set(g,C)}const P=f.get(b),U=typeof P=="number"?P:this.options.estimateSize(g),Q=k+U;x[g]={index:g,start:k,size:U,end:Q,key:b,lane:C},O[C]=g}return this.measurementsCache=x,x},{key:"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=W(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,n,i)=>this.range=t.length>0&&e>0?ft({measurements:t,outerSize:e,scrollOffset:n,lanes:i}):null,{key:"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=W(()=>{let t=null,e=null;const n=this.calculateRange();return n&&(t=n.startIndex,e=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,n,i,s)=>i===null||s===null?[]:t({startIndex:i,endIndex:s,overscan:e,count:n}),{key:"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,n=t.getAttribute(e);return n?parseInt(n,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),s=Math.max(0,n-i),o=Math.min(this.options.count-1,n+i);return t>=s&&t<=o}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((s,o)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(o))});return}const e=this.indexFromElement(t),n=this.options.getItemKey(e),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var n;const i=this.measurementsCache[t];if(!i)return;const s=this.itemSizeCache.get(i.key)??i.size,o=e-s;o!==0&&(((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,o,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&(this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=W(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const n=[];for(let i=0,s=t.length;i<s;i++){const o=t[i],p=e[o];n.push(p)}return n},{key:"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length!==0)return ge(e[_e(0,e.length-1,n=>ge(e[n]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),s=this.getScrollOffset();e==="auto"&&(e=t>=s+i?"end":"start"),e==="center"?t+=(n-i)/2:e==="end"&&(t-=i);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),s=this.measurementsCache[t];if(!s)return;if(e==="auto")if(s.end>=i+n-this.options.scrollPaddingEnd)e="end";else if(s.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const o=e==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,e,s.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),s=this.now();this.scrollState={index:null,align:e,behavior:n,startedAt:s,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[s,o]=i,p=this.now();this.scrollState={index:t,align:o,behavior:n,startedAt:p,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let n;if(e.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((t=e[e.length-1])==null?void 0:t.end)??0;else{const i=Array(this.options.lanes).fill(null);let s=e.length-1;for(;s>=0&&i.some(o=>o===null);){const o=e[s];i[o.lane]===null&&(i[o.lane]=o.end),s--}n=Math.max(...i.filter(o=>o!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:n})=>{this.options.scrollToFn(t,{behavior:n,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(d)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=e?e[0]:this.scrollState.lastTargetOffset,i=1,s=n!==this.scrollState.lastTargetOffset;if(!s&&ct(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=n,this.scrollState.behavior="auto",this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const _e=(a,d,t,e)=>{for(;a<=d;){const n=(a+d)/2|0,i=t(n);if(i<e)a=n+1;else if(i>e)d=n-1;else return n}return a>0?a-1:0};function ft({measurements:a,outerSize:d,scrollOffset:t,lanes:e}){const n=a.length-1,i=p=>a[p].start;if(a.length<=e)return{startIndex:0,endIndex:n};let s=_e(0,n,i,t),o=s;if(e===1)for(;o<n&&a[o].end<t+d;)o++;else if(e>1){const p=Array(e).fill(0);for(;o<n&&p.some(S=>S<t+d);){const S=a[o];p[S.lane]=S.end,o++}const f=Array(e).fill(t+d);for(;s>=0&&f.some(S=>S>=t);){const S=a[s];f[S.lane]=S.start,s--}s=Math.max(0,s-s%e),o=Math.min(n,o+(e-1-o%e))}return{startIndex:s,endIndex:o}}const mt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(a,{expose:d,emit:t}){const e=a,n=t,i=A(null),s=A(null),o=A(0),p=y(()=>s.value?(o.value,s.value.getVirtualItems()):[]),f=()=>{if(i.value)try{s.value=new pe({count:e.messages.length,getScrollElement:()=>i.value,estimateSize:()=>e.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),L(()=>{s.value&&i.value&&(s.value.measure(),o.value++,i.value.scrollTop=1,setTimeout(()=>{i.value&&(i.value.scrollTop=0)},50))})}catch(b){console.error("[VirtualMessageList] init failed:",b)}},S=()=>{if(!i.value)return;s.value&&s.value.measure();const{scrollTop:b,scrollHeight:l,clientHeight:C}=i.value;b<100&&n("load-more"),b+C>=l-50&&n("scroll-to-bottom")},x=()=>{i.value&&requestAnimationFrame(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},O=b=>{const l=e.messages.findIndex(C=>C.id===b);l!==-1&&s.value&&s.value.scrollToIndex(l,{align:"center"})};V(()=>e.messages.length,(b,l)=>{s.value?(s.value.setOptions({count:b,estimateSize:()=>e.estimateSize}),o.value++,b>l&&L(()=>x())):L(()=>{f(),s.value&&o.value++})}),V(()=>e.messages,b=>{!s.value&&b.length>0?L(()=>f()):s.value&&(s.value.setOptions({count:b.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,L(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:O}),J(()=>{L(()=>{f(),e.messages.length>0&&x()})}),re(()=>{s.value&&(s.value=null)});const g={props:e,emit:n,scrollContainer:i,virtualizer:s,updateKey:o,virtualItems:p,initVirtualizer:f,handleScroll:S,scrollToBottom:x,scrollToMessage:O,ref:A,computed:y,watch:V,onMounted:J,onUnmounted:re,nextTick:L,get Virtualizer(){return pe}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},gt={key:1,class:"fallback-list"};function pt(a,d,t,e,n,i){return c(),m("div",{ref:"scrollContainer",class:"virtual-message-list",onScroll:e.handleScroll},[e.virtualizer&&e.virtualItems.length>0?(c(),m("div",{key:0,style:te({height:`${e.virtualizer.getTotalSize()}px`,width:"100%",position:"relative"})},[(c(!0),m(D,null,B(e.virtualItems,s=>(c(),m("div",{key:s.key,style:te({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${s.start}px)`})},[le(a.$slots,"default",{message:t.messages[s.index],index:s.index},void 0)],4))),128))],4)):(c(),m("div",gt,[(c(!0),m(D,null,B(t.messages,(s,o)=>(c(),m("div",{key:s.id||o},[le(a.$slots,"default",{message:s,index:o},void 0)]))),128))]))],544)}const vt=H(mt,[["render",pt],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-UKI3LY/repo/packages/web-panel/src/components/VirtualMessageList.vue"]]),_t={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(a,{expose:d,emit:t}){d();const e=a,n=t,i=A(!1),s=A(""),o=y(()=>e.message.metadata?.originalInput||""),p=y(()=>e.message.metadata?.understanding||{}),f=y(()=>p.value.correctedInput||o.value),S=y(()=>p.value.intent||"未识别"),x=y(()=>p.value.keyPoints||[]),O=y(()=>f.value!==o.value&&o.value.trim()!==""),g=y(()=>e.message.metadata?.status||"pending"),b=y(()=>g.value==="confirmed"),l=y(()=>g.value==="corrected"),C=y(()=>!!e.message.metadata?.streaming),k=y(()=>e.message.metadata?.streamingTokens||0),z=y(()=>e.message.metadata?.correction||null);function P(){n("confirm",{messageId:e.message.id,originalInput:o.value,understanding:p.value})}function U(){i.value=!0,s.value=f.value}function Q(){s.value.trim()&&(n("correct",{messageId:e.message.id,originalInput:o.value,correction:s.value}),i.value=!1)}function T(){i.value=!1,s.value=""}const q={props:e,emit:n,showCorrectionInput:i,correctionInput:s,originalInput:o,understanding:p,correctedInput:f,intent:S,keyPoints:x,hasCorrectedInput:O,status:g,isConfirmed:b,isCorrected:l,isStreaming:C,streamingTokens:k,correction:z,handleConfirm:P,handleCorrect:U,handleSubmitCorrection:Q,handleCancelCorrection:T,ref:A,computed:y,get CheckCircleOutlined(){return We},get ExclamationCircleOutlined(){return Ue},get BulbOutlined(){return Ve},get CheckOutlined(){return Ne},get EditOutlined(){return qe},get CloseOutlined(){return De},get LoadingOutlined(){return ve}};return Object.defineProperty(q,"__isScriptSetup",{enumerable:!1,value:!0}),q}},bt={class:"intent-confirmation-message"},yt={class:"confirmation-header"},St={class:"header-icon"},kt={class:"header-text"},xt={key:0},Ct={key:1},wt={key:2},It={class:"understanding-content"},Ot={key:0,class:"original-input"},Mt={class:"label"},Et={class:"value original-text"},zt={key:1,class:"corrected-input"},Tt={class:"label"},At={class:"value corrected-text"},Pt={class:"intent-section"},Rt={class:"label"},Ft={class:"value"},Lt={key:2,class:"key-points-section"},jt={class:"label"},Dt={class:"key-points-list"},qt={key:3,class:"correction-section"},Nt={class:"label"},Vt={class:"value correction-text"},Ut={key:0,class:"streaming-indicator"},Wt={key:0,class:"streaming-tokens"},Bt={key:1,class:"action-buttons"},Qt={key:2,class:"correction-input-section"},Kt={class:"correction-actions"};function Ht(a,d,t,e,n,i){const s=R("a-button"),o=R("a-textarea");return c(),m("div",bt,[u("div",yt,[u("div",St,[e.isConfirmed?(c(),M(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):e.isCorrected?(c(),M(e.ExclamationCircleOutlined,{key:1,style:{color:"#faad14"}})):(c(),M(e.BulbOutlined,{key:2,style:{color:"#1890ff"}}))]),u("div",kt,[e.isConfirmed?(c(),m("span",xt,h(a.$t("chat.intent.confirmed")),1)):e.isCorrected?(c(),m("span",Ct,h(a.$t("chat.intent.corrected")),1)):(c(),m("span",wt,h(t.message.content),1))])]),u("div",It,[e.hasCorrectedInput?(c(),m("div",Ot,[u("div",Mt,h(a.$t("chat.intent.label.original")),1),u("div",Et,h(e.originalInput),1)])):_("v-if",!0),e.hasCorrectedInput?(c(),m("div",zt,[u("div",Tt,h(a.$t("chat.intent.label.understood")),1),u("div",At,h(e.correctedInput),1)])):_("v-if",!0),u("div",Pt,[u("div",Rt,"🎯 "+h(a.$t("chat.intent.label.intent")),1),u("div",Ft,h(e.intent),1)]),e.keyPoints&&e.keyPoints.length>0?(c(),m("div",Lt,[u("div",jt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",Dt,[(c(!0),m(D,null,B(e.keyPoints,(p,f)=>(c(),m("li",{key:f},h(p),1))),128))])])):_("v-if",!0),e.correction?(c(),m("div",qt,[u("div",Nt,"📝 "+h(a.$t("chat.intent.label.correction")),1),u("div",Vt,h(e.correction),1)])):_("v-if",!0)]),e.isStreaming?(c(),m("div",Ut,[v(e.LoadingOutlined,{spin:""}),u("span",null,h(a.$t("chat.intent.status.understanding")),1),e.streamingTokens>0?(c(),m("span",Wt,"· "+h(e.streamingTokens)+" tokens",1)):_("v-if",!0)])):!e.isConfirmed&&!e.isCorrected?(c(),m("div",Bt,[v(s,{type:"primary",onClick:e.handleConfirm},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.confirm")),1)]),_:1}),v(s,{onClick:e.handleCorrect},{default:I(()=>[v(e.EditOutlined),E(" "+h(a.$t("chat.intent.action.correct")),1)]),_:1})])):_("v-if",!0),e.showCorrectionInput?(c(),m("div",Qt,[v(o,{value:e.correctionInput,"onUpdate:value":d[0]||(d[0]=p=>e.correctionInput=p),placeholder:a.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),u("div",Kt,[v(s,{type:"primary",size:"small",onClick:e.handleSubmitCorrection},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.submitCorrection")),1)]),_:1}),v(s,{size:"small",onClick:e.handleCancelCorrection},{default:I(()=>[v(e.CloseOutlined),E(" "+h(a.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):_("v-if",!0)])}const $t=H(_t,[["render",Ht],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-UKI3LY/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),Gt={__name:"Chat",setup(a,{expose:d}){d();const{t,tm:e,rt:n}=he(),i=ce()||null,s=de()||null,o=window.__CC_CONFIG__||{},p=y(()=>o.mode==="project"),f=fe(),S=new Set,x=A(null),O=A(""),g=y(()=>f.contextMode);function b(r){f.setContextMode(r)}const l=y(()=>f.intentEnabled);function C(r){f.setIntentEnabled(r)}const k=y(()=>f.currentSessionId),z=y(()=>k.value?f.getMessages(k.value):[]),P=y(()=>{const r=f.streaming[k.value];return r?.active?r.content:null}),U=y(()=>{const r=z.value;return P.value?[...r,{role:"assistant",content:P.value,_streaming:!0,timestamp:Date.now()}]:r}),Q=y(()=>f.pendingQuestion[k.value]),T=y(()=>f.getIsLoading(k.value));function q(r){if(!r)return"";const w=new Date(r);return`${String(w.getHours()).padStart(2,"0")}:${String(w.getMinutes()).padStart(2,"0")}`}const $=ue(new Set);function be(r){$.has(r)?$.delete(r):$.add(r)}function ye(r,w){return{id:`tool-${w}`,label:r.tool||t("chat.tool.unknownTool"),detail:ne(r),status:r.status==="done"?"done":"running"}}function ne(r){if(r.status==="running"){const j=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return j.length?t("chat.tool.argsPreview",{n:j.length,key:j[0]}):t("chat.tool.running")}if(r.result==null)return t("chat.tool.done");const F=(typeof r.result=="string"?r.result:JSON.stringify(r.result)).split(`
5
- `)[0]||"";return F.length>48?`${F.slice(0,48)}…`:F||t("chat.tool.done")}async function Se(r){await f.createSession(r)}async function X(){if(!O.value.trim()||T.value||!k.value)return;const r=O.value;O.value="",await f.submitUserInput(k.value,r)}function ke(r){f.confirmIntent(k.value,r.messageId)}function xe(r){f.correctIntent(k.value,r.messageId,r.correction)}const se=y(()=>{const r=f.customQuickPrompts;if(Array.isArray(r)&&r.length>0)return r;const w=e("chat.quickPrompts");return w?Object.values(w).map(F=>n(F)):[]}),G=A(!1),Z=A("");function Ce(){Z.value=se.value.join(`
6
- `),G.value=!0}function we(){const r=Z.value.split(`
7
- `).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),G.value=!1}function Ie(){f.setCustomQuickPrompts(null),G.value=!1}const Oe=y(()=>t(`chat.empty.hint.${g.value}`));async function Me(r){k.value||await f.createSession("chat"),O.value=r,await X()}function Ee(r){f.answerQuestion(k.value,r)}V([z,P],()=>{L(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:j}){if(!r||S.has(j))return;S.add(j);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),O.value=r,w!==!1&&(await L(),await X())}function ie(){const r=i?.query||{};if(!r.prompt)return null;const w=Array.isArray(r.prompt)?r.prompt[0]:String(r.prompt);if(!w.trim())return null;const j=(Array.isArray(r.autoSend)?r.autoSend[0]:r.autoSend)!=="false",N=Array.isArray(r.session)?r.session[0]:r.session,ae=N?String(N):null,ze=`query::${w}::${ae||""}::${j}`;return{prompt:w,autoSend:j,session:ae,token:ze}}async function Y(){const r=ie();if(r){await ee(r),s&&i&&s.replace({path:i.path,query:{}}).catch(()=>{});return}const w=f.pendingAutoSend;if(w?.prompt){const F=w.token||`staged::${w.prompt}::${Date.now()}`;await ee({...w,token:F}),f.clearAutoSend?.()}}i&&V(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{Y()},{immediate:!1}),V(()=>f.pendingAutoSend,()=>{Y()},{deep:!0}),J(async()=>{await f.loadSessions(),await Y()});const oe={t,tm:e,rt:n,route:i,router:s,cfg:o,isProject:p,chatStore:f,consumedAutoSendTokens:S,virtualListRef:x,inputText:O,contextMode:g,setContextMode:b,intentEnabled:l,setIntentEnabled:C,currentSessionId:k,currentMessages:z,streamingContent:P,messagesWithStreaming:U,pendingQuestion:Q,isLoading:T,formatTime:q,expandedTools:$,toggleToolDetail:be,toToolItem:ye,toolDetail:ne,newSession:Se,sendMessage:X,handleIntentConfirm:ke,handleIntentCorrect:xe,QUICK_PROMPTS:se,editingPrompts:G,promptDraft:Z,openPromptEditor:Ce,savePromptEditor:we,resetPromptsToDefault:Ie,emptyHint:Oe,usePrompt:Me,answerQuestion:Ee,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:Y,ref:A,reactive:ue,computed:y,watch:V,nextTick:L,onMounted:J,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Ye},get RobotOutlined(){return Ge},get SendOutlined(){return $e},get FolderOutlined(){return He},get GlobalOutlined(){return Ke},get UserOutlined(){return Qe},get FileTextOutlined(){return Be},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:rt,VirtualMessageList:vt,IntentConfirmationMessage:$t,get MessageType(){return Pe}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Yt={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Jt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Xt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Zt=["title"],en={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},tn={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},nn={style:{flex:"1","overflow-y":"auto",padding:"8px"}},sn=["onClick"],on={class:"session-icon"},an={class:"session-info"},ln={class:"session-title"},rn={class:"session-meta"},cn={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},dn={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},un={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},hn={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},fn={style:{"font-size":"13px",color:"var(--text-muted)"}},mn={style:{"margin-top":"24px",display:"flex",gap:"12px"}},gn={key:1,class:"chat-header"},pn={class:"chat-intent-toggle"},vn={class:"chat-intent-toggle-label"},_n={key:2,class:"chat-area-body"},bn={key:0,class:"chat-empty-prompts"},yn={class:"empty-title"},Sn={class:"empty-hint"},kn={class:"quick-prompts"},xn={class:"system-banner"},Cn={class:"tool-msg"},wn={key:0,class:"tool-detail"},In={class:"tool-detail__pre tool-detail__pre--input"},On={key:0,class:"tool-detail__result"},Mn={class:"tool-detail__pre tool-detail__pre--result"},En={class:"msg-body"},zn={class:"msg-meta-row"},Tn={class:"msg-role"},An={class:"msg-time"},Pn={key:0,class:"msg-tokens"},Rn={key:0,class:"bubble user"},Fn={key:2,class:"question-card"},Ln={class:"question-text"},jn={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Dn={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},qn={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Nn={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},Vn={style:{"margin-top":"8px"}};function Un(a,d,t,e,n,i){const s=R("a-button"),o=R("a-radio-button"),p=R("a-radio-group"),f=R("a-switch"),S=R("a-tooltip"),x=R("a-avatar"),O=R("a-input-search"),g=R("a-textarea"),b=R("a-modal");return c(),m("div",Yt,[_(" Session Sidebar "),u("div",Jt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Xt,[v(e.FolderOutlined),u("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:e.cfg.projectRoot},h(e.cfg.projectName||a.$t("chat.scope.fallbackProjectName")),9,Zt)])):(c(),m("div",en,[v(e.GlobalOutlined),u("span",null,h(a.$t("chat.scope.globalSessions")),1)])),u("div",tn,[v(s,{type:"primary",size:"small",style:{flex:"1"},onClick:d[0]||(d[0]=l=>e.newSession("chat"))},{icon:I(()=>[v(e.MessageOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newChat")),1)]),_:1}),v(s,{size:"small",style:{flex:"1"},onClick:d[1]||(d[1]=l=>e.newSession("agent"))},{icon:I(()=>[v(e.RobotOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newAgent")),1)]),_:1})]),u("div",nn,[(c(!0),m(D,null,B(e.chatStore.sessions,l=>(c(),m("div",{key:l.id,class:K(["session-item",{active:l.id===e.chatStore.currentSessionId}]),onClick:C=>e.chatStore.switchSession(l.id)},[u("span",on,h(l.type==="agent"?"🤖":"💬"),1),u("div",an,[u("div",ln,h(l.title||a.$t("chat.session.untitled")),1),u("div",rn,h(a.$t("chat.session.messageCountSuffix",{n:l.messageCount||0})),1)])],10,sn))),128)),e.chatStore.sessions.length?_("v-if",!0):(c(),m("div",cn,h(a.$t("chat.sidebarEmpty")),1))])]),_(" Chat Area "),u("div",dn,[_(" Empty State "),e.currentSessionId?_("v-if",!0):(c(),m("div",un,[d[7]||(d[7]=u("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),u("div",hn,h(a.$t("chat.empty.title")),1),u("div",fn,h(a.$t("chat.empty.subtitle")),1),u("div",mn,[v(s,{type:"primary",onClick:d[2]||(d[2]=l=>e.newSession("chat"))},{default:I(()=>[E(h(a.$t("chat.empty.newChat")),1)]),_:1}),v(s,{style:{},onClick:d[3]||(d[3]=l=>e.newSession("agent"))},{default:I(()=>[E(h(a.$t("chat.empty.newAgent")),1)]),_:1})])])),_(" Chat header: context mode + intent toggle "),e.currentSessionId?(c(),m("div",gn,[v(p,{value:e.contextMode,size:"small","button-style":"solid","onUpdate:value":e.setContextMode},{default:I(()=>[v(o,{value:"project",disabled:!e.isProject},{default:I(()=>[v(e.FolderOutlined),E(" "+h(a.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),v(o,{value:"file",disabled:""},{default:I(()=>[v(e.FileTextOutlined),E(" "+h(a.$t("chat.contextMode.file")),1)]),_:1}),v(o,{value:"global"},{default:I(()=>[v(e.GlobalOutlined),E(" "+h(a.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"]),e.contextMode!=="global"?(c(),M(S,{key:0,title:a.$t("chat.intent.toggleHint"),placement:"bottom"},{default:I(()=>[u("label",pn,[v(f,{checked:e.intentEnabled,size:"small","onUpdate:checked":e.setIntentEnabled},null,8,["checked"]),u("span",vn,h(a.$t("chat.intent.toggleLabel")),1)])]),_:1},8,["title"])):_("v-if",!0)])):_("v-if",!0),_(" Messages "),e.currentSessionId?(c(),m("div",_n,[_(" Empty state with quick prompts when session has no messages "),e.messagesWithStreaming.length===0?(c(),m("div",bn,[d[8]||(d[8]=u("div",{class:"empty-icon"},"💬",-1)),u("div",yn,h(a.$t("chat.empty.startTitle")),1),u("div",Sn,h(e.emptyHint),1),u("div",kn,[(c(!0),m(D,null,B(e.QUICK_PROMPTS,l=>(c(),M(s,{key:l,size:"small",class:"quick-prompt-btn",onClick:C=>e.usePrompt(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128)),v(s,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:e.openPromptEditor},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(c(),M(e.VirtualMessageList,{key:1,ref:"virtualListRef",messages:e.messagesWithStreaming,"estimate-size":120,class:"chat-virtual-list"},{default:I(({message:l,index:C})=>[u("div",{class:K(["message-row",l.role])},[_(" Intent confirmation card (V5 parity) "),l.type===e.MessageType.INTENT_CONFIRMATION?(c(),M(e.IntentConfirmationMessage,{key:0,message:l,onConfirm:e.handleIntentConfirm,onCorrect:e.handleIntentCorrect},null,8,["message"])):l.role==="system"?(c(),m(D,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",xn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(D,{key:2},[_(" Tool message "),u("div",Cn,[v(e.ToolInvocationCard,{item:e.toToolItem(l,C),expandable:"",expanded:e.expandedTools.has(C),onToggle:k=>e.toggleToolDetail(C)},null,8,["item","expanded","onToggle"]),e.expandedTools.has(C)?(c(),m("div",wn,[u("pre",In,h(JSON.stringify(l.input,null,2)),1),l.result?(c(),m("div",On,[u("pre",Mn,h(typeof l.result=="string"?l.result:JSON.stringify(l.result,null,2)),1)])):_("v-if",!0)])):_("v-if",!0)])],2112)):(c(),m(D,{key:3},[_(" User / Assistant message with avatar + meta row "),u("div",{class:K(["msg-with-avatar",l.role])},[v(x,{size:32,style:te({backgroundColor:l.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:I(()=>[l.role==="user"?(c(),M(e.UserOutlined,{key:0})):(c(),M(e.RobotOutlined,{key:1}))]),_:2},1032,["style"]),u("div",En,[u("div",zn,[u("span",Tn,h(l.role==="user"?a.$t("chat.role.me"):"AI"),1),u("span",An,h(e.formatTime(l.timestamp)),1),l.tokens?(c(),m("span",Pn,"· "+h(l.tokens)+" tokens",1)):_("v-if",!0)]),l.role==="user"?(c(),m("div",Rn,h(l.content),1)):(c(),M(e.MarkdownRenderer,{key:1,class:K(["bubble assistant",{streaming:l._streaming}]),content:l.content},null,8,["class","content"]))])],2)],2112))],2)]),_:1},8,["messages"])),_(" Interactive Question (sticky below the list) "),e.pendingQuestion?(c(),m("div",Fn,[u("div",Ln,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",jn,[(c(!0),m(D,null,B(e.pendingQuestion.choices,l=>(c(),M(s,{key:l,size:"small",onClick:C=>e.answerQuestion(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128))])):(c(),M(O,{key:1,placeholder:a.$t("chat.input.answerPlaceholder"),"enter-button":a.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:e.answerQuestion},null,8,["placeholder","enter-button"]))])):_("v-if",!0)])):_("v-if",!0),_(" Input Area "),e.currentSessionId?(c(),m("div",Dn,[u("div",qn,[v(g,{value:e.inputText,"onUpdate:value":d[4]||(d[4]=l=>e.inputText=l),placeholder:e.isLoading?a.$t("chat.input.loading"):a.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:e.isLoading,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:Te(Ae(e.sendMessage,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),v(s,{type:"primary",loading:e.isLoading,onClick:e.sendMessage,style:{height:"40px"}},{icon:I(()=>[v(e.SendOutlined)]),_:1},8,["loading"])])])):_("v-if",!0)]),_(` Custom quick-prompts editor (Improvement 4) — placed at root so the
8
- chat-area-body's v-if/v-else pair stays unbroken. `),v(b,{open:e.editingPrompts,"onUpdate:open":d[6]||(d[6]=l=>e.editingPrompts=l),title:a.$t("chat.quickPromptsEditor.title"),"ok-text":a.$t("chat.quickPromptsEditor.save"),"cancel-text":a.$t("chat.quickPromptsEditor.cancel"),onOk:e.savePromptEditor},{default:I(()=>[u("div",Nn,h(a.$t("chat.quickPromptsEditor.hint")),1),v(g,{value:e.promptDraft,"onUpdate:value":d[5]||(d[5]=l=>e.promptDraft=l),rows:8,placeholder:a.$t("chat.quickPromptsEditor.placeholder")},null,8,["value","placeholder"]),u("div",Vn,[v(s,{size:"small",onClick:e.resetPromptsToDefault},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.reset")),1)]),_:1})])]),_:1},8,["open","title","ok-text","cancel-text"])])}const Gn=H(Gt,[["render",Un],["__scopeId","data-v-ef077a5e"],["__file","/tmp/cc-web-panel-UKI3LY/repo/packages/web-panel/src/views/Chat.vue"]]);export{Gn as default};
4
+ color: hsl(${Math.max(0,Math.min(120-120*C,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1,n}return s.updateDeps=o=>{e=o},s}function ge(a,d){if(a===void 0)throw new Error("Unexpected undefined");return a}const ct=(a,d)=>Math.abs(a-d)<1.01,dt=a=>a,ut=a=>{const d=Math.max(a.startIndex-a.overscan,0),t=Math.min(a.endIndex+a.overscan,a.count-1),e=[];for(let n=d;n<=t;n++)e.push(n);return e},ht=(a,d,t)=>{if(d?.borderBoxSize){const e=d.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return a[t.options.horizontal?"offsetWidth":"offsetHeight"]};class pe{constructor(d){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,n;return((n=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:n.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const s=()=>{const o=i.target,p=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);return}this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(o,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(s):s()})}));return{disconnect:()=>{var n;(n=e())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=e())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=e())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,n])=>{typeof n>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:dt,rangeExtractor:ut,onChange:()=>{},measureElement:ht,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...t}},this.notify=t=>{var e,n;(n=(e=this.options).onChange)==null||n.call(e,this,t)},this.maybeNotify=B(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{const n=new Map,i=new Map;for(let s=e-1;s>=0;s--){const o=t[s];if(n.has(o.lane))continue;const p=i.get(o.lane);if(p==null||o.end>p.end?i.set(o.lane,o):o.end<p.end&&n.set(o.lane,!0),n.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((s,o)=>s.end===o.end?s.index-o.index:s.end-o.end)[0]:void 0},this.getMeasurementOptions=B(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,e,n,i,s,o,p)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p}),{key:!1}),this.getMeasurements=B(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p},f)=>{if(!s)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const g of this.laneAssignments.keys())g>=t&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);const x=this.measurementsCache.slice(0,S),I=new Array(o).fill(void 0);for(let g=0;g<S;g++){const b=x[g];b&&(I[b.lane]=g)}for(let g=S;g<t;g++){const b=i(g),l=this.laneAssignments.get(g);let C,k;const z=p==="estimate"||f.has(b);if(l!==void 0&&this.options.lanes>1){C=l;const T=I[C],q=T!==void 0?x[T]:void 0;k=q?q.end+this.options.gap:e+n}else{const T=this.options.lanes===1?x[g-1]:this.getFurthestMeasurement(x,g);k=T?T.end+this.options.gap:e+n,C=T?T.lane:g%this.options.lanes,this.options.lanes>1&&z&&this.laneAssignments.set(g,C)}const P=f.get(b),W=typeof P=="number"?P:this.options.estimateSize(g),Q=k+W;x[g]={index:g,start:k,size:W,end:Q,key:b,lane:C},I[C]=g}return this.measurementsCache=x,x},{key:"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=B(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,n,i)=>this.range=t.length>0&&e>0?ft({measurements:t,outerSize:e,scrollOffset:n,lanes:i}):null,{key:"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=B(()=>{let t=null,e=null;const n=this.calculateRange();return n&&(t=n.startIndex,e=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,n,i,s)=>i===null||s===null?[]:t({startIndex:i,endIndex:s,overscan:e,count:n}),{key:"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,n=t.getAttribute(e);return n?parseInt(n,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),s=Math.max(0,n-i),o=Math.min(this.options.count-1,n+i);return t>=s&&t<=o}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((s,o)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(o))});return}const e=this.indexFromElement(t),n=this.options.getItemKey(e),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var n;const i=this.measurementsCache[t];if(!i)return;const s=this.itemSizeCache.get(i.key)??i.size,o=e-s;o!==0&&(((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,o,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&(this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=B(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const n=[];for(let i=0,s=t.length;i<s;i++){const o=t[i],p=e[o];n.push(p)}return n},{key:"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length!==0)return ge(e[_e(0,e.length-1,n=>ge(e[n]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),s=this.getScrollOffset();e==="auto"&&(e=t>=s+i?"end":"start"),e==="center"?t+=(n-i)/2:e==="end"&&(t-=i);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),s=this.measurementsCache[t];if(!s)return;if(e==="auto")if(s.end>=i+n-this.options.scrollPaddingEnd)e="end";else if(s.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const o=e==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,e,s.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),s=this.now();this.scrollState={index:null,align:e,behavior:n,startedAt:s,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[s,o]=i,p=this.now();this.scrollState={index:t,align:o,behavior:n,startedAt:p,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let n;if(e.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((t=e[e.length-1])==null?void 0:t.end)??0;else{const i=Array(this.options.lanes).fill(null);let s=e.length-1;for(;s>=0&&i.some(o=>o===null);){const o=e[s];i[o.lane]===null&&(i[o.lane]=o.end),s--}n=Math.max(...i.filter(o=>o!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:n})=>{this.options.scrollToFn(t,{behavior:n,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(d)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=e?e[0]:this.scrollState.lastTargetOffset,i=1,s=n!==this.scrollState.lastTargetOffset;if(!s&&ct(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=n,this.scrollState.behavior="auto",this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const _e=(a,d,t,e)=>{for(;a<=d;){const n=(a+d)/2|0,i=t(n);if(i<e)a=n+1;else if(i>e)d=n-1;else return n}return a>0?a-1:0};function ft({measurements:a,outerSize:d,scrollOffset:t,lanes:e}){const n=a.length-1,i=p=>a[p].start;if(a.length<=e)return{startIndex:0,endIndex:n};let s=_e(0,n,i,t),o=s;if(e===1)for(;o<n&&a[o].end<t+d;)o++;else if(e>1){const p=Array(e).fill(0);for(;o<n&&p.some(S=>S<t+d);){const S=a[o];p[S.lane]=S.end,o++}const f=Array(e).fill(t+d);for(;s>=0&&f.some(S=>S>=t);){const S=a[s];f[S.lane]=S.start,s--}s=Math.max(0,s-s%e),o=Math.min(n,o+(e-1-o%e))}return{startIndex:s,endIndex:o}}const mt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(a,{expose:d,emit:t}){const e=a,n=t,i=A(null),s=A(null),o=A(0),p=y(()=>s.value?(o.value,s.value.getVirtualItems()):[]),f=()=>{if(i.value)try{s.value=new pe({count:e.messages.length,getScrollElement:()=>i.value,estimateSize:()=>e.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),L(()=>{s.value&&i.value&&(s.value.measure(),o.value++,i.value.scrollTop=1,setTimeout(()=>{i.value&&(i.value.scrollTop=0)},50))})}catch(b){console.error("[VirtualMessageList] init failed:",b)}},S=()=>{if(!i.value)return;s.value&&s.value.measure();const{scrollTop:b,scrollHeight:l,clientHeight:C}=i.value;b<100&&n("load-more"),b+C>=l-50&&n("scroll-to-bottom")},x=()=>{i.value&&requestAnimationFrame(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},I=b=>{const l=e.messages.findIndex(C=>C.id===b);l!==-1&&s.value&&s.value.scrollToIndex(l,{align:"center"})};V(()=>e.messages.length,(b,l)=>{s.value?(s.value.setOptions({count:b,estimateSize:()=>e.estimateSize}),o.value++,b>l&&L(()=>x())):L(()=>{f(),s.value&&o.value++})}),V(()=>e.messages,b=>{!s.value&&b.length>0?L(()=>f()):s.value&&(s.value.setOptions({count:b.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,L(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:I}),J(()=>{L(()=>{f(),e.messages.length>0&&x()})}),re(()=>{s.value&&(s.value=null)});const g={props:e,emit:n,scrollContainer:i,virtualizer:s,updateKey:o,virtualItems:p,initVirtualizer:f,handleScroll:S,scrollToBottom:x,scrollToMessage:I,ref:A,computed:y,watch:V,onMounted:J,onUnmounted:re,nextTick:L,get Virtualizer(){return pe}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},gt={key:1,class:"fallback-list"};function pt(a,d,t,e,n,i){return c(),m("div",{ref:"scrollContainer",class:"virtual-message-list",onScroll:e.handleScroll},[e.virtualizer&&e.virtualItems.length>0?(c(),m("div",{key:0,style:te({height:`${e.virtualizer.getTotalSize()}px`,width:"100%",position:"relative"})},[(c(!0),m(D,null,H(e.virtualItems,s=>(c(),m("div",{key:s.key,style:te({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${s.start}px)`})},[le(a.$slots,"default",{message:t.messages[s.index],index:s.index},void 0)],4))),128))],4)):(c(),m("div",gt,[(c(!0),m(D,null,H(t.messages,(s,o)=>(c(),m("div",{key:s.id||o},[le(a.$slots,"default",{message:s,index:o},void 0)]))),128))]))],544)}const vt=K(mt,[["render",pt],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-Hs0OhX/repo/packages/web-panel/src/components/VirtualMessageList.vue"]]),_t={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(a,{expose:d,emit:t}){d();const e=a,n=t,i=A(!1),s=A(""),o=y(()=>e.message.metadata?.originalInput||""),p=y(()=>e.message.metadata?.understanding||{}),f=y(()=>p.value.correctedInput||o.value),S=y(()=>p.value.intent||"未识别"),x=y(()=>p.value.keyPoints||[]),I=y(()=>f.value!==o.value&&o.value.trim()!==""),g=y(()=>e.message.metadata?.status||"pending"),b=y(()=>g.value==="confirmed"),l=y(()=>g.value==="corrected"),C=y(()=>!!e.message.metadata?.streaming),k=y(()=>e.message.metadata?.streamingTokens||0),z=y(()=>e.message.metadata?.correction||null);function P(){n("confirm",{messageId:e.message.id,originalInput:o.value,understanding:p.value})}function W(){i.value=!0,s.value=f.value}function Q(){s.value.trim()&&(n("correct",{messageId:e.message.id,originalInput:o.value,correction:s.value}),i.value=!1)}function T(){i.value=!1,s.value=""}const q={props:e,emit:n,showCorrectionInput:i,correctionInput:s,originalInput:o,understanding:p,correctedInput:f,intent:S,keyPoints:x,hasCorrectedInput:I,status:g,isConfirmed:b,isCorrected:l,isStreaming:C,streamingTokens:k,correction:z,handleConfirm:P,handleCorrect:W,handleSubmitCorrection:Q,handleCancelCorrection:T,ref:A,computed:y,get CheckCircleOutlined(){return Be},get ExclamationCircleOutlined(){return We},get BulbOutlined(){return Ve},get CheckOutlined(){return Ne},get EditOutlined(){return qe},get CloseOutlined(){return De},get LoadingOutlined(){return ve}};return Object.defineProperty(q,"__isScriptSetup",{enumerable:!1,value:!0}),q}},bt={class:"intent-confirmation-message"},yt={class:"confirmation-header"},St={class:"header-icon"},kt={class:"header-text"},xt={key:0},Ct={key:1},wt={key:2},Ot={class:"understanding-content"},It={key:0,class:"original-input"},Mt={class:"label"},Et={class:"value original-text"},zt={key:1,class:"corrected-input"},Tt={class:"label"},At={class:"value corrected-text"},Pt={class:"intent-section"},Rt={class:"label"},Ft={class:"value"},Lt={key:2,class:"key-points-section"},jt={class:"label"},Dt={class:"key-points-list"},qt={key:3,class:"correction-section"},Nt={class:"label"},Vt={class:"value correction-text"},Wt={key:0,class:"streaming-indicator"},Bt={key:0,class:"streaming-tokens"},Ht={key:1,class:"action-buttons"},Qt={key:2,class:"correction-input-section"},Ut={class:"correction-actions"};function Kt(a,d,t,e,n,i){const s=R("a-button"),o=R("a-textarea");return c(),m("div",bt,[u("div",yt,[u("div",St,[e.isConfirmed?(c(),M(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):e.isCorrected?(c(),M(e.ExclamationCircleOutlined,{key:1,style:{color:"#faad14"}})):(c(),M(e.BulbOutlined,{key:2,style:{color:"#1890ff"}}))]),u("div",kt,[e.isConfirmed?(c(),m("span",xt,h(a.$t("chat.intent.confirmed")),1)):e.isCorrected?(c(),m("span",Ct,h(a.$t("chat.intent.corrected")),1)):(c(),m("span",wt,h(t.message.content),1))])]),u("div",Ot,[e.hasCorrectedInput?(c(),m("div",It,[u("div",Mt,h(a.$t("chat.intent.label.original")),1),u("div",Et,h(e.originalInput),1)])):_("v-if",!0),e.hasCorrectedInput?(c(),m("div",zt,[u("div",Tt,h(a.$t("chat.intent.label.understood")),1),u("div",At,h(e.correctedInput),1)])):_("v-if",!0),u("div",Pt,[u("div",Rt,"🎯 "+h(a.$t("chat.intent.label.intent")),1),u("div",Ft,h(e.intent),1)]),e.keyPoints&&e.keyPoints.length>0?(c(),m("div",Lt,[u("div",jt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",Dt,[(c(!0),m(D,null,H(e.keyPoints,(p,f)=>(c(),m("li",{key:f},h(p),1))),128))])])):_("v-if",!0),e.correction?(c(),m("div",qt,[u("div",Nt,"📝 "+h(a.$t("chat.intent.label.correction")),1),u("div",Vt,h(e.correction),1)])):_("v-if",!0)]),e.isStreaming?(c(),m("div",Wt,[v(e.LoadingOutlined,{spin:""}),u("span",null,h(a.$t("chat.intent.status.understanding")),1),e.streamingTokens>0?(c(),m("span",Bt,"· "+h(e.streamingTokens)+" tokens",1)):_("v-if",!0)])):!e.isConfirmed&&!e.isCorrected?(c(),m("div",Ht,[v(s,{type:"primary",onClick:e.handleConfirm},{default:O(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.confirm")),1)]),_:1}),v(s,{onClick:e.handleCorrect},{default:O(()=>[v(e.EditOutlined),E(" "+h(a.$t("chat.intent.action.correct")),1)]),_:1})])):_("v-if",!0),e.showCorrectionInput?(c(),m("div",Qt,[v(o,{value:e.correctionInput,"onUpdate:value":d[0]||(d[0]=p=>e.correctionInput=p),placeholder:a.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),u("div",Ut,[v(s,{type:"primary",size:"small",onClick:e.handleSubmitCorrection},{default:O(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.submitCorrection")),1)]),_:1}),v(s,{size:"small",onClick:e.handleCancelCorrection},{default:O(()=>[v(e.CloseOutlined),E(" "+h(a.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):_("v-if",!0)])}const Xt=K(_t,[["render",Kt],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-Hs0OhX/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),$t={__name:"Chat",setup(a,{expose:d}){d();const{t,tm:e,rt:n}=he(),i=ce()||null,s=de()||null,o=window.__CC_CONFIG__||{},p=y(()=>o.mode==="project"),f=fe(),S=new Set,x=A(null),I=A(""),g=y(()=>f.contextMode);function b(r){f.setContextMode(r)}const l=y(()=>f.intentEnabled);function C(r){f.setIntentEnabled(r)}const k=y(()=>f.currentSessionId),z=y(()=>k.value?f.getMessages(k.value):[]),P=y(()=>{const r=f.streaming[k.value];return r?.active?r.content:null}),W=y(()=>{const r=z.value;return P.value?[...r,{role:"assistant",content:P.value,_streaming:!0,timestamp:Date.now()}]:r}),Q=y(()=>f.pendingQuestion[k.value]),T=y(()=>f.getIsLoading(k.value));function q(r){if(!r)return"";const w=new Date(r);return`${String(w.getHours()).padStart(2,"0")}:${String(w.getMinutes()).padStart(2,"0")}`}const X=ue(new Set);function be(r){X.has(r)?X.delete(r):X.add(r)}function ye(r,w){return{id:`tool-${w}`,label:r.tool||t("chat.tool.unknownTool"),detail:ne(r),status:r.status==="done"?"done":"running"}}function ne(r){if(r.status==="running"){const j=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return j.length?t("chat.tool.argsPreview",{n:j.length,key:j[0]}):t("chat.tool.running")}if(r.result==null)return t("chat.tool.done");const F=(typeof r.result=="string"?r.result:JSON.stringify(r.result)).split(`
5
+ `)[0]||"";return F.length>48?`${F.slice(0,48)}…`:F||t("chat.tool.done")}async function Se(r){await f.createSession(r)}async function Y(){if(!I.value.trim()||T.value||!k.value)return;const r=I.value;I.value="",await f.submitUserInput(k.value,r)}function ke(r){f.confirmIntent(k.value,r.messageId)}function xe(r){f.correctIntent(k.value,r.messageId,r.correction)}const se=y(()=>{const r=f.customQuickPrompts;if(Array.isArray(r)&&r.length>0)return r;const w=e("chat.quickPrompts");return w?Object.values(w).map(F=>n(F)):[]}),$=A(!1),Z=A("");function Ce(){Z.value=se.value.join(`
6
+ `),$.value=!0}function we(){const r=Z.value.split(`
7
+ `).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),$.value=!1}function Oe(){f.setCustomQuickPrompts(null),$.value=!1}const Ie=y(()=>t(`chat.empty.hint.${g.value}`));async function Me(r){k.value||await f.createSession("chat"),I.value=r,await Y()}function Ee(r){f.answerQuestion(k.value,r)}V([z,P],()=>{L(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:j}){if(!r||S.has(j))return;S.add(j);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),I.value=r,w!==!1&&(await L(),await Y())}function ie(){const r=i?.query||{};if(!r.prompt)return null;const w=Array.isArray(r.prompt)?r.prompt[0]:String(r.prompt);if(!w.trim())return null;const j=(Array.isArray(r.autoSend)?r.autoSend[0]:r.autoSend)!=="false",N=Array.isArray(r.session)?r.session[0]:r.session,ae=N?String(N):null,ze=`query::${w}::${ae||""}::${j}`;return{prompt:w,autoSend:j,session:ae,token:ze}}async function G(){const r=ie();if(r){await ee(r),s&&i&&s.replace({path:i.path,query:{}}).catch(()=>{});return}const w=f.pendingAutoSend;if(w?.prompt){const F=w.token||`staged::${w.prompt}::${Date.now()}`;await ee({...w,token:F}),f.clearAutoSend?.()}}i&&V(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{G()},{immediate:!1}),V(()=>f.pendingAutoSend,()=>{G()},{deep:!0}),J(async()=>{await f.loadSessions(),await G()});const oe={t,tm:e,rt:n,route:i,router:s,cfg:o,isProject:p,chatStore:f,consumedAutoSendTokens:S,virtualListRef:x,inputText:I,contextMode:g,setContextMode:b,intentEnabled:l,setIntentEnabled:C,currentSessionId:k,currentMessages:z,streamingContent:P,messagesWithStreaming:W,pendingQuestion:Q,isLoading:T,formatTime:q,expandedTools:X,toggleToolDetail:be,toToolItem:ye,toolDetail:ne,newSession:Se,sendMessage:Y,handleIntentConfirm:ke,handleIntentCorrect:xe,QUICK_PROMPTS:se,editingPrompts:$,promptDraft:Z,openPromptEditor:Ce,savePromptEditor:we,resetPromptsToDefault:Oe,emptyHint:Ie,usePrompt:Me,answerQuestion:Ee,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:G,ref:A,reactive:ue,computed:y,watch:V,nextTick:L,onMounted:J,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Ge},get RobotOutlined(){return $e},get SendOutlined(){return Xe},get FolderOutlined(){return Ke},get GlobalOutlined(){return Ue},get UserOutlined(){return Qe},get FileTextOutlined(){return He},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:rt,VirtualMessageList:vt,IntentConfirmationMessage:Xt,get MessageType(){return Pe}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Gt={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Jt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Yt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Zt=["title"],en={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},tn={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},nn={style:{flex:"1","overflow-y":"auto",padding:"8px"}},sn=["onClick"],on={class:"session-icon"},an={class:"session-info"},ln={class:"session-title"},rn={class:"session-meta"},cn={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},dn={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},un={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},hn={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},fn={style:{"font-size":"13px",color:"var(--text-muted)"}},mn={style:{"margin-top":"24px",display:"flex",gap:"12px"}},gn={key:1,class:"chat-header"},pn={class:"chat-intent-toggle"},vn={class:"chat-intent-toggle-label"},_n={key:2,class:"chat-area-body"},bn={key:0,class:"chat-empty-prompts"},yn={class:"empty-title"},Sn={class:"empty-hint"},kn={class:"quick-prompts"},xn={class:"system-banner"},Cn={class:"tool-msg"},wn={key:0,class:"tool-detail"},On={class:"tool-detail__pre tool-detail__pre--input"},In={key:0,class:"tool-detail__result"},Mn={class:"tool-detail__pre tool-detail__pre--result"},En={class:"msg-body"},zn={class:"msg-meta-row"},Tn={class:"msg-role"},An={class:"msg-time"},Pn={key:0,class:"msg-tokens"},Rn={key:0,class:"bubble user"},Fn={key:2,class:"question-card"},Ln={class:"question-text"},jn={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Dn={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},qn={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Nn={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},Vn={style:{"margin-top":"8px"}};function Wn(a,d,t,e,n,i){const s=R("a-button"),o=R("a-radio-button"),p=R("a-radio-group"),f=R("a-switch"),S=R("a-tooltip"),x=R("a-avatar"),I=R("a-input-search"),g=R("a-textarea"),b=R("a-modal");return c(),m("div",Gt,[_(" Session Sidebar "),u("div",Jt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Yt,[v(e.FolderOutlined),u("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:e.cfg.projectRoot},h(e.cfg.projectName||a.$t("chat.scope.fallbackProjectName")),9,Zt)])):(c(),m("div",en,[v(e.GlobalOutlined),u("span",null,h(a.$t("chat.scope.globalSessions")),1)])),u("div",tn,[v(s,{type:"primary",size:"small",style:{flex:"1"},onClick:d[0]||(d[0]=l=>e.newSession("chat"))},{icon:O(()=>[v(e.MessageOutlined)]),default:O(()=>[E(" "+h(a.$t("chat.newChat")),1)]),_:1}),v(s,{size:"small",style:{flex:"1"},onClick:d[1]||(d[1]=l=>e.newSession("agent"))},{icon:O(()=>[v(e.RobotOutlined)]),default:O(()=>[E(" "+h(a.$t("chat.newAgent")),1)]),_:1})]),u("div",nn,[(c(!0),m(D,null,H(e.chatStore.sessions,l=>(c(),m("div",{key:l.id,class:U(["session-item",{active:l.id===e.chatStore.currentSessionId}]),onClick:C=>e.chatStore.switchSession(l.id)},[u("span",on,h(l.type==="agent"?"🤖":"💬"),1),u("div",an,[u("div",ln,h(l.title||a.$t("chat.session.untitled")),1),u("div",rn,h(a.$t("chat.session.messageCountSuffix",{n:l.messageCount||0})),1)])],10,sn))),128)),e.chatStore.sessions.length?_("v-if",!0):(c(),m("div",cn,h(a.$t("chat.sidebarEmpty")),1))])]),_(" Chat Area "),u("div",dn,[_(" Empty State "),e.currentSessionId?_("v-if",!0):(c(),m("div",un,[d[7]||(d[7]=u("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),u("div",hn,h(a.$t("chat.empty.title")),1),u("div",fn,h(a.$t("chat.empty.subtitle")),1),u("div",mn,[v(s,{type:"primary",onClick:d[2]||(d[2]=l=>e.newSession("chat"))},{default:O(()=>[E(h(a.$t("chat.empty.newChat")),1)]),_:1}),v(s,{style:{},onClick:d[3]||(d[3]=l=>e.newSession("agent"))},{default:O(()=>[E(h(a.$t("chat.empty.newAgent")),1)]),_:1})])])),_(" Chat header: context mode + intent toggle "),e.currentSessionId?(c(),m("div",gn,[v(p,{value:e.contextMode,size:"small","button-style":"solid","onUpdate:value":e.setContextMode},{default:O(()=>[v(o,{value:"project",disabled:!e.isProject},{default:O(()=>[v(e.FolderOutlined),E(" "+h(a.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),v(o,{value:"file",disabled:""},{default:O(()=>[v(e.FileTextOutlined),E(" "+h(a.$t("chat.contextMode.file")),1)]),_:1}),v(o,{value:"global"},{default:O(()=>[v(e.GlobalOutlined),E(" "+h(a.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"]),e.contextMode!=="global"?(c(),M(S,{key:0,title:a.$t("chat.intent.toggleHint"),placement:"bottom"},{default:O(()=>[u("label",pn,[v(f,{checked:e.intentEnabled,size:"small","onUpdate:checked":e.setIntentEnabled},null,8,["checked"]),u("span",vn,h(a.$t("chat.intent.toggleLabel")),1)])]),_:1},8,["title"])):_("v-if",!0)])):_("v-if",!0),_(" Messages "),e.currentSessionId?(c(),m("div",_n,[_(" Empty state with quick prompts when session has no messages "),e.messagesWithStreaming.length===0?(c(),m("div",bn,[d[8]||(d[8]=u("div",{class:"empty-icon"},"💬",-1)),u("div",yn,h(a.$t("chat.empty.startTitle")),1),u("div",Sn,h(e.emptyHint),1),u("div",kn,[(c(!0),m(D,null,H(e.QUICK_PROMPTS,l=>(c(),M(s,{key:l,size:"small",class:"quick-prompt-btn",onClick:C=>e.usePrompt(l)},{default:O(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128)),v(s,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:e.openPromptEditor},{default:O(()=>[E(h(a.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(c(),M(e.VirtualMessageList,{key:1,ref:"virtualListRef",messages:e.messagesWithStreaming,"estimate-size":120,class:"chat-virtual-list"},{default:O(({message:l,index:C})=>[u("div",{class:U(["message-row",l.role])},[_(" Intent confirmation card (V5 parity) "),l.type===e.MessageType.INTENT_CONFIRMATION?(c(),M(e.IntentConfirmationMessage,{key:0,message:l,onConfirm:e.handleIntentConfirm,onCorrect:e.handleIntentCorrect},null,8,["message"])):l.role==="system"?(c(),m(D,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",xn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(D,{key:2},[_(" Tool message "),u("div",Cn,[v(e.ToolInvocationCard,{item:e.toToolItem(l,C),expandable:"",expanded:e.expandedTools.has(C),onToggle:k=>e.toggleToolDetail(C)},null,8,["item","expanded","onToggle"]),e.expandedTools.has(C)?(c(),m("div",wn,[u("pre",On,h(JSON.stringify(l.input,null,2)),1),l.result?(c(),m("div",In,[u("pre",Mn,h(typeof l.result=="string"?l.result:JSON.stringify(l.result,null,2)),1)])):_("v-if",!0)])):_("v-if",!0)])],2112)):(c(),m(D,{key:3},[_(" User / Assistant message with avatar + meta row "),u("div",{class:U(["msg-with-avatar",l.role])},[v(x,{size:32,style:te({backgroundColor:l.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:O(()=>[l.role==="user"?(c(),M(e.UserOutlined,{key:0})):(c(),M(e.RobotOutlined,{key:1}))]),_:2},1032,["style"]),u("div",En,[u("div",zn,[u("span",Tn,h(l.role==="user"?a.$t("chat.role.me"):"AI"),1),u("span",An,h(e.formatTime(l.timestamp)),1),l.tokens?(c(),m("span",Pn,"· "+h(l.tokens)+" tokens",1)):_("v-if",!0)]),l.role==="user"?(c(),m("div",Rn,h(l.content),1)):(c(),M(e.MarkdownRenderer,{key:1,class:U(["bubble assistant",{streaming:l._streaming}]),content:l.content},null,8,["class","content"]))])],2)],2112))],2)]),_:1},8,["messages"])),_(" Interactive Question (sticky below the list) "),e.pendingQuestion?(c(),m("div",Fn,[u("div",Ln,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",jn,[(c(!0),m(D,null,H(e.pendingQuestion.choices,l=>(c(),M(s,{key:l,size:"small",onClick:C=>e.answerQuestion(l)},{default:O(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128))])):(c(),M(I,{key:1,placeholder:a.$t("chat.input.answerPlaceholder"),"enter-button":a.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:e.answerQuestion},null,8,["placeholder","enter-button"]))])):_("v-if",!0)])):_("v-if",!0),_(" Input Area "),e.currentSessionId?(c(),m("div",Dn,[u("div",qn,[v(g,{value:e.inputText,"onUpdate:value":d[4]||(d[4]=l=>e.inputText=l),placeholder:e.isLoading?a.$t("chat.input.loading"):a.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:e.isLoading,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:Te(Ae(e.sendMessage,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),v(s,{type:"primary",loading:e.isLoading,onClick:e.sendMessage,style:{height:"40px"}},{icon:O(()=>[v(e.SendOutlined)]),_:1},8,["loading"])])])):_("v-if",!0)]),_(` Custom quick-prompts editor (Improvement 4) — placed at root so the
8
+ chat-area-body's v-if/v-else pair stays unbroken. `),v(b,{open:e.editingPrompts,"onUpdate:open":d[6]||(d[6]=l=>e.editingPrompts=l),title:a.$t("chat.quickPromptsEditor.title"),"ok-text":a.$t("chat.quickPromptsEditor.save"),"cancel-text":a.$t("chat.quickPromptsEditor.cancel"),onOk:e.savePromptEditor},{default:O(()=>[u("div",Nn,h(a.$t("chat.quickPromptsEditor.hint")),1),v(g,{value:e.promptDraft,"onUpdate:value":d[5]||(d[5]=l=>e.promptDraft=l),rows:8,placeholder:a.$t("chat.quickPromptsEditor.placeholder")},null,8,["value","placeholder"]),u("div",Vn,[v(s,{size:"small",onClick:e.resetPromptsToDefault},{default:O(()=>[E(h(a.$t("chat.quickPromptsEditor.reset")),1)]),_:1})])]),_:1},8,["open","title","ok-text","cancel-text"])])}const $n=K($t,[["render",Wn],["__scopeId","data-v-ef077a5e"],["__file","/tmp/cc-web-panel-Hs0OhX/repo/packages/web-panel/src/views/Chat.vue"]]);export{$n as default};
@@ -1 +1 @@
1
- import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-BvqAck49.js";import{_ as k}from"./index-BUTN1VlO.js";import"./icons-DP3uiYxy.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},L={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",L,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const j=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-UKI3LY/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{j as default};
1
+ import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-BvqAck49.js";import{_ as k}from"./index-BR-DF81e.js";import"./icons-DP3uiYxy.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},M={class:"meta"},O={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",M,[n("span",O,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-Hs0OhX/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
@@ -1 +1 @@
1
- import{h as o,i as E,f as V,P as W}from"./index-BUTN1VlO.js";import{d as F,r as f,w as I,c as h}from"./vendor-BvqAck49.js";import{i as M}from"./initDefaultProps-C0arzCLE.js";var R=function(t,l){var c={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&l.indexOf(n)<0&&(c[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(t);a<n.length;a++)l.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(t,n[a])&&(c[n[a]]=t[n[a]]);return c};const T={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:W.any,required:Boolean},J=F({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:M(T,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup(t,l){let{attrs:c,emit:n,expose:a}=l;const d=f(t.checked===void 0?t.defaultChecked:t.checked),s=f();I(()=>t.checked,()=>{d.value=t.checked}),a({focus(){var e;(e=s.value)===null||e===void 0||e.focus()},blur(){var e;(e=s.value)===null||e===void 0||e.blur()}});const i=f(),y=e=>{if(t.disabled)return;t.checked===void 0&&(d.value=e.target.checked),e.shiftKey=i.value;const u={target:o(o({},t),{checked:e.target.checked}),stopPropagation(){e.stopPropagation()},preventDefault(){e.preventDefault()},nativeEvent:e};t.checked!==void 0&&(s.value.checked=!!t.checked),n("change",u),i.value=!1},k=e=>{n("click",e),i.value=e.shiftKey};return()=>{const{prefixCls:e,name:u,id:m,type:g,disabled:b,readonly:x,tabindex:C,autofocus:O,value:P,required:S}=t,_=R(t,["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"]),{class:j,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D}=c,v=o(o({},_),c),$=Object.keys(v).reduce((p,r)=>((r.startsWith("data-")||r.startsWith("aria-")||r==="role")&&(p[r]=v[r]),p),{}),q=E(e,j,{[`${e}-checked`]:d.value,[`${e}-disabled`]:b}),A=o(o({name:u,id:m,type:g,readonly:x,disabled:b,tabindex:C,class:`${e}-input`,checked:!!d.value,autofocus:O,value:P},$),{onChange:y,onClick:k,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D,required:S});return h("span",{class:q},[h("input",V({ref:s},A),null),h("span",{class:`${e}-inner`},null)])}}});export{J as V};
1
+ import{h as o,i as E,f as V,P as W}from"./index-BR-DF81e.js";import{d as F,r as f,w as I,c as h}from"./vendor-BvqAck49.js";import{i as M}from"./initDefaultProps-BiHvIjo1.js";var R=function(t,l){var c={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&l.indexOf(n)<0&&(c[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(t);a<n.length;a++)l.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(t,n[a])&&(c[n[a]]=t[n[a]]);return c};const T={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:W.any,required:Boolean},J=F({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:M(T,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup(t,l){let{attrs:c,emit:n,expose:a}=l;const d=f(t.checked===void 0?t.defaultChecked:t.checked),s=f();I(()=>t.checked,()=>{d.value=t.checked}),a({focus(){var e;(e=s.value)===null||e===void 0||e.focus()},blur(){var e;(e=s.value)===null||e===void 0||e.blur()}});const i=f(),y=e=>{if(t.disabled)return;t.checked===void 0&&(d.value=e.target.checked),e.shiftKey=i.value;const u={target:o(o({},t),{checked:e.target.checked}),stopPropagation(){e.stopPropagation()},preventDefault(){e.preventDefault()},nativeEvent:e};t.checked!==void 0&&(s.value.checked=!!t.checked),n("change",u),i.value=!1},k=e=>{n("click",e),i.value=e.shiftKey};return()=>{const{prefixCls:e,name:u,id:m,type:g,disabled:b,readonly:x,tabindex:C,autofocus:O,value:P,required:S}=t,_=R(t,["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"]),{class:j,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D}=c,v=o(o({},_),c),$=Object.keys(v).reduce((p,r)=>((r.startsWith("data-")||r.startsWith("aria-")||r==="role")&&(p[r]=v[r]),p),{}),q=E(e,j,{[`${e}-checked`]:d.value,[`${e}-disabled`]:b}),A=o(o({name:u,id:m,type:g,readonly:x,disabled:b,tabindex:C,class:`${e}-input`,checked:!!d.value,autofocus:O,value:P},$),{onChange:y,onClick:k,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D,required:S});return h("span",{class:q},[h("input",V({ref:s},A),null),h("span",{class:`${e}-inner`},null)])}}});export{J as V};
@@ -1 +1 @@
1
- import{I as m,J as f,U as v,R as s,c as o,K as l,V as c,o as me,a as te,b as B,r as w,P as d,Q as g,F as A,Z as Q,S as k,$ as ve}from"./vendor-BvqAck49.js";import{_ as Ge,u as pe,b as ye,E as _e,d as R}from"./index-BUTN1VlO.js";import{s as je}from"./community-parser-CO25nZFt.js";import{a6 as Le,aZ as Ee,f as Pe,am as Me,A as Ne,Q as De,r as Ue,as as Je,R as Be}from"./icons-DP3uiYxy.js";function V(t){const a=je(t);if(!a)return null;try{return JSON.parse(a)}catch{}const i=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const Fe=Object.freeze(["react","vue","express","fastapi","spring_boot"]),ue=Object.freeze(["critical","high","medium","low","info"]);function x(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function be(t,a=null){if(t==null)return a;if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return a}}function Ve(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,prompt:String(t.prompt||""),language:t.language??"",framework:t.framework??"",generatedCode:t.generated_code??t.generatedCode??"",fileCount:x(t.file_count??t.fileCount,0),tokenCount:x(t.token_count??t.tokenCount,0),metadata:t.metadata??null,createdAt:t.created_at??t.createdAt??null,_idx:a}:null}function we(t){const a=V(t);return Array.isArray(a)?a.map(Ve).filter(Boolean):[]}function qe(t,a=0){return!t||typeof t!="object"?null:{key:a,rule:String(t.rule||""),severity:String(t.severity||"info").toLowerCase(),match:String(t.match||""),pattern:String(t.pattern||"")}}function We(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";if(!i)return null;const e=be(t.severity_summary??t.severitySummary,null)??t.severity_summary??t.severitySummary,z={};for(const E of ue)z[E]=0;if(e&&typeof e=="object"&&!Array.isArray(e))for(const[E,P]of Object.entries(e))typeof P=="number"&&Number.isFinite(P)&&(z[E]=P);const G=be(t.issues_detail??t.issuesDetail,null)??t.issues_detail??t.issuesDetail,S=Array.isArray(G)?G.map(qe).filter(Boolean):[];return{key:i,id:i,generationId:t.generation_id??t.generationId??"",codeHash:String(t.code_hash??t.codeHash??""),language:t.language??"",issuesFound:x(t.issues_found??t.issuesFound,0),securityIssues:x(t.security_issues??t.securityIssues,0),severitySummary:z,issuesDetail:S,reviewedAt:t.reviewed_at??t.reviewedAt??null,_idx:a}}function ke(t){const a=V(t);return Array.isArray(a)?a.map(We).filter(Boolean):[]}function he(t){const a={};for(const G of ue)a[G]=0;const i=V(t);if(!i||typeof i!="object"||Array.isArray(i))return{ok:!1,reviewId:null,reason:"",issuesFound:0,securityIssues:0,severitySummary:a};const e=!!i.reviewId,z={...a};if(i.severitySummary&&typeof i.severitySummary=="object"&&!Array.isArray(i.severitySummary))for(const[G,S]of Object.entries(i.severitySummary))typeof S=="number"&&Number.isFinite(S)&&(z[G]=S);return{ok:e,reviewId:i.reviewId?String(i.reviewId):null,reason:i.reason?String(i.reason):"",issuesFound:x(i.issuesFound,0),securityIssues:x(i.securityIssues,0),severitySummary:z}}function He(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,template:String(t.template||""),projectName:t.project_name??t.projectName??"",options:t.options??null,filesGenerated:x(t.files_generated??t.filesGenerated,0),outputPath:t.output_path??t.outputPath??"",createdAt:t.created_at??t.createdAt??null,_idx:a}:null}function Se(t){const a=V(t);return Array.isArray(a)?a.map(He).filter(Boolean):[]}const Ke={generations:{total:0,totalTokens:0,totalFiles:0,uniqueLanguages:0},reviews:{total:0,totalIssues:0,totalSecurityIssues:0,avgIssuesPerReview:0},scaffolds:{total:0,byTemplate:{}}};function Ce(t){const a=JSON.parse(JSON.stringify(Ke));for(const e of Fe)a.scaffolds.byTemplate[e]=0;const i=V(t);if(!i||typeof i!="object"||Array.isArray(i))return a;if(i.generations&&typeof i.generations=="object"&&(a.generations.total=x(i.generations.total,0),a.generations.totalTokens=x(i.generations.totalTokens,0),a.generations.totalFiles=x(i.generations.totalFiles,0),a.generations.uniqueLanguages=x(i.generations.uniqueLanguages,0)),i.reviews&&typeof i.reviews=="object"&&(a.reviews.total=x(i.reviews.total,0),a.reviews.totalIssues=x(i.reviews.totalIssues,0),a.reviews.totalSecurityIssues=x(i.reviews.totalSecurityIssues,0),a.reviews.avgIssuesPerReview=x(i.reviews.avgIssuesPerReview,0)),i.scaffolds&&typeof i.scaffolds=="object"&&(a.scaffolds.total=x(i.scaffolds.total,0),i.scaffolds.byTemplate&&typeof i.scaffolds.byTemplate=="object"))for(const[e,z]of Object.entries(i.scaffolds.byTemplate))typeof z=="number"&&Number.isFinite(z)&&(a.scaffolds.byTemplate[e]=z);return a}function de(t){const a=V(t);if(!a||typeof a!="object"||Array.isArray(a))return{ok:!1,id:null,reason:""};const i=a.generationId||a.scaffoldId||a.reviewId||null;return{ok:!!i,id:i?String(i):null,reason:a.reason?String(a.reason):""}}function Qe(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const Ye={__name:"Codegen",setup(t,{expose:a}){a();const i=pe(),{t:e}=ye(),z=_e.PRESENTED_IMAGE_SIMPLE,G=w(!1),S=w(!1),E=w(!1),P=w(!1),q=w([]),W=w([]),T=w([]),M=w({generations:{total:0,totalTokens:0,totalFiles:0,uniqueLanguages:0},reviews:{total:0,totalIssues:0,totalSecurityIssues:0,avgIssuesPerReview:0},scaffolds:{total:0,byTemplate:{}}}),j=w("generations"),D=w(""),h=w(""),O=w(""),U=w(!1),J=w(!1),H=w(!1),Y=w(!1),Z=w(!1),y=te({prompt:"",language:"",framework:"",code:"",files:0,tokens:0}),p=te({generationId:"",language:"",code:""}),b=te({template:"react",projectName:"",optionsJson:"",files:0,outputPath:""}),I=w(null),N=w(null),X=w(null),oe=B(()=>[{title:e("codegen.generationCols.prompt"),key:"prompt"},{title:e("codegen.generationCols.language"),key:"language",width:"110px"},{title:e("codegen.generationCols.framework"),key:"framework",width:"110px"},{title:e("codegen.generationCols.fileCount"),key:"fileCount",width:"70px"},{title:e("codegen.generationCols.tokenCount"),key:"tokenCount",width:"110px"},{title:e("codegen.generationCols.createdAt"),key:"createdAt",width:"160px"},{title:e("codegen.generationCols.action"),key:"action",width:"140px"}]),ae=B(()=>[{title:e("codegen.reviewCols.codeHash"),key:"codeHash",width:"180px"},{title:e("codegen.reviewCols.language"),key:"language",width:"110px"},{title:e("codegen.reviewCols.issuesFound"),key:"issuesFound",width:"90px"},{title:e("codegen.reviewCols.securityIssues"),key:"securityIssues",width:"90px"},{title:e("codegen.reviewCols.severityBreak"),key:"severityBreak"},{title:e("codegen.reviewCols.reviewedAt"),key:"reviewedAt",width:"160px"},{title:e("codegen.reviewCols.action"),key:"action",width:"90px"}]),le=B(()=>[{title:e("codegen.scaffoldCols.projectName"),key:"projectName"},{title:e("codegen.scaffoldCols.template"),key:"template",width:"120px"},{title:e("codegen.scaffoldCols.filesGenerated"),key:"filesGenerated",width:"90px"},{title:e("codegen.scaffoldCols.outputPath"),key:"outputPath",width:"300px"},{title:e("codegen.scaffoldCols.createdAt"),key:"createdAt",width:"160px"}]),ne=B(()=>{let r=q.value;if(D.value.trim()){const _=D.value.trim().toLowerCase();r=r.filter(F=>(F.language||"").toLowerCase().includes(_))}if(h.value.trim()){const _=h.value.trim().toLowerCase();r=r.filter(F=>(F.framework||"").toLowerCase().includes(_))}return r}),C=B(()=>O.value?T.value.filter(r=>r.template===O.value):T.value);function $(r){return{react:"cyan",vue:"green",express:"gold",fastapi:"magenta",spring_boot:"red"}[r]||"default"}function re(r){return{react:"#13c2c2",vue:"#52c41a",express:"#faad14",fastapi:"#eb2f96",spring_boot:"#ff4d4f"}[r]||"#888"}function se(r){const _=`codegen.severityLabels.${r}`,F=e(_);return F===_?r:F}function ie(r){return{critical:"red",high:"orange",medium:"gold",low:"default",info:"blue"}[r]||"default"}function n(r){return{critical:"#ff4d4f",high:"#fa8c16",medium:"#faad14",low:"#888",info:"#1677ff"}[r]||"#888"}function u(r,_){return _?Math.round(r/_*100):0}function ee(r,_){return r?r.length<=_?r:r.slice(0,_)+"…":""}function L(r){return`"${String(r).replace(/"/g,'\\"')}"`}async function K(){G.value=!0;try{const[r,_,F,Oe]=await Promise.all([i.execute("codegen list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen reviews --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen scaffolds --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen stats --json",8e3).catch(()=>({output:""}))]);q.value=we(r.output),W.value=ke(_.output),T.value=Se(F.output),M.value=Ce(Oe.output)}catch(r){R.error(e("codegen.msg.loadFailed")+": "+(r?.message||r))}finally{G.value=!1}}async function Re(){if(!y.prompt.trim()){R.warning(e("codegen.msg.promptEmpty"));return}S.value=!0;try{const r=[`codegen generate -p ${L(y.prompt.trim())}`];y.language.trim()&&r.push(`-l ${L(y.language.trim())}`),y.framework.trim()&&r.push(`-f ${L(y.framework.trim())}`),y.code.trim()&&r.push(`--code ${L(y.code.trim())}`),y.files>0&&r.push(`--files ${y.files}`),y.tokens>0&&r.push(`--tokens ${y.tokens}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4),F=de(_);if(!F.ok){R.error(e("codegen.msg.generateFailed")+": "+(F.reason||_.slice(0,120)));return}R.success(e("codegen.msg.generateSuccess",{id:F.id?.slice(0,8)})),U.value=!1,ce(),await K()}catch(r){R.error(e("codegen.msg.generateFailed")+": "+(r?.message||r))}finally{S.value=!1}}async function xe(){if(!p.code.trim()){R.warning(e("codegen.msg.codeEmpty"));return}E.value=!0,I.value=null;try{const r=[`codegen review -c ${L(p.code)}`];p.language.trim()&&r.push(`-l ${L(p.language.trim())}`),p.generationId.trim()&&r.push(`-g ${L(p.generationId.trim())}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4);I.value=he(_),!I.value.ok&&I.value.reason?R.error(e("codegen.msg.reviewFailed")+": "+I.value.reason):I.value.ok?(R.success(e("codegen.msg.reviewSuccess",{n:I.value.issuesFound,sec:I.value.securityIssues})),await K()):R.error(e("codegen.msg.reviewFailed")+": "+_.slice(0,120))}catch(r){R.error(e("codegen.msg.reviewFailed")+": "+(r?.message||r))}finally{E.value=!1}}async function Ie(r){p.generationId=r.id,p.language=r.language||"",p.code=r.generatedCode||"",I.value=null,J.value=!0}async function Ae(){if(!b.projectName.trim()){R.warning(e("codegen.msg.projectEmpty"));return}if(b.optionsJson.trim())try{JSON.parse(b.optionsJson)}catch{R.warning(e("codegen.msg.optionsBadJson"));return}P.value=!0;try{const r=[`codegen scaffold -t ${b.template}`,`-n ${L(b.projectName.trim())}`];b.optionsJson.trim()&&r.push(`-o ${L(b.optionsJson.trim())}`),b.files>0&&r.push(`--files ${b.files}`),b.outputPath.trim()&&r.push(`--output ${L(b.outputPath.trim())}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4),F=de(_);if(!F.ok){R.error(e("codegen.msg.scaffoldFailed")+": "+(F.reason||_.slice(0,120)));return}R.success(e("codegen.msg.scaffoldSuccess",{id:F.id?.slice(0,8)})),H.value=!1,fe(),await K()}catch(r){R.error(e("codegen.msg.scaffoldFailed")+": "+(r?.message||r))}finally{P.value=!1}}function ze(r){N.value=r,Y.value=!0}function Te(r){X.value=r,Z.value=!0}function ce(){y.prompt="",y.language="",y.framework="",y.code="",y.files=0,y.tokens=0}function fe(){b.template="react",b.projectName="",b.optionsJson="",b.files=0,b.outputPath=""}me(K);const ge={ws:i,t:e,EMPTY_IMG:z,loading:G,generating:S,reviewing:E,scaffolding:P,generations:q,reviews:W,scaffolds:T,stats:M,activeTab:j,languageFilter:D,frameworkFilter:h,templateFilter:O,showGenerateModal:U,showReviewModal:J,showScaffoldModal:H,showGenDetailsModal:Y,showReviewDetailsModal:Z,generateForm:y,reviewForm:p,scaffoldForm:b,reviewResult:I,currentGen:N,currentReview:X,generationColumns:oe,reviewColumns:ae,scaffoldColumns:le,filteredGenerations:ne,filteredScaffolds:C,tmplColor:$,tmplBarColor:re,severityLabel:se,severityColor:ie,severityBarColor:n,pctOfTotal:u,truncate:ee,shellQuote:L,loadAll:K,submitGenerate:Re,submitReview:xe,reviewGeneration:Ie,submitScaffold:Ae,viewGenerationDetails:ze,viewReviewDetails:Te,resetGenerateForm:ce,resetScaffoldForm:fe,ref:w,computed:B,onMounted:me,reactive:te,get ReloadOutlined(){return Be},get PlusOutlined(){return Je},get SafetyOutlined(){return Ue},get CodeOutlined(){return De},get AuditOutlined(){return Ne},get WarningOutlined(){return Me},get CheckCircleOutlined(){return Pe},get AppstoreAddOutlined(){return Ee},get GlobalOutlined(){return Le},get message(){return R},get Empty(){return _e},get useI18n(){return ye},get useWsStore(){return pe},get parseGenerations(){return we},get parseReviews(){return ke},get parseReviewResult(){return he},get parseScaffolds(){return Se},get parseStats(){return Ce},get parseActionResult(){return de},get formatCodegenTime(){return Qe},get SCAFFOLD_TEMPLATES(){return Fe},get REVIEW_SEVERITIES(){return ue}};return Object.defineProperty(ge,"__isScriptSetup",{enumerable:!1,value:!0}),ge}},Ze={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Xe={class:"page-title"},$e={class:"page-sub"},et={class:"tmpl-count"},tt={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},at={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},lt={key:1,style:{color:"var(--text-muted)"}},nt={key:1,style:{color:"var(--text-muted)"}},rt={key:3,style:{color:"var(--text-secondary)"}},st={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},dt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},ct={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ft={key:1,style:{color:"var(--text-muted)"}},gt={key:4,class:"sev-mini"},mt={key:0,style:{color:"#ff4d4f"}},vt={key:1,style:{color:"#fa8c16"}},pt={key:2,style:{color:"#faad14"}},yt={key:3,style:{color:"#888"}},_t={key:4,style:{color:"#1677ff"}},bt={key:5,style:{color:"#52c41a"}},wt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},kt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ht={class:"filter-bar"},St={style:{color:"var(--text-primary)","font-weight":"500"}},Ct={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Ft={key:2,style:{color:"var(--text-secondary)"}},Rt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},xt={key:1,style:{color:"var(--text-muted)"}},It={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},At={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},zt={style:{"padding-top":"8px"}},Tt={key:1},Ot={style:{color:"var(--text-primary)","font-size":"12px",margin:"12px 0 6px"}},Gt={key:0,style:{"padding-top":"8px"}},jt={style:{"font-family":"monospace","font-size":"12px"}},Lt={key:1,style:{color:"var(--text-muted)"}},Et={key:1,style:{color:"var(--text-muted)"}},Pt={class:"code-pre"},Mt={class:"code-pre"},Nt={key:0,style:{"padding-top":"8px"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Ut={style:{"font-family":"monospace","font-size":"12px"}},Jt={style:{"font-family":"monospace","font-size":"12px"}},Bt={key:1,style:{color:"var(--text-muted)"}},Vt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},qt={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Wt={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Ht={style:{"margin-left":"8px",padding:"1px 6px",background:"var(--bg-base)","border-radius":"3px","font-size":"11px"}};function Kt(t,a,i,e,z,G){const S=m("a-button"),E=m("a-menu-item"),P=m("a-menu"),q=m("a-dropdown"),W=m("a-space"),T=m("a-statistic"),M=m("a-card"),j=m("a-col"),D=m("a-row"),h=m("a-tag"),O=m("a-input"),U=m("a-table"),J=m("a-tab-pane"),H=m("a-radio-button"),Y=m("a-radio-group"),Z=m("a-tabs"),y=m("a-textarea"),p=m("a-form-item"),b=m("a-input-number"),I=m("a-form"),N=m("a-modal"),X=m("a-divider"),oe=m("a-empty"),ae=m("a-alert"),le=m("a-select-option"),ne=m("a-select"),C=m("a-descriptions-item"),$=m("a-descriptions"),re=m("a-progress"),se=m("a-list-item"),ie=m("a-list");return d(),f("div",null,[v("div",Ze,[v("div",null,[v("h2",Xe,s(t.$t("codegen.title")),1),v("p",$e,s(t.$t("codegen.subtitle")),1)]),o(W,null,{default:l(()=>[o(S,{loading:e.loading,onClick:e.loadAll},{icon:l(()=>[o(e.ReloadOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.refresh")),1)]),_:1},8,["loading"]),o(S,{onClick:a[0]||(a[0]=n=>e.showReviewModal=!0)},{icon:l(()=>[o(e.SafetyOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.review")),1)]),_:1}),o(q,null,{overlay:l(()=>[o(P,null,{default:l(()=>[o(E,{key:"generate",onClick:a[1]||(a[1]=n=>e.showGenerateModal=!0)},{default:l(()=>[g(s(t.$t("codegen.actions.generate")),1)]),_:1}),o(E,{key:"scaffold",onClick:a[2]||(a[2]=n=>e.showScaffoldModal=!0)},{default:l(()=>[g(s(t.$t("codegen.actions.scaffold")),1)]),_:1})]),_:1})]),default:l(()=>[o(S,{type:"primary"},{icon:l(()=>[o(e.PlusOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stat cards "),o(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.generations"),value:e.stats.generations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[o(e.CodeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.reviews"),value:e.stats.reviews.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[o(e.AuditOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.securityIssues"),value:e.stats.reviews.totalSecurityIssues,"value-style":{color:e.stats.reviews.totalSecurityIssues>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.scaffolds"),value:e.stats.scaffolds.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[o(e.AppstoreAddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:24,sm:8,lg:4},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.languages"),value:e.stats.generations.uniqueLanguages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:l(()=>[o(e.GlobalOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),c(" Template catalogue "),o(M,{title:t.$t("codegen.templatesCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[o(D,{gutter:[12,12]},{default:l(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(j,{key:n,xs:12,sm:8,lg:4},{default:l(()=>[v("div",{class:"tmpl-pill",style:ve({borderLeftColor:e.tmplBarColor(n)})},[o(h,{color:e.tmplColor(n),style:{"font-family":"monospace"}},{default:l(()=>[g(s(n),1)]),_:2},1032,["color"]),v("span",et,s(e.stats.scaffolds.byTemplate[n]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),c(" Tabs "),o(Z,{activeKey:e.activeTab,"onUpdate:activeKey":a[6]||(a[6]=n=>e.activeTab=n),class:"codegen-tabs"},{default:l(()=>[c(" ── Generations tab ────────────────────────────────────── "),o(J,{key:"generations",tab:t.$t("codegen.tabs.generations")},{default:l(()=>[v("div",tt,[o(O,{value:e.languageFilter,"onUpdate:value":a[3]||(a[3]=n=>e.languageFilter=n),placeholder:t.$t("codegen.filter.languagePlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"]),o(O,{value:e.frameworkFilter,"onUpdate:value":a[4]||(a[4]=n=>e.frameworkFilter=n),placeholder:t.$t("codegen.filter.frameworkPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),o(U,{columns:e.generationColumns,"data-source":e.filteredGenerations,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="prompt"?(d(),f(A,{key:0},[v("span",ot,s(e.truncate(u.prompt,60)),1),v("div",at,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.language),1)]),_:2},1024)):(d(),f("span",lt,"—"))],64)):c("v-if",!0),n.key==="framework"?(d(),f(A,{key:2},[u.framework?(d(),k(h,{key:0,color:"purple",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.framework),1)]),_:2},1024)):(d(),f("span",nt,"—"))],64)):c("v-if",!0),n.key==="fileCount"?(d(),f("span",rt,s(u.fileCount),1)):c("v-if",!0),n.key==="tokenCount"?(d(),f("span",st,s(u.tokenCount),1)):c("v-if",!0),n.key==="createdAt"?(d(),f("span",it,s(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0),n.key==="action"?(d(),f(A,{key:6},[o(S,{size:"small",type:"link",onClick:ee=>e.viewGenerationDetails(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"]),u.generatedCode?(d(),k(S,{key:0,size:"small",type:"link",onClick:ee=>e.reviewGeneration(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionReview")),1)]),_:1},8,["onClick"])):c("v-if",!0)],64)):c("v-if",!0)]),emptyText:l(()=>[v("div",dt,[o(e.CodeOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(e.languageFilter||e.frameworkFilter?t.$t("codegen.table.emptyGenerationsFiltered"):t.$t("codegen.table.emptyGenerations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Reviews tab ───────────────────────────────────────── "),o(J,{key:"reviews",tab:t.$t("codegen.tabs.reviews")},{default:l(()=>[o(U,{columns:e.reviewColumns,"data-source":e.reviews,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="codeHash"?(d(),f(A,{key:0},[v("span",ut,s(u.codeHash),1),v("div",ct,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.language),1)]),_:2},1024)):(d(),f("span",ft,"—"))],64)):c("v-if",!0),n.key==="issuesFound"?(d(),k(h,{key:2,color:u.issuesFound===0?"green":u.issuesFound>5?"red":"orange"},{default:l(()=>[g(s(t.$t("codegen.table.issuesSuffix",{n:u.issuesFound})),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="securityIssues"?(d(),f(A,{key:3},[u.securityIssues>0?(d(),k(h,{key:0,color:"red"},{default:l(()=>[o(e.WarningOutlined),g(" "+s(u.securityIssues),1)]),_:2},1024)):(d(),k(h,{key:1,color:"green"},{default:l(()=>[o(e.CheckCircleOutlined),a[26]||(a[26]=g(" 0 ",-1))]),_:1}))],64)):c("v-if",!0),n.key==="severityBreak"?(d(),f("span",gt,[u.severitySummary.critical>0?(d(),f("span",mt,"C:"+s(u.severitySummary.critical),1)):c("v-if",!0),u.severitySummary.high>0?(d(),f("span",vt,"H:"+s(u.severitySummary.high),1)):c("v-if",!0),u.severitySummary.medium>0?(d(),f("span",pt,"M:"+s(u.severitySummary.medium),1)):c("v-if",!0),u.severitySummary.low>0?(d(),f("span",yt,"L:"+s(u.severitySummary.low),1)):c("v-if",!0),u.severitySummary.info>0?(d(),f("span",_t,"I:"+s(u.severitySummary.info),1)):c("v-if",!0),u.issuesFound===0?(d(),f("span",bt,s(t.$t("codegen.table.noIssues")),1)):c("v-if",!0)])):c("v-if",!0),n.key==="reviewedAt"?(d(),f("span",wt,s(e.formatCodegenTime(u.reviewedAt)),1)):c("v-if",!0),n.key==="action"?(d(),k(S,{key:6,size:"small",type:"link",onClick:ee=>e.viewReviewDetails(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"])):c("v-if",!0)]),emptyText:l(()=>[v("div",kt,[o(e.SafetyOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(t.$t("codegen.table.emptyReviews")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Scaffolds tab ─────────────────────────────────────── "),o(J,{key:"scaffolds",tab:t.$t("codegen.tabs.scaffolds")},{default:l(()=>[v("div",ht,[o(Y,{value:e.templateFilter,"onUpdate:value":a[5]||(a[5]=n=>e.templateFilter=n),size:"small","button-style":"solid"},{default:l(()=>[o(H,{value:""},{default:l(()=>[g(s(t.$t("codegen.filter.allTemplates")),1)]),_:1}),(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(H,{key:n,value:n},{default:l(()=>[g(s(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(U,{columns:e.scaffoldColumns,"data-source":e.filteredScaffolds,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="projectName"?(d(),f(A,{key:0},[v("span",St,s(u.projectName||t.$t("codegen.table.unnamed")),1),v("div",Ct,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="template"?(d(),k(h,{key:1,color:e.tmplColor(u.template),style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.template),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="filesGenerated"?(d(),f("span",Ft,s(u.filesGenerated),1)):c("v-if",!0),n.key==="outputPath"?(d(),f(A,{key:3},[u.outputPath?(d(),f("span",Rt,s(e.truncate(u.outputPath,40)),1)):(d(),f("span",xt,"—"))],64)):c("v-if",!0),n.key==="createdAt"?(d(),f("span",It,s(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0)]),emptyText:l(()=>[v("div",At,[o(e.AppstoreAddOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(e.templateFilter?t.$t("codegen.table.emptyScaffoldsFiltered"):t.$t("codegen.table.emptyScaffolds")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),c(" ── Generate modal ──────────────────────────────────────── "),o(N,{open:e.showGenerateModal,"onUpdate:open":a[13]||(a[13]=n=>e.showGenerateModal=n),title:t.$t("codegen.generate_modal.title"),"confirm-loading":e.generating,width:560,"ok-text":t.$t("codegen.generate_modal.ok"),"cancel-text":t.$t("codegen.generate_modal.cancel"),onOk:e.submitGenerate,onCancel:e.resetGenerateForm},{default:l(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(p,{label:t.$t("codegen.generate_modal.promptLabel"),required:""},{default:l(()=>[o(y,{value:e.generateForm.prompt,"onUpdate:value":a[7]||(a[7]=n=>e.generateForm.prompt=n),placeholder:t.$t("codegen.generate_modal.promptPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.languageLabel")},{default:l(()=>[o(O,{value:e.generateForm.language,"onUpdate:value":a[8]||(a[8]=n=>e.generateForm.language=n),placeholder:t.$t("codegen.generate_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.frameworkLabel")},{default:l(()=>[o(O,{value:e.generateForm.framework,"onUpdate:value":a[9]||(a[9]=n=>e.generateForm.framework=n),placeholder:t.$t("codegen.generate_modal.frameworkPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.codeLabel")},{default:l(()=>[o(y,{value:e.generateForm.code,"onUpdate:value":a[10]||(a[10]=n=>e.generateForm.code=n),placeholder:t.$t("codegen.generate_modal.codePlaceholder"),"auto-size":{minRows:3,maxRows:10}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.filesLabel")},{default:l(()=>[o(b,{value:e.generateForm.files,"onUpdate:value":a[11]||(a[11]=n=>e.generateForm.files=n),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.tokensLabel")},{default:l(()=>[o(b,{value:e.generateForm.tokens,"onUpdate:value":a[12]||(a[12]=n=>e.generateForm.tokens=n),min:0,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── Review modal ────────────────────────────────────────── "),o(N,{open:e.showReviewModal,"onUpdate:open":a[17]||(a[17]=n=>e.showReviewModal=n),title:t.$t("codegen.review_modal.title"),width:720,footer:null},{default:l(()=>[v("div",zt,[o(I,{"label-col":{span:5},"wrapper-col":{span:19}},{default:l(()=>[o(p,{label:t.$t("codegen.review_modal.languageLabel")},{default:l(()=>[o(O,{value:e.reviewForm.language,"onUpdate:value":a[14]||(a[14]=n=>e.reviewForm.language=n),placeholder:t.$t("codegen.review_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.generationIdLabel")},{default:l(()=>[o(O,{value:e.reviewForm.generationId,"onUpdate:value":a[15]||(a[15]=n=>e.reviewForm.generationId=n),placeholder:t.$t("codegen.review_modal.generationIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.codeLabel"),required:""},{default:l(()=>[o(y,{value:e.reviewForm.code,"onUpdate:value":a[16]||(a[16]=n=>e.reviewForm.code=n),placeholder:t.$t("codegen.review_modal.codePlaceholder"),"auto-size":{minRows:6,maxRows:16}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{"wrapper-col":{offset:5,span:19}},{default:l(()=>[o(S,{type:"primary",loading:e.reviewing,onClick:e.submitReview},{icon:l(()=>[o(e.SafetyOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.review_modal.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(X),e.reviewResult?(d(),f("div",Tt,[o(D,{gutter:12,style:{"margin-bottom":"12px"}},{default:l(()=>[o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.issuesStat"),value:e.reviewResult.issuesFound,"value-style":{color:e.reviewResult.issuesFound>0?"#fa8c16":"#52c41a",fontSize:"18px"}},null,8,["title","value","value-style"])]),_:1}),o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.securityStat"),value:e.reviewResult.securityIssues,"value-style":{color:e.reviewResult.securityIssues>0?"#ff4d4f":"#52c41a",fontSize:"18px"}},null,8,["title","value","value-style"])]),_:1}),o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.reviewIdStat"),value:e.reviewResult.reviewId?e.reviewResult.reviewId.slice(0,8):"—","value-style":{fontSize:"14px",fontFamily:"monospace"}},null,8,["title","value"])]),_:1})]),_:1}),v("h5",Ot,s(t.$t("codegen.review_modal.bySeverity")),1),o(W,null,{default:l(()=>[(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,n=>(d(),k(h,{key:n,color:e.severityColor(n)},{default:l(()=>[g(s(e.severityLabel(n))+": "+s(e.reviewResult.severitySummary[n]||0),1)]),_:2},1032,["color"]))),128))]),_:1}),e.reviewResult.reason?(d(),k(ae,{key:0,type:"warning","show-icon":"",message:t.$t("codegen.review_modal.failedReason",{reason:e.reviewResult.reason}),style:{"margin-top":"12px"}},null,8,["message"])):c("v-if",!0)])):(d(),k(oe,{key:0,description:t.$t("codegen.review_modal.notReviewed"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),c(" ── Scaffold modal ──────────────────────────────────────── "),o(N,{open:e.showScaffoldModal,"onUpdate:open":a[23]||(a[23]=n=>e.showScaffoldModal=n),title:t.$t("codegen.scaffold_modal.title"),"confirm-loading":e.scaffolding,width:560,"ok-text":t.$t("codegen.scaffold_modal.ok"),"cancel-text":t.$t("codegen.scaffold_modal.cancel"),onOk:e.submitScaffold,onCancel:e.resetScaffoldForm},{default:l(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(p,{label:t.$t("codegen.scaffold_modal.templateLabel"),required:""},{default:l(()=>[o(ne,{value:e.scaffoldForm.template,"onUpdate:value":a[18]||(a[18]=n=>e.scaffoldForm.template=n)},{default:l(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(le,{key:n,value:n},{default:l(()=>[g(s(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.projectLabel"),required:""},{default:l(()=>[o(O,{value:e.scaffoldForm.projectName,"onUpdate:value":a[19]||(a[19]=n=>e.scaffoldForm.projectName=n),placeholder:t.$t("codegen.scaffold_modal.projectPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.optionsLabel")},{default:l(()=>[o(y,{value:e.scaffoldForm.optionsJson,"onUpdate:value":a[20]||(a[20]=n=>e.scaffoldForm.optionsJson=n),placeholder:t.$t("codegen.scaffold_modal.optionsPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.filesLabel")},{default:l(()=>[o(b,{value:e.scaffoldForm.files,"onUpdate:value":a[21]||(a[21]=n=>e.scaffoldForm.files=n),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.outputLabel")},{default:l(()=>[o(O,{value:e.scaffoldForm.outputPath,"onUpdate:value":a[22]||(a[22]=n=>e.scaffoldForm.outputPath=n),placeholder:t.$t("codegen.scaffold_modal.outputPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── Generation details modal ───────────────────────────── "),o(N,{open:e.showGenDetailsModal,"onUpdate:open":a[24]||(a[24]=n=>e.showGenDetailsModal=n),title:t.$t("codegen.gen_details.title",{id:e.currentGen?.id?.slice(0,12)||""}),width:780,footer:null},{default:l(()=>[e.currentGen?(d(),f("div",Gt,[o($,{column:2,size:"small",bordered:""},{default:l(()=>[o(C,{label:t.$t("codegen.gen_details.id"),span:2},{default:l(()=>[v("span",jt,s(e.currentGen.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.language")},{default:l(()=>[e.currentGen.language?(d(),k(h,{key:0,color:"blue"},{default:l(()=>[g(s(e.currentGen.language),1)]),_:1})):(d(),f("span",Lt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.framework")},{default:l(()=>[e.currentGen.framework?(d(),k(h,{key:0,color:"purple"},{default:l(()=>[g(s(e.currentGen.framework),1)]),_:1})):(d(),f("span",Et,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.fileCount")},{default:l(()=>[g(s(e.currentGen.fileCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.tokenCount")},{default:l(()=>[g(s(e.currentGen.tokenCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.createdAt"),span:2},{default:l(()=>[g(s(e.formatCodegenTime(e.currentGen.createdAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.prompt"),span:2},{default:l(()=>[v("pre",Pt,s(e.currentGen.prompt),1)]),_:1},8,["label"]),e.currentGen.generatedCode?(d(),k(C,{key:0,label:t.$t("codegen.gen_details.code"),span:2},{default:l(()=>[v("pre",Mt,s(e.truncate(e.currentGen.generatedCode,2e3)),1)]),_:1},8,["label"])):c("v-if",!0)]),_:1})])):c("v-if",!0)]),_:1},8,["open","title"]),c(" ── Review details modal ──────────────────────────────── "),o(N,{open:e.showReviewDetailsModal,"onUpdate:open":a[25]||(a[25]=n=>e.showReviewDetailsModal=n),title:t.$t("codegen.review_details.title",{id:e.currentReview?.id?.slice(0,12)||""}),width:720,footer:null},{default:l(()=>[e.currentReview?(d(),f("div",Nt,[o($,{column:2,size:"small",bordered:""},{default:l(()=>[o(C,{label:t.$t("codegen.review_details.id"),span:2},{default:l(()=>[v("span",Dt,s(e.currentReview.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.codeHash"),span:2},{default:l(()=>[v("span",Ut,s(e.currentReview.codeHash),1)]),_:1},8,["label"]),e.currentReview.generationId?(d(),k(C,{key:0,label:t.$t("codegen.review_details.generationId"),span:2},{default:l(()=>[v("span",Jt,s(e.currentReview.generationId),1)]),_:1},8,["label"])):c("v-if",!0),o(C,{label:t.$t("codegen.review_details.language")},{default:l(()=>[e.currentReview.language?(d(),k(h,{key:0,color:"blue"},{default:l(()=>[g(s(e.currentReview.language),1)]),_:1})):(d(),f("span",Bt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.reviewedAt")},{default:l(()=>[g(s(e.formatCodegenTime(e.currentReview.reviewedAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.issuesFound")},{default:l(()=>[g(s(e.currentReview.issuesFound),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.securityIssues")},{default:l(()=>[v("span",{style:ve({color:e.currentReview.securityIssues>0?"#ff4d4f":"#52c41a"})},s(e.currentReview.securityIssues),5)]),_:1},8,["label"])]),_:1}),v("h4",Vt,s(t.$t("codegen.review_details.bySeverity")),1),(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,n=>(d(),f("div",{key:n,class:"bd-row"},[o(h,{color:e.severityColor(n),style:{"min-width":"70px","text-align":"center"}},{default:l(()=>[g(s(e.severityLabel(n)),1)]),_:2},1032,["color"]),o(re,{percent:e.pctOfTotal(e.currentReview.severitySummary[n]||0,e.currentReview.issuesFound),"stroke-color":e.severityBarColor(n),format:()=>`${e.currentReview.severitySummary[n]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentReview.issuesDetail.length?(d(),f("h4",qt,s(t.$t("codegen.review_details.issues")),1)):c("v-if",!0),e.currentReview.issuesDetail.length?(d(),k(ie,{key:1,size:"small","data-source":e.currentReview.issuesDetail,pagination:{pageSize:8}},{renderItem:l(({item:n})=>[o(se,null,{default:l(()=>[o(h,{color:e.severityColor(n.severity),style:{"min-width":"60px","text-align":"center"}},{default:l(()=>[g(s(e.severityLabel(n.severity)),1)]),_:2},1032,["color"]),v("span",Wt,s(n.rule),1),v("code",Ht,s(e.truncate(n.match,60)),1)]),_:2},1024)]),_:1},8,["data-source"])):c("v-if",!0)])):c("v-if",!0)]),_:1},8,["open","title"])])}const $t=Ge(Ye,[["render",Kt],["__scopeId","data-v-b0047198"],["__file","/tmp/cc-web-panel-UKI3LY/repo/packages/web-panel/src/views/Codegen.vue"]]);export{$t as default};
1
+ import{I as m,J as f,U as v,R as s,c as o,K as l,V as c,o as me,a as te,b as B,r as w,P as d,Q as g,F as A,Z as Q,S as k,$ as ve}from"./vendor-BvqAck49.js";import{_ as Ge,u as pe,b as ye,E as _e,d as R}from"./index-BR-DF81e.js";import{s as je}from"./community-parser-CO25nZFt.js";import{a6 as Ee,aZ as Le,f as Pe,am as Me,A as Ne,Q as De,r as Ue,as as Je,R as Be}from"./icons-DP3uiYxy.js";function V(t){const a=je(t);if(!a)return null;try{return JSON.parse(a)}catch{}const i=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const Fe=Object.freeze(["react","vue","express","fastapi","spring_boot"]),ue=Object.freeze(["critical","high","medium","low","info"]);function x(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function be(t,a=null){if(t==null)return a;if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return a}}function Ve(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,prompt:String(t.prompt||""),language:t.language??"",framework:t.framework??"",generatedCode:t.generated_code??t.generatedCode??"",fileCount:x(t.file_count??t.fileCount,0),tokenCount:x(t.token_count??t.tokenCount,0),metadata:t.metadata??null,createdAt:t.created_at??t.createdAt??null,_idx:a}:null}function we(t){const a=V(t);return Array.isArray(a)?a.map(Ve).filter(Boolean):[]}function qe(t,a=0){return!t||typeof t!="object"?null:{key:a,rule:String(t.rule||""),severity:String(t.severity||"info").toLowerCase(),match:String(t.match||""),pattern:String(t.pattern||"")}}function He(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";if(!i)return null;const e=be(t.severity_summary??t.severitySummary,null)??t.severity_summary??t.severitySummary,z={};for(const L of ue)z[L]=0;if(e&&typeof e=="object"&&!Array.isArray(e))for(const[L,P]of Object.entries(e))typeof P=="number"&&Number.isFinite(P)&&(z[L]=P);const G=be(t.issues_detail??t.issuesDetail,null)??t.issues_detail??t.issuesDetail,S=Array.isArray(G)?G.map(qe).filter(Boolean):[];return{key:i,id:i,generationId:t.generation_id??t.generationId??"",codeHash:String(t.code_hash??t.codeHash??""),language:t.language??"",issuesFound:x(t.issues_found??t.issuesFound,0),securityIssues:x(t.security_issues??t.securityIssues,0),severitySummary:z,issuesDetail:S,reviewedAt:t.reviewed_at??t.reviewedAt??null,_idx:a}}function ke(t){const a=V(t);return Array.isArray(a)?a.map(He).filter(Boolean):[]}function he(t){const a={};for(const G of ue)a[G]=0;const i=V(t);if(!i||typeof i!="object"||Array.isArray(i))return{ok:!1,reviewId:null,reason:"",issuesFound:0,securityIssues:0,severitySummary:a};const e=!!i.reviewId,z={...a};if(i.severitySummary&&typeof i.severitySummary=="object"&&!Array.isArray(i.severitySummary))for(const[G,S]of Object.entries(i.severitySummary))typeof S=="number"&&Number.isFinite(S)&&(z[G]=S);return{ok:e,reviewId:i.reviewId?String(i.reviewId):null,reason:i.reason?String(i.reason):"",issuesFound:x(i.issuesFound,0),securityIssues:x(i.securityIssues,0),severitySummary:z}}function We(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,template:String(t.template||""),projectName:t.project_name??t.projectName??"",options:t.options??null,filesGenerated:x(t.files_generated??t.filesGenerated,0),outputPath:t.output_path??t.outputPath??"",createdAt:t.created_at??t.createdAt??null,_idx:a}:null}function Se(t){const a=V(t);return Array.isArray(a)?a.map(We).filter(Boolean):[]}const Ke={generations:{total:0,totalTokens:0,totalFiles:0,uniqueLanguages:0},reviews:{total:0,totalIssues:0,totalSecurityIssues:0,avgIssuesPerReview:0},scaffolds:{total:0,byTemplate:{}}};function Ce(t){const a=JSON.parse(JSON.stringify(Ke));for(const e of Fe)a.scaffolds.byTemplate[e]=0;const i=V(t);if(!i||typeof i!="object"||Array.isArray(i))return a;if(i.generations&&typeof i.generations=="object"&&(a.generations.total=x(i.generations.total,0),a.generations.totalTokens=x(i.generations.totalTokens,0),a.generations.totalFiles=x(i.generations.totalFiles,0),a.generations.uniqueLanguages=x(i.generations.uniqueLanguages,0)),i.reviews&&typeof i.reviews=="object"&&(a.reviews.total=x(i.reviews.total,0),a.reviews.totalIssues=x(i.reviews.totalIssues,0),a.reviews.totalSecurityIssues=x(i.reviews.totalSecurityIssues,0),a.reviews.avgIssuesPerReview=x(i.reviews.avgIssuesPerReview,0)),i.scaffolds&&typeof i.scaffolds=="object"&&(a.scaffolds.total=x(i.scaffolds.total,0),i.scaffolds.byTemplate&&typeof i.scaffolds.byTemplate=="object"))for(const[e,z]of Object.entries(i.scaffolds.byTemplate))typeof z=="number"&&Number.isFinite(z)&&(a.scaffolds.byTemplate[e]=z);return a}function de(t){const a=V(t);if(!a||typeof a!="object"||Array.isArray(a))return{ok:!1,id:null,reason:""};const i=a.generationId||a.scaffoldId||a.reviewId||null;return{ok:!!i,id:i?String(i):null,reason:a.reason?String(a.reason):""}}function Qe(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const Ye={__name:"Codegen",setup(t,{expose:a}){a();const i=pe(),{t:e}=ye(),z=_e.PRESENTED_IMAGE_SIMPLE,G=w(!1),S=w(!1),L=w(!1),P=w(!1),q=w([]),H=w([]),T=w([]),M=w({generations:{total:0,totalTokens:0,totalFiles:0,uniqueLanguages:0},reviews:{total:0,totalIssues:0,totalSecurityIssues:0,avgIssuesPerReview:0},scaffolds:{total:0,byTemplate:{}}}),j=w("generations"),D=w(""),h=w(""),O=w(""),U=w(!1),J=w(!1),W=w(!1),Y=w(!1),Z=w(!1),y=te({prompt:"",language:"",framework:"",code:"",files:0,tokens:0}),p=te({generationId:"",language:"",code:""}),b=te({template:"react",projectName:"",optionsJson:"",files:0,outputPath:""}),I=w(null),N=w(null),X=w(null),oe=B(()=>[{title:e("codegen.generationCols.prompt"),key:"prompt"},{title:e("codegen.generationCols.language"),key:"language",width:"110px"},{title:e("codegen.generationCols.framework"),key:"framework",width:"110px"},{title:e("codegen.generationCols.fileCount"),key:"fileCount",width:"70px"},{title:e("codegen.generationCols.tokenCount"),key:"tokenCount",width:"110px"},{title:e("codegen.generationCols.createdAt"),key:"createdAt",width:"160px"},{title:e("codegen.generationCols.action"),key:"action",width:"140px"}]),ae=B(()=>[{title:e("codegen.reviewCols.codeHash"),key:"codeHash",width:"180px"},{title:e("codegen.reviewCols.language"),key:"language",width:"110px"},{title:e("codegen.reviewCols.issuesFound"),key:"issuesFound",width:"90px"},{title:e("codegen.reviewCols.securityIssues"),key:"securityIssues",width:"90px"},{title:e("codegen.reviewCols.severityBreak"),key:"severityBreak"},{title:e("codegen.reviewCols.reviewedAt"),key:"reviewedAt",width:"160px"},{title:e("codegen.reviewCols.action"),key:"action",width:"90px"}]),le=B(()=>[{title:e("codegen.scaffoldCols.projectName"),key:"projectName"},{title:e("codegen.scaffoldCols.template"),key:"template",width:"120px"},{title:e("codegen.scaffoldCols.filesGenerated"),key:"filesGenerated",width:"90px"},{title:e("codegen.scaffoldCols.outputPath"),key:"outputPath",width:"300px"},{title:e("codegen.scaffoldCols.createdAt"),key:"createdAt",width:"160px"}]),ne=B(()=>{let r=q.value;if(D.value.trim()){const _=D.value.trim().toLowerCase();r=r.filter(F=>(F.language||"").toLowerCase().includes(_))}if(h.value.trim()){const _=h.value.trim().toLowerCase();r=r.filter(F=>(F.framework||"").toLowerCase().includes(_))}return r}),C=B(()=>O.value?T.value.filter(r=>r.template===O.value):T.value);function $(r){return{react:"cyan",vue:"green",express:"gold",fastapi:"magenta",spring_boot:"red"}[r]||"default"}function re(r){return{react:"#13c2c2",vue:"#52c41a",express:"#faad14",fastapi:"#eb2f96",spring_boot:"#ff4d4f"}[r]||"#888"}function se(r){const _=`codegen.severityLabels.${r}`,F=e(_);return F===_?r:F}function ie(r){return{critical:"red",high:"orange",medium:"gold",low:"default",info:"blue"}[r]||"default"}function n(r){return{critical:"#ff4d4f",high:"#fa8c16",medium:"#faad14",low:"#888",info:"#1677ff"}[r]||"#888"}function u(r,_){return _?Math.round(r/_*100):0}function ee(r,_){return r?r.length<=_?r:r.slice(0,_)+"…":""}function E(r){return`"${String(r).replace(/"/g,'\\"')}"`}async function K(){G.value=!0;try{const[r,_,F,Oe]=await Promise.all([i.execute("codegen list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen reviews --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen scaffolds --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen stats --json",8e3).catch(()=>({output:""}))]);q.value=we(r.output),H.value=ke(_.output),T.value=Se(F.output),M.value=Ce(Oe.output)}catch(r){R.error(e("codegen.msg.loadFailed")+": "+(r?.message||r))}finally{G.value=!1}}async function Re(){if(!y.prompt.trim()){R.warning(e("codegen.msg.promptEmpty"));return}S.value=!0;try{const r=[`codegen generate -p ${E(y.prompt.trim())}`];y.language.trim()&&r.push(`-l ${E(y.language.trim())}`),y.framework.trim()&&r.push(`-f ${E(y.framework.trim())}`),y.code.trim()&&r.push(`--code ${E(y.code.trim())}`),y.files>0&&r.push(`--files ${y.files}`),y.tokens>0&&r.push(`--tokens ${y.tokens}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4),F=de(_);if(!F.ok){R.error(e("codegen.msg.generateFailed")+": "+(F.reason||_.slice(0,120)));return}R.success(e("codegen.msg.generateSuccess",{id:F.id?.slice(0,8)})),U.value=!1,ce(),await K()}catch(r){R.error(e("codegen.msg.generateFailed")+": "+(r?.message||r))}finally{S.value=!1}}async function xe(){if(!p.code.trim()){R.warning(e("codegen.msg.codeEmpty"));return}L.value=!0,I.value=null;try{const r=[`codegen review -c ${E(p.code)}`];p.language.trim()&&r.push(`-l ${E(p.language.trim())}`),p.generationId.trim()&&r.push(`-g ${E(p.generationId.trim())}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4);I.value=he(_),!I.value.ok&&I.value.reason?R.error(e("codegen.msg.reviewFailed")+": "+I.value.reason):I.value.ok?(R.success(e("codegen.msg.reviewSuccess",{n:I.value.issuesFound,sec:I.value.securityIssues})),await K()):R.error(e("codegen.msg.reviewFailed")+": "+_.slice(0,120))}catch(r){R.error(e("codegen.msg.reviewFailed")+": "+(r?.message||r))}finally{L.value=!1}}async function Ie(r){p.generationId=r.id,p.language=r.language||"",p.code=r.generatedCode||"",I.value=null,J.value=!0}async function Ae(){if(!b.projectName.trim()){R.warning(e("codegen.msg.projectEmpty"));return}if(b.optionsJson.trim())try{JSON.parse(b.optionsJson)}catch{R.warning(e("codegen.msg.optionsBadJson"));return}P.value=!0;try{const r=[`codegen scaffold -t ${b.template}`,`-n ${E(b.projectName.trim())}`];b.optionsJson.trim()&&r.push(`-o ${E(b.optionsJson.trim())}`),b.files>0&&r.push(`--files ${b.files}`),b.outputPath.trim()&&r.push(`--output ${E(b.outputPath.trim())}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4),F=de(_);if(!F.ok){R.error(e("codegen.msg.scaffoldFailed")+": "+(F.reason||_.slice(0,120)));return}R.success(e("codegen.msg.scaffoldSuccess",{id:F.id?.slice(0,8)})),W.value=!1,fe(),await K()}catch(r){R.error(e("codegen.msg.scaffoldFailed")+": "+(r?.message||r))}finally{P.value=!1}}function ze(r){N.value=r,Y.value=!0}function Te(r){X.value=r,Z.value=!0}function ce(){y.prompt="",y.language="",y.framework="",y.code="",y.files=0,y.tokens=0}function fe(){b.template="react",b.projectName="",b.optionsJson="",b.files=0,b.outputPath=""}me(K);const ge={ws:i,t:e,EMPTY_IMG:z,loading:G,generating:S,reviewing:L,scaffolding:P,generations:q,reviews:H,scaffolds:T,stats:M,activeTab:j,languageFilter:D,frameworkFilter:h,templateFilter:O,showGenerateModal:U,showReviewModal:J,showScaffoldModal:W,showGenDetailsModal:Y,showReviewDetailsModal:Z,generateForm:y,reviewForm:p,scaffoldForm:b,reviewResult:I,currentGen:N,currentReview:X,generationColumns:oe,reviewColumns:ae,scaffoldColumns:le,filteredGenerations:ne,filteredScaffolds:C,tmplColor:$,tmplBarColor:re,severityLabel:se,severityColor:ie,severityBarColor:n,pctOfTotal:u,truncate:ee,shellQuote:E,loadAll:K,submitGenerate:Re,submitReview:xe,reviewGeneration:Ie,submitScaffold:Ae,viewGenerationDetails:ze,viewReviewDetails:Te,resetGenerateForm:ce,resetScaffoldForm:fe,ref:w,computed:B,onMounted:me,reactive:te,get ReloadOutlined(){return Be},get PlusOutlined(){return Je},get SafetyOutlined(){return Ue},get CodeOutlined(){return De},get AuditOutlined(){return Ne},get WarningOutlined(){return Me},get CheckCircleOutlined(){return Pe},get AppstoreAddOutlined(){return Le},get GlobalOutlined(){return Ee},get message(){return R},get Empty(){return _e},get useI18n(){return ye},get useWsStore(){return pe},get parseGenerations(){return we},get parseReviews(){return ke},get parseReviewResult(){return he},get parseScaffolds(){return Se},get parseStats(){return Ce},get parseActionResult(){return de},get formatCodegenTime(){return Qe},get SCAFFOLD_TEMPLATES(){return Fe},get REVIEW_SEVERITIES(){return ue}};return Object.defineProperty(ge,"__isScriptSetup",{enumerable:!1,value:!0}),ge}},Ze={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Xe={class:"page-title"},$e={class:"page-sub"},et={class:"tmpl-count"},tt={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},at={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},lt={key:1,style:{color:"var(--text-muted)"}},nt={key:1,style:{color:"var(--text-muted)"}},rt={key:3,style:{color:"var(--text-secondary)"}},st={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},dt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},ct={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ft={key:1,style:{color:"var(--text-muted)"}},gt={key:4,class:"sev-mini"},mt={key:0,style:{color:"#ff4d4f"}},vt={key:1,style:{color:"#fa8c16"}},pt={key:2,style:{color:"#faad14"}},yt={key:3,style:{color:"#888"}},_t={key:4,style:{color:"#1677ff"}},bt={key:5,style:{color:"#52c41a"}},wt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},kt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ht={class:"filter-bar"},St={style:{color:"var(--text-primary)","font-weight":"500"}},Ct={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Ft={key:2,style:{color:"var(--text-secondary)"}},Rt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},xt={key:1,style:{color:"var(--text-muted)"}},It={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},At={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},zt={style:{"padding-top":"8px"}},Tt={key:1},Ot={style:{color:"var(--text-primary)","font-size":"12px",margin:"12px 0 6px"}},Gt={key:0,style:{"padding-top":"8px"}},jt={style:{"font-family":"monospace","font-size":"12px"}},Et={key:1,style:{color:"var(--text-muted)"}},Lt={key:1,style:{color:"var(--text-muted)"}},Pt={class:"code-pre"},Mt={class:"code-pre"},Nt={key:0,style:{"padding-top":"8px"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Ut={style:{"font-family":"monospace","font-size":"12px"}},Jt={style:{"font-family":"monospace","font-size":"12px"}},Bt={key:1,style:{color:"var(--text-muted)"}},Vt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},qt={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Ht={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Wt={style:{"margin-left":"8px",padding:"1px 6px",background:"var(--bg-base)","border-radius":"3px","font-size":"11px"}};function Kt(t,a,i,e,z,G){const S=m("a-button"),L=m("a-menu-item"),P=m("a-menu"),q=m("a-dropdown"),H=m("a-space"),T=m("a-statistic"),M=m("a-card"),j=m("a-col"),D=m("a-row"),h=m("a-tag"),O=m("a-input"),U=m("a-table"),J=m("a-tab-pane"),W=m("a-radio-button"),Y=m("a-radio-group"),Z=m("a-tabs"),y=m("a-textarea"),p=m("a-form-item"),b=m("a-input-number"),I=m("a-form"),N=m("a-modal"),X=m("a-divider"),oe=m("a-empty"),ae=m("a-alert"),le=m("a-select-option"),ne=m("a-select"),C=m("a-descriptions-item"),$=m("a-descriptions"),re=m("a-progress"),se=m("a-list-item"),ie=m("a-list");return d(),f("div",null,[v("div",Ze,[v("div",null,[v("h2",Xe,s(t.$t("codegen.title")),1),v("p",$e,s(t.$t("codegen.subtitle")),1)]),o(H,null,{default:l(()=>[o(S,{loading:e.loading,onClick:e.loadAll},{icon:l(()=>[o(e.ReloadOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.refresh")),1)]),_:1},8,["loading"]),o(S,{onClick:a[0]||(a[0]=n=>e.showReviewModal=!0)},{icon:l(()=>[o(e.SafetyOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.review")),1)]),_:1}),o(q,null,{overlay:l(()=>[o(P,null,{default:l(()=>[o(L,{key:"generate",onClick:a[1]||(a[1]=n=>e.showGenerateModal=!0)},{default:l(()=>[g(s(t.$t("codegen.actions.generate")),1)]),_:1}),o(L,{key:"scaffold",onClick:a[2]||(a[2]=n=>e.showScaffoldModal=!0)},{default:l(()=>[g(s(t.$t("codegen.actions.scaffold")),1)]),_:1})]),_:1})]),default:l(()=>[o(S,{type:"primary"},{icon:l(()=>[o(e.PlusOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stat cards "),o(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.generations"),value:e.stats.generations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[o(e.CodeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.reviews"),value:e.stats.reviews.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[o(e.AuditOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.securityIssues"),value:e.stats.reviews.totalSecurityIssues,"value-style":{color:e.stats.reviews.totalSecurityIssues>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.scaffolds"),value:e.stats.scaffolds.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[o(e.AppstoreAddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:24,sm:8,lg:4},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.languages"),value:e.stats.generations.uniqueLanguages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:l(()=>[o(e.GlobalOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),c(" Template catalogue "),o(M,{title:t.$t("codegen.templatesCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[o(D,{gutter:[12,12]},{default:l(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(j,{key:n,xs:12,sm:8,lg:4},{default:l(()=>[v("div",{class:"tmpl-pill",style:ve({borderLeftColor:e.tmplBarColor(n)})},[o(h,{color:e.tmplColor(n),style:{"font-family":"monospace"}},{default:l(()=>[g(s(n),1)]),_:2},1032,["color"]),v("span",et,s(e.stats.scaffolds.byTemplate[n]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),c(" Tabs "),o(Z,{activeKey:e.activeTab,"onUpdate:activeKey":a[6]||(a[6]=n=>e.activeTab=n),class:"codegen-tabs"},{default:l(()=>[c(" ── Generations tab ────────────────────────────────────── "),o(J,{key:"generations",tab:t.$t("codegen.tabs.generations")},{default:l(()=>[v("div",tt,[o(O,{value:e.languageFilter,"onUpdate:value":a[3]||(a[3]=n=>e.languageFilter=n),placeholder:t.$t("codegen.filter.languagePlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"]),o(O,{value:e.frameworkFilter,"onUpdate:value":a[4]||(a[4]=n=>e.frameworkFilter=n),placeholder:t.$t("codegen.filter.frameworkPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),o(U,{columns:e.generationColumns,"data-source":e.filteredGenerations,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="prompt"?(d(),f(A,{key:0},[v("span",ot,s(e.truncate(u.prompt,60)),1),v("div",at,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.language),1)]),_:2},1024)):(d(),f("span",lt,"—"))],64)):c("v-if",!0),n.key==="framework"?(d(),f(A,{key:2},[u.framework?(d(),k(h,{key:0,color:"purple",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.framework),1)]),_:2},1024)):(d(),f("span",nt,"—"))],64)):c("v-if",!0),n.key==="fileCount"?(d(),f("span",rt,s(u.fileCount),1)):c("v-if",!0),n.key==="tokenCount"?(d(),f("span",st,s(u.tokenCount),1)):c("v-if",!0),n.key==="createdAt"?(d(),f("span",it,s(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0),n.key==="action"?(d(),f(A,{key:6},[o(S,{size:"small",type:"link",onClick:ee=>e.viewGenerationDetails(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"]),u.generatedCode?(d(),k(S,{key:0,size:"small",type:"link",onClick:ee=>e.reviewGeneration(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionReview")),1)]),_:1},8,["onClick"])):c("v-if",!0)],64)):c("v-if",!0)]),emptyText:l(()=>[v("div",dt,[o(e.CodeOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(e.languageFilter||e.frameworkFilter?t.$t("codegen.table.emptyGenerationsFiltered"):t.$t("codegen.table.emptyGenerations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Reviews tab ───────────────────────────────────────── "),o(J,{key:"reviews",tab:t.$t("codegen.tabs.reviews")},{default:l(()=>[o(U,{columns:e.reviewColumns,"data-source":e.reviews,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="codeHash"?(d(),f(A,{key:0},[v("span",ut,s(u.codeHash),1),v("div",ct,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.language),1)]),_:2},1024)):(d(),f("span",ft,"—"))],64)):c("v-if",!0),n.key==="issuesFound"?(d(),k(h,{key:2,color:u.issuesFound===0?"green":u.issuesFound>5?"red":"orange"},{default:l(()=>[g(s(t.$t("codegen.table.issuesSuffix",{n:u.issuesFound})),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="securityIssues"?(d(),f(A,{key:3},[u.securityIssues>0?(d(),k(h,{key:0,color:"red"},{default:l(()=>[o(e.WarningOutlined),g(" "+s(u.securityIssues),1)]),_:2},1024)):(d(),k(h,{key:1,color:"green"},{default:l(()=>[o(e.CheckCircleOutlined),a[26]||(a[26]=g(" 0 ",-1))]),_:1}))],64)):c("v-if",!0),n.key==="severityBreak"?(d(),f("span",gt,[u.severitySummary.critical>0?(d(),f("span",mt,"C:"+s(u.severitySummary.critical),1)):c("v-if",!0),u.severitySummary.high>0?(d(),f("span",vt,"H:"+s(u.severitySummary.high),1)):c("v-if",!0),u.severitySummary.medium>0?(d(),f("span",pt,"M:"+s(u.severitySummary.medium),1)):c("v-if",!0),u.severitySummary.low>0?(d(),f("span",yt,"L:"+s(u.severitySummary.low),1)):c("v-if",!0),u.severitySummary.info>0?(d(),f("span",_t,"I:"+s(u.severitySummary.info),1)):c("v-if",!0),u.issuesFound===0?(d(),f("span",bt,s(t.$t("codegen.table.noIssues")),1)):c("v-if",!0)])):c("v-if",!0),n.key==="reviewedAt"?(d(),f("span",wt,s(e.formatCodegenTime(u.reviewedAt)),1)):c("v-if",!0),n.key==="action"?(d(),k(S,{key:6,size:"small",type:"link",onClick:ee=>e.viewReviewDetails(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"])):c("v-if",!0)]),emptyText:l(()=>[v("div",kt,[o(e.SafetyOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(t.$t("codegen.table.emptyReviews")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Scaffolds tab ─────────────────────────────────────── "),o(J,{key:"scaffolds",tab:t.$t("codegen.tabs.scaffolds")},{default:l(()=>[v("div",ht,[o(Y,{value:e.templateFilter,"onUpdate:value":a[5]||(a[5]=n=>e.templateFilter=n),size:"small","button-style":"solid"},{default:l(()=>[o(W,{value:""},{default:l(()=>[g(s(t.$t("codegen.filter.allTemplates")),1)]),_:1}),(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(W,{key:n,value:n},{default:l(()=>[g(s(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(U,{columns:e.scaffoldColumns,"data-source":e.filteredScaffolds,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="projectName"?(d(),f(A,{key:0},[v("span",St,s(u.projectName||t.$t("codegen.table.unnamed")),1),v("div",Ct,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="template"?(d(),k(h,{key:1,color:e.tmplColor(u.template),style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.template),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="filesGenerated"?(d(),f("span",Ft,s(u.filesGenerated),1)):c("v-if",!0),n.key==="outputPath"?(d(),f(A,{key:3},[u.outputPath?(d(),f("span",Rt,s(e.truncate(u.outputPath,40)),1)):(d(),f("span",xt,"—"))],64)):c("v-if",!0),n.key==="createdAt"?(d(),f("span",It,s(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0)]),emptyText:l(()=>[v("div",At,[o(e.AppstoreAddOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(e.templateFilter?t.$t("codegen.table.emptyScaffoldsFiltered"):t.$t("codegen.table.emptyScaffolds")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),c(" ── Generate modal ──────────────────────────────────────── "),o(N,{open:e.showGenerateModal,"onUpdate:open":a[13]||(a[13]=n=>e.showGenerateModal=n),title:t.$t("codegen.generate_modal.title"),"confirm-loading":e.generating,width:560,"ok-text":t.$t("codegen.generate_modal.ok"),"cancel-text":t.$t("codegen.generate_modal.cancel"),onOk:e.submitGenerate,onCancel:e.resetGenerateForm},{default:l(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(p,{label:t.$t("codegen.generate_modal.promptLabel"),required:""},{default:l(()=>[o(y,{value:e.generateForm.prompt,"onUpdate:value":a[7]||(a[7]=n=>e.generateForm.prompt=n),placeholder:t.$t("codegen.generate_modal.promptPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.languageLabel")},{default:l(()=>[o(O,{value:e.generateForm.language,"onUpdate:value":a[8]||(a[8]=n=>e.generateForm.language=n),placeholder:t.$t("codegen.generate_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.frameworkLabel")},{default:l(()=>[o(O,{value:e.generateForm.framework,"onUpdate:value":a[9]||(a[9]=n=>e.generateForm.framework=n),placeholder:t.$t("codegen.generate_modal.frameworkPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.codeLabel")},{default:l(()=>[o(y,{value:e.generateForm.code,"onUpdate:value":a[10]||(a[10]=n=>e.generateForm.code=n),placeholder:t.$t("codegen.generate_modal.codePlaceholder"),"auto-size":{minRows:3,maxRows:10}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.filesLabel")},{default:l(()=>[o(b,{value:e.generateForm.files,"onUpdate:value":a[11]||(a[11]=n=>e.generateForm.files=n),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.tokensLabel")},{default:l(()=>[o(b,{value:e.generateForm.tokens,"onUpdate:value":a[12]||(a[12]=n=>e.generateForm.tokens=n),min:0,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── Review modal ────────────────────────────────────────── "),o(N,{open:e.showReviewModal,"onUpdate:open":a[17]||(a[17]=n=>e.showReviewModal=n),title:t.$t("codegen.review_modal.title"),width:720,footer:null},{default:l(()=>[v("div",zt,[o(I,{"label-col":{span:5},"wrapper-col":{span:19}},{default:l(()=>[o(p,{label:t.$t("codegen.review_modal.languageLabel")},{default:l(()=>[o(O,{value:e.reviewForm.language,"onUpdate:value":a[14]||(a[14]=n=>e.reviewForm.language=n),placeholder:t.$t("codegen.review_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.generationIdLabel")},{default:l(()=>[o(O,{value:e.reviewForm.generationId,"onUpdate:value":a[15]||(a[15]=n=>e.reviewForm.generationId=n),placeholder:t.$t("codegen.review_modal.generationIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.codeLabel"),required:""},{default:l(()=>[o(y,{value:e.reviewForm.code,"onUpdate:value":a[16]||(a[16]=n=>e.reviewForm.code=n),placeholder:t.$t("codegen.review_modal.codePlaceholder"),"auto-size":{minRows:6,maxRows:16}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{"wrapper-col":{offset:5,span:19}},{default:l(()=>[o(S,{type:"primary",loading:e.reviewing,onClick:e.submitReview},{icon:l(()=>[o(e.SafetyOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.review_modal.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(X),e.reviewResult?(d(),f("div",Tt,[o(D,{gutter:12,style:{"margin-bottom":"12px"}},{default:l(()=>[o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.issuesStat"),value:e.reviewResult.issuesFound,"value-style":{color:e.reviewResult.issuesFound>0?"#fa8c16":"#52c41a",fontSize:"18px"}},null,8,["title","value","value-style"])]),_:1}),o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.securityStat"),value:e.reviewResult.securityIssues,"value-style":{color:e.reviewResult.securityIssues>0?"#ff4d4f":"#52c41a",fontSize:"18px"}},null,8,["title","value","value-style"])]),_:1}),o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.reviewIdStat"),value:e.reviewResult.reviewId?e.reviewResult.reviewId.slice(0,8):"—","value-style":{fontSize:"14px",fontFamily:"monospace"}},null,8,["title","value"])]),_:1})]),_:1}),v("h5",Ot,s(t.$t("codegen.review_modal.bySeverity")),1),o(H,null,{default:l(()=>[(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,n=>(d(),k(h,{key:n,color:e.severityColor(n)},{default:l(()=>[g(s(e.severityLabel(n))+": "+s(e.reviewResult.severitySummary[n]||0),1)]),_:2},1032,["color"]))),128))]),_:1}),e.reviewResult.reason?(d(),k(ae,{key:0,type:"warning","show-icon":"",message:t.$t("codegen.review_modal.failedReason",{reason:e.reviewResult.reason}),style:{"margin-top":"12px"}},null,8,["message"])):c("v-if",!0)])):(d(),k(oe,{key:0,description:t.$t("codegen.review_modal.notReviewed"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),c(" ── Scaffold modal ──────────────────────────────────────── "),o(N,{open:e.showScaffoldModal,"onUpdate:open":a[23]||(a[23]=n=>e.showScaffoldModal=n),title:t.$t("codegen.scaffold_modal.title"),"confirm-loading":e.scaffolding,width:560,"ok-text":t.$t("codegen.scaffold_modal.ok"),"cancel-text":t.$t("codegen.scaffold_modal.cancel"),onOk:e.submitScaffold,onCancel:e.resetScaffoldForm},{default:l(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(p,{label:t.$t("codegen.scaffold_modal.templateLabel"),required:""},{default:l(()=>[o(ne,{value:e.scaffoldForm.template,"onUpdate:value":a[18]||(a[18]=n=>e.scaffoldForm.template=n)},{default:l(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(le,{key:n,value:n},{default:l(()=>[g(s(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.projectLabel"),required:""},{default:l(()=>[o(O,{value:e.scaffoldForm.projectName,"onUpdate:value":a[19]||(a[19]=n=>e.scaffoldForm.projectName=n),placeholder:t.$t("codegen.scaffold_modal.projectPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.optionsLabel")},{default:l(()=>[o(y,{value:e.scaffoldForm.optionsJson,"onUpdate:value":a[20]||(a[20]=n=>e.scaffoldForm.optionsJson=n),placeholder:t.$t("codegen.scaffold_modal.optionsPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.filesLabel")},{default:l(()=>[o(b,{value:e.scaffoldForm.files,"onUpdate:value":a[21]||(a[21]=n=>e.scaffoldForm.files=n),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.outputLabel")},{default:l(()=>[o(O,{value:e.scaffoldForm.outputPath,"onUpdate:value":a[22]||(a[22]=n=>e.scaffoldForm.outputPath=n),placeholder:t.$t("codegen.scaffold_modal.outputPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── Generation details modal ───────────────────────────── "),o(N,{open:e.showGenDetailsModal,"onUpdate:open":a[24]||(a[24]=n=>e.showGenDetailsModal=n),title:t.$t("codegen.gen_details.title",{id:e.currentGen?.id?.slice(0,12)||""}),width:780,footer:null},{default:l(()=>[e.currentGen?(d(),f("div",Gt,[o($,{column:2,size:"small",bordered:""},{default:l(()=>[o(C,{label:t.$t("codegen.gen_details.id"),span:2},{default:l(()=>[v("span",jt,s(e.currentGen.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.language")},{default:l(()=>[e.currentGen.language?(d(),k(h,{key:0,color:"blue"},{default:l(()=>[g(s(e.currentGen.language),1)]),_:1})):(d(),f("span",Et,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.framework")},{default:l(()=>[e.currentGen.framework?(d(),k(h,{key:0,color:"purple"},{default:l(()=>[g(s(e.currentGen.framework),1)]),_:1})):(d(),f("span",Lt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.fileCount")},{default:l(()=>[g(s(e.currentGen.fileCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.tokenCount")},{default:l(()=>[g(s(e.currentGen.tokenCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.createdAt"),span:2},{default:l(()=>[g(s(e.formatCodegenTime(e.currentGen.createdAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.prompt"),span:2},{default:l(()=>[v("pre",Pt,s(e.currentGen.prompt),1)]),_:1},8,["label"]),e.currentGen.generatedCode?(d(),k(C,{key:0,label:t.$t("codegen.gen_details.code"),span:2},{default:l(()=>[v("pre",Mt,s(e.truncate(e.currentGen.generatedCode,2e3)),1)]),_:1},8,["label"])):c("v-if",!0)]),_:1})])):c("v-if",!0)]),_:1},8,["open","title"]),c(" ── Review details modal ──────────────────────────────── "),o(N,{open:e.showReviewDetailsModal,"onUpdate:open":a[25]||(a[25]=n=>e.showReviewDetailsModal=n),title:t.$t("codegen.review_details.title",{id:e.currentReview?.id?.slice(0,12)||""}),width:720,footer:null},{default:l(()=>[e.currentReview?(d(),f("div",Nt,[o($,{column:2,size:"small",bordered:""},{default:l(()=>[o(C,{label:t.$t("codegen.review_details.id"),span:2},{default:l(()=>[v("span",Dt,s(e.currentReview.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.codeHash"),span:2},{default:l(()=>[v("span",Ut,s(e.currentReview.codeHash),1)]),_:1},8,["label"]),e.currentReview.generationId?(d(),k(C,{key:0,label:t.$t("codegen.review_details.generationId"),span:2},{default:l(()=>[v("span",Jt,s(e.currentReview.generationId),1)]),_:1},8,["label"])):c("v-if",!0),o(C,{label:t.$t("codegen.review_details.language")},{default:l(()=>[e.currentReview.language?(d(),k(h,{key:0,color:"blue"},{default:l(()=>[g(s(e.currentReview.language),1)]),_:1})):(d(),f("span",Bt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.reviewedAt")},{default:l(()=>[g(s(e.formatCodegenTime(e.currentReview.reviewedAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.issuesFound")},{default:l(()=>[g(s(e.currentReview.issuesFound),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.securityIssues")},{default:l(()=>[v("span",{style:ve({color:e.currentReview.securityIssues>0?"#ff4d4f":"#52c41a"})},s(e.currentReview.securityIssues),5)]),_:1},8,["label"])]),_:1}),v("h4",Vt,s(t.$t("codegen.review_details.bySeverity")),1),(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,n=>(d(),f("div",{key:n,class:"bd-row"},[o(h,{color:e.severityColor(n),style:{"min-width":"70px","text-align":"center"}},{default:l(()=>[g(s(e.severityLabel(n)),1)]),_:2},1032,["color"]),o(re,{percent:e.pctOfTotal(e.currentReview.severitySummary[n]||0,e.currentReview.issuesFound),"stroke-color":e.severityBarColor(n),format:()=>`${e.currentReview.severitySummary[n]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentReview.issuesDetail.length?(d(),f("h4",qt,s(t.$t("codegen.review_details.issues")),1)):c("v-if",!0),e.currentReview.issuesDetail.length?(d(),k(ie,{key:1,size:"small","data-source":e.currentReview.issuesDetail,pagination:{pageSize:8}},{renderItem:l(({item:n})=>[o(se,null,{default:l(()=>[o(h,{color:e.severityColor(n.severity),style:{"min-width":"60px","text-align":"center"}},{default:l(()=>[g(s(e.severityLabel(n.severity)),1)]),_:2},1032,["color"]),v("span",Ht,s(n.rule),1),v("code",Wt,s(e.truncate(n.match,60)),1)]),_:2},1024)]),_:1},8,["data-source"])):c("v-if",!0)])):c("v-if",!0)]),_:1},8,["open","title"])])}const $t=Ge(Ye,[["render",Kt],["__scopeId","data-v-b0047198"],["__file","/tmp/cc-web-panel-Hs0OhX/repo/packages/web-panel/src/views/Codegen.vue"]]);export{$t as default};
@@ -1 +1 @@
1
- import{q as O,f as m,h as $,i as w}from"./index-BUTN1VlO.js";import{d as G,c as I,b as g}from"./vendor-BvqAck49.js";import{u as R,a as _}from"./index-B5W1vQHV.js";function A(r){return typeof r=="number"?`${r} ${r} auto`:/^\d+(\.\d+)?(px|em|rem|%)$/.test(r)?`0 0 ${r}`:r}const E=()=>({span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}),F=["xs","sm","md","lg","xl","xxl"],q=G({compatConfig:{MODE:3},name:"ACol",inheritAttrs:!1,props:E(),setup(r,b){let{slots:p,attrs:d}=b;const{gutter:S,supportFlexGap:h,wrap:x}=R(),{prefixCls:f,direction:y}=O("col",r),[N,v]=_(f),j=g(()=>{const{span:n,order:u,offset:s,push:o,pull:c}=r,t=f.value;let i={};return F.forEach(l=>{let e={};const a=r[l];typeof a=="number"?e.span=a:typeof a=="object"&&(e=a||{}),i=$($({},i),{[`${t}-${l}-${e.span}`]:e.span!==void 0,[`${t}-${l}-order-${e.order}`]:e.order||e.order===0,[`${t}-${l}-offset-${e.offset}`]:e.offset||e.offset===0,[`${t}-${l}-push-${e.push}`]:e.push||e.push===0,[`${t}-${l}-pull-${e.pull}`]:e.pull||e.pull===0,[`${t}-rtl`]:y.value==="rtl"})}),w(t,{[`${t}-${n}`]:n!==void 0,[`${t}-order-${u}`]:u,[`${t}-offset-${s}`]:s,[`${t}-push-${o}`]:o,[`${t}-pull-${c}`]:c},i,d.class,v.value)}),C=g(()=>{const{flex:n}=r,u=S.value,s={};if(u&&u[0]>0){const o=`${u[0]/2}px`;s.paddingLeft=o,s.paddingRight=o}if(u&&u[1]>0&&!h.value){const o=`${u[1]/2}px`;s.paddingTop=o,s.paddingBottom=o}return n&&(s.flex=A(n),x.value===!1&&!s.minWidth&&(s.minWidth=0)),s});return()=>{var n;return N(I("div",m(m({},d),{},{class:j.value,style:[C.value,d.style]}),[(n=p.default)===null||n===void 0?void 0:n.call(p)]))}}});export{q as C};
1
+ import{q as O,f as m,h as $,i as w}from"./index-BR-DF81e.js";import{d as G,c as I,b as g}from"./vendor-BvqAck49.js";import{u as R,a as _}from"./index-BAfdWN9t.js";function A(r){return typeof r=="number"?`${r} ${r} auto`:/^\d+(\.\d+)?(px|em|rem|%)$/.test(r)?`0 0 ${r}`:r}const E=()=>({span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}),F=["xs","sm","md","lg","xl","xxl"],q=G({compatConfig:{MODE:3},name:"ACol",inheritAttrs:!1,props:E(),setup(r,b){let{slots:p,attrs:d}=b;const{gutter:S,supportFlexGap:h,wrap:x}=R(),{prefixCls:f,direction:y}=O("col",r),[N,v]=_(f),j=g(()=>{const{span:n,order:u,offset:s,push:o,pull:c}=r,t=f.value;let i={};return F.forEach(l=>{let e={};const a=r[l];typeof a=="number"?e.span=a:typeof a=="object"&&(e=a||{}),i=$($({},i),{[`${t}-${l}-${e.span}`]:e.span!==void 0,[`${t}-${l}-order-${e.order}`]:e.order||e.order===0,[`${t}-${l}-offset-${e.offset}`]:e.offset||e.offset===0,[`${t}-${l}-push-${e.push}`]:e.push||e.push===0,[`${t}-${l}-pull-${e.pull}`]:e.pull||e.pull===0,[`${t}-rtl`]:y.value==="rtl"})}),w(t,{[`${t}-${n}`]:n!==void 0,[`${t}-order-${u}`]:u,[`${t}-offset-${s}`]:s,[`${t}-push-${o}`]:o,[`${t}-pull-${c}`]:c},i,d.class,v.value)}),C=g(()=>{const{flex:n}=r,u=S.value,s={};if(u&&u[0]>0){const o=`${u[0]/2}px`;s.paddingLeft=o,s.paddingRight=o}if(u&&u[1]>0&&!h.value){const o=`${u[1]/2}px`;s.paddingTop=o,s.paddingBottom=o}return n&&(s.flex=A(n),x.value===!1&&!s.minWidth&&(s.minWidth=0)),s});return()=>{var n;return N(I("div",m(m({},d),{},{class:j.value,style:[C.value,d.style]}),[(n=p.default)===null||n===void 0?void 0:n.call(p)]))}}});export{q as C};