@futdevpro/ccap 1.1.3024 → 1.1.3029

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 (177) hide show
  1. package/client-dist/{agent-instances.module-3GNAYK6N.js → agent-instances.module-ZEDAGCTO.js} +2 -2
  2. package/client-dist/{ca.module-4EHSW7NQ.js → ca.module-PGILVKST.js} +2 -2
  3. package/client-dist/{cc-usage-dashboard.component-I6ANLAOK.js → cc-usage-dashboard.component-HW55BF7X.js} +2 -2
  4. package/client-dist/{cc.module-M6E4LRE7.js → cc.module-FWD5FAE2.js} +2 -2
  5. package/client-dist/{chunk-ELFPKZHT.js → chunk-2E5MEUC6.js} +2 -2
  6. package/client-dist/{chunk-AON55T3K.js → chunk-2HOSTFZM.js} +2 -2
  7. package/client-dist/{chunk-IAZTBBUO.js → chunk-2QKSYFBS.js} +2 -2
  8. package/client-dist/{chunk-V4ZEYU7J.js → chunk-3COYWANK.js} +2 -2
  9. package/client-dist/{chunk-5TBASVHM.js → chunk-3CSKYOXL.js} +2 -2
  10. package/client-dist/{chunk-D6BBEI2V.js → chunk-3LQ5ZNQK.js} +2 -2
  11. package/client-dist/{chunk-J6SEKNXA.js → chunk-4AMEHBWO.js} +2 -2
  12. package/client-dist/{chunk-256CAMTK.js → chunk-57RXVP5S.js} +2 -2
  13. package/client-dist/{chunk-6D4DORZA.js → chunk-5WWTZ2LQ.js} +2 -2
  14. package/client-dist/{chunk-ATTCGT7V.js → chunk-6NKAOL4H.js} +2 -2
  15. package/client-dist/{chunk-HRL2BQRU.js → chunk-7O5Q7ZE5.js} +2 -2
  16. package/client-dist/{chunk-QXN7MHY5.js → chunk-AFMSZ2A4.js} +2 -2
  17. package/client-dist/{chunk-KEU5L2YW.js → chunk-AMUBZLYY.js} +2 -2
  18. package/client-dist/{chunk-GIF7BQY6.js → chunk-ATCDMHJZ.js} +2 -2
  19. package/client-dist/{chunk-Q6IX2HOL.js → chunk-B5OAVRIE.js} +2 -2
  20. package/client-dist/{chunk-QGB3XE4G.js → chunk-CPT4H4CB.js} +2 -2
  21. package/client-dist/{chunk-3P6BWEEI.js → chunk-E4MCYQLX.js} +2 -2
  22. package/client-dist/{chunk-KDJVXUJX.js → chunk-EPQSURW3.js} +3 -3
  23. package/client-dist/{chunk-KDJVXUJX.js.map → chunk-EPQSURW3.js.map} +4 -4
  24. package/client-dist/{chunk-FX5RYSJ3.js → chunk-F7CCYE3D.js} +2 -2
  25. package/client-dist/{chunk-EIQU24LO.js → chunk-F7EMYMLE.js} +2 -2
  26. package/client-dist/{chunk-EX43A7OR.js → chunk-FES32KDN.js} +2 -2
  27. package/client-dist/{chunk-N4SOQP3Z.js → chunk-GC7C3V7Z.js} +2 -2
  28. package/client-dist/{chunk-MCXEYDWE.js → chunk-HOPBJ2PM.js} +2 -2
  29. package/client-dist/{chunk-GEVDFAVQ.js → chunk-ISSG57FN.js} +2 -2
  30. package/client-dist/{chunk-3PNNIXJZ.js → chunk-JC5YKRA2.js} +2 -2
  31. package/client-dist/{chunk-NPMMO45Q.js → chunk-JIVE4XG6.js} +2 -2
  32. package/client-dist/{chunk-ES3VIR6H.js → chunk-K5ULMCZN.js} +2 -2
  33. package/client-dist/{chunk-EBIXSU3R.js → chunk-KKBOPOS7.js} +2 -2
  34. package/client-dist/{chunk-MEG3KULK.js → chunk-KMDWVDZN.js} +2 -2
  35. package/client-dist/{chunk-5B5K66GH.js → chunk-KMQOD27X.js} +2 -2
  36. package/client-dist/{chunk-UQT5NYHO.js → chunk-KQ62B5RJ.js} +2 -2
  37. package/client-dist/{chunk-UQT5NYHO.js.map → chunk-KQ62B5RJ.js.map} +1 -1
  38. package/client-dist/{chunk-M3UXCO27.js → chunk-KRDY4QE4.js} +2 -2
  39. package/client-dist/{chunk-N6Z5RDSF.js → chunk-KVLIWG6J.js} +2 -2
  40. package/client-dist/{chunk-PEHIL5NC.js → chunk-LFUSTUZT.js} +2 -2
  41. package/client-dist/{chunk-ADJKILTC.js → chunk-LYGC4TVK.js} +2 -2
  42. package/client-dist/{chunk-5J5EUCTS.js → chunk-NMWXUTFQ.js} +2 -2
  43. package/client-dist/{chunk-W4HO7JEY.js → chunk-ODNT6WDP.js} +2 -2
  44. package/client-dist/{chunk-SWVZPVHG.js → chunk-Q4MVYEES.js} +2 -2
  45. package/client-dist/{chunk-QTUBTOPP.js → chunk-Q5KLVNNE.js} +2 -2
  46. package/client-dist/{chunk-PAB6WIAE.js → chunk-QMPZ46LB.js} +2 -2
  47. package/client-dist/{chunk-NNHS2LC7.js → chunk-QUFSDVHR.js} +2 -2
  48. package/client-dist/{chunk-GKE2OGEJ.js → chunk-RCRXEUZM.js} +2 -2
  49. package/client-dist/{chunk-KAO27U5G.js → chunk-RMJTPSHP.js} +2 -2
  50. package/client-dist/{chunk-NL62EHGD.js → chunk-RWNN5KRV.js} +2 -2
  51. package/client-dist/{chunk-B7M7TLSZ.js → chunk-RZY5FFKY.js} +2 -2
  52. package/client-dist/{chunk-B7M7TLSZ.js.map → chunk-RZY5FFKY.js.map} +1 -1
  53. package/client-dist/{chunk-JZVJE4QB.js → chunk-SREB74HR.js} +2 -2
  54. package/client-dist/{chunk-S36LZP2U.js → chunk-TLAPOIAO.js} +2 -2
  55. package/client-dist/{chunk-KXSU5O3X.js → chunk-TTI6NQVT.js} +2 -2
  56. package/client-dist/{chunk-H75MWCGK.js → chunk-UHRVQGRT.js} +2 -2
  57. package/client-dist/{chunk-N7JL73EU.js → chunk-W36ACK74.js} +2 -2
  58. package/client-dist/{chunk-TB2WYWGG.js → chunk-W3AWLRVB.js} +2 -2
  59. package/client-dist/{chunk-J4UUNBU7.js → chunk-WETMMHZO.js} +2 -2
  60. package/client-dist/{chunk-MCVNPTDU.js → chunk-WF6HPH3A.js} +2 -2
  61. package/client-dist/{chunk-DTGPEPIX.js → chunk-WIWLBRQI.js} +2 -2
  62. package/client-dist/{chunk-OMVYH3WH.js → chunk-ZBEUOVWM.js} +2 -2
  63. package/client-dist/{chunk-WLCOANAY.js → chunk-ZYHUZVCB.js} +2 -2
  64. package/client-dist/{consultant.module-E2MMKKE4.js → consultant.module-IBY4ZJRF.js} +2 -2
  65. package/client-dist/{consultant.module-E2MMKKE4.js.map → consultant.module-IBY4ZJRF.js.map} +2 -2
  66. package/client-dist/{crd.module-5VSGXFAS.js → crd.module-XJ435KXN.js} +2 -2
  67. package/client-dist/{dashboard.module-DKFK4PHA.js → dashboard.module-NUTWD5IC.js} +2 -2
  68. package/client-dist/{do.module-G7XJYVFM.js → do.module-C2QZR75Z.js} +2 -2
  69. package/client-dist/{document-library.module-3JBUWQDO.js → document-library.module-OGNPLK6G.js} +2 -2
  70. package/client-dist/{embedding-eval.module-CNWDOHPD.js → embedding-eval.module-66JRL7MA.js} +2 -2
  71. package/client-dist/{embedding-registry.module-GUGALJKY.js → embedding-registry.module-JHKAP6KF.js} +2 -2
  72. package/client-dist/{err.module-WV7HSVRL.js → err.module-TK43XPZB.js} +2 -2
  73. package/client-dist/{feedback.module-5XABAECB.js → feedback.module-7R5EBLO4.js} +2 -2
  74. package/client-dist/{host-runtime-mcp.module-2J64CTVX.js → host-runtime-mcp.module-SUOQT2ZI.js} +2 -2
  75. package/client-dist/index.html +1 -1
  76. package/client-dist/{live-dev-pipeline.module-ZL3SY2AZ.js → live-dev-pipeline.module-CHSRLAND.js} +2 -2
  77. package/client-dist/{logs.module-B4DGEVYN.js → logs.module-MC4V6CB2.js} +2 -2
  78. package/client-dist/{main-E3S2CTPE.js → main-RS7R4GTV.js} +3 -3
  79. package/client-dist/{master-control-remote-poc.module-4HT6QFVR.js → master-control-remote-poc.module-SREH7RYL.js} +2 -2
  80. package/client-dist/{mobile-app.module-PGTV5D2L.js → mobile-app.module-2A5OJQ46.js} +2 -2
  81. package/client-dist/{model-registry.module-52KWVWSZ.js → model-registry.module-XIOF6NIA.js} +2 -2
  82. package/client-dist/{oc.module-MZSPWRLR.js → oc.module-MVIAO2U2.js} +2 -2
  83. package/client-dist/{orc.module-2ZOGMUQL.js → orc.module-T4VFJF4P.js} +2 -2
  84. package/client-dist/{project-management.module-WPXRC55R.js → project-management.module-LRYIMGFZ.js} +2 -2
  85. package/client-dist/project-source-routed.module-FVGM4IBL.js +2 -0
  86. package/client-dist/{scheduler.module-7SUXTPLE.js → scheduler.module-5VRTICQ7.js} +2 -2
  87. package/client-dist/{session.module-WCCI3C3B.js → session.module-N3QOIA3B.js} +2 -2
  88. package/client-dist/{set.module-APZ5VM65.js → set.module-3LY5JECS.js} +2 -2
  89. package/client-dist/{setup.module-H4KTFS2R.js → setup.module-IVQJMJMO.js} +2 -2
  90. package/client-dist/{terminals.module-V3AFBS5Z.js → terminals.module-TDVJE7TG.js} +2 -2
  91. package/client-dist/{voice-notes-poc.module-VW6OR3QK.js → voice-notes-poc.module-KD4FX6MQ.js} +2 -2
  92. package/client-dist/{wfs.module-VLL5EG6X.js → wfs.module-7FFTZILZ.js} +2 -2
  93. package/package.json +1 -1
  94. package/client-dist/project-source-routed.module-T5FHUVTX.js +0 -2
  95. /package/client-dist/{agent-instances.module-3GNAYK6N.js.map → agent-instances.module-ZEDAGCTO.js.map} +0 -0
  96. /package/client-dist/{ca.module-4EHSW7NQ.js.map → ca.module-PGILVKST.js.map} +0 -0
  97. /package/client-dist/{cc-usage-dashboard.component-I6ANLAOK.js.map → cc-usage-dashboard.component-HW55BF7X.js.map} +0 -0
  98. /package/client-dist/{cc.module-M6E4LRE7.js.map → cc.module-FWD5FAE2.js.map} +0 -0
  99. /package/client-dist/{chunk-ELFPKZHT.js.map → chunk-2E5MEUC6.js.map} +0 -0
  100. /package/client-dist/{chunk-AON55T3K.js.map → chunk-2HOSTFZM.js.map} +0 -0
  101. /package/client-dist/{chunk-IAZTBBUO.js.map → chunk-2QKSYFBS.js.map} +0 -0
  102. /package/client-dist/{chunk-V4ZEYU7J.js.map → chunk-3COYWANK.js.map} +0 -0
  103. /package/client-dist/{chunk-5TBASVHM.js.map → chunk-3CSKYOXL.js.map} +0 -0
  104. /package/client-dist/{chunk-D6BBEI2V.js.map → chunk-3LQ5ZNQK.js.map} +0 -0
  105. /package/client-dist/{chunk-J6SEKNXA.js.map → chunk-4AMEHBWO.js.map} +0 -0
  106. /package/client-dist/{chunk-256CAMTK.js.map → chunk-57RXVP5S.js.map} +0 -0
  107. /package/client-dist/{chunk-6D4DORZA.js.map → chunk-5WWTZ2LQ.js.map} +0 -0
  108. /package/client-dist/{chunk-ATTCGT7V.js.map → chunk-6NKAOL4H.js.map} +0 -0
  109. /package/client-dist/{chunk-HRL2BQRU.js.map → chunk-7O5Q7ZE5.js.map} +0 -0
  110. /package/client-dist/{chunk-QXN7MHY5.js.map → chunk-AFMSZ2A4.js.map} +0 -0
  111. /package/client-dist/{chunk-KEU5L2YW.js.map → chunk-AMUBZLYY.js.map} +0 -0
  112. /package/client-dist/{chunk-GIF7BQY6.js.map → chunk-ATCDMHJZ.js.map} +0 -0
  113. /package/client-dist/{chunk-Q6IX2HOL.js.map → chunk-B5OAVRIE.js.map} +0 -0
  114. /package/client-dist/{chunk-QGB3XE4G.js.map → chunk-CPT4H4CB.js.map} +0 -0
  115. /package/client-dist/{chunk-3P6BWEEI.js.map → chunk-E4MCYQLX.js.map} +0 -0
  116. /package/client-dist/{chunk-FX5RYSJ3.js.map → chunk-F7CCYE3D.js.map} +0 -0
  117. /package/client-dist/{chunk-EIQU24LO.js.map → chunk-F7EMYMLE.js.map} +0 -0
  118. /package/client-dist/{chunk-EX43A7OR.js.map → chunk-FES32KDN.js.map} +0 -0
  119. /package/client-dist/{chunk-N4SOQP3Z.js.map → chunk-GC7C3V7Z.js.map} +0 -0
  120. /package/client-dist/{chunk-MCXEYDWE.js.map → chunk-HOPBJ2PM.js.map} +0 -0
  121. /package/client-dist/{chunk-GEVDFAVQ.js.map → chunk-ISSG57FN.js.map} +0 -0
  122. /package/client-dist/{chunk-3PNNIXJZ.js.map → chunk-JC5YKRA2.js.map} +0 -0
  123. /package/client-dist/{chunk-NPMMO45Q.js.map → chunk-JIVE4XG6.js.map} +0 -0
  124. /package/client-dist/{chunk-ES3VIR6H.js.map → chunk-K5ULMCZN.js.map} +0 -0
  125. /package/client-dist/{chunk-EBIXSU3R.js.map → chunk-KKBOPOS7.js.map} +0 -0
  126. /package/client-dist/{chunk-MEG3KULK.js.map → chunk-KMDWVDZN.js.map} +0 -0
  127. /package/client-dist/{chunk-5B5K66GH.js.map → chunk-KMQOD27X.js.map} +0 -0
  128. /package/client-dist/{chunk-M3UXCO27.js.map → chunk-KRDY4QE4.js.map} +0 -0
  129. /package/client-dist/{chunk-N6Z5RDSF.js.map → chunk-KVLIWG6J.js.map} +0 -0
  130. /package/client-dist/{chunk-PEHIL5NC.js.map → chunk-LFUSTUZT.js.map} +0 -0
  131. /package/client-dist/{chunk-ADJKILTC.js.map → chunk-LYGC4TVK.js.map} +0 -0
  132. /package/client-dist/{chunk-5J5EUCTS.js.map → chunk-NMWXUTFQ.js.map} +0 -0
  133. /package/client-dist/{chunk-W4HO7JEY.js.map → chunk-ODNT6WDP.js.map} +0 -0
  134. /package/client-dist/{chunk-SWVZPVHG.js.map → chunk-Q4MVYEES.js.map} +0 -0
  135. /package/client-dist/{chunk-QTUBTOPP.js.map → chunk-Q5KLVNNE.js.map} +0 -0
  136. /package/client-dist/{chunk-PAB6WIAE.js.map → chunk-QMPZ46LB.js.map} +0 -0
  137. /package/client-dist/{chunk-NNHS2LC7.js.map → chunk-QUFSDVHR.js.map} +0 -0
  138. /package/client-dist/{chunk-GKE2OGEJ.js.map → chunk-RCRXEUZM.js.map} +0 -0
  139. /package/client-dist/{chunk-KAO27U5G.js.map → chunk-RMJTPSHP.js.map} +0 -0
  140. /package/client-dist/{chunk-NL62EHGD.js.map → chunk-RWNN5KRV.js.map} +0 -0
  141. /package/client-dist/{chunk-JZVJE4QB.js.map → chunk-SREB74HR.js.map} +0 -0
  142. /package/client-dist/{chunk-S36LZP2U.js.map → chunk-TLAPOIAO.js.map} +0 -0
  143. /package/client-dist/{chunk-KXSU5O3X.js.map → chunk-TTI6NQVT.js.map} +0 -0
  144. /package/client-dist/{chunk-H75MWCGK.js.map → chunk-UHRVQGRT.js.map} +0 -0
  145. /package/client-dist/{chunk-N7JL73EU.js.map → chunk-W36ACK74.js.map} +0 -0
  146. /package/client-dist/{chunk-TB2WYWGG.js.map → chunk-W3AWLRVB.js.map} +0 -0
  147. /package/client-dist/{chunk-J4UUNBU7.js.map → chunk-WETMMHZO.js.map} +0 -0
  148. /package/client-dist/{chunk-MCVNPTDU.js.map → chunk-WF6HPH3A.js.map} +0 -0
  149. /package/client-dist/{chunk-DTGPEPIX.js.map → chunk-WIWLBRQI.js.map} +0 -0
  150. /package/client-dist/{chunk-OMVYH3WH.js.map → chunk-ZBEUOVWM.js.map} +0 -0
  151. /package/client-dist/{chunk-WLCOANAY.js.map → chunk-ZYHUZVCB.js.map} +0 -0
  152. /package/client-dist/{crd.module-5VSGXFAS.js.map → crd.module-XJ435KXN.js.map} +0 -0
  153. /package/client-dist/{dashboard.module-DKFK4PHA.js.map → dashboard.module-NUTWD5IC.js.map} +0 -0
  154. /package/client-dist/{do.module-G7XJYVFM.js.map → do.module-C2QZR75Z.js.map} +0 -0
  155. /package/client-dist/{document-library.module-3JBUWQDO.js.map → document-library.module-OGNPLK6G.js.map} +0 -0
  156. /package/client-dist/{embedding-eval.module-CNWDOHPD.js.map → embedding-eval.module-66JRL7MA.js.map} +0 -0
  157. /package/client-dist/{embedding-registry.module-GUGALJKY.js.map → embedding-registry.module-JHKAP6KF.js.map} +0 -0
  158. /package/client-dist/{err.module-WV7HSVRL.js.map → err.module-TK43XPZB.js.map} +0 -0
  159. /package/client-dist/{feedback.module-5XABAECB.js.map → feedback.module-7R5EBLO4.js.map} +0 -0
  160. /package/client-dist/{host-runtime-mcp.module-2J64CTVX.js.map → host-runtime-mcp.module-SUOQT2ZI.js.map} +0 -0
  161. /package/client-dist/{live-dev-pipeline.module-ZL3SY2AZ.js.map → live-dev-pipeline.module-CHSRLAND.js.map} +0 -0
  162. /package/client-dist/{logs.module-B4DGEVYN.js.map → logs.module-MC4V6CB2.js.map} +0 -0
  163. /package/client-dist/{main-E3S2CTPE.js.map → main-RS7R4GTV.js.map} +0 -0
  164. /package/client-dist/{master-control-remote-poc.module-4HT6QFVR.js.map → master-control-remote-poc.module-SREH7RYL.js.map} +0 -0
  165. /package/client-dist/{mobile-app.module-PGTV5D2L.js.map → mobile-app.module-2A5OJQ46.js.map} +0 -0
  166. /package/client-dist/{model-registry.module-52KWVWSZ.js.map → model-registry.module-XIOF6NIA.js.map} +0 -0
  167. /package/client-dist/{oc.module-MZSPWRLR.js.map → oc.module-MVIAO2U2.js.map} +0 -0
  168. /package/client-dist/{orc.module-2ZOGMUQL.js.map → orc.module-T4VFJF4P.js.map} +0 -0
  169. /package/client-dist/{project-management.module-WPXRC55R.js.map → project-management.module-LRYIMGFZ.js.map} +0 -0
  170. /package/client-dist/{project-source-routed.module-T5FHUVTX.js.map → project-source-routed.module-FVGM4IBL.js.map} +0 -0
  171. /package/client-dist/{scheduler.module-7SUXTPLE.js.map → scheduler.module-5VRTICQ7.js.map} +0 -0
  172. /package/client-dist/{session.module-WCCI3C3B.js.map → session.module-N3QOIA3B.js.map} +0 -0
  173. /package/client-dist/{set.module-APZ5VM65.js.map → set.module-3LY5JECS.js.map} +0 -0
  174. /package/client-dist/{setup.module-H4KTFS2R.js.map → setup.module-IVQJMJMO.js.map} +0 -0
  175. /package/client-dist/{terminals.module-V3AFBS5Z.js.map → terminals.module-TDVJE7TG.js.map} +0 -0
  176. /package/client-dist/{voice-notes-poc.module-VW6OR3QK.js.map → voice-notes-poc.module-KD4FX6MQ.js.map} +0 -0
  177. /package/client-dist/{wfs.module-VLL5EG6X.js.map → wfs.module-7FFTZILZ.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{a as Ce}from"./chunk-J4UUNBU7.js";import{a as ve}from"./chunk-7JUIBZEE.js";import{a as we,b as xe,c as ke}from"./chunk-C7XPBJTG.js";import{e as Me,f as Te,g as Pe,i as De}from"./chunk-EX43A7OR.js";import{a as be}from"./chunk-WPHEQXWB.js";import{c as _e}from"./chunk-KDJVXUJX.js";import{a as he}from"./chunk-Q2NVIOCY.js";import{a as ye}from"./chunk-AON55T3K.js";import{a as Se}from"./chunk-ZBTWQZNB.js";import{a as ge}from"./chunk-FLAJXIYW.js";import{a as ue,c as E,e as fe,f as j,i as F,v as H}from"./chunk-EO4DNTT4.js";import{$a as K,C as O,Cb as me,D as g,E as Z,Fa as m,G as ee,Ga as x,Ha as $,J as R,K as B,L as I,M as N,Ma as ie,Na as re,O as te,Oa as ae,Pa as se,Qa as le,Ra as pe,Sa as de,T as y,Ta as _,U as i,W as z,Wa as v,Z as r,_ as ne,aa as X,ab as W,da as b,fa as M,fb as ce,ga as l,ha as oe,hb as d,ia as V,ja as S,la as h,mb as A,qa as a,ra as s,sa as D,ua as L,ub as f,va as C,wa as u,x as U,xa as T,ya as w,z as Q}from"./chunk-TBMJSIBB.js";var Ve=["*"];function Ne(t,p){if(t&1&&(a(0,"div",5),w(1),s()),t&2){let e=u();l("ngClass",e.spacingClassMap_$())}}var Ae=(()=>{class t{expanded=i.required();title=i.required();contentSpacingClass=i("space-y-3");panelClass=i("rounded-lg border border-neonDefault/60 bg-neutral-900/40");titleClass=i("text-base font-semibold text-neutral-200");spacingClassMap_$=d(()=>({[this.contentSpacingClass().trim()]:!0}));toggle=y();handleHeaderClick(){this.toggle.emit()}handleHeaderKeydownEnter(){this.toggle.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-settings-collapsible-panel"]],hostAttrs:[1,"block"],inputs:{expanded:[1,"expanded"],title:[1,"title"],contentSpacingClass:[1,"contentSpacingClass"],panelClass:[1,"panelClass"],titleClass:[1,"titleClass"]},outputs:{toggle:"toggle"},standalone:!0,features:[_],ngContentSelectors:Ve,decls:8,vars:12,consts:[[3,"ngClass"],["role","button","tabindex","0",1,"flex","items-center","gap-2","cursor-pointer","select-none",3,"click","keydown.enter"],["aria-hidden","true",1,"inline-flex","shrink-0","text-neutral-400"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3.5","h-3.5","transition-transform","duration-150"],["points","6 9 12 15 18 9"],[1,"mt-3",3,"ngClass"]],template:function(o,n){o&1&&(T(),a(0,"div",0)(1,"div",1),C("click",function(){return n.handleHeaderClick()})("keydown.enter",function(){return n.handleHeaderKeydownEnter()}),a(2,"span",2),I(),a(3,"svg",3),D(4,"polyline",4),s()(),N(),a(5,"h3",0),m(6),s()(),b(7,Ne,2,1,"div",5),s()),o&2&&(V("p-4",n.expanded())("px-4",!n.expanded())("py-2",!n.expanded()),l("ngClass",n.panelClass()),r(3),V("-rotate-90",!n.expanded()),r(2),l("ngClass",n.titleClass()),r(),x(n.title()),r(),h(n.expanded()?7:-1))},dependencies:[f,A],encapsulation:2})}return t})();var ze=["*"];function Ke(t,p){if(t&1&&(a(0,"p",1),m(1),s()),t&2){let e=u();r(),x(e.subtitle())}}var Re=(()=>{class t{title=i.required();subtitle=i("");marginBottom=i("mb-6");hasSubtitle_$=d(()=>this.subtitle().trim().length>0);static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-page-header"]],hostAttrs:[1,"block"],inputs:{title:[1,"title"],subtitle:[1,"subtitle"],marginBottom:[1,"marginBottom"]},standalone:!0,features:[_],ngContentSelectors:ze,decls:7,vars:4,consts:[[1,"text-2xl","gt-xs:text-3xl","font-bold","text-neutral-100"],[1,"text-neutral-400","text-sm","gt-xs:text-base","mt-1"],[1,"flex","items-center","gap-2","shrink-0"]],template:function(o,n){o&1&&(T(),a(0,"header")(1,"div")(2,"h1",0),m(3),s(),b(4,Ke,2,1,"p",1),s(),a(5,"div",2),w(6),s()()),o&2&&(S("flex items-center justify-between gap-4 "+n.marginBottom()),r(3),x(n.title()),r(),h(n.hasSubtitle_$()?4:-1))},dependencies:[f],encapsulation:2})}return t})();function We(t,p){t&1&&(I(),a(0,"svg",3),D(1,"path",4),s())}function qe(t,p){t&1&&(I(),a(0,"svg",3),D(1,"path",5)(2,"path",6),s())}var Ie=(()=>{class t{placeholder=i("");disabled=i(!1);disabledByControl_$=X(!1);name=i("");autocomplete=i("off");dataBwignore=i(!1);suppressPasswordManagerAutofill=i(!1);inputClass=i("");blurEvent=y();visible_$=X(!1);inputType_$=d(()=>this.visible_$()?"text":"password");toggleAriaLabel_$=d(()=>this.visible_$()?"Jelsz\xF3 elrejt\xE9se":"Jelsz\xF3 megjelen\xEDt\xE9se");toggleTitle_$=d(()=>this.visible_$()?"Jelsz\xF3 elrejt\xE9se":"Jelsz\xF3 megjelen\xEDt\xE9se");isDisabled_$=d(()=>this.disabled()||this.disabledByControl_$());effectiveAutocomplete_$=d(()=>this.suppressPasswordManagerAutofill()?"new-password":this.autocomplete());effectiveDataBwignore_$=d(()=>this.dataBwignore()||this.suppressPasswordManagerAutofill());value="";onChange=()=>{};onTouched=()=>{};cdr=O(ce);injector=O(te);ngControl=null;ngOnInit(){this.ngControl=this.injector.get(fe,null,{optional:!0,self:!0}),this.ngControl!=null&&(this.ngControl.valueAccessor=this)}toggleVisible(){this.visible_$.update(e=>!e)}get innerValue(){return this.value}set innerValue(e){this.value!==e&&(this.value=e,this.onChange(e))}writeValue(e){this.value=e??"",this.cdr.markForCheck()}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.disabledByControl_$.set(e),this.cdr.markForCheck()}onBlur(){this.onTouched(),this.blurEvent.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-password-input"]],hostAttrs:[1,"block","min-w-0","flex-1"],inputs:{placeholder:[1,"placeholder"],disabled:[1,"disabled"],name:[1,"name"],autocomplete:[1,"autocomplete"],dataBwignore:[1,"dataBwignore"],suppressPasswordManagerAutofill:[1,"suppressPasswordManagerAutofill"],inputClass:[1,"inputClass"]},outputs:{blurEvent:"blurEvent"},standalone:!0,features:[de([{provide:ue,useExisting:U(()=>t),multi:!0}]),_],decls:5,vars:16,consts:[[1,"flex","flex-wrap","gap-2","items-center","min-w-0"],[3,"ngModelChange","blur","type","ngModel","name","placeholder","disabled"],["type","button",1,"shrink-0","w-9","h-9","flex","items-center","justify-center","rounded","border","border-neonDefault","text-neutral-400","hover:text-neonCyan","hover:shadow-neon-glow-cyan","hover:border-neonCyan","disabled:opacity-50","transition-colors",3,"click","disabled"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","stroke","currentColor","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M15 12a3 3 0 11-6 0 3 3 0 016 0z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"]],template:function(o,n){o&1&&(a(0,"div",0)(1,"input",1),ae("ngModelChange",function(k){return re(n.innerValue,k)||(n.innerValue=k),k}),C("blur",function(){return n.onBlur()}),s(),a(2,"button",2),C("click",function(){return n.toggleVisible()}),b(3,We,2,0,":svg:svg",3)(4,qe,3,0,":svg:svg",3),s()()),o&2&&(r(),S("flex-1 min-w-0 px-3 py-2 bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan disabled:opacity-70 "+n.inputClass()),l("type",n.inputType_$()),ie("ngModel",n.innerValue),l("name",n.name())("placeholder",n.placeholder())("disabled",n.isDisabled_$()),M("autocomplete",n.effectiveAutocomplete_$())("data-bwignore",n.effectiveDataBwignore_$()?"1":null)("data-lpignore",n.suppressPasswordManagerAutofill()?"true":null)("data-1p-ignore",n.suppressPasswordManagerAutofill()?"true":null)("data-form-type",n.suppressPasswordManagerAutofill()?"other":null),r(),l("disabled",n.isDisabled_$()),M("aria-label",n.toggleAriaLabel_$())("title",n.toggleTitle_$()),r(),h(n.visible_$()?3:4))},dependencies:[f,H,E,j,F],encapsulation:2})}return t})();function Ge(t,p){if(t&1&&(a(0,"span",2),m(1," \u26A0\uFE0F "),s()),t&2){let e,o=u();M("title",(e=o.warningTooltip())!==null&&e!==void 0?e:"")}}function Je(t,p){if(t&1){let e=L();a(0,"button",5),C("click",function(){R(e);let n=u();return B(n.emitStartEdit())}),m(1," Szerkeszt\xE9s "),s()}}function Oe(t,p){if(t&1){let e=L();a(0,"button",6),C("click",function(){R(e);let n=u();return B(n.emitSave())}),m(1),s()}if(t&2){let e=u();l("disabled",e.saveDisabled()),r(),$(" ",e.saveButtonLabel_$()," ")}}var Le=(()=>{class t{name=i("");displayValue=i.required();placeholder=i("");editMode=i(!1);saveDisabled=i(!1);savePending=i(!1);saveLabel=i("Ment\xE9s");savePendingLabel=i("Ment\xE9s\u2026");warningTooltip=i(null);inputClass=i("");dataBwignore=i(!0);valueChange=y();startEdit=y();save=y();inputReadonly_$=d(()=>!this.editMode());showWarning_$=d(()=>{let e=this.warningTooltip();return e!=null&&e.trim().length>0});saveButtonLabel_$=d(()=>this.savePending()?this.savePendingLabel():this.saveLabel());inputClassCombined_$=d(()=>{let e="flex-1 min-w-0 px-3 py-2 font-mono text-sm bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan",o=this.inputReadonly_$()?" opacity-90":"",n=this.inputClass().trim().length>0?" "+this.inputClass():"";return e+o+n});onDisplayValueChange(e){this.editMode()&&this.valueChange.emit(e)}emitStartEdit(){this.startEdit.emit()}emitSave(){this.save.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-settings-secret-key-row"]],hostAttrs:[1,"block"],inputs:{name:[1,"name"],displayValue:[1,"displayValue"],placeholder:[1,"placeholder"],editMode:[1,"editMode"],saveDisabled:[1,"saveDisabled"],savePending:[1,"savePending"],saveLabel:[1,"saveLabel"],savePendingLabel:[1,"savePendingLabel"],warningTooltip:[1,"warningTooltip"],inputClass:[1,"inputClass"],dataBwignore:[1,"dataBwignore"]},outputs:{valueChange:"valueChange",startEdit:"startEdit",save:"save"},standalone:!0,features:[_],decls:5,vars:9,consts:[[1,"flex","flex-wrap","gap-2","items-center"],["type","text",3,"ngModelChange","name","ngModel","readonly"],[1,"text-amber-300","text-sm"],["type","button",1,"px-4","py-2","border","border-neonCyan","rounded","text-neutral-300","hover:shadow-neon-glow-cyan","whitespace-nowrap"],["type","button",1,"px-4","py-2","bg-ccapAccent","text-white","rounded","whitespace-nowrap","disabled:opacity-50",3,"disabled"],["type","button",1,"px-4","py-2","border","border-neonCyan","rounded","text-neutral-300","hover:shadow-neon-glow-cyan","whitespace-nowrap",3,"click"],["type","button",1,"px-4","py-2","bg-ccapAccent","text-white","rounded","whitespace-nowrap","disabled:opacity-50",3,"click","disabled"]],template:function(o,n){o&1&&(a(0,"div",0)(1,"input",1),C("ngModelChange",function(k){return n.onDisplayValueChange(k)}),s(),b(2,Ge,2,1,"span",2)(3,Je,2,0,"button",3)(4,Oe,2,2,"button",4),s()),o&2&&(r(),S(n.inputClassCombined_$()),l("name",n.name())("ngModel",n.displayValue())("readonly",n.inputReadonly_$()),M("placeholder",n.placeholder())("data-bwignore",n.dataBwignore()?"true":null),r(),h(n.showWarning_$()?2:-1),r(),h(n.editMode()?4:3))},dependencies:[f,H,E,j,F],encapsulation:2})}return t})();var Xe=[[["","sComposerPrefix",""]],[["","sComposerTextareaAccessory",""]],[["","sComposerBelowTextarea",""]],[["","sComposerBeforeSend",""]]],Ye=["[sComposerPrefix]","[sComposerTextareaAccessory]","[sComposerBelowTextarea]","[sComposerBeforeSend]"],$e=(()=>{class t{draftText=i("");draftTextChange=y();isSending=i(!1);isSendDisabled=i(!1);placeholder=i("");textareaRows=i(3);sendButtonLabel=i("Send");sendingButtonLabel=i("\u2026");sendRequested=y();handleKeyDown(e){e.key!=="Enter"||e.shiftKey||(e.preventDefault(),this.emitSendIfAllowed())}handleSendClick(){this.emitSendIfAllowed()}emitSendIfAllowed(){this.isSending()||this.isSendDisabled()||this.sendRequested.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-session-prompt-composer"]],hostAttrs:[1,"block","shrink-0","border-t","border-neonDefault","bg-ccapSurface"],inputs:{draftText:[1,"draftText"],isSending:[1,"isSending"],isSendDisabled:[1,"isSendDisabled"],placeholder:[1,"placeholder"],textareaRows:[1,"textareaRows"],sendButtonLabel:[1,"sendButtonLabel"],sendingButtonLabel:[1,"sendingButtonLabel"]},outputs:{draftTextChange:"draftTextChange",sendRequested:"sendRequested"},standalone:!0,features:[_],ngContentSelectors:Ye,decls:11,vars:5,consts:[[1,"flex","flex-col","gap-2","p-2"],[1,"relative","min-w-0","w-full"],[1,"min-h-[60px]","max-h-[200px]","w-full","resize-none","rounded","border","border-neutral-700","bg-neutral-800","px-2","py-1.5","font-mono","text-xs","text-neutral-200","placeholder-neutral-600","focus:border-ccapAccent","focus:outline-none",3,"ngModelChange","keydown","placeholder","ngModel"],[1,"flex","flex-wrap","items-end","justify-end","gap-2"],["type","button",1,"px-3","py-1.5","text-xs","bg-ccapAccent","text-black","font-medium","rounded","hover:bg-ccapAccent/80","transition-colors","disabled:opacity-50","shrink-0",3,"click","disabled"]],template:function(o,n){o&1&&(T(Xe),a(0,"div",0),w(1),a(2,"div",1)(3,"textarea",2),C("ngModelChange",function(k){return n.draftTextChange.emit(k)})("keydown",function(k){return n.handleKeyDown(k)}),m(4," "),s(),w(5,1),s(),w(6,2),a(7,"div",3),w(8,3),a(9,"button",4),C("click",function(){return n.handleSendClick()}),m(10),s()()()),o&2&&(r(3),l("placeholder",n.placeholder())("ngModel",n.draftText()),M("rows",n.textareaRows()),r(6),l("disabled",n.isSendDisabled()||n.isSending()),r(),$(" ",n.isSending()?n.sendingButtonLabel():n.sendButtonLabel()," "))},dependencies:[f,H,E,j,F],encapsulation:2})}return t})();var Ue=[[["","sDisclosureSummaryTrailing",""]],"*"],Qe=["[sDisclosureSummaryTrailing]","*"],q=(()=>{class t{summaryLabel=i.required();density=i("comfortable");tone=i("changes");summaryRowClass_$=d(()=>{let e=this.density(),o=this.tone(),n="flex items-center gap-1 cursor-pointer select-none transition-colors list-none [&::-webkit-details-marker]:hidden";return o==="changes"?e==="comfortable"?`${n} px-2.5 py-1 bg-neutral-800/20 hover:bg-neutral-800/40`:`${n} px-1.5 py-0.5 bg-neutral-800/15 hover:bg-neutral-800/30`:e==="comfortable"?`${n} px-2.5 py-1 bg-neutral-800/30 hover:bg-neutral-800/50`:`${n} px-1.5 py-0.5 bg-neutral-800/20 hover:bg-neutral-800/40`});summaryLabelClass_$=d(()=>{let e=this.density();return this.tone()==="changes"?e==="comfortable"?"text-[10px] text-orange-300/50":"text-[9px] text-orange-300/40":e==="comfortable"?"text-[10px] text-neutral-400 truncate leading-relaxed":"text-[9px] text-neutral-500 truncate"});chevronSizeClass_$=d(()=>this.density()==="comfortable"?"w-3 h-3":"w-2.5 h-2.5");bodyWrapperClass_$=d(()=>{let e=this.density();return this.tone()==="changes"?e==="comfortable"?"px-2.5 py-1.5 bg-neutral-800/20 border-t border-neutral-700/15":"px-1.5 py-1 bg-neutral-800/15 border-t border-neutral-700/10":e==="comfortable"?"px-2.5 py-1.5 bg-neutral-800/30 border-t border-neutral-700/20":"px-1.5 py-1 bg-neutral-800/20 border-t border-neutral-700/15"});static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-collapsible-disclosure"]],hostAttrs:[1,"block","border-t","border-orange-500/20"],inputs:{summaryLabel:[1,"summaryLabel"],density:[1,"density"],tone:[1,"tone"]},standalone:!0,features:[_],ngContentSelectors:Qe,decls:9,vars:8,consts:[[1,"group/sdisclosure","group/pr"],["viewBox","0 0 12 12","fill","none",1,"text-neutral-500","shrink-0","transition-transform","[[open]>&]:rotate-90",3,"ngClass"],["d","M4.5 2.5l4 3.5-4 3.5","stroke","currentColor","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"]],template:function(o,n){o&1&&(T(Ue),a(0,"details",0)(1,"summary"),I(),a(2,"svg",1),D(3,"path",2),s(),N(),a(4,"span"),m(5),s(),w(6),s(),a(7,"div"),w(8,1),s()()),o&2&&(r(),S(n.summaryRowClass_$()),r(),l("ngClass",n.chevronSizeClass_$()),r(2),S(n.summaryLabelClass_$()),r(),x(n.summaryLabel()),r(2),S(n.bodyWrapperClass_$()))},dependencies:[f,A],encapsulation:2})}return t})();var Ze=["*"],G=(()=>{class t{maxHeightPx=i(250);density=i("comfortable");innerClass_$=d(()=>(this.density()==="comfortable","font-mono"));static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-monospace-scroll-block"]],hostAttrs:[1,"block"],inputs:{maxHeightPx:[1,"maxHeightPx"],density:[1,"density"]},standalone:!0,features:[_],ngContentSelectors:Ze,decls:2,vars:4,consts:[[1,"overflow-y-auto","overflow-x-auto","font-mono"]],template:function(o,n){o&1&&(T(),a(0,"div",0),w(1),s()),o&2&&(S(n.innerClass_$()),oe("max-height",n.maxHeightPx(),"px"))},dependencies:[f],encapsulation:2})}return t})();var Ee=(()=>{class t{sanitizer;constructor(e){this.sanitizer=e}transform(e){let o=this.getSvgForTool(e??"");return this.sanitizer.bypassSecurityTrustHtml(o)}getSvgForTool(e){switch(e){case"Read":return`<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1
+ import{a as Ce}from"./chunk-WETMMHZO.js";import{a as ve}from"./chunk-7JUIBZEE.js";import{a as we,b as xe,c as ke}from"./chunk-C7XPBJTG.js";import{e as Me,f as Te,g as Pe,i as De}from"./chunk-FES32KDN.js";import{a as be}from"./chunk-WPHEQXWB.js";import{c as _e}from"./chunk-EPQSURW3.js";import{a as he}from"./chunk-Q2NVIOCY.js";import{a as ye}from"./chunk-2HOSTFZM.js";import{a as Se}from"./chunk-ZBTWQZNB.js";import{a as ge}from"./chunk-FLAJXIYW.js";import{a as ue,c as E,e as fe,f as j,i as F,v as H}from"./chunk-EO4DNTT4.js";import{$a as K,C as O,Cb as me,D as g,E as Z,Fa as m,G as ee,Ga as x,Ha as $,J as R,K as B,L as I,M as N,Ma as ie,Na as re,O as te,Oa as ae,Pa as se,Qa as le,Ra as pe,Sa as de,T as y,Ta as _,U as i,W as z,Wa as v,Z as r,_ as ne,aa as X,ab as W,da as b,fa as M,fb as ce,ga as l,ha as oe,hb as d,ia as V,ja as S,la as h,mb as A,qa as a,ra as s,sa as D,ua as L,ub as f,va as C,wa as u,x as U,xa as T,ya as w,z as Q}from"./chunk-TBMJSIBB.js";var Ve=["*"];function Ne(t,p){if(t&1&&(a(0,"div",5),w(1),s()),t&2){let e=u();l("ngClass",e.spacingClassMap_$())}}var Ae=(()=>{class t{expanded=i.required();title=i.required();contentSpacingClass=i("space-y-3");panelClass=i("rounded-lg border border-neonDefault/60 bg-neutral-900/40");titleClass=i("text-base font-semibold text-neutral-200");spacingClassMap_$=d(()=>({[this.contentSpacingClass().trim()]:!0}));toggle=y();handleHeaderClick(){this.toggle.emit()}handleHeaderKeydownEnter(){this.toggle.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-settings-collapsible-panel"]],hostAttrs:[1,"block"],inputs:{expanded:[1,"expanded"],title:[1,"title"],contentSpacingClass:[1,"contentSpacingClass"],panelClass:[1,"panelClass"],titleClass:[1,"titleClass"]},outputs:{toggle:"toggle"},standalone:!0,features:[_],ngContentSelectors:Ve,decls:8,vars:12,consts:[[3,"ngClass"],["role","button","tabindex","0",1,"flex","items-center","gap-2","cursor-pointer","select-none",3,"click","keydown.enter"],["aria-hidden","true",1,"inline-flex","shrink-0","text-neutral-400"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3.5","h-3.5","transition-transform","duration-150"],["points","6 9 12 15 18 9"],[1,"mt-3",3,"ngClass"]],template:function(o,n){o&1&&(T(),a(0,"div",0)(1,"div",1),C("click",function(){return n.handleHeaderClick()})("keydown.enter",function(){return n.handleHeaderKeydownEnter()}),a(2,"span",2),I(),a(3,"svg",3),D(4,"polyline",4),s()(),N(),a(5,"h3",0),m(6),s()(),b(7,Ne,2,1,"div",5),s()),o&2&&(V("p-4",n.expanded())("px-4",!n.expanded())("py-2",!n.expanded()),l("ngClass",n.panelClass()),r(3),V("-rotate-90",!n.expanded()),r(2),l("ngClass",n.titleClass()),r(),x(n.title()),r(),h(n.expanded()?7:-1))},dependencies:[f,A],encapsulation:2})}return t})();var ze=["*"];function Ke(t,p){if(t&1&&(a(0,"p",1),m(1),s()),t&2){let e=u();r(),x(e.subtitle())}}var Re=(()=>{class t{title=i.required();subtitle=i("");marginBottom=i("mb-6");hasSubtitle_$=d(()=>this.subtitle().trim().length>0);static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-page-header"]],hostAttrs:[1,"block"],inputs:{title:[1,"title"],subtitle:[1,"subtitle"],marginBottom:[1,"marginBottom"]},standalone:!0,features:[_],ngContentSelectors:ze,decls:7,vars:4,consts:[[1,"text-2xl","gt-xs:text-3xl","font-bold","text-neutral-100"],[1,"text-neutral-400","text-sm","gt-xs:text-base","mt-1"],[1,"flex","items-center","gap-2","shrink-0"]],template:function(o,n){o&1&&(T(),a(0,"header")(1,"div")(2,"h1",0),m(3),s(),b(4,Ke,2,1,"p",1),s(),a(5,"div",2),w(6),s()()),o&2&&(S("flex items-center justify-between gap-4 "+n.marginBottom()),r(3),x(n.title()),r(),h(n.hasSubtitle_$()?4:-1))},dependencies:[f],encapsulation:2})}return t})();function We(t,p){t&1&&(I(),a(0,"svg",3),D(1,"path",4),s())}function qe(t,p){t&1&&(I(),a(0,"svg",3),D(1,"path",5)(2,"path",6),s())}var Ie=(()=>{class t{placeholder=i("");disabled=i(!1);disabledByControl_$=X(!1);name=i("");autocomplete=i("off");dataBwignore=i(!1);suppressPasswordManagerAutofill=i(!1);inputClass=i("");blurEvent=y();visible_$=X(!1);inputType_$=d(()=>this.visible_$()?"text":"password");toggleAriaLabel_$=d(()=>this.visible_$()?"Jelsz\xF3 elrejt\xE9se":"Jelsz\xF3 megjelen\xEDt\xE9se");toggleTitle_$=d(()=>this.visible_$()?"Jelsz\xF3 elrejt\xE9se":"Jelsz\xF3 megjelen\xEDt\xE9se");isDisabled_$=d(()=>this.disabled()||this.disabledByControl_$());effectiveAutocomplete_$=d(()=>this.suppressPasswordManagerAutofill()?"new-password":this.autocomplete());effectiveDataBwignore_$=d(()=>this.dataBwignore()||this.suppressPasswordManagerAutofill());value="";onChange=()=>{};onTouched=()=>{};cdr=O(ce);injector=O(te);ngControl=null;ngOnInit(){this.ngControl=this.injector.get(fe,null,{optional:!0,self:!0}),this.ngControl!=null&&(this.ngControl.valueAccessor=this)}toggleVisible(){this.visible_$.update(e=>!e)}get innerValue(){return this.value}set innerValue(e){this.value!==e&&(this.value=e,this.onChange(e))}writeValue(e){this.value=e??"",this.cdr.markForCheck()}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.disabledByControl_$.set(e),this.cdr.markForCheck()}onBlur(){this.onTouched(),this.blurEvent.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-password-input"]],hostAttrs:[1,"block","min-w-0","flex-1"],inputs:{placeholder:[1,"placeholder"],disabled:[1,"disabled"],name:[1,"name"],autocomplete:[1,"autocomplete"],dataBwignore:[1,"dataBwignore"],suppressPasswordManagerAutofill:[1,"suppressPasswordManagerAutofill"],inputClass:[1,"inputClass"]},outputs:{blurEvent:"blurEvent"},standalone:!0,features:[de([{provide:ue,useExisting:U(()=>t),multi:!0}]),_],decls:5,vars:16,consts:[[1,"flex","flex-wrap","gap-2","items-center","min-w-0"],[3,"ngModelChange","blur","type","ngModel","name","placeholder","disabled"],["type","button",1,"shrink-0","w-9","h-9","flex","items-center","justify-center","rounded","border","border-neonDefault","text-neutral-400","hover:text-neonCyan","hover:shadow-neon-glow-cyan","hover:border-neonCyan","disabled:opacity-50","transition-colors",3,"click","disabled"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","stroke","currentColor","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M15 12a3 3 0 11-6 0 3 3 0 016 0z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"]],template:function(o,n){o&1&&(a(0,"div",0)(1,"input",1),ae("ngModelChange",function(k){return re(n.innerValue,k)||(n.innerValue=k),k}),C("blur",function(){return n.onBlur()}),s(),a(2,"button",2),C("click",function(){return n.toggleVisible()}),b(3,We,2,0,":svg:svg",3)(4,qe,3,0,":svg:svg",3),s()()),o&2&&(r(),S("flex-1 min-w-0 px-3 py-2 bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan disabled:opacity-70 "+n.inputClass()),l("type",n.inputType_$()),ie("ngModel",n.innerValue),l("name",n.name())("placeholder",n.placeholder())("disabled",n.isDisabled_$()),M("autocomplete",n.effectiveAutocomplete_$())("data-bwignore",n.effectiveDataBwignore_$()?"1":null)("data-lpignore",n.suppressPasswordManagerAutofill()?"true":null)("data-1p-ignore",n.suppressPasswordManagerAutofill()?"true":null)("data-form-type",n.suppressPasswordManagerAutofill()?"other":null),r(),l("disabled",n.isDisabled_$()),M("aria-label",n.toggleAriaLabel_$())("title",n.toggleTitle_$()),r(),h(n.visible_$()?3:4))},dependencies:[f,H,E,j,F],encapsulation:2})}return t})();function Ge(t,p){if(t&1&&(a(0,"span",2),m(1," \u26A0\uFE0F "),s()),t&2){let e,o=u();M("title",(e=o.warningTooltip())!==null&&e!==void 0?e:"")}}function Je(t,p){if(t&1){let e=L();a(0,"button",5),C("click",function(){R(e);let n=u();return B(n.emitStartEdit())}),m(1," Szerkeszt\xE9s "),s()}}function Oe(t,p){if(t&1){let e=L();a(0,"button",6),C("click",function(){R(e);let n=u();return B(n.emitSave())}),m(1),s()}if(t&2){let e=u();l("disabled",e.saveDisabled()),r(),$(" ",e.saveButtonLabel_$()," ")}}var Le=(()=>{class t{name=i("");displayValue=i.required();placeholder=i("");editMode=i(!1);saveDisabled=i(!1);savePending=i(!1);saveLabel=i("Ment\xE9s");savePendingLabel=i("Ment\xE9s\u2026");warningTooltip=i(null);inputClass=i("");dataBwignore=i(!0);valueChange=y();startEdit=y();save=y();inputReadonly_$=d(()=>!this.editMode());showWarning_$=d(()=>{let e=this.warningTooltip();return e!=null&&e.trim().length>0});saveButtonLabel_$=d(()=>this.savePending()?this.savePendingLabel():this.saveLabel());inputClassCombined_$=d(()=>{let e="flex-1 min-w-0 px-3 py-2 font-mono text-sm bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan",o=this.inputReadonly_$()?" opacity-90":"",n=this.inputClass().trim().length>0?" "+this.inputClass():"";return e+o+n});onDisplayValueChange(e){this.editMode()&&this.valueChange.emit(e)}emitStartEdit(){this.startEdit.emit()}emitSave(){this.save.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-settings-secret-key-row"]],hostAttrs:[1,"block"],inputs:{name:[1,"name"],displayValue:[1,"displayValue"],placeholder:[1,"placeholder"],editMode:[1,"editMode"],saveDisabled:[1,"saveDisabled"],savePending:[1,"savePending"],saveLabel:[1,"saveLabel"],savePendingLabel:[1,"savePendingLabel"],warningTooltip:[1,"warningTooltip"],inputClass:[1,"inputClass"],dataBwignore:[1,"dataBwignore"]},outputs:{valueChange:"valueChange",startEdit:"startEdit",save:"save"},standalone:!0,features:[_],decls:5,vars:9,consts:[[1,"flex","flex-wrap","gap-2","items-center"],["type","text",3,"ngModelChange","name","ngModel","readonly"],[1,"text-amber-300","text-sm"],["type","button",1,"px-4","py-2","border","border-neonCyan","rounded","text-neutral-300","hover:shadow-neon-glow-cyan","whitespace-nowrap"],["type","button",1,"px-4","py-2","bg-ccapAccent","text-white","rounded","whitespace-nowrap","disabled:opacity-50",3,"disabled"],["type","button",1,"px-4","py-2","border","border-neonCyan","rounded","text-neutral-300","hover:shadow-neon-glow-cyan","whitespace-nowrap",3,"click"],["type","button",1,"px-4","py-2","bg-ccapAccent","text-white","rounded","whitespace-nowrap","disabled:opacity-50",3,"click","disabled"]],template:function(o,n){o&1&&(a(0,"div",0)(1,"input",1),C("ngModelChange",function(k){return n.onDisplayValueChange(k)}),s(),b(2,Ge,2,1,"span",2)(3,Je,2,0,"button",3)(4,Oe,2,2,"button",4),s()),o&2&&(r(),S(n.inputClassCombined_$()),l("name",n.name())("ngModel",n.displayValue())("readonly",n.inputReadonly_$()),M("placeholder",n.placeholder())("data-bwignore",n.dataBwignore()?"true":null),r(),h(n.showWarning_$()?2:-1),r(),h(n.editMode()?4:3))},dependencies:[f,H,E,j,F],encapsulation:2})}return t})();var Xe=[[["","sComposerPrefix",""]],[["","sComposerTextareaAccessory",""]],[["","sComposerBelowTextarea",""]],[["","sComposerBeforeSend",""]]],Ye=["[sComposerPrefix]","[sComposerTextareaAccessory]","[sComposerBelowTextarea]","[sComposerBeforeSend]"],$e=(()=>{class t{draftText=i("");draftTextChange=y();isSending=i(!1);isSendDisabled=i(!1);placeholder=i("");textareaRows=i(3);sendButtonLabel=i("Send");sendingButtonLabel=i("\u2026");sendRequested=y();handleKeyDown(e){e.key!=="Enter"||e.shiftKey||(e.preventDefault(),this.emitSendIfAllowed())}handleSendClick(){this.emitSendIfAllowed()}emitSendIfAllowed(){this.isSending()||this.isSendDisabled()||this.sendRequested.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-session-prompt-composer"]],hostAttrs:[1,"block","shrink-0","border-t","border-neonDefault","bg-ccapSurface"],inputs:{draftText:[1,"draftText"],isSending:[1,"isSending"],isSendDisabled:[1,"isSendDisabled"],placeholder:[1,"placeholder"],textareaRows:[1,"textareaRows"],sendButtonLabel:[1,"sendButtonLabel"],sendingButtonLabel:[1,"sendingButtonLabel"]},outputs:{draftTextChange:"draftTextChange",sendRequested:"sendRequested"},standalone:!0,features:[_],ngContentSelectors:Ye,decls:11,vars:5,consts:[[1,"flex","flex-col","gap-2","p-2"],[1,"relative","min-w-0","w-full"],[1,"min-h-[60px]","max-h-[200px]","w-full","resize-none","rounded","border","border-neutral-700","bg-neutral-800","px-2","py-1.5","font-mono","text-xs","text-neutral-200","placeholder-neutral-600","focus:border-ccapAccent","focus:outline-none",3,"ngModelChange","keydown","placeholder","ngModel"],[1,"flex","flex-wrap","items-end","justify-end","gap-2"],["type","button",1,"px-3","py-1.5","text-xs","bg-ccapAccent","text-black","font-medium","rounded","hover:bg-ccapAccent/80","transition-colors","disabled:opacity-50","shrink-0",3,"click","disabled"]],template:function(o,n){o&1&&(T(Xe),a(0,"div",0),w(1),a(2,"div",1)(3,"textarea",2),C("ngModelChange",function(k){return n.draftTextChange.emit(k)})("keydown",function(k){return n.handleKeyDown(k)}),m(4," "),s(),w(5,1),s(),w(6,2),a(7,"div",3),w(8,3),a(9,"button",4),C("click",function(){return n.handleSendClick()}),m(10),s()()()),o&2&&(r(3),l("placeholder",n.placeholder())("ngModel",n.draftText()),M("rows",n.textareaRows()),r(6),l("disabled",n.isSendDisabled()||n.isSending()),r(),$(" ",n.isSending()?n.sendingButtonLabel():n.sendButtonLabel()," "))},dependencies:[f,H,E,j,F],encapsulation:2})}return t})();var Ue=[[["","sDisclosureSummaryTrailing",""]],"*"],Qe=["[sDisclosureSummaryTrailing]","*"],q=(()=>{class t{summaryLabel=i.required();density=i("comfortable");tone=i("changes");summaryRowClass_$=d(()=>{let e=this.density(),o=this.tone(),n="flex items-center gap-1 cursor-pointer select-none transition-colors list-none [&::-webkit-details-marker]:hidden";return o==="changes"?e==="comfortable"?`${n} px-2.5 py-1 bg-neutral-800/20 hover:bg-neutral-800/40`:`${n} px-1.5 py-0.5 bg-neutral-800/15 hover:bg-neutral-800/30`:e==="comfortable"?`${n} px-2.5 py-1 bg-neutral-800/30 hover:bg-neutral-800/50`:`${n} px-1.5 py-0.5 bg-neutral-800/20 hover:bg-neutral-800/40`});summaryLabelClass_$=d(()=>{let e=this.density();return this.tone()==="changes"?e==="comfortable"?"text-[10px] text-orange-300/50":"text-[9px] text-orange-300/40":e==="comfortable"?"text-[10px] text-neutral-400 truncate leading-relaxed":"text-[9px] text-neutral-500 truncate"});chevronSizeClass_$=d(()=>this.density()==="comfortable"?"w-3 h-3":"w-2.5 h-2.5");bodyWrapperClass_$=d(()=>{let e=this.density();return this.tone()==="changes"?e==="comfortable"?"px-2.5 py-1.5 bg-neutral-800/20 border-t border-neutral-700/15":"px-1.5 py-1 bg-neutral-800/15 border-t border-neutral-700/10":e==="comfortable"?"px-2.5 py-1.5 bg-neutral-800/30 border-t border-neutral-700/20":"px-1.5 py-1 bg-neutral-800/20 border-t border-neutral-700/15"});static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-collapsible-disclosure"]],hostAttrs:[1,"block","border-t","border-orange-500/20"],inputs:{summaryLabel:[1,"summaryLabel"],density:[1,"density"],tone:[1,"tone"]},standalone:!0,features:[_],ngContentSelectors:Qe,decls:9,vars:8,consts:[[1,"group/sdisclosure","group/pr"],["viewBox","0 0 12 12","fill","none",1,"text-neutral-500","shrink-0","transition-transform","[[open]>&]:rotate-90",3,"ngClass"],["d","M4.5 2.5l4 3.5-4 3.5","stroke","currentColor","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"]],template:function(o,n){o&1&&(T(Ue),a(0,"details",0)(1,"summary"),I(),a(2,"svg",1),D(3,"path",2),s(),N(),a(4,"span"),m(5),s(),w(6),s(),a(7,"div"),w(8,1),s()()),o&2&&(r(),S(n.summaryRowClass_$()),r(),l("ngClass",n.chevronSizeClass_$()),r(2),S(n.summaryLabelClass_$()),r(),x(n.summaryLabel()),r(2),S(n.bodyWrapperClass_$()))},dependencies:[f,A],encapsulation:2})}return t})();var Ze=["*"],G=(()=>{class t{maxHeightPx=i(250);density=i("comfortable");innerClass_$=d(()=>(this.density()==="comfortable","font-mono"));static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-monospace-scroll-block"]],hostAttrs:[1,"block"],inputs:{maxHeightPx:[1,"maxHeightPx"],density:[1,"density"]},standalone:!0,features:[_],ngContentSelectors:Ze,decls:2,vars:4,consts:[[1,"overflow-y-auto","overflow-x-auto","font-mono"]],template:function(o,n){o&1&&(T(),a(0,"div",0),w(1),s()),o&2&&(S(n.innerClass_$()),oe("max-height",n.maxHeightPx(),"px"))},dependencies:[f],encapsulation:2})}return t})();var Ee=(()=>{class t{sanitizer;constructor(e){this.sanitizer=e}transform(e){let o=this.getSvgForTool(e??"");return this.sanitizer.bypassSecurityTrustHtml(o)}getSvgForTool(e){switch(e){case"Read":return`<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
2
  <path d="M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"/>
3
3
  <path d="M10 2v4h4"/>
4
4
  <path d="M6 9h4"/><path d="M6 12h2"/>
@@ -35,4 +35,4 @@ import{a as Ce}from"./chunk-J4UUNBU7.js";import{a as ve}from"./chunk-7JUIBZEE.js
35
35
  </svg>`;default:return`<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
36
36
  <path d="M10.5 1.5a4 4 0 0 0-5 5L2 10l-.5 4.5L6 14l3.5-3.5a4 4 0 0 0 5-5l-2.5 2.5-2-2L12.5 3.5z"/>
37
37
  </svg>`}}static \u0275fac=function(o){return new(o||t)(ne(me,16))};static \u0275pipe=ee({name:"sAgentToolIcon",type:t,pure:!0,standalone:!0})}return t})();var et=(t,p)=>({"[&>svg]:w-3":t,"[&>svg]:h-3":p}),je=(t,p)=>({"text-[11px] text-orange-300/90 max-w-[400px]":t,"text-[10px] text-orange-300/70 max-w-[350px]":p}),tt=(t,p)=>({"w-4 h-4 border-orange-500/30 bg-orange-500/20 hover:bg-orange-500/40":t,"w-3.5 h-3.5 bg-orange-500/15 hover:bg-orange-500/30":p}),nt=(t,p)=>({"text-[8px] text-orange-300":t,"text-[7px] text-orange-300/70":p});function ot(t,p){if(t&1&&(a(0,"span",2),m(1),s()),t&2){let e=u();r(),x(e.toolName())}}function it(t,p){if(t&1&&(a(0,"span",3),m(1),s()),t&2){let e=u();l("ngClass",v(2,je,e.density()==="comfortable",e.density()==="compact")),r(),x(e.toolDescription())}}function rt(t,p){if(t&1&&(a(0,"span",3),m(1),s()),t&2){let e=u(),o=pe(4);l("ngClass",v(3,je,e.density()==="comfortable",e.density()==="compact")),M("dir",e.isPathRtl()?"rtl":null),r(),$(" ",o," ")}}function at(t,p){if(t&1){let e=L();a(0,"button",5),C("click",function(n){R(e);let c=u();return B(c.handleRawInfoClick(n))}),a(1,"span",6),m(2,"i"),s()()}if(t&2){let e=u();l("ngClass",v(2,tt,e.density()==="comfortable",e.density()==="compact")),r(),l("ngClass",v(5,nt,e.density()==="comfortable",e.density()==="compact"))}}var J=(()=>{class t{toolName=i("");summaryText=i("");toolDescription=i("");isPathRtl=i(!1);showRawInfoButton=i(!1);density=i("comfortable");static PATH_DISPLAY_MAX_CHARS=80;displaySummary_$=d(()=>{let e=this.summaryText(),o=this.toolName();if(!e||e===o)return null;let n=`${o}: `,c=e.startsWith(n)?e.substring(n.length):e;return c.length===0?null:this.isPathRtl()&&c.length>t.PATH_DISPLAY_MAX_CHARS?`\u2026${c.slice(-(t.PATH_DISPLAY_MAX_CHARS-1))}`:c});rawInfoClick=y();handleRawInfoClick(e){e.stopPropagation(),this.rawInfoClick.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-agent-tool-summary-row"]],hostAttrs:[1,"block"],inputs:{toolName:[1,"toolName"],summaryText:[1,"summaryText"],toolDescription:[1,"toolDescription"],isPathRtl:[1,"isPathRtl"],showRawInfoButton:[1,"showRawInfoButton"],density:[1,"density"]},outputs:{rawInfoClick:"rawInfoClick"},standalone:!0,features:[_],decls:8,vars:19,consts:[[1,"flex","items-center","gap-1.5"],[1,"text-orange-400","shrink-0","flex","items-center",3,"ngClass","innerHTML"],[1,"text-[11px]","text-orange-300/90","font-medium","shrink-0"],[1,"truncate",3,"ngClass"],["type","button",1,"ml-auto","shrink-0","rounded-full","border","flex","items-center","justify-center","cursor-pointer",3,"ngClass"],["type","button",1,"ml-auto","shrink-0","rounded-full","border","flex","items-center","justify-center","cursor-pointer",3,"click","ngClass"],[1,"font-bold","leading-none",3,"ngClass"]],template:function(o,n){if(o&1&&(a(0,"div",0),D(1,"span",1),K(2,"sAgentToolIcon"),b(3,ot,2,1,"span",2),se(4),b(5,it,2,5,"span",3)(6,rt,2,6,"span",3)(7,at,3,8,"button",4),s()),o&2){V("px-2",n.density()==="comfortable")("py-1",n.density()==="comfortable")("px-1",n.density()==="compact")("py-0",n.density()==="compact"),r(),l("ngClass",v(16,et,n.density()==="compact",n.density()==="compact"))("innerHTML",W(2,13,n.toolName()),z),r(2),h(n.density()==="comfortable"?3:-1),r();let c=le(n.displaySummary_$());r(),h(n.toolDescription()?5:c?6:-1),r(2),h(n.showRawInfoButton()?7:-1)}},dependencies:[f,A,Ee],encapsulation:2})}return t})();var Fe=(t,p)=>({"text-[10px]":t,"text-[9px]":p}),st=(t,p)=>({"w-3.5 h-3.5 bg-neutral-700/60":t,"w-3 h-3 bg-neutral-700/60":p}),lt=(t,p)=>({"text-[7px]":t,"text-[6px]":p});function pt(t,p){if(t&1&&(a(0,"app-s-collapsible-disclosure",1)(1,"app-s-monospace-scroll-block",3)(2,"pre",4),K(3,"sEditDiff"),m(4," "),s()()()),t&2){let e=u();l("summaryLabel",e.changesSummaryLabel())("density",e.density()),r(),l("maxHeightPx",e.scrollMaxHeightPx_$())("density",e.density()),r(),l("ngClass",v(8,Fe,e.density()==="comfortable",e.density()==="compact"))("innerHTML",W(3,6,e.expandableContent()),z)}}function dt(t,p){if(t&1){let e=L();a(0,"button",7),C("click",function(n){R(e);let c=u(2);return B(c.handlePairedRawClick(n))}),a(1,"span",8),m(2,"i"),s()()}if(t&2){let e=u(2);l("ngClass",v(2,st,e.density()==="comfortable",e.density()==="compact")),r(),l("ngClass",v(5,lt,e.density()==="comfortable",e.density()==="compact"))}}function ct(t,p){if(t&1&&(a(0,"app-s-collapsible-disclosure",2),b(1,dt,3,8,"button",5),a(2,"app-s-monospace-scroll-block",3)(3,"pre",6),m(4),s()()()),t&2){let e=p,o=u();l("summaryLabel",e.text)("density",o.density()),r(),h(e.rawData?1:-1),r(),l("maxHeightPx",o.scrollMaxHeightPx_$())("density",o.density()),r(),l("ngClass",v(7,Fe,o.density()==="comfortable",o.density()==="compact")),r(),x(e.expandableContent||e.text)}}var He=(()=>{class t{toolName=i("");summaryText=i("");toolDescription=i("");isPathRtl=i(!1);showToolRawInfo=i(!1);expandableContent=i("");pairedResult=i(null);density=i("comfortable");layout=i("full");changesSummaryLabel=i("Changes");toolRawInfoClick=y();pairedRawInfoClick=y();containerClass_$=d(()=>this.layout()==="full"?"overflow-hidden":"overflow-hidden border border-orange-500/10 rounded");scrollMaxHeightPx_$=d(()=>this.density()==="comfortable"?250:150);handlePairedRawClick(e){e.stopPropagation(),this.pairedRawInfoClick.emit()}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=g({type:t,selectors:[["app-s-agent-tool-call-card"]],hostAttrs:[1,"block"],inputs:{toolName:[1,"toolName"],summaryText:[1,"summaryText"],toolDescription:[1,"toolDescription"],isPathRtl:[1,"isPathRtl"],showToolRawInfo:[1,"showToolRawInfo"],expandableContent:[1,"expandableContent"],pairedResult:[1,"pairedResult"],density:[1,"density"],layout:[1,"layout"],changesSummaryLabel:[1,"changesSummaryLabel"]},outputs:{toolRawInfoClick:"toolRawInfoClick",pairedRawInfoClick:"pairedRawInfoClick"},standalone:!0,features:[_],decls:4,vars:10,consts:[[3,"rawInfoClick","toolName","summaryText","toolDescription","isPathRtl","showRawInfoButton","density"],["tone","changes",3,"summaryLabel","density"],["tone","result",3,"summaryLabel","density"],[3,"maxHeightPx","density"],[1,"text-neutral-400","whitespace-pre-wrap","break-words","leading-relaxed","m-0","overflow-x-auto",3,"ngClass","innerHTML"],["sDisclosureSummaryTrailing","","type","button",1,"ml-auto","shrink-0","rounded-full","border","border-neutral-600/40","flex","items-center","justify-center","cursor-pointer","hover:bg-neutral-600",3,"ngClass"],[1,"text-neutral-400","whitespace-pre-wrap","break-words","leading-relaxed","m-0","overflow-x-auto",3,"ngClass"],["sDisclosureSummaryTrailing","","type","button",1,"ml-auto","shrink-0","rounded-full","border","border-neutral-600/40","flex","items-center","justify-center","cursor-pointer","hover:bg-neutral-600",3,"click","ngClass"],[1,"font-bold","leading-none","text-neutral-300",3,"ngClass"]],template:function(o,n){if(o&1&&(a(0,"div")(1,"app-s-agent-tool-summary-row",0),C("rawInfoClick",function(){return n.toolRawInfoClick.emit()}),s(),b(2,pt,5,11,"app-s-collapsible-disclosure",1)(3,ct,5,10,"app-s-collapsible-disclosure",2),s()),o&2){let c;S(n.containerClass_$()),r(),l("toolName",n.toolName())("summaryText",n.summaryText())("toolDescription",n.toolDescription())("isPathRtl",n.isPathRtl())("showRawInfoButton",n.showToolRawInfo())("density",n.density()),r(),h(n.expandableContent()?2:-1),r(),h((c=n.pairedResult())?3:-1,c)}},dependencies:[f,A,Me,J,q,G],encapsulation:2})}return t})();var Wn=(()=>{class t{static \u0275fac=function(o){return new(o||t)};static \u0275mod=Z({type:t});static \u0275inj=Q({imports:[f,Ie,Le,Ae,Ce,ge,ye,be,he,Re,Se,we,xe,ve,$e,ke,Te,q,G,J,He,Pe,De,_e]})}return t})();export{Ie as a,Le as b,Ae as c,Re as d,Ee as e,He as f,Wn as g};
38
- //# sourceMappingURL=chunk-UQT5NYHO.js.map
38
+ //# sourceMappingURL=chunk-KQ62B5RJ.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/app/_modules/shared/_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component.ts", "src/app/_modules/shared/_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component.html", "src/app/_modules/shared/_components/s-page-header/s-page-header.component.ts", "src/app/_modules/shared/_components/s-page-header/s-page-header.component.html", "src/app/_modules/shared/_components/s-password-input/s-password-input.component.ts", "src/app/_modules/shared/_components/s-password-input/s-password-input.component.html", "src/app/_modules/shared/_components/s-settings-secret-key-row/s-settings-secret-key-row.component.ts", "src/app/_modules/shared/_components/s-settings-secret-key-row/s-settings-secret-key-row.component.html", "src/app/_modules/shared/_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component.ts", "src/app/_modules/shared/_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component.html", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component.html", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component.html", "src/app/_modules/shared/_pipes/s-agent-tool-icon.pipe.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component.html", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component.html", "src/app/_modules/shared/shared.module.ts"],
4
- "sourcesContent": ["import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Beállítások provider oldal: összecsukható alszekció (kártya + chevron fejléc).\n * A tartalom csak kinyitott állapotban jelenik meg; üzleti logika a szülőben marad.\n */\n@Component({\n selector: 'app-s-settings-collapsible-panel',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-settings-collapsible-panel.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsCollapsiblePanel_Component class. */\nexport class S_SettingsCollapsiblePanel_Component {\n /** Kinyitott állapot (szülő: pl. providerBlocksExpanded map). */\n readonly expanded = input.required<boolean>();\n\n /** Fejléc cím (pl. provider név). */\n readonly title = input.required<string>();\n\n /** Kinyitott tartalom vertikális spacing (pl. space-y-2 mock blokknál). */\n readonly contentSpacingClass = input<string>('space-y-3');\n\n /** Külső kártya Tailwind osztályok (mock blokk halványabb keretet használ). */\n readonly panelClass = input<string>('rounded-lg border border-neonDefault/60 bg-neutral-900/40');\n\n /** Fejléc cím (h3) Tailwind osztályok. */\n readonly titleClass = input<string>('text-base font-semibold text-neutral-200');\n\n /** `ngClass` map: dinamikus spacing class csak kinyitva (Tailwind purge-barát egy token). */\n readonly spacingClassMap_$ = computed((): Record<string, boolean> => {\n const key: string = this.contentSpacingClass().trim();\n return { [key]: true };\n });\n\n /** Fejléc kattintás / Enter: szülő toggleProviderBlock hívása. */\n readonly toggle = output<void>();\n\n /**\n * Fejléc kattintás → toggle emit.\n */\n handleHeaderClick(): void {\n this.toggle.emit();\n }\n\n /**\n * Billentyűzet: Enter a fejléc fókuszából.\n */\n handleHeaderKeydownEnter(): void {\n this.toggle.emit();\n }\n}\n", "<!--\n Egyetlen [ngClass] a külsőn: két [ngClass] ugyanazon az elemen felülírná egymást,\n és a panelClass (border / háttér) eltűnne kinyitott állapotban.\n-->\n<div\n [ngClass]=\"panelClass()\"\n [class.p-4]=\"expanded()\"\n [class.px-4]=\"!expanded()\"\n [class.py-2]=\"!expanded()\">\n <div\n class=\"flex items-center gap-2 cursor-pointer select-none\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"handleHeaderClick()\"\n (keydown.enter)=\"handleHeaderKeydownEnter()\">\n <span class=\"inline-flex shrink-0 text-neutral-400\" aria-hidden=\"true\">\n <svg\n class=\"w-3.5 h-3.5 transition-transform duration-150\"\n [class.-rotate-90]=\"!expanded()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </span>\n <h3 [ngClass]=\"titleClass()\">{{ title() }}</h3>\n </div>\n\n @if (expanded()) {\n <!-- Tartalom spacing külön wrapper-en: ne ütközzön a panelClass ngClass-jével. -->\n <div [ngClass]=\"spacingClassMap_$()\" class=\"mt-3\">\n <ng-content />\n </div>\n }\n</div>\n", "import { Component, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Közös oldal fejléc: cím + opcionális alcím + akciógombok slot.\n * Kiváltja az ismétlődő header flex patternt (projects-list, model-registry, embedding-model-registry, stb.).\n */\n@Component({\n selector: 'app-s-page-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-page-header.component.html',\n host: { class: 'block' },\n})\n/** S_PageHeader_Component class. */\nexport class S_PageHeader_Component {\n /** Főcím. */\n readonly title = input.required<string>();\n\n /** Opcionális alcím. */\n readonly subtitle = input<string>('');\n\n /** Alsó margó Tailwind osztály. */\n readonly marginBottom = input<string>('mb-6');\n\n /** Van-e alcím (computed). */\n readonly hasSubtitle_$ = computed((): boolean => this.subtitle().trim().length > 0);\n}\n", "<header [class]=\"'flex items-center justify-between gap-4 ' + marginBottom()\">\n <div>\n <h1 class=\"text-2xl gt-xs:text-3xl font-bold text-neutral-100\">{{ title() }}</h1>\n @if (hasSubtitle_$()) {\n <p class=\"text-neutral-400 text-sm gt-xs:text-base mt-1\">{{ subtitle() }}</p>\n }\n </div>\n <div class=\"flex items-center gap-2 shrink-0\">\n <ng-content />\n </div>\n</header>\n", "import {\n Component,\n inject,\n signal,\n computed,\n input,\n output,\n forwardRef,\n ChangeDetectorRef,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n/**\n * Közös jelszómező komponens hide/show toggle gombbal.\n * CVA-val [(ngModel)] és name támogatás; opcionális placeholder, disabled, autocomplete, inputClass.\n * `suppressPasswordManagerAutofill`: vault / nem bejelentkezési mező – erős autofill-ignore (Chrome + extension-ök).\n */\n@Component({\n selector: 'app-s-password-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-password-input.component.html',\n host: { class: 'block min-w-0 flex-1' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof S_PasswordInput_Component => S_PasswordInput_Component),\n multi: true,\n },\n ],\n})\n/** S_PasswordInput_Component class. */\nexport class S_PasswordInput_Component implements ControlValueAccessor, OnInit {\n /** Placeholder szöveg. */\n readonly placeholder = input<string>('');\n\n /** Letiltott állapot (parent által). */\n readonly disabled = input<boolean>(false);\n\n /** CVA által beállított disabled (form control). */\n readonly disabledByControl_$ = signal<boolean>(false);\n\n /** Input name (formokhoz). */\n readonly name = input<string>('');\n\n /** Autocomplete érték (pl. 'off', 'current-password'). */\n readonly autocomplete = input<string>('off');\n\n /** Ha true, data-bwignore=\"1\" kerül az inputra (böngésző password-manager extension ignore). */\n readonly dataBwignore = input<boolean>(false);\n\n /**\n * Ha true: `autocomplete=\"new-password\"` + LastPass / 1Password / Bitwarden ignore flag-ek az inputon.\n * Nem bejelentkezési flow (pl. titoktár API key) – elkerüli a mentett site-password autofill-t.\n */\n readonly suppressPasswordManagerAutofill = input<boolean>(false);\n\n /** Extra Tailwind/osztályok az input elemre (pl. w-full max-w-md font-mono text-sm). */\n readonly inputClass = input<string>('');\n\n /** Blur esemény (parent figyelheti). */\n readonly blurEvent = output<void>();\n\n /** Belső: jelszó látható (true) vagy rejtett (false). */\n readonly visible_$ = signal<boolean>(false);\n\n /** Input type: látható esetén text, különben password (template). */\n readonly inputType_$ = computed((): 'text' | 'password' =>\n this.visible_$() ? 'text' : 'password');\n\n /** Toggle gomb aria-label (látható / rejtett) (template). */\n readonly toggleAriaLabel_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Toggle gomb title (tooltip) (template). */\n readonly toggleTitle_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Effektív disabled: parent vagy form control (template). */\n readonly isDisabled_$ = computed((): boolean =>\n this.disabled() || this.disabledByControl_$());\n\n /** Autofill suppress módban Chrome-nak `new-password`, különben a `autocomplete()` input. */\n readonly effectiveAutocomplete_$ = computed((): string =>\n this.suppressPasswordManagerAutofill() ? 'new-password' : this.autocomplete());\n\n /** Bitwarden ignore: explicit `dataBwignore` vagy suppress mód. */\n readonly effectiveDataBwignore_$ = computed((): boolean =>\n this.dataBwignore() || this.suppressPasswordManagerAutofill());\n\n /** CVA: külső érték. */\n private value: string = '';\n\n /** CVA: change callback. */\n private onChange: (value: string) => void = () => {};\n\n /** CVA: touched callback. */\n private onTouched: () => void = () => {};\n\n private readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** Host-injector: NgControl feloldását ngOnInit-ben végezzük, hogy elkerüljük az NG0200 DI ciklust. */\n private readonly injector: Injector = inject(Injector);\n\n /**\n * NgModel / formControlName esetén a valueAccessor beállítása.\n * Nem field-inject, mert a konstruktor / field init alatt az NG_VALUE_ACCESSOR + useExisting körkörös DI-t okozhat.\n */\n private ngControl: NgControl | null = null;\n\n /**\n * NgControl csatolása a CVA-hoz: field-szintű inject(NgControl) helyett init után,\n * amikor a host directive-ek (NgModel) már felálltak.\n */\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null, { optional: true, self: true });\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** Toggle: jelszó megjelenítés / elrejtés. */\n toggleVisible(): void {\n this.visible_$.update((v: boolean): boolean => !v);\n }\n\n /** Belső input értékének gettere (template). */\n get innerValue(): string {\n return this.value;\n }\n\n /** Belső input értékének settere (template, ngModel). */\n set innerValue(v: string) {\n if (this.value !== v) {\n this.value = v;\n this.onChange(v);\n }\n }\n\n /** CVA: külső érték beállítása. */\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.cdr.markForCheck();\n }\n\n /** CVA: change callback regisztrálása. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** CVA: touched callback regisztrálása. */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** CVA: disabled állapot (form control). */\n setDisabledState(isDisabled: boolean): void {\n this.disabledByControl_$.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n /** Blur esemény: touched jelzés + emit parent felé. */\n onBlur(): void {\n this.onTouched();\n this.blurEvent.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center min-w-0\">\n <input [type]=\"inputType_$()\"\n [(ngModel)]=\"innerValue\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled_$()\"\n [attr.autocomplete]=\"effectiveAutocomplete_$()\"\n [attr.data-bwignore]=\"effectiveDataBwignore_$() ? '1' : null\"\n [attr.data-lpignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-1p-ignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-form-type]=\"suppressPasswordManagerAutofill() ? 'other' : null\"\n [class]=\"'flex-1 min-w-0 px-3 py-2 bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan disabled:opacity-70 ' + (inputClass())\"\n (blur)=\"onBlur()\" />\n <button type=\"button\"\n (click)=\"toggleVisible()\"\n [disabled]=\"isDisabled_$()\"\n [attr.aria-label]=\"toggleAriaLabel_$()\"\n [attr.title]=\"toggleTitle_$()\"\n class=\"shrink-0 w-9 h-9 flex items-center justify-center rounded border border-neonDefault text-neutral-400\n hover:text-neonCyan hover:shadow-neon-glow-cyan hover:border-neonCyan disabled:opacity-50 transition-colors\">\n @if (visible_$()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n </svg>\n }\n </button>\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Beállítások: maszkolt secret / token / API key egy sora (readonly megjelenítés, Szerkesztés, Mentés).\n * A form és edit-mode state a szülő data service-é; ez a komponens csak megjelenít és eseményt emitel.\n */\n@Component({\n selector: 'app-s-settings-secret-key-row',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-settings-secret-key-row.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsSecretKeyRow_Component class. */\nexport class S_SettingsSecretKeyRow_Component {\n /** Form name attribútum. */\n readonly name = input<string>('');\n\n /** Inputban látható érték (szülő: edit módban draft, egyébként masked). */\n readonly displayValue = input.required<string>();\n\n /** Placeholder dinamikusan a szülőtől (üres / szerkesztés / nincs beállítva logika). */\n readonly placeholder = input<string>('');\n\n /** Ha true, a mező írható és a valueChange emitelhető. */\n readonly editMode = input<boolean>(false);\n\n /** Mentés gomb disabled (pl. mentés folyamatban vagy üres draft). */\n readonly saveDisabled = input<boolean>(false);\n\n /** Ha true, a mentés gomb felirata savePendingLabel. */\n readonly savePending = input<boolean>(false);\n\n /** Mentés gomb szövege, ha nincs függőben mentés. */\n readonly saveLabel = input<string>('Mentés');\n\n /** Mentés gomb szövege függőben lévő mentésnél. */\n readonly savePendingLabel = input<string>('Mentés…');\n\n /** Ha nem null és nem üres, ⚠️ jelenik meg a sorban title-rel. */\n readonly warningTooltip = input<string | null>(null);\n\n /** Extra osztályok az inputra (pl. max-w-md). */\n readonly inputClass = input<string>('');\n\n /** Password-manager ignore: true esetén data-bwignore az inputon. */\n readonly dataBwignore = input<boolean>(true);\n\n /** Csak editMode mellett emitelünk (draft frissítés). */\n readonly valueChange = output<string>();\n\n /** Szerkesztés gomb. */\n readonly startEdit = output<void>();\n\n /** Mentés gomb. */\n readonly save = output<void>();\n\n /** Readonly, ha nincs szerkesztés mód. */\n readonly inputReadonly_$ = computed((): boolean => !this.editMode());\n\n /** Inline figyelmeztetés megjelenítése. */\n readonly showWarning_$ = computed((): boolean => {\n const t: string | null = this.warningTooltip();\n return t != null && t.trim().length > 0;\n });\n\n /** Mentés gomb aktuális felirata. */\n readonly saveButtonLabel_$ = computed((): string =>\n this.savePending() ? this.savePendingLabel() : this.saveLabel(),\n );\n\n /** Input Tailwind osztályok: alap + opcionális readonly halványítás + szülő extra. */\n readonly inputClassCombined_$ = computed((): string => {\n const base: string =\n 'flex-1 min-w-0 px-3 py-2 font-mono text-sm bg-neutral-800 border border-neonDefault rounded ' +\n 'text-neutral-100 focus:shadow-neon-glow-cyan';\n const ro: string = this.inputReadonly_$() ? ' opacity-90' : '';\n const extra: string = this.inputClass().trim().length > 0 ? ' ' + this.inputClass() : '';\n return base + ro + extra;\n });\n\n /**\n * NgModel változás: csak szerkesztés módban propagate-elünk, hogy a maszkolt readonly állapotban ne írjunk\n * vissza tévesen.\n */\n onDisplayValueChange(value: string): void {\n if (!this.editMode()) {\n return;\n }\n this.valueChange.emit(value);\n }\n\n /** Szerkesztés indítása. */\n emitStartEdit(): void {\n this.startEdit.emit();\n }\n\n /** Inline mentés. */\n emitSave(): void {\n this.save.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center\">\n <input type=\"text\"\n [name]=\"name()\"\n [ngModel]=\"displayValue()\"\n (ngModelChange)=\"onDisplayValueChange($event)\"\n [readonly]=\"inputReadonly_$()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.data-bwignore]=\"dataBwignore() ? 'true' : null\"\n [class]=\"inputClassCombined_$()\" />\n @if (showWarning_$()) {\n <span class=\"text-amber-300 text-sm\" [attr.title]=\"warningTooltip() ?? ''\">\n ⚠️\n </span>\n }\n @if (!editMode()) {\n <button type=\"button\"\n (click)=\"emitStartEdit()\"\n class=\"px-4 py-2 border border-neonCyan rounded text-neutral-300 hover:shadow-neon-glow-cyan whitespace-nowrap\">\n Szerkesztés\n </button>\n } @else {\n <button type=\"button\"\n (click)=\"emitSave()\"\n [disabled]=\"saveDisabled()\"\n class=\"px-4 py-2 bg-ccapAccent text-white rounded whitespace-nowrap disabled:opacity-50\">\n {{ saveButtonLabel_$() }}\n </button>\n }\n</div>\n", "import { Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Közös prompt composer: textarea + küldés; content projection slotok.\n * - sComposerPrefix: mód / melléklet sorok a textarea fölött\n * - sComposerTextareaAccessory: absolute overlay a textarea-hoz (pl. voice gomb) — a szülő `relative`\n * - sComposerBelowTextarea: textarea alatt, gombsor felett (pl. auto-send checkbox)\n * - sComposerBeforeSend: bal oldali akciók a küldés gomb mellett\n */\n@Component({\n selector: 'app-s-session-prompt-composer',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-session-prompt-composer.component.html',\n host: { class: 'block shrink-0 border-t border-neonDefault bg-ccapSurface' },\n})\n/** S_SessionPromptComposer_Component class. */\nexport class S_SessionPromptComposer_Component {\n\n /** Piszkozat szöveg. */\n readonly draftText = input<string>('');\n\n /** Piszkozat változás. */\n readonly draftTextChange = output<string>();\n\n /** Küldés folyamatban. */\n readonly isSending = input<boolean>(false);\n\n /** Küldés tiltása (üres szöveg stb.). */\n readonly isSendDisabled = input<boolean>(false);\n\n /** Placeholder. */\n readonly placeholder = input<string>('');\n\n /** Textarea sorok. */\n readonly textareaRows = input<number>(3);\n\n /** Küldés gomb felirat. */\n readonly sendButtonLabel = input<string>('Send');\n\n /** Küldés gomb felirat küldés közben. */\n readonly sendingButtonLabel = input<string>('…');\n\n /** Küldés kérése. */\n readonly sendRequested = output<void>();\n\n /**\n * Enter küldés, Shift+Enter új sor.\n */\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Enter' || event.shiftKey) {\n return;\n }\n event.preventDefault();\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés gomb.\n */\n handleSendClick(): void {\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés csak ha engedélyezett.\n */\n private emitSendIfAllowed(): void {\n if (this.isSending() || this.isSendDisabled()) {\n return;\n }\n this.sendRequested.emit();\n }\n}\n", "<div class=\"flex flex-col gap-2 p-2\">\n <ng-content select=\"[sComposerPrefix]\"></ng-content>\n <div class=\"relative min-w-0 w-full\">\n <textarea\n class=\"min-h-[60px] max-h-[200px] w-full resize-none rounded border border-neutral-700 bg-neutral-800 px-2 py-1.5 font-mono text-xs text-neutral-200 placeholder-neutral-600 focus:border-ccapAccent focus:outline-none\"\n [attr.rows]=\"textareaRows()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"draftText()\"\n (ngModelChange)=\"draftTextChange.emit($event)\"\n (keydown)=\"handleKeyDown($event)\">\n </textarea>\n <ng-content select=\"[sComposerTextareaAccessory]\"></ng-content>\n </div>\n <ng-content select=\"[sComposerBelowTextarea]\"></ng-content>\n <div class=\"flex flex-wrap items-end justify-end gap-2\">\n <ng-content select=\"[sComposerBeforeSend]\"></ng-content>\n <button\n type=\"button\"\n class=\"px-3 py-1.5 text-xs bg-ccapAccent text-black font-medium rounded hover:bg-ccapAccent/80 transition-colors disabled:opacity-50 shrink-0\"\n [disabled]=\"isSendDisabled() || isSending()\"\n (click)=\"handleSendClick()\">\n {{ isSending() ? sendingButtonLabel() : sendButtonLabel() }}\n </button>\n </div>\n</div>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Natív details/summary disclosure — egységes chevron + summary sor; body ng-content.\n * Tool “Changes” / “Result” blokkok közös mintája (CC console).\n */\n@Component({\n selector: 'app-s-collapsible-disclosure',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-collapsible-disclosure.component.html',\n host: { class: 'block border-t border-orange-500/20' },\n})\n/** S_CollapsibleDisclosure_Component class. */\nexport class S_CollapsibleDisclosure_Component {\n\n /** Summary szöveg (pl. „Changes” vagy rövid result preview). */\n readonly summaryLabel = input.required<string>();\n\n /** Kényelmes (fő tool kártya) vagy kompakt (tool-group belső). */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * changes — narancs címke (Edit diff blokk);\n * result — semleges címke (paired result).\n */\n readonly tone = input<'changes' | 'result'>('changes');\n\n /** Summary sor Tailwind osztályok. */\n readonly summaryRowClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n const base: string =\n 'flex items-center gap-1 cursor-pointer select-none transition-colors list-none [&::-webkit-details-marker]:hidden';\n if (t === 'changes') {\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/20 hover:bg-neutral-800/40`\n : `${base} px-1.5 py-0.5 bg-neutral-800/15 hover:bg-neutral-800/30`;\n }\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/30 hover:bg-neutral-800/50`\n : `${base} px-1.5 py-0.5 bg-neutral-800/20 hover:bg-neutral-800/40`;\n });\n\n /** Summary címke szín / méret. */\n readonly summaryLabelClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable' ? 'text-[10px] text-orange-300/50' : 'text-[9px] text-orange-300/40';\n }\n return d === 'comfortable'\n ? 'text-[10px] text-neutral-400 truncate leading-relaxed'\n : 'text-[9px] text-neutral-500 truncate';\n });\n\n /** Chevron méret osztály. */\n readonly chevronSizeClass_$ = computed((): string => {\n return this.density() === 'comfortable' ? 'w-3 h-3' : 'w-2.5 h-2.5';\n });\n\n /** Body wrapper (ng-content körül). */\n readonly bodyWrapperClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/20 border-t border-neutral-700/15'\n : 'px-1.5 py-1 bg-neutral-800/15 border-t border-neutral-700/10';\n }\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/30 border-t border-neutral-700/20'\n : 'px-1.5 py-1 bg-neutral-800/20 border-t border-neutral-700/15';\n });\n}\n", "<details class=\"group/sdisclosure group/pr\">\n <summary [class]=\"summaryRowClass_$()\">\n <svg\n class=\"text-neutral-500 shrink-0 transition-transform [[open]>&]:rotate-90\"\n [ngClass]=\"chevronSizeClass_$()\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M4.5 2.5l4 3.5-4 3.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n </path>\n </svg>\n <span [class]=\"summaryLabelClass_$()\">{{ summaryLabel() }}</span>\n <ng-content select=\"[sDisclosureSummaryTrailing]\"></ng-content>\n </summary>\n <div [class]=\"bodyWrapperClass_$()\">\n <ng-content></ng-content>\n </div>\n</details>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Max-height + scroll wrapper — a host ide projektálja a pre / innerHTML tartalmat.\n */\n@Component({\n selector: 'app-s-monospace-scroll-block',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-monospace-scroll-block.component.html',\n host: { class: 'block' },\n})\n/** S_MonospaceScrollBlock_Component class. */\nexport class S_MonospaceScrollBlock_Component {\n\n /** Max magasság pixelben. */\n readonly maxHeightPx = input<number>(250);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /** Belső wrapper font / padding a CC console mintához. */\n readonly innerClass_$ = computed((): string => {\n return this.density() === 'comfortable'\n ? 'font-mono'\n : 'font-mono';\n });\n}\n", "<div\n [class]=\"innerClass_$()\"\n class=\"overflow-y-auto overflow-x-auto font-mono\"\n [style.max-height.px]=\"maxHeightPx()\">\n <ng-content></ng-content>\n</div>\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Agent tool név → inline SVG ikon (14×14, currentColor) — CC / OC közös mapping.\n */\n@Pipe({\n name: 'sAgentToolIcon',\n standalone: true,\n})\n/** S_AgentToolIcon_Pipe class. */\nexport class S_AgentToolIcon_Pipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Tool név → SafeHtml SVG ikon. */\n transform(toolName: string | null | undefined): SafeHtml {\n const svg: string = this.getSvgForTool(toolName ?? '');\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n private getSvgForTool(name: string): string {\n switch (name) {\n case 'Read':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 9h4\"/><path d=\"M6 12h2\"/>\n </svg>`;\n case 'Bash':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"1\" y=\"2\" width=\"14\" height=\"12\" rx=\"2\"/>\n <path d=\"M4 6l3 2.5L4 11\"/>\n <path d=\"M9 11h3\"/>\n </svg>`;\n case 'Edit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z\"/>\n </svg>`;\n case 'Write':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 10l1.5-1.5 2 2L8 12H6v-2z\"/>\n </svg>`;\n case 'Grep':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <path d=\"M10.5 10.5L14 14\"/>\n </svg>`;\n case 'Glob':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M2 4h4l2 2h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z\"/>\n <circle cx=\"9\" cy=\"10\" r=\"2\"/><path d=\"M10.5 11.5L12 13\"/>\n </svg>`;\n case 'Agent':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"5\" width=\"10\" height=\"8\" rx=\"2\"/>\n <circle cx=\"6\" cy=\"9\" r=\"1\"/><circle cx=\"10\" cy=\"9\" r=\"1\"/>\n <path d=\"M8 2v3\"/><path d=\"M6 2h4\"/>\n </svg>`;\n case 'WebSearch':\n case 'WebFetch':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6\"/>\n <path d=\"M2 8h12\"/><path d=\"M8 2a10 10 0 0 1 0 12\"/><path d=\"M8 2a10 10 0 0 0 0 12\"/>\n </svg>`;\n case 'TodoWrite':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 4l2 2 3-3\"/><path d=\"M10 5h4\"/>\n <path d=\"M3 9l2 2 3-3\"/><path d=\"M10 10h4\"/>\n </svg>`;\n case 'NotebookEdit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"1\" width=\"10\" height=\"14\" rx=\"1\"/>\n <path d=\"M1 4h3\"/><path d=\"M1 8h3\"/><path d=\"M1 12h3\"/>\n <path d=\"M6 5h4\"/><path d=\"M6 8h3\"/>\n </svg>`;\n default:\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M10.5 1.5a4 4 0 0 0-5 5L2 10l-.5 4.5L6 14l3.5-3.5a4 4 0 0 0 5-5l-2.5 2.5-2-2L12.5 3.5z\"/>\n </svg>`;\n }\n }\n}\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_AgentToolIcon_Pipe } from '../../../../_pipes/s-agent-tool-icon.pipe';\n\n/**\n * Tool hívás egy soros összefoglalója: ikon + szöveg + opcionális raw ⓘ.\n */\n@Component({\n selector: 'app-s-agent-tool-summary-row',\n standalone: true,\n imports: [CommonModule, S_AgentToolIcon_Pipe],\n templateUrl: './s-agent-tool-summary-row.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolSummaryRow_Component class. */\nexport class S_AgentToolSummaryRow_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description — emberi nyelven, mit csinál a tool). */\n readonly toolDescription = input<string>('');\n\n /** Read tool path jobbra igazítás (host állítja true-ra Read esetén). */\n readonly isPathRtl = input<boolean>(false);\n\n readonly showRawInfoButton = input<boolean>(false);\n\n /** Fő tool sor vagy tool-group kompakt belső sor. */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * Path-szerű summary maximum hossza, amit változatlanul mutatunk.\n * Hosszabb path-okat (Read/Grab tool, isPathRtl=true) JS-szel trim-elünk a start-on,\n * `…` prefixszel, hogy a file név vége mindig látható legyen.\n *\n * REQ-CC-EVT-PATH-TRIM-001 (cycle 197): a `dir=\"rtl\" + text-overflow: ellipsis`\n * kombináció böngésző-specifikusan nem mindig a sor START-jára (a szóköz vagy\n * Latin LTR run elejére) teszi az ellipsist; néhány setupban az ellipsis\n * a JOBB szélen jelent meg, miközben a file név vége le lett vágva. JS-side\n * előfeldolgozás eliminálja a böngésző-bidi bizonytalanságot.\n */\n private static readonly PATH_DISPLAY_MAX_CHARS: number = 80;\n\n /**\n * Megjelenítendő summary szöveg: ha a summaryText a toolName-mel kezdődik,\n * levágja a \"ToolName: \" prefixet (a tool név már a label-ben látszik).\n * Ha a maradék üres, null-t ad (ne jelenítsük meg duplikáltan).\n *\n * REQ-CC-EVT-PATH-TRIM-001: ha `isPathRtl()` true (Read tool) és a stripped\n * hossz > PATH_DISPLAY_MAX_CHARS, a path elejét trim-eljük `…` prefixszel,\n * hogy a file név vége garantáltan látható legyen — független a böngésző\n * bidi-handling viselkedésétől.\n */\n readonly displaySummary_$ = computed((): string | null => {\n const raw: string = this.summaryText();\n const name: string = this.toolName();\n if (!raw || raw === name) {\n return null;\n }\n // \"ToolName: valami\" → \"valami\"\n const prefix: string = `${name}: `;\n const stripped: string = raw.startsWith(prefix)\n ? raw.substring(prefix.length)\n : raw;\n if (stripped.length === 0) {\n return null;\n }\n // REQ-CC-EVT-PATH-TRIM-001: hosszú path-ok JS-trim a START-on (ellipsis fix az elejére).\n if (\n this.isPathRtl()\n && stripped.length > S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS\n ) {\n const tail: string = stripped.slice(\n -(S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS - 1),\n );\n return `…${tail}`;\n }\n return stripped;\n });\n\n /** Raw részletek gomb — a host nyitja a popup-ot. */\n readonly rawInfoClick = output<void>();\n\n /**\n * ⓘ kattintás — stopPropagation, hogy ne toggolja a szülő details-t.\n */\n handleRawInfoClick(event: MouseEvent): void {\n event.stopPropagation();\n this.rawInfoClick.emit();\n }\n}\n", "<div\n class=\"flex items-center gap-1.5\"\n [class.px-2.5]=\"density() === 'comfortable'\"\n [class.py-1]=\"density() === 'comfortable'\"\n [class.px-1.5]=\"density() === 'compact'\"\n [class.py-0.5]=\"density() === 'compact'\">\n <span\n class=\"text-orange-400 shrink-0 flex items-center\"\n [ngClass]=\"{ '[&>svg]:w-3': density() === 'compact', '[&>svg]:h-3': density() === 'compact' }\"\n [innerHTML]=\"toolName() | sAgentToolIcon\">\n </span>\n @if (density() === 'comfortable') {\n <span class=\"text-[11px] text-orange-300/90 font-medium shrink-0\">{{ toolName() }}</span>\n }\n <!-- REQ-CC-EVT-PATH-TRIM-001 sub-part (a) (cycle 207): ha van description, az\n MINDIG látható a header-ben, és a CC tool-ikon-családhoz illő narancs színt\n használja (nem szürke). Ha nincs description, a summary (path / brief)\n jelenik meg a header-ben — eddigi viselkedés. A `—` szeparátor és a duplikált\n (description + summary) mező el lett távolítva: vagy description, vagy summary,\n attól függ van-e tartalmas leírás. -->\n @let summaryText = displaySummary_$();\n @if (toolDescription()) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\">{{ toolDescription() }}</span>\n } @else if (summaryText) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\"\n [attr.dir]=\"isPathRtl() ? 'rtl' : null\">\n {{ summaryText }}\n </span>\n }\n @if (showRawInfoButton()) {\n <button\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border flex items-center justify-center cursor-pointer\"\n [ngClass]=\"{\n 'w-4 h-4 border-orange-500/30 bg-orange-500/20 hover:bg-orange-500/40': density() === 'comfortable',\n 'w-3.5 h-3.5 bg-orange-500/15 hover:bg-orange-500/30': density() === 'compact'\n }\"\n (click)=\"handleRawInfoClick($event)\">\n <span\n class=\"font-bold leading-none\"\n [ngClass]=\"{\n 'text-[8px] text-orange-300': density() === 'comfortable',\n 'text-[7px] text-orange-300/70': density() === 'compact'\n }\">i</span>\n </button>\n }\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CCAP_AgentConsoleBubblePairedResult_Interface } from '../../../../../../_models/interfaces/shared/ccap-agent-console-bubble-view.interface';\nimport { S_EditDiff_Pipe } from '../../../../_pipes/s-edit-diff.pipe';\nimport { S_AgentToolSummaryRow_Component } from '../s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_CollapsibleDisclosure_Component } from '../s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from '../s-monospace-scroll-block/s-monospace-scroll-block.component';\n\n/**\n * Összetett tool kártya: summary sor + opcionális Changes (edit diff) + paired result disclosure.\n * CC console @case('tool') és tool-group belső tool sor közös megjelenítése.\n */\n@Component({\n selector: 'app-s-agent-tool-call-card',\n standalone: true,\n imports: [\n CommonModule,\n S_EditDiff_Pipe,\n S_AgentToolSummaryRow_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n ],\n templateUrl: './s-agent-tool-call-card.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolCallCard_Component class. */\nexport class S_AgentToolCallCard_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description). */\n readonly toolDescription = input<string>('');\n\n readonly isPathRtl = input<boolean>(false);\n\n readonly showToolRawInfo = input<boolean>(false);\n\n /** Edit / Write JSON {old,new} expandable — üres ha nincs Changes blokk. */\n readonly expandableContent = input<string>('');\n\n readonly pairedResult = input<CCAP_AgentConsoleBubblePairedResult_Interface | null>(null);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * full — fő tool sor (narancs háttér, max-w);\n * nested — tool-group belső sor (csak vékony border).\n */\n readonly layout = input<'full' | 'nested'>('full');\n\n /** Changes disclosure summary felirat. */\n readonly changesSummaryLabel = input<string>('Changes');\n\n readonly toolRawInfoClick = output<void>();\n\n readonly pairedRawInfoClick = output<void>();\n\n /** Konténer CSS class — layout szerint eltérő stílus. Full: háttér/border a szülő wrapper adja. */\n readonly containerClass_$ = computed((): string => {\n return this.layout() === 'full'\n ? 'overflow-hidden'\n : 'overflow-hidden border border-orange-500/10 rounded';\n });\n\n /** Changes / Result pre max magasság a density szerint (CC console minta). */\n readonly scrollMaxHeightPx_$ = computed((): number => {\n return this.density() === 'comfortable' ? 250 : 150;\n });\n\n /**\n * Paired ⓘ — stopPropagation a disclosure summary-n belül.\n */\n handlePairedRawClick(event: MouseEvent): void {\n event.stopPropagation();\n this.pairedRawInfoClick.emit();\n }\n}\n", "<div [class]=\"containerClass_$()\">\n <app-s-agent-tool-summary-row\n [toolName]=\"toolName()\"\n [summaryText]=\"summaryText()\"\n [toolDescription]=\"toolDescription()\"\n [isPathRtl]=\"isPathRtl()\"\n [showRawInfoButton]=\"showToolRawInfo()\"\n [density]=\"density()\"\n (rawInfoClick)=\"toolRawInfoClick.emit()\">\n </app-s-agent-tool-summary-row>\n @if (expandableContent()) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"changesSummaryLabel()\"\n [density]=\"density()\"\n tone=\"changes\">\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\"\n [innerHTML]=\"expandableContent() | sEditDiff\">\n </pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n @if (pairedResult(); as pr) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"pr.text\"\n [density]=\"density()\"\n tone=\"result\">\n @if (pr.rawData) {\n <button\n sDisclosureSummaryTrailing\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border border-neutral-600/40 flex items-center justify-center cursor-pointer hover:bg-neutral-600\"\n [ngClass]=\"{\n 'w-3.5 h-3.5 bg-neutral-700/60': density() === 'comfortable',\n 'w-3 h-3 bg-neutral-700/60': density() === 'compact'\n }\"\n (click)=\"handlePairedRawClick($event)\">\n <span\n class=\"font-bold leading-none text-neutral-300\"\n [ngClass]=\"{\n 'text-[7px]': density() === 'comfortable',\n 'text-[6px]': density() === 'compact'\n }\">i</span>\n </button>\n }\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\">{{ pr.expandableContent || pr.text }}</pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n</div>\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_PasswordInput_Component } from './_components/s-password-input/s-password-input.component';\nimport { S_SettingsSecretKeyRow_Component } from './_components/s-settings-secret-key-row/s-settings-secret-key-row.component';\nimport { S_SettingsCollapsiblePanel_Component } from './_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component';\nimport { S_ContentState_Component } from './_components/s-content-state/s-content-state.component';\nimport { S_Modal_Component } from './_components/s-modal/s-modal.component';\nimport { S_CopyButton_Component } from './_components/s-copy-button/s-copy-button.component';\nimport { S_StatusBadge_Component } from './_components/s-status-badge/s-status-badge.component';\nimport { S_ProjectBadge_Component } from './_components/s-project-badge/s-project-badge.component';\nimport { S_StatTile_Component } from './_components/s-stat-tile/s-stat-tile.component';\nimport { S_PageHeader_Component } from './_components/s-page-header/s-page-header.component';\nimport { S_FilterBar_Component } from './_components/s-filter-bar/s-filter-bar.component';\nimport { S_SessionShellToolbar_Component } from './_components/session-ui/s-session-shell-toolbar/s-session-shell-toolbar.component';\nimport { S_ResizableSessionShellLayout_Component } from './_components/session-ui/s-resizable-session-shell-layout/s-resizable-session-shell-layout.component';\nimport { S_SessionDetailThreeColumnLayout_Component } from './_components/session-ui/s-session-detail-three-column-layout/s-session-detail-three-column-layout.component';\nimport { S_SessionPromptComposer_Component } from './_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component';\nimport { S_SessionInput_Component } from './_components/session-ui/s-session-input/s-session-input.component';\nimport { S_AgentConsoleMessageBubble_Component } from './_components/session-ui/s-agent-console-message-bubble/s-agent-console-message-bubble.component';\nimport { S_CollapsibleDisclosure_Component } from './_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from './_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component';\nimport { S_AgentToolSummaryRow_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_AgentToolCallCard_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component';\nimport { S_SessionChatColumnLayout_Component } from './_components/session-ui/s-session-chat-column-layout/s-session-chat-column-layout.component';\nimport { S_AbsoluteTime_Pipe } from './_pipes/s-absolute-time.pipe';\nimport { S_IsoTimestampHms_Pipe } from './_pipes/s-iso-timestamp-hms.pipe';\nimport { S_TimeAgo_Pipe } from './_pipes/s-time-ago.pipe';\nimport { S_EditDiff_Pipe } from './_pipes/s-edit-diff.pipe';\nimport { S_AgentToolIcon_Pipe } from './_pipes/s-agent-tool-icon.pipe';\nimport { S_RegistryProviderModelSelect_Component } from './_components/s-registry-provider-model-select/s-registry-provider-model-select.component';\nimport { S_SessionListRow_Component } from './_components/session-ui/s-session-list-row/s-session-list-row.component';\nimport { S_SessionSelect_Component } from './_components/session-ui/s-session-select/s-session-select.component';\n\n/**\n * Shared modul: közös UI komponensek (s- prefix).\n * Exportálja az összes megosztott komponenst.\n */\n@NgModule({\n imports: [\n CommonModule,\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionListRow_Component,\n S_SessionSelect_Component,\n ],\n exports: [\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionListRow_Component,\n S_SessionSelect_Component,\n ],\n})\n/** Shared_Module class. */\nexport class Shared_Module {}\n"],
4
+ "sourcesContent": ["import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Beállítások provider oldal: összecsukható alszekció (kártya + chevron fejléc).\n * A tartalom csak kinyitott állapotban jelenik meg; üzleti logika a szülőben marad.\n */\n@Component({\n selector: 'app-s-settings-collapsible-panel',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-settings-collapsible-panel.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsCollapsiblePanel_Component class. */\nexport class S_SettingsCollapsiblePanel_Component {\n /** Kinyitott állapot (szülő: pl. providerBlocksExpanded map). */\n readonly expanded = input.required<boolean>();\n\n /** Fejléc cím (pl. provider név). */\n readonly title = input.required<string>();\n\n /** Kinyitott tartalom vertikális spacing (pl. space-y-2 mock blokknál). */\n readonly contentSpacingClass = input<string>('space-y-3');\n\n /** Külső kártya Tailwind osztályok (mock blokk halványabb keretet használ). */\n readonly panelClass = input<string>('rounded-lg border border-neonDefault/60 bg-neutral-900/40');\n\n /** Fejléc cím (h3) Tailwind osztályok. */\n readonly titleClass = input<string>('text-base font-semibold text-neutral-200');\n\n /** `ngClass` map: dinamikus spacing class csak kinyitva (Tailwind purge-barát egy token). */\n readonly spacingClassMap_$ = computed((): Record<string, boolean> => {\n const key: string = this.contentSpacingClass().trim();\n return { [key]: true };\n });\n\n /** Fejléc kattintás / Enter: szülő toggleProviderBlock hívása. */\n readonly toggle = output<void>();\n\n /**\n * Fejléc kattintás → toggle emit.\n */\n handleHeaderClick(): void {\n this.toggle.emit();\n }\n\n /**\n * Billentyűzet: Enter a fejléc fókuszából.\n */\n handleHeaderKeydownEnter(): void {\n this.toggle.emit();\n }\n}\n", "<!--\n Egyetlen [ngClass] a külsőn: két [ngClass] ugyanazon az elemen felülírná egymást,\n és a panelClass (border / háttér) eltűnne kinyitott állapotban.\n-->\n<div\n [ngClass]=\"panelClass()\"\n [class.p-4]=\"expanded()\"\n [class.px-4]=\"!expanded()\"\n [class.py-2]=\"!expanded()\">\n <div\n class=\"flex items-center gap-2 cursor-pointer select-none\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"handleHeaderClick()\"\n (keydown.enter)=\"handleHeaderKeydownEnter()\">\n <span class=\"inline-flex shrink-0 text-neutral-400\" aria-hidden=\"true\">\n <svg\n class=\"w-3.5 h-3.5 transition-transform duration-150\"\n [class.-rotate-90]=\"!expanded()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </span>\n <h3 [ngClass]=\"titleClass()\">{{ title() }}</h3>\n </div>\n\n @if (expanded()) {\n <!-- Tartalom spacing külön wrapper-en: ne ütközzön a panelClass ngClass-jével. -->\n <div [ngClass]=\"spacingClassMap_$()\" class=\"mt-3\">\n <ng-content />\n </div>\n }\n</div>\n", "import { Component, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Közös oldal fejléc: cím + opcionális alcím + akciógombok slot.\n * Kiváltja az ismétlődő header flex patternt (projects-list, model-registry, embedding-model-registry, stb.).\n */\n@Component({\n selector: 'app-s-page-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-page-header.component.html',\n host: { class: 'block' },\n})\n/** S_PageHeader_Component class. */\nexport class S_PageHeader_Component {\n /** Főcím. */\n readonly title = input.required<string>();\n\n /** Opcionális alcím. */\n readonly subtitle = input<string>('');\n\n /** Alsó margó Tailwind osztály. */\n readonly marginBottom = input<string>('mb-6');\n\n /** Van-e alcím (computed). */\n readonly hasSubtitle_$ = computed((): boolean => this.subtitle().trim().length > 0);\n}\n", "<header [class]=\"'flex items-center justify-between gap-4 ' + marginBottom()\">\n <div>\n <h1 class=\"text-2xl gt-xs:text-3xl font-bold text-neutral-100\">{{ title() }}</h1>\n @if (hasSubtitle_$()) {\n <p class=\"text-neutral-400 text-sm gt-xs:text-base mt-1\">{{ subtitle() }}</p>\n }\n </div>\n <div class=\"flex items-center gap-2 shrink-0\">\n <ng-content />\n </div>\n</header>\n", "import {\n Component,\n inject,\n signal,\n computed,\n input,\n output,\n forwardRef,\n ChangeDetectorRef,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n/**\n * Közös jelszómező komponens hide/show toggle gombbal.\n * CVA-val [(ngModel)] és name támogatás; opcionális placeholder, disabled, autocomplete, inputClass.\n * `suppressPasswordManagerAutofill`: vault / nem bejelentkezési mező – erős autofill-ignore (Chrome + extension-ök).\n */\n@Component({\n selector: 'app-s-password-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-password-input.component.html',\n host: { class: 'block min-w-0 flex-1' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof S_PasswordInput_Component => S_PasswordInput_Component),\n multi: true,\n },\n ],\n})\n/** S_PasswordInput_Component class. */\nexport class S_PasswordInput_Component implements ControlValueAccessor, OnInit {\n /** Placeholder szöveg. */\n readonly placeholder = input<string>('');\n\n /** Letiltott állapot (parent által). */\n readonly disabled = input<boolean>(false);\n\n /** CVA által beállított disabled (form control). */\n readonly disabledByControl_$ = signal<boolean>(false);\n\n /** Input name (formokhoz). */\n readonly name = input<string>('');\n\n /** Autocomplete érték (pl. 'off', 'current-password'). */\n readonly autocomplete = input<string>('off');\n\n /** Ha true, data-bwignore=\"1\" kerül az inputra (böngésző password-manager extension ignore). */\n readonly dataBwignore = input<boolean>(false);\n\n /**\n * Ha true: `autocomplete=\"new-password\"` + LastPass / 1Password / Bitwarden ignore flag-ek az inputon.\n * Nem bejelentkezési flow (pl. titoktár API key) – elkerüli a mentett site-password autofill-t.\n */\n readonly suppressPasswordManagerAutofill = input<boolean>(false);\n\n /** Extra Tailwind/osztályok az input elemre (pl. w-full max-w-md font-mono text-sm). */\n readonly inputClass = input<string>('');\n\n /** Blur esemény (parent figyelheti). */\n readonly blurEvent = output<void>();\n\n /** Belső: jelszó látható (true) vagy rejtett (false). */\n readonly visible_$ = signal<boolean>(false);\n\n /** Input type: látható esetén text, különben password (template). */\n readonly inputType_$ = computed((): 'text' | 'password' =>\n this.visible_$() ? 'text' : 'password');\n\n /** Toggle gomb aria-label (látható / rejtett) (template). */\n readonly toggleAriaLabel_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Toggle gomb title (tooltip) (template). */\n readonly toggleTitle_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Effektív disabled: parent vagy form control (template). */\n readonly isDisabled_$ = computed((): boolean =>\n this.disabled() || this.disabledByControl_$());\n\n /** Autofill suppress módban Chrome-nak `new-password`, különben a `autocomplete()` input. */\n readonly effectiveAutocomplete_$ = computed((): string =>\n this.suppressPasswordManagerAutofill() ? 'new-password' : this.autocomplete());\n\n /** Bitwarden ignore: explicit `dataBwignore` vagy suppress mód. */\n readonly effectiveDataBwignore_$ = computed((): boolean =>\n this.dataBwignore() || this.suppressPasswordManagerAutofill());\n\n /** CVA: külső érték. */\n private value: string = '';\n\n /** CVA: change callback. */\n private onChange: (value: string) => void = () => {};\n\n /** CVA: touched callback. */\n private onTouched: () => void = () => {};\n\n private readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** Host-injector: NgControl feloldását ngOnInit-ben végezzük, hogy elkerüljük az NG0200 DI ciklust. */\n private readonly injector: Injector = inject(Injector);\n\n /**\n * NgModel / formControlName esetén a valueAccessor beállítása.\n * Nem field-inject, mert a konstruktor / field init alatt az NG_VALUE_ACCESSOR + useExisting körkörös DI-t okozhat.\n */\n private ngControl: NgControl | null = null;\n\n /**\n * NgControl csatolása a CVA-hoz: field-szintű inject(NgControl) helyett init után,\n * amikor a host directive-ek (NgModel) már felálltak.\n */\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null, { optional: true, self: true });\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** Toggle: jelszó megjelenítés / elrejtés. */\n toggleVisible(): void {\n this.visible_$.update((v: boolean): boolean => !v);\n }\n\n /** Belső input értékének gettere (template). */\n get innerValue(): string {\n return this.value;\n }\n\n /** Belső input értékének settere (template, ngModel). */\n set innerValue(v: string) {\n if (this.value !== v) {\n this.value = v;\n this.onChange(v);\n }\n }\n\n /** CVA: külső érték beállítása. */\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.cdr.markForCheck();\n }\n\n /** CVA: change callback regisztrálása. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** CVA: touched callback regisztrálása. */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** CVA: disabled állapot (form control). */\n setDisabledState(isDisabled: boolean): void {\n this.disabledByControl_$.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n /** Blur esemény: touched jelzés + emit parent felé. */\n onBlur(): void {\n this.onTouched();\n this.blurEvent.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center min-w-0\">\n <input [type]=\"inputType_$()\"\n [(ngModel)]=\"innerValue\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled_$()\"\n [attr.autocomplete]=\"effectiveAutocomplete_$()\"\n [attr.data-bwignore]=\"effectiveDataBwignore_$() ? '1' : null\"\n [attr.data-lpignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-1p-ignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-form-type]=\"suppressPasswordManagerAutofill() ? 'other' : null\"\n [class]=\"'flex-1 min-w-0 px-3 py-2 bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan disabled:opacity-70 ' + (inputClass())\"\n (blur)=\"onBlur()\" />\n <button type=\"button\"\n (click)=\"toggleVisible()\"\n [disabled]=\"isDisabled_$()\"\n [attr.aria-label]=\"toggleAriaLabel_$()\"\n [attr.title]=\"toggleTitle_$()\"\n class=\"shrink-0 w-9 h-9 flex items-center justify-center rounded border border-neonDefault text-neutral-400\n hover:text-neonCyan hover:shadow-neon-glow-cyan hover:border-neonCyan disabled:opacity-50 transition-colors\">\n @if (visible_$()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n </svg>\n }\n </button>\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Beállítások: maszkolt secret / token / API key egy sora (readonly megjelenítés, Szerkesztés, Mentés).\n * A form és edit-mode state a szülő data service-é; ez a komponens csak megjelenít és eseményt emitel.\n */\n@Component({\n selector: 'app-s-settings-secret-key-row',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-settings-secret-key-row.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsSecretKeyRow_Component class. */\nexport class S_SettingsSecretKeyRow_Component {\n /** Form name attribútum. */\n readonly name = input<string>('');\n\n /** Inputban látható érték (szülő: edit módban draft, egyébként masked). */\n readonly displayValue = input.required<string>();\n\n /** Placeholder dinamikusan a szülőtől (üres / szerkesztés / nincs beállítva logika). */\n readonly placeholder = input<string>('');\n\n /** Ha true, a mező írható és a valueChange emitelhető. */\n readonly editMode = input<boolean>(false);\n\n /** Mentés gomb disabled (pl. mentés folyamatban vagy üres draft). */\n readonly saveDisabled = input<boolean>(false);\n\n /** Ha true, a mentés gomb felirata savePendingLabel. */\n readonly savePending = input<boolean>(false);\n\n /** Mentés gomb szövege, ha nincs függőben mentés. */\n readonly saveLabel = input<string>('Mentés');\n\n /** Mentés gomb szövege függőben lévő mentésnél. */\n readonly savePendingLabel = input<string>('Mentés…');\n\n /** Ha nem null és nem üres, ⚠️ jelenik meg a sorban title-rel. */\n readonly warningTooltip = input<string | null>(null);\n\n /** Extra osztályok az inputra (pl. max-w-md). */\n readonly inputClass = input<string>('');\n\n /** Password-manager ignore: true esetén data-bwignore az inputon. */\n readonly dataBwignore = input<boolean>(true);\n\n /** Csak editMode mellett emitelünk (draft frissítés). */\n readonly valueChange = output<string>();\n\n /** Szerkesztés gomb. */\n readonly startEdit = output<void>();\n\n /** Mentés gomb. */\n readonly save = output<void>();\n\n /** Readonly, ha nincs szerkesztés mód. */\n readonly inputReadonly_$ = computed((): boolean => !this.editMode());\n\n /** Inline figyelmeztetés megjelenítése. */\n readonly showWarning_$ = computed((): boolean => {\n const t: string | null = this.warningTooltip();\n return t != null && t.trim().length > 0;\n });\n\n /** Mentés gomb aktuális felirata. */\n readonly saveButtonLabel_$ = computed((): string =>\n this.savePending() ? this.savePendingLabel() : this.saveLabel(),\n );\n\n /** Input Tailwind osztályok: alap + opcionális readonly halványítás + szülő extra. */\n readonly inputClassCombined_$ = computed((): string => {\n const base: string =\n 'flex-1 min-w-0 px-3 py-2 font-mono text-sm bg-neutral-800 border border-neonDefault rounded ' +\n 'text-neutral-100 focus:shadow-neon-glow-cyan';\n const ro: string = this.inputReadonly_$() ? ' opacity-90' : '';\n const extra: string = this.inputClass().trim().length > 0 ? ' ' + this.inputClass() : '';\n return base + ro + extra;\n });\n\n /**\n * NgModel változás: csak szerkesztés módban propagate-elünk, hogy a maszkolt readonly állapotban ne írjunk\n * vissza tévesen.\n */\n onDisplayValueChange(value: string): void {\n if (!this.editMode()) {\n return;\n }\n this.valueChange.emit(value);\n }\n\n /** Szerkesztés indítása. */\n emitStartEdit(): void {\n this.startEdit.emit();\n }\n\n /** Inline mentés. */\n emitSave(): void {\n this.save.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center\">\n <input type=\"text\"\n [name]=\"name()\"\n [ngModel]=\"displayValue()\"\n (ngModelChange)=\"onDisplayValueChange($event)\"\n [readonly]=\"inputReadonly_$()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.data-bwignore]=\"dataBwignore() ? 'true' : null\"\n [class]=\"inputClassCombined_$()\" />\n @if (showWarning_$()) {\n <span class=\"text-amber-300 text-sm\" [attr.title]=\"warningTooltip() ?? ''\">\n ⚠️\n </span>\n }\n @if (!editMode()) {\n <button type=\"button\"\n (click)=\"emitStartEdit()\"\n class=\"px-4 py-2 border border-neonCyan rounded text-neutral-300 hover:shadow-neon-glow-cyan whitespace-nowrap\">\n Szerkesztés\n </button>\n } @else {\n <button type=\"button\"\n (click)=\"emitSave()\"\n [disabled]=\"saveDisabled()\"\n class=\"px-4 py-2 bg-ccapAccent text-white rounded whitespace-nowrap disabled:opacity-50\">\n {{ saveButtonLabel_$() }}\n </button>\n }\n</div>\n", "import { Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Közös prompt composer: textarea + küldés; content projection slotok.\n * - sComposerPrefix: mód / melléklet sorok a textarea fölött\n * - sComposerTextareaAccessory: absolute overlay a textarea-hoz (pl. voice gomb) — a szülő `relative`\n * - sComposerBelowTextarea: textarea alatt, gombsor felett (pl. auto-send checkbox)\n * - sComposerBeforeSend: bal oldali akciók a küldés gomb mellett\n */\n@Component({\n selector: 'app-s-session-prompt-composer',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-session-prompt-composer.component.html',\n host: { class: 'block shrink-0 border-t border-neonDefault bg-ccapSurface' },\n})\n/** S_SessionPromptComposer_Component class. */\nexport class S_SessionPromptComposer_Component {\n\n /** Piszkozat szöveg. */\n readonly draftText = input<string>('');\n\n /** Piszkozat változás. */\n readonly draftTextChange = output<string>();\n\n /** Küldés folyamatban. */\n readonly isSending = input<boolean>(false);\n\n /** Küldés tiltása (üres szöveg stb.). */\n readonly isSendDisabled = input<boolean>(false);\n\n /** Placeholder. */\n readonly placeholder = input<string>('');\n\n /** Textarea sorok. */\n readonly textareaRows = input<number>(3);\n\n /** Küldés gomb felirat. */\n readonly sendButtonLabel = input<string>('Send');\n\n /** Küldés gomb felirat küldés közben. */\n readonly sendingButtonLabel = input<string>('…');\n\n /** Küldés kérése. */\n readonly sendRequested = output<void>();\n\n /**\n * Enter küldés, Shift+Enter új sor.\n */\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Enter' || event.shiftKey) {\n return;\n }\n event.preventDefault();\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés gomb.\n */\n handleSendClick(): void {\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés csak ha engedélyezett.\n */\n private emitSendIfAllowed(): void {\n if (this.isSending() || this.isSendDisabled()) {\n return;\n }\n this.sendRequested.emit();\n }\n}\n", "<div class=\"flex flex-col gap-2 p-2\">\n <ng-content select=\"[sComposerPrefix]\"></ng-content>\n <div class=\"relative min-w-0 w-full\">\n <textarea\n class=\"min-h-[60px] max-h-[200px] w-full resize-none rounded border border-neutral-700 bg-neutral-800 px-2 py-1.5 font-mono text-xs text-neutral-200 placeholder-neutral-600 focus:border-ccapAccent focus:outline-none\"\n [attr.rows]=\"textareaRows()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"draftText()\"\n (ngModelChange)=\"draftTextChange.emit($event)\"\n (keydown)=\"handleKeyDown($event)\">\n </textarea>\n <ng-content select=\"[sComposerTextareaAccessory]\"></ng-content>\n </div>\n <ng-content select=\"[sComposerBelowTextarea]\"></ng-content>\n <div class=\"flex flex-wrap items-end justify-end gap-2\">\n <ng-content select=\"[sComposerBeforeSend]\"></ng-content>\n <button\n type=\"button\"\n class=\"px-3 py-1.5 text-xs bg-ccapAccent text-black font-medium rounded hover:bg-ccapAccent/80 transition-colors disabled:opacity-50 shrink-0\"\n [disabled]=\"isSendDisabled() || isSending()\"\n (click)=\"handleSendClick()\">\n {{ isSending() ? sendingButtonLabel() : sendButtonLabel() }}\n </button>\n </div>\n</div>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Natív details/summary disclosure — egységes chevron + summary sor; body ng-content.\n * Tool “Changes” / “Result” blokkok közös mintája (CC console).\n */\n@Component({\n selector: 'app-s-collapsible-disclosure',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-collapsible-disclosure.component.html',\n host: { class: 'block border-t border-orange-500/20' },\n})\n/** S_CollapsibleDisclosure_Component class. */\nexport class S_CollapsibleDisclosure_Component {\n\n /** Summary szöveg (pl. „Changes” vagy rövid result preview). */\n readonly summaryLabel = input.required<string>();\n\n /** Kényelmes (fő tool kártya) vagy kompakt (tool-group belső). */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * changes — narancs címke (Edit diff blokk);\n * result — semleges címke (paired result).\n */\n readonly tone = input<'changes' | 'result'>('changes');\n\n /** Summary sor Tailwind osztályok. */\n readonly summaryRowClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n const base: string =\n 'flex items-center gap-1 cursor-pointer select-none transition-colors list-none [&::-webkit-details-marker]:hidden';\n if (t === 'changes') {\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/20 hover:bg-neutral-800/40`\n : `${base} px-1.5 py-0.5 bg-neutral-800/15 hover:bg-neutral-800/30`;\n }\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/30 hover:bg-neutral-800/50`\n : `${base} px-1.5 py-0.5 bg-neutral-800/20 hover:bg-neutral-800/40`;\n });\n\n /** Summary címke szín / méret. */\n readonly summaryLabelClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable' ? 'text-[10px] text-orange-300/50' : 'text-[9px] text-orange-300/40';\n }\n return d === 'comfortable'\n ? 'text-[10px] text-neutral-400 truncate leading-relaxed'\n : 'text-[9px] text-neutral-500 truncate';\n });\n\n /** Chevron méret osztály. */\n readonly chevronSizeClass_$ = computed((): string => {\n return this.density() === 'comfortable' ? 'w-3 h-3' : 'w-2.5 h-2.5';\n });\n\n /** Body wrapper (ng-content körül). */\n readonly bodyWrapperClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/20 border-t border-neutral-700/15'\n : 'px-1.5 py-1 bg-neutral-800/15 border-t border-neutral-700/10';\n }\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/30 border-t border-neutral-700/20'\n : 'px-1.5 py-1 bg-neutral-800/20 border-t border-neutral-700/15';\n });\n}\n", "<details class=\"group/sdisclosure group/pr\">\n <summary [class]=\"summaryRowClass_$()\">\n <svg\n class=\"text-neutral-500 shrink-0 transition-transform [[open]>&]:rotate-90\"\n [ngClass]=\"chevronSizeClass_$()\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M4.5 2.5l4 3.5-4 3.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n </path>\n </svg>\n <span [class]=\"summaryLabelClass_$()\">{{ summaryLabel() }}</span>\n <ng-content select=\"[sDisclosureSummaryTrailing]\"></ng-content>\n </summary>\n <div [class]=\"bodyWrapperClass_$()\">\n <ng-content></ng-content>\n </div>\n</details>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Max-height + scroll wrapper — a host ide projektálja a pre / innerHTML tartalmat.\n */\n@Component({\n selector: 'app-s-monospace-scroll-block',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-monospace-scroll-block.component.html',\n host: { class: 'block' },\n})\n/** S_MonospaceScrollBlock_Component class. */\nexport class S_MonospaceScrollBlock_Component {\n\n /** Max magasság pixelben. */\n readonly maxHeightPx = input<number>(250);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /** Belső wrapper font / padding a CC console mintához. */\n readonly innerClass_$ = computed((): string => {\n return this.density() === 'comfortable'\n ? 'font-mono'\n : 'font-mono';\n });\n}\n", "<div\n [class]=\"innerClass_$()\"\n class=\"overflow-y-auto overflow-x-auto font-mono\"\n [style.max-height.px]=\"maxHeightPx()\">\n <ng-content></ng-content>\n</div>\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Agent tool név → inline SVG ikon (14×14, currentColor) — CC / OC közös mapping.\n */\n@Pipe({\n name: 'sAgentToolIcon',\n standalone: true,\n})\n/** S_AgentToolIcon_Pipe class. */\nexport class S_AgentToolIcon_Pipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Tool név → SafeHtml SVG ikon. */\n transform(toolName: string | null | undefined): SafeHtml {\n const svg: string = this.getSvgForTool(toolName ?? '');\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n private getSvgForTool(name: string): string {\n switch (name) {\n case 'Read':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 9h4\"/><path d=\"M6 12h2\"/>\n </svg>`;\n case 'Bash':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"1\" y=\"2\" width=\"14\" height=\"12\" rx=\"2\"/>\n <path d=\"M4 6l3 2.5L4 11\"/>\n <path d=\"M9 11h3\"/>\n </svg>`;\n case 'Edit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z\"/>\n </svg>`;\n case 'Write':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 10l1.5-1.5 2 2L8 12H6v-2z\"/>\n </svg>`;\n case 'Grep':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <path d=\"M10.5 10.5L14 14\"/>\n </svg>`;\n case 'Glob':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M2 4h4l2 2h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z\"/>\n <circle cx=\"9\" cy=\"10\" r=\"2\"/><path d=\"M10.5 11.5L12 13\"/>\n </svg>`;\n case 'Agent':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"5\" width=\"10\" height=\"8\" rx=\"2\"/>\n <circle cx=\"6\" cy=\"9\" r=\"1\"/><circle cx=\"10\" cy=\"9\" r=\"1\"/>\n <path d=\"M8 2v3\"/><path d=\"M6 2h4\"/>\n </svg>`;\n case 'WebSearch':\n case 'WebFetch':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6\"/>\n <path d=\"M2 8h12\"/><path d=\"M8 2a10 10 0 0 1 0 12\"/><path d=\"M8 2a10 10 0 0 0 0 12\"/>\n </svg>`;\n case 'TodoWrite':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 4l2 2 3-3\"/><path d=\"M10 5h4\"/>\n <path d=\"M3 9l2 2 3-3\"/><path d=\"M10 10h4\"/>\n </svg>`;\n case 'NotebookEdit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"1\" width=\"10\" height=\"14\" rx=\"1\"/>\n <path d=\"M1 4h3\"/><path d=\"M1 8h3\"/><path d=\"M1 12h3\"/>\n <path d=\"M6 5h4\"/><path d=\"M6 8h3\"/>\n </svg>`;\n default:\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M10.5 1.5a4 4 0 0 0-5 5L2 10l-.5 4.5L6 14l3.5-3.5a4 4 0 0 0 5-5l-2.5 2.5-2-2L12.5 3.5z\"/>\n </svg>`;\n }\n }\n}\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_AgentToolIcon_Pipe } from '../../../../_pipes/s-agent-tool-icon.pipe';\n\n/**\n * Tool hívás egy soros összefoglalója: ikon + szöveg + opcionális raw ⓘ.\n */\n@Component({\n selector: 'app-s-agent-tool-summary-row',\n standalone: true,\n imports: [CommonModule, S_AgentToolIcon_Pipe],\n templateUrl: './s-agent-tool-summary-row.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolSummaryRow_Component class. */\nexport class S_AgentToolSummaryRow_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description — emberi nyelven, mit csinál a tool). */\n readonly toolDescription = input<string>('');\n\n /** Read tool path jobbra igazítás (host állítja true-ra Read esetén). */\n readonly isPathRtl = input<boolean>(false);\n\n readonly showRawInfoButton = input<boolean>(false);\n\n /** Fő tool sor vagy tool-group kompakt belső sor. */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * Path-szerű summary maximum hossza, amit változatlanul mutatunk.\n * Hosszabb path-okat (Read/Grab tool, isPathRtl=true) JS-szel trim-elünk a start-on,\n * `…` prefixszel, hogy a file név vége mindig látható legyen.\n *\n * REQ-CC-EVT-PATH-TRIM-001 (cycle 197): a `dir=\"rtl\" + text-overflow: ellipsis`\n * kombináció böngésző-specifikusan nem mindig a sor START-jára (a szóköz vagy\n * Latin LTR run elejére) teszi az ellipsist; néhány setupban az ellipsis\n * a JOBB szélen jelent meg, miközben a file név vége le lett vágva. JS-side\n * előfeldolgozás eliminálja a böngésző-bidi bizonytalanságot.\n */\n private static readonly PATH_DISPLAY_MAX_CHARS: number = 80;\n\n /**\n * Megjelenítendő summary szöveg: ha a summaryText a toolName-mel kezdődik,\n * levágja a \"ToolName: \" prefixet (a tool név már a label-ben látszik).\n * Ha a maradék üres, null-t ad (ne jelenítsük meg duplikáltan).\n *\n * REQ-CC-EVT-PATH-TRIM-001: ha `isPathRtl()` true (Read tool) és a stripped\n * hossz > PATH_DISPLAY_MAX_CHARS, a path elejét trim-eljük `…` prefixszel,\n * hogy a file név vége garantáltan látható legyen — független a böngésző\n * bidi-handling viselkedésétől.\n */\n readonly displaySummary_$ = computed((): string | null => {\n const raw: string = this.summaryText();\n const name: string = this.toolName();\n if (!raw || raw === name) {\n return null;\n }\n // \"ToolName: valami\" → \"valami\"\n const prefix: string = `${name}: `;\n const stripped: string = raw.startsWith(prefix)\n ? raw.substring(prefix.length)\n : raw;\n if (stripped.length === 0) {\n return null;\n }\n // REQ-CC-EVT-PATH-TRIM-001: hosszú path-ok JS-trim a START-on (ellipsis fix az elejére).\n if (\n this.isPathRtl()\n && stripped.length > S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS\n ) {\n const tail: string = stripped.slice(\n -(S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS - 1),\n );\n return `…${tail}`;\n }\n return stripped;\n });\n\n /** Raw részletek gomb — a host nyitja a popup-ot. */\n readonly rawInfoClick = output<void>();\n\n /**\n * ⓘ kattintás — stopPropagation, hogy ne toggolja a szülő details-t.\n */\n handleRawInfoClick(event: MouseEvent): void {\n event.stopPropagation();\n this.rawInfoClick.emit();\n }\n}\n", "<div\n class=\"flex items-center gap-1.5\"\n [class.px-2.5]=\"density() === 'comfortable'\"\n [class.py-1]=\"density() === 'comfortable'\"\n [class.px-1.5]=\"density() === 'compact'\"\n [class.py-0.5]=\"density() === 'compact'\">\n <span\n class=\"text-orange-400 shrink-0 flex items-center\"\n [ngClass]=\"{ '[&>svg]:w-3': density() === 'compact', '[&>svg]:h-3': density() === 'compact' }\"\n [innerHTML]=\"toolName() | sAgentToolIcon\">\n </span>\n @if (density() === 'comfortable') {\n <span class=\"text-[11px] text-orange-300/90 font-medium shrink-0\">{{ toolName() }}</span>\n }\n <!-- REQ-CC-EVT-PATH-TRIM-001 sub-part (a) (cycle 207): ha van description, az\n MINDIG látható a header-ben, és a CC tool-ikon-családhoz illő narancs színt\n használja (nem szürke). Ha nincs description, a summary (path / brief)\n jelenik meg a header-ben — eddigi viselkedés. A `—` szeparátor és a duplikált\n (description + summary) mező el lett távolítva: vagy description, vagy summary,\n attól függ van-e tartalmas leírás. -->\n @let summaryText = displaySummary_$();\n @if (toolDescription()) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\">{{ toolDescription() }}</span>\n } @else if (summaryText) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\"\n [attr.dir]=\"isPathRtl() ? 'rtl' : null\">\n {{ summaryText }}\n </span>\n }\n @if (showRawInfoButton()) {\n <button\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border flex items-center justify-center cursor-pointer\"\n [ngClass]=\"{\n 'w-4 h-4 border-orange-500/30 bg-orange-500/20 hover:bg-orange-500/40': density() === 'comfortable',\n 'w-3.5 h-3.5 bg-orange-500/15 hover:bg-orange-500/30': density() === 'compact'\n }\"\n (click)=\"handleRawInfoClick($event)\">\n <span\n class=\"font-bold leading-none\"\n [ngClass]=\"{\n 'text-[8px] text-orange-300': density() === 'comfortable',\n 'text-[7px] text-orange-300/70': density() === 'compact'\n }\">i</span>\n </button>\n }\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CCAP_AgentConsoleBubblePairedResult_Interface } from '../../../../../../_models/interfaces/shared/ccap-agent-console-bubble-view.interface';\nimport { S_EditDiff_Pipe } from '../../../../_pipes/s-edit-diff.pipe';\nimport { S_AgentToolSummaryRow_Component } from '../s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_CollapsibleDisclosure_Component } from '../s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from '../s-monospace-scroll-block/s-monospace-scroll-block.component';\n\n/**\n * Összetett tool kártya: summary sor + opcionális Changes (edit diff) + paired result disclosure.\n * CC console @case('tool') és tool-group belső tool sor közös megjelenítése.\n */\n@Component({\n selector: 'app-s-agent-tool-call-card',\n standalone: true,\n imports: [\n CommonModule,\n S_EditDiff_Pipe,\n S_AgentToolSummaryRow_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n ],\n templateUrl: './s-agent-tool-call-card.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolCallCard_Component class. */\nexport class S_AgentToolCallCard_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description). */\n readonly toolDescription = input<string>('');\n\n readonly isPathRtl = input<boolean>(false);\n\n readonly showToolRawInfo = input<boolean>(false);\n\n /** Edit / Write JSON {old,new} expandable — üres ha nincs Changes blokk. */\n readonly expandableContent = input<string>('');\n\n readonly pairedResult = input<CCAP_AgentConsoleBubblePairedResult_Interface | null>(null);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * full — fő tool sor (narancs háttér, max-w);\n * nested — tool-group belső sor (csak vékony border).\n */\n readonly layout = input<'full' | 'nested'>('full');\n\n /** Changes disclosure summary felirat. */\n readonly changesSummaryLabel = input<string>('Changes');\n\n readonly toolRawInfoClick = output<void>();\n\n readonly pairedRawInfoClick = output<void>();\n\n /** Konténer CSS class — layout szerint eltérő stílus. Full: háttér/border a szülő wrapper adja. */\n readonly containerClass_$ = computed((): string => {\n return this.layout() === 'full'\n ? 'overflow-hidden'\n : 'overflow-hidden border border-orange-500/10 rounded';\n });\n\n /** Changes / Result pre max magasság a density szerint (CC console minta). */\n readonly scrollMaxHeightPx_$ = computed((): number => {\n return this.density() === 'comfortable' ? 250 : 150;\n });\n\n /**\n * Paired ⓘ — stopPropagation a disclosure summary-n belül.\n */\n handlePairedRawClick(event: MouseEvent): void {\n event.stopPropagation();\n this.pairedRawInfoClick.emit();\n }\n}\n", "<div [class]=\"containerClass_$()\">\n <app-s-agent-tool-summary-row\n [toolName]=\"toolName()\"\n [summaryText]=\"summaryText()\"\n [toolDescription]=\"toolDescription()\"\n [isPathRtl]=\"isPathRtl()\"\n [showRawInfoButton]=\"showToolRawInfo()\"\n [density]=\"density()\"\n (rawInfoClick)=\"toolRawInfoClick.emit()\">\n </app-s-agent-tool-summary-row>\n @if (expandableContent()) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"changesSummaryLabel()\"\n [density]=\"density()\"\n tone=\"changes\">\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\"\n [innerHTML]=\"expandableContent() | sEditDiff\">\n </pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n @if (pairedResult(); as pr) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"pr.text\"\n [density]=\"density()\"\n tone=\"result\">\n @if (pr.rawData) {\n <button\n sDisclosureSummaryTrailing\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border border-neutral-600/40 flex items-center justify-center cursor-pointer hover:bg-neutral-600\"\n [ngClass]=\"{\n 'w-3.5 h-3.5 bg-neutral-700/60': density() === 'comfortable',\n 'w-3 h-3 bg-neutral-700/60': density() === 'compact'\n }\"\n (click)=\"handlePairedRawClick($event)\">\n <span\n class=\"font-bold leading-none text-neutral-300\"\n [ngClass]=\"{\n 'text-[7px]': density() === 'comfortable',\n 'text-[6px]': density() === 'compact'\n }\">i</span>\n </button>\n }\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\">{{ pr.expandableContent || pr.text }}</pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n</div>\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_PasswordInput_Component } from './_components/s-password-input/s-password-input.component';\nimport { S_SettingsSecretKeyRow_Component } from './_components/s-settings-secret-key-row/s-settings-secret-key-row.component';\nimport { S_SettingsCollapsiblePanel_Component } from './_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component';\nimport { S_ContentState_Component } from './_components/s-content-state/s-content-state.component';\nimport { S_Modal_Component } from './_components/s-modal/s-modal.component';\nimport { S_CopyButton_Component } from './_components/s-copy-button/s-copy-button.component';\nimport { S_StatusBadge_Component } from './_components/s-status-badge/s-status-badge.component';\nimport { S_ProjectBadge_Component } from './_components/s-project-badge/s-project-badge.component';\nimport { S_StatTile_Component } from './_components/s-stat-tile/s-stat-tile.component';\nimport { S_PageHeader_Component } from './_components/s-page-header/s-page-header.component';\nimport { S_FilterBar_Component } from './_components/s-filter-bar/s-filter-bar.component';\nimport { S_SessionShellToolbar_Component } from './_components/session-ui/s-session-shell-toolbar/s-session-shell-toolbar.component';\nimport { S_ResizableSessionShellLayout_Component } from './_components/session-ui/s-resizable-session-shell-layout/s-resizable-session-shell-layout.component';\nimport { S_SessionDetailThreeColumnLayout_Component } from './_components/session-ui/s-session-detail-three-column-layout/s-session-detail-three-column-layout.component';\nimport { S_SessionPromptComposer_Component } from './_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component';\nimport { S_SessionInput_Component } from './_components/session-ui/s-session-input/s-session-input.component';\nimport { S_AgentConsoleMessageBubble_Component } from './_components/session-ui/s-agent-console-message-bubble/s-agent-console-message-bubble.component';\nimport { S_CollapsibleDisclosure_Component } from './_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from './_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component';\nimport { S_AgentToolSummaryRow_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_AgentToolCallCard_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component';\nimport { S_SessionChatColumnLayout_Component } from './_components/session-ui/s-session-chat-column-layout/s-session-chat-column-layout.component';\nimport { S_AbsoluteTime_Pipe } from './_pipes/s-absolute-time.pipe';\nimport { S_IsoTimestampHms_Pipe } from './_pipes/s-iso-timestamp-hms.pipe';\nimport { S_TimeAgo_Pipe } from './_pipes/s-time-ago.pipe';\nimport { S_EditDiff_Pipe } from './_pipes/s-edit-diff.pipe';\nimport { S_AgentToolIcon_Pipe } from './_pipes/s-agent-tool-icon.pipe';\nimport { S_RegistryProviderModelSelect_Component } from './_components/s-registry-provider-model-select/s-registry-provider-model-select.component';\nimport { S_SessionInfoCard_Component } from './_components/session-ui/s-session-info-card/s-session-info-card.component';\nimport { S_SessionSelect_Component } from './_components/session-ui/s-session-select/s-session-select.component';\n\n/**\n * Shared modul: közös UI komponensek (s- prefix).\n * Exportálja az összes megosztott komponenst.\n */\n@NgModule({\n imports: [\n CommonModule,\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionInfoCard_Component,\n S_SessionSelect_Component,\n ],\n exports: [\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionInfoCard_Component,\n S_SessionSelect_Component,\n ],\n})\n/** Shared_Module class. */\nexport class Shared_Module {}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["\u0275\u0275elementStart", "\u0275\u0275projection", "\u0275\u0275elementEnd", "\u0275\u0275property", "ctx_r0", "spacingClassMap_$", "S_SettingsCollapsiblePanel_Component", "expanded", "input", "required", "title", "contentSpacingClass", "panelClass", "titleClass", "computed", "trim", "toggle", "output", "handleHeaderClick", "emit", "handleHeaderKeydownEnter", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c0", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275listener", "\u0275\u0275element", "\u0275\u0275text", "\u0275\u0275template", "S_SettingsCollapsiblePanel_Component_Conditional_7_Template", "\u0275\u0275classProp", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275conditional", "CommonModule", "NgClass", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "ctx_r0", "subtitle", "S_PageHeader_Component", "title", "input", "required", "marginBottom", "hasSubtitle_$", "computed", "trim", "length", "selectors", "hostAttrs", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c0", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "S_PageHeader_Component_Conditional_4_Template", "\u0275\u0275projection", "\u0275\u0275classMap", "\u0275\u0275conditional", "CommonModule", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "S_PasswordInput_Component", "placeholder", "input", "disabled", "disabledByControl_$", "signal", "name", "autocomplete", "dataBwignore", "suppressPasswordManagerAutofill", "inputClass", "blurEvent", "output", "visible_$", "inputType_$", "computed", "toggleAriaLabel_$", "toggleTitle_$", "isDisabled_$", "effectiveAutocomplete_$", "effectiveDataBwignore_$", "value", "onChange", "onTouched", "cdr", "inject", "ChangeDetectorRef", "injector", "Injector", "ngControl", "ngOnInit", "get", "NgControl", "optional", "self", "valueAccessor", "toggleVisible", "update", "v", "innerValue", "writeValue", "markForCheck", "registerOnChange", "fn", "registerOnTouched", "setDisabledState", "isDisabled", "set", "onBlur", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275ProvidersFeature", "provide", "NG_VALUE_ACCESSOR", "useExisting", "forwardRef", "multi", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275twoWayListener", "$event", "i0", "\u0275\u0275twoWayBindingSet", "\u0275\u0275listener", "\u0275\u0275template", "S_PasswordInput_Component_Conditional_3_Template", "S_PasswordInput_Component_Conditional_4_Template", "\u0275\u0275advance", "\u0275\u0275classMap", "\u0275\u0275property", "\u0275\u0275twoWayProperty", "\u0275\u0275conditional", "CommonModule", "FormsModule", "DefaultValueAccessor", "NgControlStatus", "NgModel", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r0", "\u0275\u0275nextContext", "\u0275\u0275resetView", "emitStartEdit", "_r3", "emitSave", "\u0275\u0275property", "saveDisabled", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "saveButtonLabel_$", "S_SettingsSecretKeyRow_Component", "name", "input", "displayValue", "required", "placeholder", "editMode", "savePending", "saveLabel", "savePendingLabel", "warningTooltip", "inputClass", "dataBwignore", "valueChange", "output", "startEdit", "save", "inputReadonly_$", "computed", "showWarning_$", "t", "trim", "length", "inputClassCombined_$", "base", "ro", "extra", "onDisplayValueChange", "value", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "$event", "\u0275\u0275template", "S_SettingsSecretKeyRow_Component_Conditional_2_Template", "S_SettingsSecretKeyRow_Component_Conditional_3_Template", "S_SettingsSecretKeyRow_Component_Conditional_4_Template", "\u0275\u0275classMap", "\u0275\u0275conditional", "CommonModule", "FormsModule", "DefaultValueAccessor", "NgControlStatus", "NgModel", "encapsulation", "S_SessionPromptComposer_Component", "draftText", "input", "draftTextChange", "output", "isSending", "isSendDisabled", "placeholder", "textareaRows", "sendButtonLabel", "sendingButtonLabel", "sendRequested", "handleKeyDown", "event", "key", "shiftKey", "preventDefault", "emitSendIfAllowed", "handleSendClick", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c1", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275projection", "\u0275\u0275listener", "$event", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275textInterpolate1", "CommonModule", "FormsModule", "DefaultValueAccessor", "NgControlStatus", "NgModel", "encapsulation", "S_CollapsibleDisclosure_Component", "summaryLabel", "input", "required", "density", "tone", "summaryRowClass_$", "computed", "d", "t", "base", "summaryLabelClass_$", "chevronSizeClass_$", "bodyWrapperClass_$", "selectors", "hostAttrs", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c1", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275text", "\u0275\u0275projection", "\u0275\u0275advance", "\u0275\u0275classMap", "\u0275\u0275property", "\u0275\u0275textInterpolate", "CommonModule", "NgClass", "encapsulation", "S_MonospaceScrollBlock_Component", "maxHeightPx", "input", "density", "innerClass_$", "computed", "selectors", "hostAttrs", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c0", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275projection", "\u0275\u0275elementEnd", "\u0275\u0275classMap", "\u0275\u0275styleProp", "CommonModule", "encapsulation", "S_AgentToolIcon_Pipe", "sanitizer", "constructor", "transform", "toolName", "svg", "getSvgForTool", "bypassSecurityTrustHtml", "name", "\u0275\u0275directiveInject", "DomSanitizer", "pure", "standalone", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "ctx_r0", "toolName", "\u0275\u0275property", "\u0275\u0275pureFunction2", "_c1", "density", "toolDescription", "\u0275\u0275textInterpolate1", "summaryText_r2", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleRawInfoClick", "_c2", "_c3", "S_AgentToolSummaryRow_Component", "input", "summaryText", "isPathRtl", "showRawInfoButton", "PATH_DISPLAY_MAX_CHARS", "displaySummary_$", "computed", "raw", "name", "prefix", "stripped", "startsWith", "substring", "length", "slice", "rawInfoClick", "output", "event", "stopPropagation", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275element", "\u0275\u0275template", "S_AgentToolSummaryRow_Component_Conditional_3_Template", "\u0275\u0275declareLet", "S_AgentToolSummaryRow_Component_Conditional_5_Template", "S_AgentToolSummaryRow_Component_Conditional_6_Template", "S_AgentToolSummaryRow_Component_Conditional_7_Template", "\u0275\u0275classProp", "_c0", "\u0275\u0275pipeBind1", "\u0275\u0275sanitizeHtml", "\u0275\u0275conditional", "\u0275\u0275storeLet", "summaryText_r4", "CommonModule", "NgClass", "S_AgentToolIcon_Pipe", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "ctx_r0", "changesSummaryLabel", "density", "\u0275\u0275advance", "scrollMaxHeightPx_$", "\u0275\u0275pureFunction2", "_c0", "\u0275\u0275pipeBind1", "expandableContent", "\u0275\u0275sanitizeHtml", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handlePairedRawClick", "_c1", "_c2", "\u0275\u0275template", "S_AgentToolCallCard_Component_Conditional_3_Conditional_1_Template", "pr_r3", "text", "\u0275\u0275conditional", "rawData", "\u0275\u0275textInterpolate", "S_AgentToolCallCard_Component", "toolName", "input", "summaryText", "toolDescription", "isPathRtl", "showToolRawInfo", "pairedResult", "layout", "toolRawInfoClick", "output", "pairedRawInfoClick", "containerClass_$", "computed", "event", "stopPropagation", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "S_AgentToolCallCard_Component_Conditional_2_Template", "S_AgentToolCallCard_Component_Conditional_3_Template", "\u0275\u0275classMap", "tmp_8_0", "CommonModule", "NgClass", "S_EditDiff_Pipe", "S_AgentToolSummaryRow_Component", "S_CollapsibleDisclosure_Component", "S_MonospaceScrollBlock_Component", "encapsulation", "Shared_Module", "CommonModule", "S_PasswordInput_Component", "S_SettingsSecretKeyRow_Component", "S_SettingsCollapsiblePanel_Component", "S_ContentState_Component", "S_Modal_Component", "S_CopyButton_Component", "S_StatusBadge_Component", "S_StatTile_Component", "S_PageHeader_Component", "S_FilterBar_Component", "S_SessionShellToolbar_Component", "S_ResizableSessionShellLayout_Component", "S_SessionDetailThreeColumnLayout_Component", "S_SessionPromptComposer_Component", "S_SessionInput_Component", "S_AgentConsoleMessageBubble_Component", "S_CollapsibleDisclosure_Component", "S_MonospaceScrollBlock_Component", "S_AgentToolSummaryRow_Component", "S_AgentToolCallCard_Component", "S_SessionChatColumnLayout_Component", "S_RegistryProviderModelSelect_Component", "S_SessionSelect_Component"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{I as p}from"./chunk-B7M7TLSZ.js";import{C as l,G as h,aa as a,hb as b,k as i,p as o,xb as d,y as n}from"./chunk-TBMJSIBB.js";var g=(()=>{class r{http=l(d);baseUrl=`${p.api.baseUrl}/sch`;listJobs(){return o(this.http.get(`${this.baseUrl}/jobs`))}getJob(e){return o(this.http.get(`${this.baseUrl}/jobs/${e}`))}createJob(e){return o(this.http.post(`${this.baseUrl}/jobs`,e))}updateJob(e,t){return o(this.http.patch(`${this.baseUrl}/jobs/${e}`,t))}deleteJob(e){return o(this.http.delete(`${this.baseUrl}/jobs/${e}`))}enableJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/enable`,{}))}disableJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/disable`,{}))}pauseJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/pause`,{}))}resumeJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/resume`,{}))}triggerNow(e){let t=[];e.bypass&&t.push("bypass=true"),e.forcePolicy&&t.push(`forcePolicy=${encodeURIComponent(e.forcePolicy)}`),e.dryRun&&t.push("dryRun=true");let s=t.length?`?${t.join("&")}`:"";return o(this.http.post(`${this.baseUrl}/jobs/${e.jobId}/trigger-now${s}`,{reason:e.reason}))}listExecutions(e){let t=[];e.jobId&&t.push(`jobId=${encodeURIComponent(e.jobId)}`),e.status&&t.push(`status=${encodeURIComponent(e.status)}`),e.targetSessionId&&t.push(`targetSessionId=${encodeURIComponent(e.targetSessionId)}`),e.from&&t.push(`from=${encodeURIComponent(e.from)}`),e.to&&t.push(`to=${encodeURIComponent(e.to)}`);let s=t.length?`?${t.join("&")}`:"";return o(this.http.get(`${this.baseUrl}/executions${s}`))}getExecution(e){return o(this.http.get(`${this.baseUrl}/executions/${e}`))}getDefaults(){return o(this.http.get(`${this.baseUrl}/defaults`))}applyDefaults(){return o(this.http.post(`${this.baseUrl}/defaults/apply`,{}))}static \u0275fac=function(t){return new(t||r)};static \u0275prov=n({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();var F=(()=>{class r{jobs_AS=l(g);jobs_$=a([]);recentExecutions_$=a(new Map);isLoading_$=a(!1);errorMessage_$=a(null);scheduledSessionIds_$=b(()=>{let e=new Set;for(let t of this.jobs_$()){if(t.enabled===!1)continue;let s=t.target?.payload?.sessionId?.trim();s&&e.add(s)}return e});loadAll(){return i(this,null,function*(){this.isLoading_$.set(!0),this.errorMessage_$.set(null);try{let t=(yield this.jobs_AS.listJobs()).jobs??[];this.jobs_$.set(t),this.loadRecentExecutionsForJobs(t)}catch(e){this.errorMessage_$.set(e?.message??"Failed to load scheduler jobs")}finally{this.isLoading_$.set(!1)}})}loadRecentExecutionsForJobs(e){return i(this,null,function*(){let t=new Map;try{let $=(yield this.jobs_AS.listExecutions({})).executions??[];for(let j of e){let c=j._id??"";if(!c)continue;let y=$.filter(u=>u.jobId===c).sort((u,m)=>(m.scheduledAt??"").localeCompare(u.scheduledAt??"")).slice(0,10);t.set(c,y)}}catch{}this.recentExecutions_$.set(t)})}getJob(e){return i(this,null,function*(){try{return(yield this.jobs_AS.getJob(e)).job}catch(t){return this.errorMessage_$.set(t?.message??"Failed to load job"),null}})}create(e){return i(this,null,function*(){try{let t=yield this.jobs_AS.createJob(e);return yield this.loadAll(),t.job}catch(t){return this.errorMessage_$.set(t?.message??"Failed to create job"),null}})}update(e,t){return i(this,null,function*(){try{let s=yield this.jobs_AS.updateJob(e,t);return yield this.loadAll(),s.job}catch(s){return this.errorMessage_$.set(s?.message??"Failed to update job"),null}})}remove(e){return i(this,null,function*(){try{let t=yield this.jobs_AS.deleteJob(e);return yield this.loadAll(),t.deleted}catch(t){return this.errorMessage_$.set(t?.message??"Failed to delete job"),!1}})}toggleEnabled(e,t){return i(this,null,function*(){try{t?yield this.jobs_AS.enableJob(e):yield this.jobs_AS.disableJob(e),yield this.loadAll()}catch(s){this.errorMessage_$.set(s?.message??"Failed to toggle enabled state")}})}togglePaused(e,t){return i(this,null,function*(){try{t?yield this.jobs_AS.pauseJob(e):yield this.jobs_AS.resumeJob(e),yield this.loadAll()}catch(s){this.errorMessage_$.set(s?.message??"Failed to toggle paused state")}})}triggerNow(e){return i(this,null,function*(){try{return(yield this.jobs_AS.triggerNow(e)).triggered}catch(t){return this.errorMessage_$.set(t?.message??"Failed to trigger job"),!1}})}listExecutions(e){return i(this,null,function*(){try{return(yield this.jobs_AS.listExecutions({jobId:e.jobId})).executions??[]}catch(t){return this.errorMessage_$.set(t?.message??"Failed to load executions"),[]}})}getDefaults(){return i(this,null,function*(){try{return(yield this.jobs_AS.getDefaults()).defaults}catch(e){return this.errorMessage_$.set(e?.message??"Failed to load defaults"),null}})}static \u0275fac=function(t){return new(t||r)};static \u0275prov=n({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();var E=(()=>{class r{transform(e){if(!e||!e.preset)return"\u2014";let t=e.preset,s=e.intervalValue;if(s===void 0||!isFinite(s))return t;switch(t){case"every-n-minutes":return`every ${s} minutes`;case"every-n-hours":return`every ${s} hours`;case"every-n-days":return`every ${s} days`;case"windowed-interval":return`every ${s} min (window)`;default:return t}}static \u0275fac=function(t){return new(t||r)};static \u0275pipe=h({name:"schSchedulePresetLabel",type:r,pure:!0,standalone:!0})}return r})();export{F as a,E as b};
2
- //# sourceMappingURL=chunk-M3UXCO27.js.map
1
+ import{I as p}from"./chunk-RZY5FFKY.js";import{C as l,G as h,aa as a,hb as b,k as i,p as o,xb as d,y as n}from"./chunk-TBMJSIBB.js";var g=(()=>{class r{http=l(d);baseUrl=`${p.api.baseUrl}/sch`;listJobs(){return o(this.http.get(`${this.baseUrl}/jobs`))}getJob(e){return o(this.http.get(`${this.baseUrl}/jobs/${e}`))}createJob(e){return o(this.http.post(`${this.baseUrl}/jobs`,e))}updateJob(e,t){return o(this.http.patch(`${this.baseUrl}/jobs/${e}`,t))}deleteJob(e){return o(this.http.delete(`${this.baseUrl}/jobs/${e}`))}enableJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/enable`,{}))}disableJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/disable`,{}))}pauseJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/pause`,{}))}resumeJob(e){return o(this.http.post(`${this.baseUrl}/jobs/${e}/resume`,{}))}triggerNow(e){let t=[];e.bypass&&t.push("bypass=true"),e.forcePolicy&&t.push(`forcePolicy=${encodeURIComponent(e.forcePolicy)}`),e.dryRun&&t.push("dryRun=true");let s=t.length?`?${t.join("&")}`:"";return o(this.http.post(`${this.baseUrl}/jobs/${e.jobId}/trigger-now${s}`,{reason:e.reason}))}listExecutions(e){let t=[];e.jobId&&t.push(`jobId=${encodeURIComponent(e.jobId)}`),e.status&&t.push(`status=${encodeURIComponent(e.status)}`),e.targetSessionId&&t.push(`targetSessionId=${encodeURIComponent(e.targetSessionId)}`),e.from&&t.push(`from=${encodeURIComponent(e.from)}`),e.to&&t.push(`to=${encodeURIComponent(e.to)}`);let s=t.length?`?${t.join("&")}`:"";return o(this.http.get(`${this.baseUrl}/executions${s}`))}getExecution(e){return o(this.http.get(`${this.baseUrl}/executions/${e}`))}getDefaults(){return o(this.http.get(`${this.baseUrl}/defaults`))}applyDefaults(){return o(this.http.post(`${this.baseUrl}/defaults/apply`,{}))}static \u0275fac=function(t){return new(t||r)};static \u0275prov=n({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();var F=(()=>{class r{jobs_AS=l(g);jobs_$=a([]);recentExecutions_$=a(new Map);isLoading_$=a(!1);errorMessage_$=a(null);scheduledSessionIds_$=b(()=>{let e=new Set;for(let t of this.jobs_$()){if(t.enabled===!1)continue;let s=t.target?.payload?.sessionId?.trim();s&&e.add(s)}return e});loadAll(){return i(this,null,function*(){this.isLoading_$.set(!0),this.errorMessage_$.set(null);try{let t=(yield this.jobs_AS.listJobs()).jobs??[];this.jobs_$.set(t),this.loadRecentExecutionsForJobs(t)}catch(e){this.errorMessage_$.set(e?.message??"Failed to load scheduler jobs")}finally{this.isLoading_$.set(!1)}})}loadRecentExecutionsForJobs(e){return i(this,null,function*(){let t=new Map;try{let $=(yield this.jobs_AS.listExecutions({})).executions??[];for(let j of e){let c=j._id??"";if(!c)continue;let y=$.filter(u=>u.jobId===c).sort((u,m)=>(m.scheduledAt??"").localeCompare(u.scheduledAt??"")).slice(0,10);t.set(c,y)}}catch{}this.recentExecutions_$.set(t)})}getJob(e){return i(this,null,function*(){try{return(yield this.jobs_AS.getJob(e)).job}catch(t){return this.errorMessage_$.set(t?.message??"Failed to load job"),null}})}create(e){return i(this,null,function*(){try{let t=yield this.jobs_AS.createJob(e);return yield this.loadAll(),t.job}catch(t){return this.errorMessage_$.set(t?.message??"Failed to create job"),null}})}update(e,t){return i(this,null,function*(){try{let s=yield this.jobs_AS.updateJob(e,t);return yield this.loadAll(),s.job}catch(s){return this.errorMessage_$.set(s?.message??"Failed to update job"),null}})}remove(e){return i(this,null,function*(){try{let t=yield this.jobs_AS.deleteJob(e);return yield this.loadAll(),t.deleted}catch(t){return this.errorMessage_$.set(t?.message??"Failed to delete job"),!1}})}toggleEnabled(e,t){return i(this,null,function*(){try{t?yield this.jobs_AS.enableJob(e):yield this.jobs_AS.disableJob(e),yield this.loadAll()}catch(s){this.errorMessage_$.set(s?.message??"Failed to toggle enabled state")}})}togglePaused(e,t){return i(this,null,function*(){try{t?yield this.jobs_AS.pauseJob(e):yield this.jobs_AS.resumeJob(e),yield this.loadAll()}catch(s){this.errorMessage_$.set(s?.message??"Failed to toggle paused state")}})}triggerNow(e){return i(this,null,function*(){try{return(yield this.jobs_AS.triggerNow(e)).triggered}catch(t){return this.errorMessage_$.set(t?.message??"Failed to trigger job"),!1}})}listExecutions(e){return i(this,null,function*(){try{return(yield this.jobs_AS.listExecutions({jobId:e.jobId})).executions??[]}catch(t){return this.errorMessage_$.set(t?.message??"Failed to load executions"),[]}})}getDefaults(){return i(this,null,function*(){try{return(yield this.jobs_AS.getDefaults()).defaults}catch(e){return this.errorMessage_$.set(e?.message??"Failed to load defaults"),null}})}static \u0275fac=function(t){return new(t||r)};static \u0275prov=n({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();var E=(()=>{class r{transform(e){if(!e||!e.preset)return"\u2014";let t=e.preset,s=e.intervalValue;if(s===void 0||!isFinite(s))return t;switch(t){case"every-n-minutes":return`every ${s} minutes`;case"every-n-hours":return`every ${s} hours`;case"every-n-days":return`every ${s} days`;case"windowed-interval":return`every ${s} min (window)`;default:return t}}static \u0275fac=function(t){return new(t||r)};static \u0275pipe=h({name:"schSchedulePresetLabel",type:r,pure:!0,standalone:!0})}return r})();export{F as a,E as b};
2
+ //# sourceMappingURL=chunk-KRDY4QE4.js.map