@futdevpro/ccap 1.1.2749 → 1.1.2757

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 (179) hide show
  1. package/client-dist/{agent-instances.module-KYFXXE2P.js → agent-instances.module-Z3DMV3DF.js} +2 -2
  2. package/client-dist/{ca.module-RWHD6LXU.js → ca.module-FAKTSXE5.js} +2 -2
  3. package/client-dist/{cc.module-WPRWAZYU.js → cc.module-WGPXXN7T.js} +2 -2
  4. package/client-dist/{chunk-JFVWOOZP.js → chunk-2HIZXEYY.js} +2 -2
  5. package/client-dist/{chunk-X4NLQNO3.js → chunk-2JOTCVPQ.js} +2 -2
  6. package/client-dist/{chunk-ZVQ2UNPH.js → chunk-2SGIODEE.js} +2 -2
  7. package/client-dist/{chunk-2JYKGMVI.js → chunk-2YI5KNSU.js} +2 -2
  8. package/client-dist/{chunk-IXSUD323.js → chunk-3CI2VVAZ.js} +2 -2
  9. package/client-dist/{chunk-VPUGWJWE.js → chunk-3M4OCPNE.js} +2 -2
  10. package/client-dist/{chunk-2VKOQN4P.js → chunk-6GG4WHGM.js} +2 -2
  11. package/client-dist/{chunk-Z35RKCWS.js → chunk-AB5D734Z.js} +2 -2
  12. package/client-dist/{chunk-2TQNCIGY.js → chunk-AYFUBA66.js} +2 -2
  13. package/client-dist/{chunk-DQMRKYSF.js → chunk-AYONP7WO.js} +2 -2
  14. package/client-dist/{chunk-SYRG7QOC.js → chunk-BBG26BSV.js} +2 -2
  15. package/client-dist/{chunk-4HH4TGXP.js → chunk-BUZSQV36.js} +2 -2
  16. package/client-dist/{chunk-EV4NWX6X.js → chunk-BYXE5Y5I.js} +2 -2
  17. package/client-dist/{chunk-ISBQUFDF.js → chunk-CPNUBTOT.js} +2 -2
  18. package/client-dist/{chunk-GVTS43MP.js → chunk-DDCJS3DI.js} +2 -2
  19. package/client-dist/{chunk-S3VH4N3I.js → chunk-DF6VWTNQ.js} +2 -2
  20. package/client-dist/{chunk-S3VH4N3I.js.map → chunk-DF6VWTNQ.js.map} +1 -1
  21. package/client-dist/{chunk-6M2NXO3Q.js → chunk-E5SASZQM.js} +2 -2
  22. package/client-dist/{chunk-362V7NPI.js → chunk-ESJRDTIT.js} +2 -2
  23. package/client-dist/{chunk-LXS7M7UJ.js → chunk-FUDFX6Z3.js} +2 -2
  24. package/client-dist/{chunk-G5YPQMN5.js → chunk-GB5263LP.js} +2 -2
  25. package/client-dist/{chunk-3PU7WKII.js → chunk-GDVYQ6B6.js} +2 -2
  26. package/client-dist/{chunk-U5ZZWIXY.js → chunk-GJUIHVI2.js} +2 -2
  27. package/client-dist/{chunk-UW5O3STF.js → chunk-GXJGQNHC.js} +2 -2
  28. package/client-dist/{chunk-SNKBDLEM.js → chunk-HURPGO4W.js} +2 -2
  29. package/client-dist/{chunk-GMMQ2FL7.js → chunk-JKDPLALY.js} +2 -2
  30. package/client-dist/{chunk-AUMGM767.js → chunk-JT37M72N.js} +2 -2
  31. package/client-dist/{chunk-ZJN7HPJO.js → chunk-JYFXE62W.js} +2 -2
  32. package/client-dist/{chunk-YJIAKZVX.js → chunk-KHMIPNYS.js} +2 -2
  33. package/client-dist/{chunk-WQY4QJWB.js → chunk-LNEN2LCS.js} +2 -2
  34. package/client-dist/{chunk-FBUMI7EK.js → chunk-LP4AHBRJ.js} +2 -2
  35. package/client-dist/{chunk-QDMEESUI.js → chunk-LPOR36EV.js} +2 -2
  36. package/client-dist/{chunk-GWIQI2N7.js → chunk-M6EZV3AG.js} +2 -2
  37. package/client-dist/{chunk-HNLHZQRG.js → chunk-MCASSXC7.js} +2 -2
  38. package/client-dist/{chunk-PWGHC7B5.js → chunk-NH7ATOHA.js} +2 -2
  39. package/client-dist/{chunk-ERS3ZHTB.js → chunk-NKEEYQYM.js} +2 -2
  40. package/client-dist/{chunk-VVFIPTOB.js → chunk-NV6NWGRM.js} +2 -2
  41. package/client-dist/{chunk-Y2FV6RJE.js → chunk-OTKCWDMN.js} +2 -2
  42. package/client-dist/{chunk-2T4T6CTO.js → chunk-P47WAJM5.js} +2 -2
  43. package/client-dist/{chunk-A3EQLOB5.js → chunk-P5XURIHS.js} +2 -2
  44. package/client-dist/{chunk-WETGNUC3.js → chunk-PBDGEFAD.js} +2 -2
  45. package/client-dist/{chunk-CTEGJJMC.js → chunk-PELOPOVR.js} +2 -2
  46. package/client-dist/{chunk-67QKRQLQ.js → chunk-PMHB4BTK.js} +2 -2
  47. package/client-dist/{chunk-NKSIHOBJ.js → chunk-PPBKIWCU.js} +2 -2
  48. package/client-dist/{chunk-RWGTH2YM.js → chunk-RK6ODYOZ.js} +2 -2
  49. package/client-dist/{chunk-OMRPFHEJ.js → chunk-RQPL5I3L.js} +2 -2
  50. package/client-dist/{chunk-KDQ4CLGV.js → chunk-SZ2Y5CXO.js} +2 -2
  51. package/client-dist/{chunk-KWT2JZYX.js → chunk-U4RP55WZ.js} +2 -2
  52. package/client-dist/{chunk-DJ6MA7RT.js → chunk-UA2WXRG4.js} +2 -2
  53. package/client-dist/{chunk-5G6Q7TO7.js → chunk-UFHK3LD7.js} +2 -2
  54. package/client-dist/{chunk-EFPTGV5U.js → chunk-V5YDX37Z.js} +2 -2
  55. package/client-dist/{chunk-2O6DZKLR.js → chunk-XFQIIGNC.js} +2 -2
  56. package/client-dist/{chunk-DYIC2JMH.js → chunk-YDRUJFFB.js} +2 -2
  57. package/client-dist/{chunk-BZLG5IJW.js → chunk-YLVE6X7E.js} +2 -2
  58. package/client-dist/{chunk-RZ56ZYQT.js → chunk-YORVU7FW.js} +2 -2
  59. package/client-dist/{chunk-XLNGR3PM.js → chunk-ZJIJWDK6.js} +2 -2
  60. package/client-dist/{chunk-RSLPTFYL.js → chunk-ZRRQUZGP.js} +2 -2
  61. package/client-dist/{consultant.module-SPM43UQ2.js → consultant.module-HIBVL2ZQ.js} +2 -2
  62. package/client-dist/{crd.module-4XDCOAWY.js → crd.module-HEVRJG3F.js} +2 -2
  63. package/client-dist/{dashboard.module-QQUANJLH.js → dashboard.module-KM4ZJYQT.js} +2 -2
  64. package/client-dist/{do.module-H6CBWJJI.js → do.module-3AZ6YKU3.js} +2 -2
  65. package/client-dist/{document-library.module-OMLDHRFR.js → document-library.module-U6DF7LET.js} +2 -2
  66. package/client-dist/{embedding-eval.module-NNNAVNHH.js → embedding-eval.module-QKNHWXDQ.js} +2 -2
  67. package/client-dist/{embedding-registry.module-IG2DIPAC.js → embedding-registry.module-GXXXGCGX.js} +2 -2
  68. package/client-dist/{err.module-RLJDGO7O.js → err.module-L4OXQ6XT.js} +2 -2
  69. package/client-dist/{feedback.module-TLSMAKTG.js → feedback.module-WTDQHYY5.js} +2 -2
  70. package/client-dist/{host-runtime-mcp.module-FOQET6XB.js → host-runtime-mcp.module-HOZSTKKU.js} +2 -2
  71. package/client-dist/index.html +1 -1
  72. package/client-dist/{live-dev-pipeline.module-S6BLHUX2.js → live-dev-pipeline.module-DGBCCV67.js} +2 -2
  73. package/client-dist/{logs.module-HDFYF43V.js → logs.module-PVLHYDFW.js} +2 -2
  74. package/client-dist/{main-OU3HYYW4.js → main-EQIW4NX6.js} +3 -3
  75. package/client-dist/{master-control-remote-poc.module-4VV6PZUZ.js → master-control-remote-poc.module-6GC4BWNE.js} +2 -2
  76. package/client-dist/{mobile-app.module-G6RQ7UDO.js → mobile-app.module-A5G54D3S.js} +2 -2
  77. package/client-dist/{model-registry.module-CLWTXUVA.js → model-registry.module-OZRAKEHX.js} +2 -2
  78. package/client-dist/{oc.module-S7MM3GEV.js → oc.module-3OXBCMOJ.js} +2 -2
  79. package/client-dist/{orc.module-C6MK35UD.js → orc.module-CD4HZAWK.js} +2 -2
  80. package/client-dist/{project-management.module-MOYDEFQP.js → project-management.module-2WL2WY4T.js} +2 -2
  81. package/client-dist/project-source-routed.module-7LNJ63L3.js +2 -0
  82. package/client-dist/{scheduler.module-E4QERZXL.js → scheduler.module-WWXRAC3C.js} +2 -2
  83. package/client-dist/{session.module-7I43GT5A.js → session.module-U3H77CSV.js} +2 -2
  84. package/client-dist/{set.module-AGXAY7S7.js → set.module-U4VTZ3F4.js} +2 -2
  85. package/client-dist/{setup.module-BOIEEPBX.js → setup.module-HX3Z4QZP.js} +2 -2
  86. package/client-dist/{terminals.module-HDGRPS7X.js → terminals.module-ZYIKKSBT.js} +2 -2
  87. package/client-dist/{voice-notes-poc.module-KCJSBNDH.js → voice-notes-poc.module-TDETXOFZ.js} +2 -2
  88. package/client-dist/{wfs.module-LHNN4X3E.js → wfs.module-TLNTMIKM.js} +2 -2
  89. package/package.json +1 -1
  90. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +17 -34
  91. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
  92. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +40 -86
  93. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
  94. package/client-dist/project-source-routed.module-MFRTKTSC.js +0 -2
  95. /package/client-dist/{agent-instances.module-KYFXXE2P.js.map → agent-instances.module-Z3DMV3DF.js.map} +0 -0
  96. /package/client-dist/{ca.module-RWHD6LXU.js.map → ca.module-FAKTSXE5.js.map} +0 -0
  97. /package/client-dist/{cc.module-WPRWAZYU.js.map → cc.module-WGPXXN7T.js.map} +0 -0
  98. /package/client-dist/{chunk-JFVWOOZP.js.map → chunk-2HIZXEYY.js.map} +0 -0
  99. /package/client-dist/{chunk-X4NLQNO3.js.map → chunk-2JOTCVPQ.js.map} +0 -0
  100. /package/client-dist/{chunk-ZVQ2UNPH.js.map → chunk-2SGIODEE.js.map} +0 -0
  101. /package/client-dist/{chunk-2JYKGMVI.js.map → chunk-2YI5KNSU.js.map} +0 -0
  102. /package/client-dist/{chunk-IXSUD323.js.map → chunk-3CI2VVAZ.js.map} +0 -0
  103. /package/client-dist/{chunk-VPUGWJWE.js.map → chunk-3M4OCPNE.js.map} +0 -0
  104. /package/client-dist/{chunk-2VKOQN4P.js.map → chunk-6GG4WHGM.js.map} +0 -0
  105. /package/client-dist/{chunk-Z35RKCWS.js.map → chunk-AB5D734Z.js.map} +0 -0
  106. /package/client-dist/{chunk-2TQNCIGY.js.map → chunk-AYFUBA66.js.map} +0 -0
  107. /package/client-dist/{chunk-DQMRKYSF.js.map → chunk-AYONP7WO.js.map} +0 -0
  108. /package/client-dist/{chunk-SYRG7QOC.js.map → chunk-BBG26BSV.js.map} +0 -0
  109. /package/client-dist/{chunk-4HH4TGXP.js.map → chunk-BUZSQV36.js.map} +0 -0
  110. /package/client-dist/{chunk-EV4NWX6X.js.map → chunk-BYXE5Y5I.js.map} +0 -0
  111. /package/client-dist/{chunk-ISBQUFDF.js.map → chunk-CPNUBTOT.js.map} +0 -0
  112. /package/client-dist/{chunk-GVTS43MP.js.map → chunk-DDCJS3DI.js.map} +0 -0
  113. /package/client-dist/{chunk-6M2NXO3Q.js.map → chunk-E5SASZQM.js.map} +0 -0
  114. /package/client-dist/{chunk-362V7NPI.js.map → chunk-ESJRDTIT.js.map} +0 -0
  115. /package/client-dist/{chunk-LXS7M7UJ.js.map → chunk-FUDFX6Z3.js.map} +0 -0
  116. /package/client-dist/{chunk-G5YPQMN5.js.map → chunk-GB5263LP.js.map} +0 -0
  117. /package/client-dist/{chunk-3PU7WKII.js.map → chunk-GDVYQ6B6.js.map} +0 -0
  118. /package/client-dist/{chunk-U5ZZWIXY.js.map → chunk-GJUIHVI2.js.map} +0 -0
  119. /package/client-dist/{chunk-UW5O3STF.js.map → chunk-GXJGQNHC.js.map} +0 -0
  120. /package/client-dist/{chunk-SNKBDLEM.js.map → chunk-HURPGO4W.js.map} +0 -0
  121. /package/client-dist/{chunk-GMMQ2FL7.js.map → chunk-JKDPLALY.js.map} +0 -0
  122. /package/client-dist/{chunk-AUMGM767.js.map → chunk-JT37M72N.js.map} +0 -0
  123. /package/client-dist/{chunk-ZJN7HPJO.js.map → chunk-JYFXE62W.js.map} +0 -0
  124. /package/client-dist/{chunk-YJIAKZVX.js.map → chunk-KHMIPNYS.js.map} +0 -0
  125. /package/client-dist/{chunk-WQY4QJWB.js.map → chunk-LNEN2LCS.js.map} +0 -0
  126. /package/client-dist/{chunk-FBUMI7EK.js.map → chunk-LP4AHBRJ.js.map} +0 -0
  127. /package/client-dist/{chunk-QDMEESUI.js.map → chunk-LPOR36EV.js.map} +0 -0
  128. /package/client-dist/{chunk-GWIQI2N7.js.map → chunk-M6EZV3AG.js.map} +0 -0
  129. /package/client-dist/{chunk-HNLHZQRG.js.map → chunk-MCASSXC7.js.map} +0 -0
  130. /package/client-dist/{chunk-PWGHC7B5.js.map → chunk-NH7ATOHA.js.map} +0 -0
  131. /package/client-dist/{chunk-ERS3ZHTB.js.map → chunk-NKEEYQYM.js.map} +0 -0
  132. /package/client-dist/{chunk-VVFIPTOB.js.map → chunk-NV6NWGRM.js.map} +0 -0
  133. /package/client-dist/{chunk-Y2FV6RJE.js.map → chunk-OTKCWDMN.js.map} +0 -0
  134. /package/client-dist/{chunk-2T4T6CTO.js.map → chunk-P47WAJM5.js.map} +0 -0
  135. /package/client-dist/{chunk-A3EQLOB5.js.map → chunk-P5XURIHS.js.map} +0 -0
  136. /package/client-dist/{chunk-WETGNUC3.js.map → chunk-PBDGEFAD.js.map} +0 -0
  137. /package/client-dist/{chunk-CTEGJJMC.js.map → chunk-PELOPOVR.js.map} +0 -0
  138. /package/client-dist/{chunk-67QKRQLQ.js.map → chunk-PMHB4BTK.js.map} +0 -0
  139. /package/client-dist/{chunk-NKSIHOBJ.js.map → chunk-PPBKIWCU.js.map} +0 -0
  140. /package/client-dist/{chunk-RWGTH2YM.js.map → chunk-RK6ODYOZ.js.map} +0 -0
  141. /package/client-dist/{chunk-OMRPFHEJ.js.map → chunk-RQPL5I3L.js.map} +0 -0
  142. /package/client-dist/{chunk-KDQ4CLGV.js.map → chunk-SZ2Y5CXO.js.map} +0 -0
  143. /package/client-dist/{chunk-KWT2JZYX.js.map → chunk-U4RP55WZ.js.map} +0 -0
  144. /package/client-dist/{chunk-DJ6MA7RT.js.map → chunk-UA2WXRG4.js.map} +0 -0
  145. /package/client-dist/{chunk-5G6Q7TO7.js.map → chunk-UFHK3LD7.js.map} +0 -0
  146. /package/client-dist/{chunk-EFPTGV5U.js.map → chunk-V5YDX37Z.js.map} +0 -0
  147. /package/client-dist/{chunk-2O6DZKLR.js.map → chunk-XFQIIGNC.js.map} +0 -0
  148. /package/client-dist/{chunk-DYIC2JMH.js.map → chunk-YDRUJFFB.js.map} +0 -0
  149. /package/client-dist/{chunk-BZLG5IJW.js.map → chunk-YLVE6X7E.js.map} +0 -0
  150. /package/client-dist/{chunk-RZ56ZYQT.js.map → chunk-YORVU7FW.js.map} +0 -0
  151. /package/client-dist/{chunk-XLNGR3PM.js.map → chunk-ZJIJWDK6.js.map} +0 -0
  152. /package/client-dist/{chunk-RSLPTFYL.js.map → chunk-ZRRQUZGP.js.map} +0 -0
  153. /package/client-dist/{consultant.module-SPM43UQ2.js.map → consultant.module-HIBVL2ZQ.js.map} +0 -0
  154. /package/client-dist/{crd.module-4XDCOAWY.js.map → crd.module-HEVRJG3F.js.map} +0 -0
  155. /package/client-dist/{dashboard.module-QQUANJLH.js.map → dashboard.module-KM4ZJYQT.js.map} +0 -0
  156. /package/client-dist/{do.module-H6CBWJJI.js.map → do.module-3AZ6YKU3.js.map} +0 -0
  157. /package/client-dist/{document-library.module-OMLDHRFR.js.map → document-library.module-U6DF7LET.js.map} +0 -0
  158. /package/client-dist/{embedding-eval.module-NNNAVNHH.js.map → embedding-eval.module-QKNHWXDQ.js.map} +0 -0
  159. /package/client-dist/{embedding-registry.module-IG2DIPAC.js.map → embedding-registry.module-GXXXGCGX.js.map} +0 -0
  160. /package/client-dist/{err.module-RLJDGO7O.js.map → err.module-L4OXQ6XT.js.map} +0 -0
  161. /package/client-dist/{feedback.module-TLSMAKTG.js.map → feedback.module-WTDQHYY5.js.map} +0 -0
  162. /package/client-dist/{host-runtime-mcp.module-FOQET6XB.js.map → host-runtime-mcp.module-HOZSTKKU.js.map} +0 -0
  163. /package/client-dist/{live-dev-pipeline.module-S6BLHUX2.js.map → live-dev-pipeline.module-DGBCCV67.js.map} +0 -0
  164. /package/client-dist/{logs.module-HDFYF43V.js.map → logs.module-PVLHYDFW.js.map} +0 -0
  165. /package/client-dist/{main-OU3HYYW4.js.map → main-EQIW4NX6.js.map} +0 -0
  166. /package/client-dist/{master-control-remote-poc.module-4VV6PZUZ.js.map → master-control-remote-poc.module-6GC4BWNE.js.map} +0 -0
  167. /package/client-dist/{mobile-app.module-G6RQ7UDO.js.map → mobile-app.module-A5G54D3S.js.map} +0 -0
  168. /package/client-dist/{model-registry.module-CLWTXUVA.js.map → model-registry.module-OZRAKEHX.js.map} +0 -0
  169. /package/client-dist/{oc.module-S7MM3GEV.js.map → oc.module-3OXBCMOJ.js.map} +0 -0
  170. /package/client-dist/{orc.module-C6MK35UD.js.map → orc.module-CD4HZAWK.js.map} +0 -0
  171. /package/client-dist/{project-management.module-MOYDEFQP.js.map → project-management.module-2WL2WY4T.js.map} +0 -0
  172. /package/client-dist/{project-source-routed.module-MFRTKTSC.js.map → project-source-routed.module-7LNJ63L3.js.map} +0 -0
  173. /package/client-dist/{scheduler.module-E4QERZXL.js.map → scheduler.module-WWXRAC3C.js.map} +0 -0
  174. /package/client-dist/{session.module-7I43GT5A.js.map → session.module-U3H77CSV.js.map} +0 -0
  175. /package/client-dist/{set.module-AGXAY7S7.js.map → set.module-U4VTZ3F4.js.map} +0 -0
  176. /package/client-dist/{setup.module-BOIEEPBX.js.map → setup.module-HX3Z4QZP.js.map} +0 -0
  177. /package/client-dist/{terminals.module-HDGRPS7X.js.map → terminals.module-ZYIKKSBT.js.map} +0 -0
  178. /package/client-dist/{voice-notes-poc.module-KCJSBNDH.js.map → voice-notes-poc.module-TDETXOFZ.js.map} +0 -0
  179. /package/client-dist/{wfs.module-LHNN4X3E.js.map → wfs.module-TLNTMIKM.js.map} +0 -0
@@ -1,3 +1,3 @@
1
- import{a as se}from"./chunk-Y2FV6RJE.js";import"./chunk-YJIAKZVX.js";import"./chunk-GVTS43MP.js";import"./chunk-67QKRQLQ.js";import{b as Z,c as ee,f as te,i as ne,n as ie,o as oe,p as re,v as j}from"./chunk-EO4DNTT4.js";import{a as A}from"./chunk-5UPNU54P.js";import{j as ae}from"./chunk-ZVQ2UNPH.js";import{I as le}from"./chunk-S3VH4N3I.js";import{C,D as R,E as q,Fa as o,Ga as F,Ha as b,Ia as N,J as u,K as m,Kb as X,L as D,M as J,Ta as Y,Z as s,a as v,aa as w,b as S,d as B,da as k,ga as g,ia as I,k as x,la as h,na as K,oa as M,p as E,pa as z,qa as i,ra as n,sa as P,ua as y,ub as V,va as c,wa as p,xb as Q,y as T,z as U}from"./chunk-TBMJSIBB.js";var de=(()=>{class l{baseUrl=`${le.api.baseUrl}/workflow`;http=C(Q);listWorkflows(e){let t=[];e?.workflowType&&t.push(`type=${e.workflowType}`),e?.isTemplate!==void 0&&t.push(`isTemplate=${e.isTemplate}`);let r=t.length?`?${t.join("&")}`:"";return E(this.http.get(`${this.baseUrl}${r}`))}createWorkflow(e){return E(this.http.post(this.baseUrl,e))}getWorkflow(e){return E(this.http.get(`${this.baseUrl}/${e}`))}updateWorkflow(e){let a=e,{id:t}=a,r=B(a,["id"]);return E(this.http.put(`${this.baseUrl}/${t}`,r))}generateWorkflow(e){return E(this.http.post(`${this.baseUrl}/generate`,{description:e.description,provider:e.provider,model:e.model}))}modifyWorkflow(e){return E(this.http.post(`${this.baseUrl}/modify`,{currentWorkflow:e.currentWorkflow,modificationDescription:e.modificationDescription,provider:e.provider,model:e.model}))}deleteWorkflow(e){return E(this.http.delete(`${this.baseUrl}/${e}`))}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var pe=(()=>{class l{workflow_AS=C(de);listWorkflows(e){return x(this,null,function*(){return(yield this.workflow_AS.listWorkflows(e)).workflows})}createWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.createWorkflow(e)).workflow})}getWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.getWorkflow(e)).workflow})}updateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.updateWorkflow(e)).workflow})}generateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.generateWorkflow(e)).workflow})}modifyWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.modifyWorkflow(e)).workflow})}deleteWorkflow(e){return x(this,null,function*(){return this.workflow_AS.deleteWorkflow(e)})}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var L="ccap-workflowSettingsDraft",$=class{static get(){let d=A.readJson(L,null);if(typeof d!="object"||d===null)return null;let e=d,t=typeof e.generationPrompt=="string"?e.generationPrompt:"",r=typeof e.modificationPrompt=="string"?e.modificationPrompt:"",a=typeof e.selectedProvider=="string"?e.selectedProvider:"",_=typeof e.selectedModel=="string"?e.selectedModel:"",W=typeof e.isCreating=="boolean"?e.isCreating:!1,f=e.editingWorkflow&&typeof e.editingWorkflow=="object"?e.editingWorkflow:null;return{generationPrompt:t,modificationPrompt:r,selectedProvider:a,selectedModel:_,isCreating:W,editingWorkflow:f}}static save(d){A.writeJson(L,d)}static clear(){A.remove(L)}};var me=(l,d)=>d._id,H=(l,d)=>d.id;function ce(l,d){if(l&1){let e=y();i(0,"button",5),c("click",function(){u(e);let r=p();return m(r.handleCreateNew())}),o(1," + \xDAj workflow "),n()}}function _e(l,d){l&1&&(i(0,"div",6),o(1,"Bet\xF6lt\xE9s..."),n())}function fe(l,d){l&1&&(i(0,"div",7),o(1," Nincs m\xE9g workflow. Hozz l\xE9tre egyet a gombbal. "),n())}function ge(l,d){l&1&&(i(0,"span",14),o(1," sablon "),n())}function xe(l,d){l&1&&(i(0,"span",15),o(1," Built-in "),n())}function we(l,d){if(l&1){let e=y();i(0,"button",20),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleEdit(r))}),o(1," Szerkeszt\xE9s "),n(),i(2,"button",21),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleDelete(r))}),o(3," T\xF6rl\xE9s "),n()}}function he(l,d){l&1&&(i(0,"span",19),o(1," Readonly "),n())}function ke(l,d){if(l&1&&(i(0,"div",9)(1,"div",10)(2,"div",11)(3,"span",12),o(4),n(),i(5,"span",13),o(6),n(),k(7,ge,2,0,"span",14)(8,xe,2,0,"span",15),n(),i(9,"p",16),o(10),n(),i(11,"div",17),o(12),n()(),i(13,"div",18),k(14,we,4,0)(15,he,2,0,"span",19),n()()),l&2){let e=d.$implicit;s(4),F(e.name),s(2),b(" ",e.workflowType," "),s(),h(e.isTemplate?7:-1),s(),h(e.isBuiltIn?8:-1),s(2),F(e.description),s(2),b(" ",e.phases.length," f\xE1zis "),s(2),h(e.isBuiltIn?15:14)}}function Ee(l,d){if(l&1&&(i(0,"div",8),M(1,ke,16,7,"div",9,me),n()),l&2){let e=p(2);s(),z(e.workflows_$())}}function Ce(l,d){if(l&1&&k(0,_e,2,0,"div",6)(1,fe,2,0,"div",7)(2,Ee,3,0,"div",8),l&2){let e=p();h(e.isLoading_$()?0:e.workflows_$().length===0?1:2)}}function be(l,d){l&1&&(D(),i(0,"svg",27),P(1,"polyline",52),n())}function ve(l,d){l&1&&(D(),i(0,"svg",27),P(1,"rect",53)(2,"path",54),n())}function Se(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function ye(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM dolgozik a workflow-n..."),n())}function $e(l,d){if(l&1){let e=y();i(0,"div",28)(1,"div",42)(2,"span",55),o(3,"Workflow gener\xE1l\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le egyszer\u0171en, mit szeretn\xE9l"),n()(),i(6,"textarea",57),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleGenerationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",59),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,Se,2,3,"option",41,H),n()(),i(17,"button",61),c("click",function(){u(e);let r=p(2);return m(r.handleGenerate())}),o(18),n(),k(19,ye,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.generationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isGenerating_$()||!e.generationPrompt_$()),s(),b(" ",e.isGenerating_$()?"Gener\xE1l\xE1s...":"Gener\xE1l\xE1s"," "),s(),h(e.isGenerating_$()?19:-1)}}function We(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function Me(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM m\xF3dos\xEDtja a workflow-t..."),n())}function ze(l,d){if(l&1){let e=y();i(0,"div",29)(1,"div",42)(2,"span",62),o(3,"Workflow m\xF3dos\xEDt\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le, mit szeretn\xE9l v\xE1ltoztatni"),n()(),i(6,"textarea",63),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModificationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",64),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,We,2,3,"option",41,H),n()(),i(17,"button",65),c("click",function(){u(e);let r=p(2);return m(r.handleModify())}),o(18),n(),k(19,Me,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.modificationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isModifying_$()||!e.modificationPrompt_$()),s(),b(" ",e.isModifying_$()?"M\xF3dos\xEDt\xE1s...":"M\xF3dos\xEDt\xE1s"," "),s(),h(e.isModifying_$()?19:-1)}}function Te(l,d){l&1&&(i(0,"div",36)(1,"div")(2,"h3",66),o(3,"Fel\xE9p\xEDt\xE9s"),n(),i(4,"p"),o(5," Egy j\xF3 workflow "),i(6,"strong",67),o(7,"f\xE1zisokra"),n(),o(8," bontja a feladatot, ahol minden f\xE1zis egyetlen, j\xF3l meghat\xE1rozott c\xE9lt k\xF6vet. A "),i(9,"strong",67),o(10,"vez\xE9rprompt"),n(),o(11," (master prompt) az eg\xE9sz workflow-ra \xE9rv\xE9nyes alapszab\xE1lyokat \xE9s kontextust tartalmazza \u2014 ez minden f\xE1zisban automatikusan megjelenik. "),n()(),i(12,"div")(13,"h3",66),o(14,"Vez\xE9rprompt (master prompt)"),n(),i(15,"ul",68)(16,"li"),o(17,"Projekt kontextus: milyen repo, milyen stack, milyen nyelven dolgozunk"),n(),i(18,"li"),o(19,"Glob\xE1lis szab\xE1lyok: k\xF3dol\xE1si konvenci\xF3k, tiltott m\u0171veletek, commit policy"),n(),i(20,"li"),o(21,'Szerepk\xF6r: milyen "szaktud\xE1s\xFA" agent hajtja v\xE9gre a workflow-t'),n(),i(22,"li"),o(23,"Ne ism\xE9telj meg f\xE1zisonk\xE9nt olyat, ami ide tartozik \u2014 a master prompt mindig jelen van"),n()()(),i(24,"div")(25,"h3",66),o(26,"F\xE1zisok tervez\xE9se"),n(),i(27,"ul",68)(28,"li")(29,"strong",67),o(30,"C\xE9l (goal):"),n(),o(31," egyetlen mondat \u2014 a f\xE1zis sikeress\xE9g\xE9nek m\xE9rc\xE9je "),n(),i(32,"li")(33,"strong",67),o(34,"F\xE1zis prompt:"),n(),o(35,' konkr\xE9t, akci\xF3-orient\xE1lt utas\xEDt\xE1s. Ker\xFCld az \xE1ltal\xE1noss\xE1gokat ("n\xE9zd \xE1t a k\xF3dot") \u2014 \xEDrd le pontosan mit kell csin\xE1lni '),n(),i(36,"li")(37,"strong",67),o(38,"Ism\xE9tl\u0151d\u0151 f\xE1zis:"),n(),o(39,' ha a f\xE1zis nem egyl\xE9p\xE9ses (pl. iterat\xEDv fejleszt\xE9s), kapcsold be az "Ism\xE9tl\u0151d\u0151" opci\xF3t \u2014 a f\xE1zis addig fut, am\xEDg PHASE_DONE jelz\xE9s nem \xE9rkezik '),n()()(),i(40,"div")(41,"h3",66),o(42,"Tipikus f\xE1zis-sorrend"),n(),i(43,"div",69)(44,"span",70),o(45,"1. T\xE1j\xE9koz\xF3d\xE1s / Clarify"),n(),i(46,"span",24),o(47,"\u2192"),n(),i(48,"span",70),o(49,"2. Tervez\xE9s / Plan"),n(),i(50,"span",24),o(51,"\u2192"),n(),i(52,"span",70),o(53,"3. Megval\xF3s\xEDt\xE1s / Dev"),n(),i(54,"span",24),o(55,"\u2192"),n(),i(56,"span",70),o(57,"4. Tesztel\xE9s / Test"),n(),i(58,"span",24),o(59,"\u2192"),n(),i(60,"span",70),o(61,"5. Review / Doc"),n()(),i(62,"p",71),o(63," Nem minden workflow-nak kell minden f\xE1zist tartalmaznia \u2014 haszn\xE1ld azt, ami relev\xE1ns. "),n()(),i(64,"div")(65,"h3",66),o(66,"Tippek"),n(),i(67,"ul",68)(68,"li"),o(69,"A "),i(70,"strong",67),o(71,"sablon (template)"),n(),o(72," workflow-kat gener\xE1l\xE1shoz is haszn\xE1ljuk \u2014 jel\xF6ld be, ha m\xE1sok sz\xE1m\xE1ra is mintak\xE9nt szolg\xE1l"),n(),i(73,"li"),o(74,"A f\xE1zis prompt-ban hivatkozhatsz f\xE1jlokra, mapp\xE1kra, specifik\xE1ci\xF3kra \u2014 min\xE9l konkr\xE9tabb, ann\xE1l jobb"),n(),i(75,"li"),o(76,"T\xF6rekedj arra, hogy egy f\xE1zis "),i(77,"strong",67),o(78,"1 felel\u0151ss\xE9gi k\xF6rrel"),n(),o(79," rendelkezzen (single responsibility)"),n(),i(80,"li"),o(81,"Ha egy f\xE1zis t\xFAl hossz\xFA lenne, bontsd kett\xE9 \u2014 ink\xE1bb legyen t\xF6bb kis f\xE1zis, mint egy nagy"),n()()()())}function De(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e),s(),F(e)}}function Pe(l,d){if(l&1){let e=y();i(0,"div",48)(1,"div",72)(2,"span",73),o(3),n(),i(4,"button",74),c("click",function(){let r=u(e).$index,a=p(2);return m(a.handleRemovePhase(r))}),o(5," Elt\xE1vol\xEDt\xE1s "),n()(),i(6,"div",75)(7,"div")(8,"label",76),o(9,"C\xEDm"),n(),i(10,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"title",value:r}))}),n()(),i(11,"div")(12,"label",76),o(13,"C\xE9l (goal)"),n(),i(14,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"goal",value:r}))}),n()()(),i(15,"div",78)(16,"label",76),o(17,"F\xE1zis prompt"),n(),i(18,"textarea",79),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"phasePrompt",value:r}))}),o(19," "),n()(),i(20,"div",42)(21,"input",43),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"repeatUntilDone",value:r}))}),n(),i(22,"label",80),o(23,"Ism\xE9tl\u0151d\u0151 (am\xEDg PHASE_DONE)"),n()()()}if(l&2){let e=d.$implicit,t=d.$index;s(3),b("F\xE1zis ",t+1,""),s(7),g("ngModel",e.title),s(4),g("ngModel",e.goal),s(4),g("ngModel",e.phasePrompt),s(3),g("ngModel",e.repeatUntilDone)}}function Fe(l,d){if(l&1){let e=y();i(0,"div",4)(1,"div",22)(2,"button",23),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(3," \u2190 Vissza "),n(),i(4,"span",24),o(5,"|"),n(),i(6,"span",25),o(7),n(),i(8,"button",26),c("click",function(){u(e);let r=p();return m(r.handleCopyMarkdown())}),k(9,be,2,0,":svg:svg",27)(10,ve,3,0,":svg:svg",27),n()(),k(11,$e,20,5,"div",28)(12,ze,20,5,"div",29),i(13,"div",30)(14,"button",31),c("click",function(){u(e);let r=p();return m(r.handleToggleBestPractices())}),D(),i(15,"svg",32),P(16,"polyline",33),n(),J(),i(17,"span",34),o(18,"Workflow tervez\xE9si \xFAtmutat\xF3"),n(),i(19,"span",35),o(20,"best practices"),n()(),k(21,Te,82,0,"div",36),n(),i(22,"div",37)(23,"div")(24,"label",38),o(25,"N\xE9v"),n(),i(26,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("name",r))}),n()(),i(27,"div")(28,"label",38),o(29,"T\xEDpus"),n(),i(30,"select",40),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("workflowType",r))}),M(31,De,2,2,"option",41,K),n()()(),i(33,"div")(34,"label",38),o(35,"Le\xEDr\xE1s"),n(),i(36,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("description",r))}),n()(),i(37,"div",42)(38,"input",43),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("isTemplate",r))}),n(),i(39,"label",25),o(40,"Sablon (template)"),n()(),i(41,"div")(42,"label",38),o(43,"Vez\xE9rprompt (master prompt)"),n(),i(44,"textarea",44),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("masterPrompt",r))}),o(45," "),n()(),i(46,"div")(47,"div",45)(48,"h2",46),o(49,"F\xE1zisok"),n(),i(50,"button",47),c("click",function(){u(e);let r=p();return m(r.handleAddPhase())}),o(51," + F\xE1zis "),n()(),M(52,Pe,24,5,"div",48,H),n(),i(54,"div",49)(55,"button",50),c("click",function(){u(e);let r=p();return m(r.handleSave())}),o(56),n(),i(57,"button",51),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(58," M\xE9gse "),n()()()}if(l&2){let e,t,r,a,_,W,f=p();s(7),b(" ",f.isCreating_$()?"\xDAj workflow":"Szerkeszt\xE9s"," "),s(),I("text-neutral-500",!f.isCopied_$())("hover:text-neutral-200",!f.isCopied_$())("text-green-400",f.isCopied_$()),s(),h(f.isCopied_$()?9:10),s(2),h(f.isCreating_$()?11:-1),s(),h(f.isCreating_$()?-1:12),s(3),I("-rotate-90",!f.isBestPracticesOpen_$()),s(6),h(f.isBestPracticesOpen_$()?21:-1),s(5),g("ngModel",(e=f.editingWorkflow_$())==null?null:e.name),s(4),g("ngModel",(t=f.editingWorkflow_$())==null?null:t.workflowType),s(),z(f.workflowTypes),s(5),g("ngModel",(r=f.editingWorkflow_$())==null?null:r.description),s(2),g("ngModel",(a=f.editingWorkflow_$())==null?null:a.isTemplate),s(6),g("ngModel",(_=f.editingWorkflow_$())==null?null:_.masterPrompt),s(8),z((W=f.editingWorkflow_$())==null?null:W.phases),s(3),g("disabled",f.isLoading_$()),s(),b(" ",f.isCreating_$()?"L\xE9trehoz\xE1s":"Ment\xE9s"," ")}}function ue(l){return{id:`phase-${Date.now()}-${l}`,title:"",order:l,goal:"",phasePrompt:"",constraints:[],dod:[],repeatUntilDone:!1,subWorkflowTriggers:[]}}function Ve(){return{name:"",description:"",workflowType:"development",isTemplate:!1,masterPrompt:"",phases:[ue(0)]}}var O=(()=>{class l{workflow_DS=C(pe);globalError_CS=C(ae);modelRegistry_DS=C(se);workflows_$=w([]);editingWorkflow_$=w(null);isLoading_$=w(!1);isCreating_$=w(!1);isBestPracticesOpen_$=w(!1);generationPrompt_$=w("");modificationPrompt_$=w("");isGenerating_$=w(!1);isModifying_$=w(!1);isCopied_$=w(!1);availableModels_$=w([]);selectedProvider_$=w("");selectedModel_$=w("");workflowTypes=["development","research","testing","support","onboarding","review","poc","user-input","bug-report"];ngOnInit(){this.loadWorkflows(),this.loadAvailableModels(),this.restoreDraft()}loadWorkflows(){return x(this,null,function*(){try{this.isLoading_$.set(!0);let e=yield this.workflow_DS.listWorkflows();this.workflows_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleCreateNew(){this.isCreating_$.set(!0),this.editingWorkflow_$.set(Ve()),this.persistDraft()}handleEdit(e){this.isCreating_$.set(!1),this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases]}))}handleCancel(){this.editingWorkflow_$.set(null),$.clear()}handleSave(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(e)try{this.isLoading_$.set(!0),this.isCreating_$()?yield this.workflow_DS.createWorkflow({name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory}):e._id&&(yield this.workflow_DS.updateWorkflow({id:e._id,name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory})),this.editingWorkflow_$.set(null),$.clear(),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleDelete(e){return x(this,null,function*(){if(e._id)try{this.isLoading_$.set(!0),yield this.workflow_DS.deleteWorkflow(e._id),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleAddPhase(){let e=this.editingWorkflow_$();if(!e)return;let t=ue(e.phases.length);this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases,t]})),this.persistDraft()}handleRemovePhase(e){let t=this.editingWorkflow_$();if(!t)return;let r=t.phases.filter((a,_)=>_!==e);this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handlePhaseFieldChange(e){let t=this.editingWorkflow_$();if(!t)return;let r=[...t.phases];r[e.index]=S(v({},r[e.index]),{[e.field]:e.value}),this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handleGenerationPromptChange(e){this.generationPrompt_$.set(e),this.persistDraft()}handleGenerate(){return x(this,null,function*(){let e=this.generationPrompt_$().trim();if(e)try{this.isGenerating_$.set(!0);let t=this.selectedProvider_$(),r=this.selectedModel_$(),a=yield this.workflow_DS.generateWorkflow({description:e,provider:t||void 0,model:r||void 0}),_={type:"generation",prompt:e,timestamp:new Date().toISOString()};this.editingWorkflow_$.set({name:a.name??"",description:a.description??"",workflowType:a.workflowType??"development",isTemplate:a.isTemplate??!1,masterPrompt:a.masterPrompt??"",phases:Array.isArray(a.phases)?a.phases:[],generationHistory:[_]})}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isGenerating_$.set(!1)}})}handleModificationPromptChange(e){this.modificationPrompt_$.set(e),this.persistDraft()}handleModify(){return x(this,null,function*(){let e=this.modificationPrompt_$().trim(),t=this.editingWorkflow_$();if(!(!e||!t))try{this.isModifying_$.set(!0);let r=this.selectedProvider_$(),a=this.selectedModel_$(),_=yield this.workflow_DS.modifyWorkflow({currentWorkflow:t,modificationDescription:e,provider:r||void 0,model:a||void 0}),W={type:"modification",prompt:e,timestamp:new Date().toISOString()},f=t.generationHistory??[];this.editingWorkflow_$.set({_id:t._id,name:_.name??"",description:_.description??"",workflowType:_.workflowType??"development",isTemplate:_.isTemplate??!1,masterPrompt:_.masterPrompt??"",phases:Array.isArray(_.phases)?_.phases:[],generationHistory:[...f,W]}),this.persistDraft()}catch(r){this.globalError_CS.showError(r,"workflow-settings")}finally{this.isModifying_$.set(!1)}})}loadAvailableModels(){return x(this,null,function*(){try{let e=yield this.modelRegistry_DS.loadList({enabled:!0});this.availableModels_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}})}handleModelSelectionChange(e){if(!e){this.selectedProvider_$.set(""),this.selectedModel_$.set("");return}let t=e.indexOf(":");t!==-1&&(this.selectedProvider_$.set(e.substring(0,t)),this.selectedModel_$.set(e.substring(t+1)),this.persistDraft())}handleToggleBestPractices(){this.isBestPracticesOpen_$.set(!this.isBestPracticesOpen_$())}handleFieldChange(e,t){let r=this.editingWorkflow_$();r&&(this.editingWorkflow_$.set(S(v({},r),{[e]:t})),this.persistDraft())}handleCopyMarkdown(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(!e)return;let t=[];t.push(`# ${e.name||"N\xE9vtelen workflow"}`),t.push(""),e.description&&(t.push(`> ${e.description}`),t.push("")),t.push("| Mez\u0151 | \xC9rt\xE9k |"),t.push("|------|-------|"),t.push(`| T\xEDpus | ${e.workflowType} |`),t.push(`| Sablon | ${e.isTemplate?"igen":"nem"} |`),t.push(`| F\xE1zisok sz\xE1ma | ${e.phases.length} |`),t.push(""),e.masterPrompt&&(t.push("## Vez\xE9rprompt (master prompt)"),t.push(""),t.push(e.masterPrompt),t.push("")),t.push("## F\xE1zisok"),t.push("");for(let r of e.phases){if(t.push(`### ${r.order+1}. ${r.title||"N\xE9vtelen f\xE1zis"}`),t.push(""),r.goal&&(t.push(`**C\xE9l:** ${r.goal}`),t.push("")),r.phasePrompt&&(t.push("**F\xE1zis prompt:**"),t.push(""),t.push(r.phasePrompt),t.push("")),r.constraints.length){t.push("**Megk\xF6t\xE9sek:**");for(let a of r.constraints)t.push(`- ${a}`);t.push("")}if(r.dod.length){t.push("**Definition of Done:**");for(let a of r.dod)t.push(`- ${a}`);t.push("")}r.repeatUntilDone&&(t.push("*Ism\xE9tl\u0151d\u0151 f\xE1zis (am\xEDg PHASE_DONE)*"),t.push(""))}try{yield navigator.clipboard.writeText(t.join(`
1
+ import{a as se}from"./chunk-OTKCWDMN.js";import"./chunk-KHMIPNYS.js";import"./chunk-DDCJS3DI.js";import"./chunk-PMHB4BTK.js";import{b as Z,c as ee,f as te,i as ne,n as ie,o as oe,p as re,v as j}from"./chunk-EO4DNTT4.js";import{a as A}from"./chunk-5UPNU54P.js";import{j as ae}from"./chunk-2SGIODEE.js";import{I as le}from"./chunk-DF6VWTNQ.js";import{C,D as R,E as q,Fa as o,Ga as F,Ha as b,Ia as N,J as u,K as m,Kb as X,L as D,M as J,Ta as Y,Z as s,a as v,aa as w,b as S,d as B,da as k,ga as g,ia as I,k as x,la as h,na as K,oa as M,p as E,pa as z,qa as i,ra as n,sa as P,ua as y,ub as V,va as c,wa as p,xb as Q,y as T,z as U}from"./chunk-TBMJSIBB.js";var de=(()=>{class l{baseUrl=`${le.api.baseUrl}/workflow`;http=C(Q);listWorkflows(e){let t=[];e?.workflowType&&t.push(`type=${e.workflowType}`),e?.isTemplate!==void 0&&t.push(`isTemplate=${e.isTemplate}`);let r=t.length?`?${t.join("&")}`:"";return E(this.http.get(`${this.baseUrl}${r}`))}createWorkflow(e){return E(this.http.post(this.baseUrl,e))}getWorkflow(e){return E(this.http.get(`${this.baseUrl}/${e}`))}updateWorkflow(e){let a=e,{id:t}=a,r=B(a,["id"]);return E(this.http.put(`${this.baseUrl}/${t}`,r))}generateWorkflow(e){return E(this.http.post(`${this.baseUrl}/generate`,{description:e.description,provider:e.provider,model:e.model}))}modifyWorkflow(e){return E(this.http.post(`${this.baseUrl}/modify`,{currentWorkflow:e.currentWorkflow,modificationDescription:e.modificationDescription,provider:e.provider,model:e.model}))}deleteWorkflow(e){return E(this.http.delete(`${this.baseUrl}/${e}`))}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var pe=(()=>{class l{workflow_AS=C(de);listWorkflows(e){return x(this,null,function*(){return(yield this.workflow_AS.listWorkflows(e)).workflows})}createWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.createWorkflow(e)).workflow})}getWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.getWorkflow(e)).workflow})}updateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.updateWorkflow(e)).workflow})}generateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.generateWorkflow(e)).workflow})}modifyWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.modifyWorkflow(e)).workflow})}deleteWorkflow(e){return x(this,null,function*(){return this.workflow_AS.deleteWorkflow(e)})}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var L="ccap-workflowSettingsDraft",$=class{static get(){let d=A.readJson(L,null);if(typeof d!="object"||d===null)return null;let e=d,t=typeof e.generationPrompt=="string"?e.generationPrompt:"",r=typeof e.modificationPrompt=="string"?e.modificationPrompt:"",a=typeof e.selectedProvider=="string"?e.selectedProvider:"",_=typeof e.selectedModel=="string"?e.selectedModel:"",W=typeof e.isCreating=="boolean"?e.isCreating:!1,f=e.editingWorkflow&&typeof e.editingWorkflow=="object"?e.editingWorkflow:null;return{generationPrompt:t,modificationPrompt:r,selectedProvider:a,selectedModel:_,isCreating:W,editingWorkflow:f}}static save(d){A.writeJson(L,d)}static clear(){A.remove(L)}};var me=(l,d)=>d._id,H=(l,d)=>d.id;function ce(l,d){if(l&1){let e=y();i(0,"button",5),c("click",function(){u(e);let r=p();return m(r.handleCreateNew())}),o(1," + \xDAj workflow "),n()}}function _e(l,d){l&1&&(i(0,"div",6),o(1,"Bet\xF6lt\xE9s..."),n())}function fe(l,d){l&1&&(i(0,"div",7),o(1," Nincs m\xE9g workflow. Hozz l\xE9tre egyet a gombbal. "),n())}function ge(l,d){l&1&&(i(0,"span",14),o(1," sablon "),n())}function xe(l,d){l&1&&(i(0,"span",15),o(1," Built-in "),n())}function we(l,d){if(l&1){let e=y();i(0,"button",20),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleEdit(r))}),o(1," Szerkeszt\xE9s "),n(),i(2,"button",21),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleDelete(r))}),o(3," T\xF6rl\xE9s "),n()}}function he(l,d){l&1&&(i(0,"span",19),o(1," Readonly "),n())}function ke(l,d){if(l&1&&(i(0,"div",9)(1,"div",10)(2,"div",11)(3,"span",12),o(4),n(),i(5,"span",13),o(6),n(),k(7,ge,2,0,"span",14)(8,xe,2,0,"span",15),n(),i(9,"p",16),o(10),n(),i(11,"div",17),o(12),n()(),i(13,"div",18),k(14,we,4,0)(15,he,2,0,"span",19),n()()),l&2){let e=d.$implicit;s(4),F(e.name),s(2),b(" ",e.workflowType," "),s(),h(e.isTemplate?7:-1),s(),h(e.isBuiltIn?8:-1),s(2),F(e.description),s(2),b(" ",e.phases.length," f\xE1zis "),s(2),h(e.isBuiltIn?15:14)}}function Ee(l,d){if(l&1&&(i(0,"div",8),M(1,ke,16,7,"div",9,me),n()),l&2){let e=p(2);s(),z(e.workflows_$())}}function Ce(l,d){if(l&1&&k(0,_e,2,0,"div",6)(1,fe,2,0,"div",7)(2,Ee,3,0,"div",8),l&2){let e=p();h(e.isLoading_$()?0:e.workflows_$().length===0?1:2)}}function be(l,d){l&1&&(D(),i(0,"svg",27),P(1,"polyline",52),n())}function ve(l,d){l&1&&(D(),i(0,"svg",27),P(1,"rect",53)(2,"path",54),n())}function Se(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function ye(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM dolgozik a workflow-n..."),n())}function $e(l,d){if(l&1){let e=y();i(0,"div",28)(1,"div",42)(2,"span",55),o(3,"Workflow gener\xE1l\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le egyszer\u0171en, mit szeretn\xE9l"),n()(),i(6,"textarea",57),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleGenerationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",59),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,Se,2,3,"option",41,H),n()(),i(17,"button",61),c("click",function(){u(e);let r=p(2);return m(r.handleGenerate())}),o(18),n(),k(19,ye,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.generationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isGenerating_$()||!e.generationPrompt_$()),s(),b(" ",e.isGenerating_$()?"Gener\xE1l\xE1s...":"Gener\xE1l\xE1s"," "),s(),h(e.isGenerating_$()?19:-1)}}function We(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function Me(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM m\xF3dos\xEDtja a workflow-t..."),n())}function ze(l,d){if(l&1){let e=y();i(0,"div",29)(1,"div",42)(2,"span",62),o(3,"Workflow m\xF3dos\xEDt\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le, mit szeretn\xE9l v\xE1ltoztatni"),n()(),i(6,"textarea",63),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModificationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",64),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,We,2,3,"option",41,H),n()(),i(17,"button",65),c("click",function(){u(e);let r=p(2);return m(r.handleModify())}),o(18),n(),k(19,Me,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.modificationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isModifying_$()||!e.modificationPrompt_$()),s(),b(" ",e.isModifying_$()?"M\xF3dos\xEDt\xE1s...":"M\xF3dos\xEDt\xE1s"," "),s(),h(e.isModifying_$()?19:-1)}}function Te(l,d){l&1&&(i(0,"div",36)(1,"div")(2,"h3",66),o(3,"Fel\xE9p\xEDt\xE9s"),n(),i(4,"p"),o(5," Egy j\xF3 workflow "),i(6,"strong",67),o(7,"f\xE1zisokra"),n(),o(8," bontja a feladatot, ahol minden f\xE1zis egyetlen, j\xF3l meghat\xE1rozott c\xE9lt k\xF6vet. A "),i(9,"strong",67),o(10,"vez\xE9rprompt"),n(),o(11," (master prompt) az eg\xE9sz workflow-ra \xE9rv\xE9nyes alapszab\xE1lyokat \xE9s kontextust tartalmazza \u2014 ez minden f\xE1zisban automatikusan megjelenik. "),n()(),i(12,"div")(13,"h3",66),o(14,"Vez\xE9rprompt (master prompt)"),n(),i(15,"ul",68)(16,"li"),o(17,"Projekt kontextus: milyen repo, milyen stack, milyen nyelven dolgozunk"),n(),i(18,"li"),o(19,"Glob\xE1lis szab\xE1lyok: k\xF3dol\xE1si konvenci\xF3k, tiltott m\u0171veletek, commit policy"),n(),i(20,"li"),o(21,'Szerepk\xF6r: milyen "szaktud\xE1s\xFA" agent hajtja v\xE9gre a workflow-t'),n(),i(22,"li"),o(23,"Ne ism\xE9telj meg f\xE1zisonk\xE9nt olyat, ami ide tartozik \u2014 a master prompt mindig jelen van"),n()()(),i(24,"div")(25,"h3",66),o(26,"F\xE1zisok tervez\xE9se"),n(),i(27,"ul",68)(28,"li")(29,"strong",67),o(30,"C\xE9l (goal):"),n(),o(31," egyetlen mondat \u2014 a f\xE1zis sikeress\xE9g\xE9nek m\xE9rc\xE9je "),n(),i(32,"li")(33,"strong",67),o(34,"F\xE1zis prompt:"),n(),o(35,' konkr\xE9t, akci\xF3-orient\xE1lt utas\xEDt\xE1s. Ker\xFCld az \xE1ltal\xE1noss\xE1gokat ("n\xE9zd \xE1t a k\xF3dot") \u2014 \xEDrd le pontosan mit kell csin\xE1lni '),n(),i(36,"li")(37,"strong",67),o(38,"Ism\xE9tl\u0151d\u0151 f\xE1zis:"),n(),o(39,' ha a f\xE1zis nem egyl\xE9p\xE9ses (pl. iterat\xEDv fejleszt\xE9s), kapcsold be az "Ism\xE9tl\u0151d\u0151" opci\xF3t \u2014 a f\xE1zis addig fut, am\xEDg PHASE_DONE jelz\xE9s nem \xE9rkezik '),n()()(),i(40,"div")(41,"h3",66),o(42,"Tipikus f\xE1zis-sorrend"),n(),i(43,"div",69)(44,"span",70),o(45,"1. T\xE1j\xE9koz\xF3d\xE1s / Clarify"),n(),i(46,"span",24),o(47,"\u2192"),n(),i(48,"span",70),o(49,"2. Tervez\xE9s / Plan"),n(),i(50,"span",24),o(51,"\u2192"),n(),i(52,"span",70),o(53,"3. Megval\xF3s\xEDt\xE1s / Dev"),n(),i(54,"span",24),o(55,"\u2192"),n(),i(56,"span",70),o(57,"4. Tesztel\xE9s / Test"),n(),i(58,"span",24),o(59,"\u2192"),n(),i(60,"span",70),o(61,"5. Review / Doc"),n()(),i(62,"p",71),o(63," Nem minden workflow-nak kell minden f\xE1zist tartalmaznia \u2014 haszn\xE1ld azt, ami relev\xE1ns. "),n()(),i(64,"div")(65,"h3",66),o(66,"Tippek"),n(),i(67,"ul",68)(68,"li"),o(69,"A "),i(70,"strong",67),o(71,"sablon (template)"),n(),o(72," workflow-kat gener\xE1l\xE1shoz is haszn\xE1ljuk \u2014 jel\xF6ld be, ha m\xE1sok sz\xE1m\xE1ra is mintak\xE9nt szolg\xE1l"),n(),i(73,"li"),o(74,"A f\xE1zis prompt-ban hivatkozhatsz f\xE1jlokra, mapp\xE1kra, specifik\xE1ci\xF3kra \u2014 min\xE9l konkr\xE9tabb, ann\xE1l jobb"),n(),i(75,"li"),o(76,"T\xF6rekedj arra, hogy egy f\xE1zis "),i(77,"strong",67),o(78,"1 felel\u0151ss\xE9gi k\xF6rrel"),n(),o(79," rendelkezzen (single responsibility)"),n(),i(80,"li"),o(81,"Ha egy f\xE1zis t\xFAl hossz\xFA lenne, bontsd kett\xE9 \u2014 ink\xE1bb legyen t\xF6bb kis f\xE1zis, mint egy nagy"),n()()()())}function De(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e),s(),F(e)}}function Pe(l,d){if(l&1){let e=y();i(0,"div",48)(1,"div",72)(2,"span",73),o(3),n(),i(4,"button",74),c("click",function(){let r=u(e).$index,a=p(2);return m(a.handleRemovePhase(r))}),o(5," Elt\xE1vol\xEDt\xE1s "),n()(),i(6,"div",75)(7,"div")(8,"label",76),o(9,"C\xEDm"),n(),i(10,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"title",value:r}))}),n()(),i(11,"div")(12,"label",76),o(13,"C\xE9l (goal)"),n(),i(14,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"goal",value:r}))}),n()()(),i(15,"div",78)(16,"label",76),o(17,"F\xE1zis prompt"),n(),i(18,"textarea",79),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"phasePrompt",value:r}))}),o(19," "),n()(),i(20,"div",42)(21,"input",43),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"repeatUntilDone",value:r}))}),n(),i(22,"label",80),o(23,"Ism\xE9tl\u0151d\u0151 (am\xEDg PHASE_DONE)"),n()()()}if(l&2){let e=d.$implicit,t=d.$index;s(3),b("F\xE1zis ",t+1,""),s(7),g("ngModel",e.title),s(4),g("ngModel",e.goal),s(4),g("ngModel",e.phasePrompt),s(3),g("ngModel",e.repeatUntilDone)}}function Fe(l,d){if(l&1){let e=y();i(0,"div",4)(1,"div",22)(2,"button",23),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(3," \u2190 Vissza "),n(),i(4,"span",24),o(5,"|"),n(),i(6,"span",25),o(7),n(),i(8,"button",26),c("click",function(){u(e);let r=p();return m(r.handleCopyMarkdown())}),k(9,be,2,0,":svg:svg",27)(10,ve,3,0,":svg:svg",27),n()(),k(11,$e,20,5,"div",28)(12,ze,20,5,"div",29),i(13,"div",30)(14,"button",31),c("click",function(){u(e);let r=p();return m(r.handleToggleBestPractices())}),D(),i(15,"svg",32),P(16,"polyline",33),n(),J(),i(17,"span",34),o(18,"Workflow tervez\xE9si \xFAtmutat\xF3"),n(),i(19,"span",35),o(20,"best practices"),n()(),k(21,Te,82,0,"div",36),n(),i(22,"div",37)(23,"div")(24,"label",38),o(25,"N\xE9v"),n(),i(26,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("name",r))}),n()(),i(27,"div")(28,"label",38),o(29,"T\xEDpus"),n(),i(30,"select",40),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("workflowType",r))}),M(31,De,2,2,"option",41,K),n()()(),i(33,"div")(34,"label",38),o(35,"Le\xEDr\xE1s"),n(),i(36,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("description",r))}),n()(),i(37,"div",42)(38,"input",43),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("isTemplate",r))}),n(),i(39,"label",25),o(40,"Sablon (template)"),n()(),i(41,"div")(42,"label",38),o(43,"Vez\xE9rprompt (master prompt)"),n(),i(44,"textarea",44),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("masterPrompt",r))}),o(45," "),n()(),i(46,"div")(47,"div",45)(48,"h2",46),o(49,"F\xE1zisok"),n(),i(50,"button",47),c("click",function(){u(e);let r=p();return m(r.handleAddPhase())}),o(51," + F\xE1zis "),n()(),M(52,Pe,24,5,"div",48,H),n(),i(54,"div",49)(55,"button",50),c("click",function(){u(e);let r=p();return m(r.handleSave())}),o(56),n(),i(57,"button",51),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(58," M\xE9gse "),n()()()}if(l&2){let e,t,r,a,_,W,f=p();s(7),b(" ",f.isCreating_$()?"\xDAj workflow":"Szerkeszt\xE9s"," "),s(),I("text-neutral-500",!f.isCopied_$())("hover:text-neutral-200",!f.isCopied_$())("text-green-400",f.isCopied_$()),s(),h(f.isCopied_$()?9:10),s(2),h(f.isCreating_$()?11:-1),s(),h(f.isCreating_$()?-1:12),s(3),I("-rotate-90",!f.isBestPracticesOpen_$()),s(6),h(f.isBestPracticesOpen_$()?21:-1),s(5),g("ngModel",(e=f.editingWorkflow_$())==null?null:e.name),s(4),g("ngModel",(t=f.editingWorkflow_$())==null?null:t.workflowType),s(),z(f.workflowTypes),s(5),g("ngModel",(r=f.editingWorkflow_$())==null?null:r.description),s(2),g("ngModel",(a=f.editingWorkflow_$())==null?null:a.isTemplate),s(6),g("ngModel",(_=f.editingWorkflow_$())==null?null:_.masterPrompt),s(8),z((W=f.editingWorkflow_$())==null?null:W.phases),s(3),g("disabled",f.isLoading_$()),s(),b(" ",f.isCreating_$()?"L\xE9trehoz\xE1s":"Ment\xE9s"," ")}}function ue(l){return{id:`phase-${Date.now()}-${l}`,title:"",order:l,goal:"",phasePrompt:"",constraints:[],dod:[],repeatUntilDone:!1,subWorkflowTriggers:[]}}function Ve(){return{name:"",description:"",workflowType:"development",isTemplate:!1,masterPrompt:"",phases:[ue(0)]}}var O=(()=>{class l{workflow_DS=C(pe);globalError_CS=C(ae);modelRegistry_DS=C(se);workflows_$=w([]);editingWorkflow_$=w(null);isLoading_$=w(!1);isCreating_$=w(!1);isBestPracticesOpen_$=w(!1);generationPrompt_$=w("");modificationPrompt_$=w("");isGenerating_$=w(!1);isModifying_$=w(!1);isCopied_$=w(!1);availableModels_$=w([]);selectedProvider_$=w("");selectedModel_$=w("");workflowTypes=["development","research","testing","support","onboarding","review","poc","user-input","bug-report"];ngOnInit(){this.loadWorkflows(),this.loadAvailableModels(),this.restoreDraft()}loadWorkflows(){return x(this,null,function*(){try{this.isLoading_$.set(!0);let e=yield this.workflow_DS.listWorkflows();this.workflows_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleCreateNew(){this.isCreating_$.set(!0),this.editingWorkflow_$.set(Ve()),this.persistDraft()}handleEdit(e){this.isCreating_$.set(!1),this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases]}))}handleCancel(){this.editingWorkflow_$.set(null),$.clear()}handleSave(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(e)try{this.isLoading_$.set(!0),this.isCreating_$()?yield this.workflow_DS.createWorkflow({name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory}):e._id&&(yield this.workflow_DS.updateWorkflow({id:e._id,name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory})),this.editingWorkflow_$.set(null),$.clear(),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleDelete(e){return x(this,null,function*(){if(e._id)try{this.isLoading_$.set(!0),yield this.workflow_DS.deleteWorkflow(e._id),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleAddPhase(){let e=this.editingWorkflow_$();if(!e)return;let t=ue(e.phases.length);this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases,t]})),this.persistDraft()}handleRemovePhase(e){let t=this.editingWorkflow_$();if(!t)return;let r=t.phases.filter((a,_)=>_!==e);this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handlePhaseFieldChange(e){let t=this.editingWorkflow_$();if(!t)return;let r=[...t.phases];r[e.index]=S(v({},r[e.index]),{[e.field]:e.value}),this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handleGenerationPromptChange(e){this.generationPrompt_$.set(e),this.persistDraft()}handleGenerate(){return x(this,null,function*(){let e=this.generationPrompt_$().trim();if(e)try{this.isGenerating_$.set(!0);let t=this.selectedProvider_$(),r=this.selectedModel_$(),a=yield this.workflow_DS.generateWorkflow({description:e,provider:t||void 0,model:r||void 0}),_={type:"generation",prompt:e,timestamp:new Date().toISOString()};this.editingWorkflow_$.set({name:a.name??"",description:a.description??"",workflowType:a.workflowType??"development",isTemplate:a.isTemplate??!1,masterPrompt:a.masterPrompt??"",phases:Array.isArray(a.phases)?a.phases:[],generationHistory:[_]})}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isGenerating_$.set(!1)}})}handleModificationPromptChange(e){this.modificationPrompt_$.set(e),this.persistDraft()}handleModify(){return x(this,null,function*(){let e=this.modificationPrompt_$().trim(),t=this.editingWorkflow_$();if(!(!e||!t))try{this.isModifying_$.set(!0);let r=this.selectedProvider_$(),a=this.selectedModel_$(),_=yield this.workflow_DS.modifyWorkflow({currentWorkflow:t,modificationDescription:e,provider:r||void 0,model:a||void 0}),W={type:"modification",prompt:e,timestamp:new Date().toISOString()},f=t.generationHistory??[];this.editingWorkflow_$.set({_id:t._id,name:_.name??"",description:_.description??"",workflowType:_.workflowType??"development",isTemplate:_.isTemplate??!1,masterPrompt:_.masterPrompt??"",phases:Array.isArray(_.phases)?_.phases:[],generationHistory:[...f,W]}),this.persistDraft()}catch(r){this.globalError_CS.showError(r,"workflow-settings")}finally{this.isModifying_$.set(!1)}})}loadAvailableModels(){return x(this,null,function*(){try{let e=yield this.modelRegistry_DS.loadList({enabled:!0});this.availableModels_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}})}handleModelSelectionChange(e){if(!e){this.selectedProvider_$.set(""),this.selectedModel_$.set("");return}let t=e.indexOf(":");t!==-1&&(this.selectedProvider_$.set(e.substring(0,t)),this.selectedModel_$.set(e.substring(t+1)),this.persistDraft())}handleToggleBestPractices(){this.isBestPracticesOpen_$.set(!this.isBestPracticesOpen_$())}handleFieldChange(e,t){let r=this.editingWorkflow_$();r&&(this.editingWorkflow_$.set(S(v({},r),{[e]:t})),this.persistDraft())}handleCopyMarkdown(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(!e)return;let t=[];t.push(`# ${e.name||"N\xE9vtelen workflow"}`),t.push(""),e.description&&(t.push(`> ${e.description}`),t.push("")),t.push("| Mez\u0151 | \xC9rt\xE9k |"),t.push("|------|-------|"),t.push(`| T\xEDpus | ${e.workflowType} |`),t.push(`| Sablon | ${e.isTemplate?"igen":"nem"} |`),t.push(`| F\xE1zisok sz\xE1ma | ${e.phases.length} |`),t.push(""),e.masterPrompt&&(t.push("## Vez\xE9rprompt (master prompt)"),t.push(""),t.push(e.masterPrompt),t.push("")),t.push("## F\xE1zisok"),t.push("");for(let r of e.phases){if(t.push(`### ${r.order+1}. ${r.title||"N\xE9vtelen f\xE1zis"}`),t.push(""),r.goal&&(t.push(`**C\xE9l:** ${r.goal}`),t.push("")),r.phasePrompt&&(t.push("**F\xE1zis prompt:**"),t.push(""),t.push(r.phasePrompt),t.push("")),r.constraints.length){t.push("**Megk\xF6t\xE9sek:**");for(let a of r.constraints)t.push(`- ${a}`);t.push("")}if(r.dod.length){t.push("**Definition of Done:**");for(let a of r.dod)t.push(`- ${a}`);t.push("")}r.repeatUntilDone&&(t.push("*Ism\xE9tl\u0151d\u0151 f\xE1zis (am\xEDg PHASE_DONE)*"),t.push(""))}try{yield navigator.clipboard.writeText(t.join(`
2
2
  `)),this.isCopied_$.set(!0),setTimeout(()=>this.isCopied_$.set(!1),2e3)}catch{}})}persistDraft(){$.save({generationPrompt:this.generationPrompt_$(),modificationPrompt:this.modificationPrompt_$(),selectedProvider:this.selectedProvider_$(),selectedModel:this.selectedModel_$(),isCreating:this.isCreating_$(),editingWorkflow:this.editingWorkflow_$()})}restoreDraft(){let e=$.get();e&&(this.generationPrompt_$.set(e.generationPrompt),this.modificationPrompt_$.set(e.modificationPrompt),this.selectedProvider_$.set(e.selectedProvider),this.selectedModel_$.set(e.selectedModel),e.editingWorkflow&&(this.isCreating_$.set(e.isCreating),this.editingWorkflow_$.set(e.editingWorkflow)))}static \u0275fac=function(t){return new(t||l)};static \u0275cmp=R({type:l,selectors:[["app-ccap-workflow-settings"]],standalone:!0,features:[Y],decls:7,vars:3,consts:[[1,"max-w-4xl","mx-auto","p-4","gt-xs:p-6","text-neutral-100"],[1,"flex","items-center","justify-between","mb-6"],[1,"text-2xl","font-bold"],[1,"px-4","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm"],[1,"space-y-4"],[1,"px-4","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm",3,"click"],[1,"text-neutral-500","text-sm"],[1,"rounded-lg","border","border-neutral-700","bg-ccapSurface/50","p-6","text-center","text-neutral-500"],[1,"space-y-3"],[1,"rounded-lg","border","border-neutral-700","bg-ccapSurface/50","p-4","flex","items-start","justify-between","gap-4"],[1,"flex-1","min-w-0"],[1,"flex","items-center","gap-2","mb-1"],[1,"font-semibold","text-neutral-100","truncate"],[1,"text-xs","px-2","py-0.5","rounded","bg-neutral-700","text-neutral-300"],[1,"text-xs","px-2","py-0.5","rounded","bg-neonDefault/20","text-neonDefault"],[1,"text-xs","px-2","py-0.5","rounded","bg-neonCyan/20","text-neonCyan"],[1,"text-neutral-400","text-sm","truncate"],[1,"text-neutral-500","text-xs","mt-1"],[1,"flex","gap-2","shrink-0"],[1,"px-3","py-1.5","text-xs","text-neutral-500","italic"],[1,"px-3","py-1.5","text-xs","border","border-neutral-600","rounded","hover:border-neonDefault","hover:text-neonDefault","transition-colors",3,"click"],[1,"px-3","py-1.5","text-xs","border","border-neutral-600","rounded","text-red-400","hover:border-red-400","transition-colors",3,"click"],[1,"flex","items-center","gap-2","mb-2"],[1,"text-sm","text-neutral-400","hover:text-neutral-200","transition-colors",3,"click"],[1,"text-neutral-600"],[1,"text-sm","text-neutral-300"],["title","Workflow markdown m\xE1sol\xE1sa v\xE1g\xF3lapra",1,"ml-auto","p-1.5","transition-colors","rounded","hover:bg-neutral-700/50",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-4","h-4"],[1,"rounded-lg","border","border-neonDefault/30","bg-neonDefault/5","p-4","space-y-3"],[1,"rounded-lg","border","border-amber-500/30","bg-amber-500/5","p-4","space-y-3"],[1,"rounded-lg","border","border-neutral-700","bg-neutral-800/40"],[1,"w-full","flex","items-center","gap-2","px-4","py-3","text-left","text-sm","text-neutral-300","hover:text-neutral-100","transition-colors",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3","h-3","shrink-0","transition-transform","duration-150"],["points","6 9 12 15 18 9"],[1,"font-medium"],[1,"text-xs","text-neutral-500","ml-auto"],[1,"px-4","pb-4","text-sm","text-neutral-400","space-y-4","border-t","border-neutral-700","pt-3"],[1,"grid","grid-cols-1","md:grid-cols-2","gap-4"],[1,"block","text-xs","text-neutral-400","mb-1"],["type","text",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],[1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],[3,"value"],[1,"flex","items-center","gap-2"],["type","checkbox",1,"accent-neonDefault",3,"ngModelChange","ngModel"],["rows","4",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none","resize-y",3,"ngModelChange","ngModel"],[1,"flex","items-center","justify-between","mb-2"],[1,"text-lg","font-semibold"],[1,"px-3","py-1","text-xs","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors",3,"click"],[1,"rounded-lg","border","border-neutral-700","bg-neutral-800/50","p-4","mb-3"],[1,"flex","gap-3","pt-2"],[1,"px-5","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm",3,"click","disabled"],[1,"px-5","py-2","border","border-neutral-600","text-neutral-400","rounded","hover:border-neutral-400","transition-colors","text-sm",3,"click"],["points","20 6 9 17 4 12"],["x","9","y","9","width","13","height","13","rx","2","ry","2"],["d","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"],[1,"text-sm","font-medium","text-neonDefault"],[1,"text-xs","text-neutral-500"],["rows","3","placeholder","Pl.: Szeretn\xE9k egy workflow-t, ami el\u0151sz\xF6r \xE1tn\xE9zi a k\xF3dot, azt\xE1n meg\xEDrja a teszteket, v\xE9g\xFCl review-olja az eg\xE9szet...",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none","resize-y","placeholder:text-neutral-600",3,"ngModelChange","ngModel"],[1,"flex","items-center","gap-3"],[1,"bg-neutral-800","border","border-neutral-600","rounded","px-2","py-1.5","text-xs","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],["value",""],[1,"px-4","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled"],[1,"text-sm","font-medium","text-amber-400"],["rows","3","placeholder","Pl.: Adj hozz\xE1 egy tesztel\xE9si f\xE1zist a megval\xF3s\xEDt\xE1s ut\xE1n, \xE9s tedd r\xE9szletesebb\xE9 a review f\xE1zis prompt-j\xE1t...",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-amber-400","outline-none","resize-y","placeholder:text-neutral-600",3,"ngModelChange","ngModel"],[1,"bg-neutral-800","border","border-neutral-600","rounded","px-2","py-1.5","text-xs","text-neutral-100","focus:border-amber-400","outline-none",3,"ngModelChange","ngModel"],[1,"px-4","py-2","border","border-amber-500","text-amber-400","rounded","hover:bg-amber-500/10","transition-colors","text-sm","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled"],[1,"text-neutral-200","font-semibold","mb-1"],[1,"text-neutral-300"],[1,"list-disc","list-inside","space-y-1"],[1,"flex","flex-wrap","gap-2","text-xs"],[1,"px-2","py-1","rounded","bg-neutral-700","text-neutral-300"],[1,"mt-2","text-xs","text-neutral-500"],[1,"flex","items-center","justify-between","mb-3"],[1,"text-sm","font-medium","text-neutral-300"],[1,"text-xs","text-red-400","hover:text-red-300","transition-colors",3,"click"],[1,"grid","grid-cols-1","md:grid-cols-2","gap-3","mb-3"],[1,"block","text-xs","text-neutral-500","mb-1"],["type","text",1,"w-full","bg-neutral-900","border","border-neutral-600","rounded","px-2","py-1.5","text-sm","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],[1,"mb-3"],["rows","3",1,"w-full","bg-neutral-900","border","border-neutral-600","rounded","px-2","py-1.5","text-sm","text-neutral-100","focus:border-neonDefault","outline-none","resize-y",3,"ngModelChange","ngModel"],[1,"text-xs","text-neutral-400"]],template:function(t,r){t&1&&(i(0,"div",0)(1,"div",1)(2,"h1",2),o(3,"Workflow be\xE1ll\xEDt\xE1sok"),n(),k(4,ce,2,0,"button",3),n(),k(5,Ce,3,1)(6,Fe,59,20,"div",4),n()),t&2&&(s(4),h(r.editingWorkflow_$()?-1:4),s(),h(r.editingWorkflow_$()?-1:5),s(),h(r.editingWorkflow_$()?6:-1))},dependencies:[V,j,oe,re,ee,Z,ie,te,ne],encapsulation:2})}return l})();var je=[{path:"",pathMatch:"full",component:O}],mt=(()=>{class l{static \u0275fac=function(t){return new(t||l)};static \u0275mod=q({type:l});static \u0275inj=U({imports:[V,j,X.forChild(je),O]})}return l})();export{mt as WorkflowSettings_Module};
3
- //# sourceMappingURL=wfs.module-LHNN4X3E.js.map
3
+ //# sourceMappingURL=wfs.module-TLNTMIKM.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/ccap",
3
- "version": "1.1.2749",
3
+ "version": "1.1.2757",
4
4
  "description": "CCAP Revisioned – Agent architektúra; CLI, server, client, e2e alprojektek.",
5
5
  "bin": {
6
6
  "ccap": "./bin/ccap.js"
@@ -1,17 +1,15 @@
1
1
  import { DyNTS_SingletonService } from '@futdevpro/nts-dynamo';
2
2
  import { CC_OutputCallback_Type, CC_ProcessStateCallback_Type, CC_SessionConfig_Interface, CC_TerminalSocket_Interface } from '../cc-adapter.interface';
3
3
  /**
4
- * CC Session terminal mode adapter (singleton). Socket.IO namespace, runner spawn,
5
- * output/exit/overflow/disconnect, sequence dedup, ack throttle, flapping detection,
6
- * grace period, buffered output, config reload. CC_Adapter_ControlService delegál ide;
7
- * kommunikáció callback-en és shared reference-eken (sessionConfigs map) keresztül.
4
+ * CC Session terminal mode adapter (singleton): Socket.IO namespace + runner lifecycle
5
+ * (spawn / output / exit / disconnect / sequence dedup / ack throttle / flap detect /
6
+ * grace / buffered output). CC_Adapter_ControlService delegál ide callback + shared-ref-en.
8
7
  */
9
8
  export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonService {
10
9
  static getInstance(): CC_AdapterTerminal_ControlService;
11
10
  /**
12
- * BUG-CC-TERM-HANG-001: server-restart grace iter cap a sendInputViaTerminal
13
- * polling-hoz `runnerGracePeriodSec * 2` formula 60-iter (30s) cap-pel,
14
- * hogy a 1h idle-timeout grace ne 60 perces HTTP-hang-ot okozzon.
11
+ * BUG-CC-TERM-HANG-001: server-restart grace iter cap (60 iter / 30s) — 1h idle-timeout
12
+ * grace ne 60 perces HTTP-hang-ot okozzon a sendInputViaTerminal polling-on.
15
13
  */
16
14
  static computeServerRestartGraceIterations(runnerGracePeriodSec: number): number;
17
15
  /** Terminal mode: sessionId → runner Socket.IO connection. */
@@ -70,11 +68,8 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
70
68
  /** Public: a manager.isBusyProcessing checkje hozzá. */
71
69
  isSpawnInFlight(sessionId: string): boolean;
72
70
  /**
73
- * BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): deferred 5s disconnect →
74
- * waitingInput flip timers. Tranziens Socket.IO blip (~1-3s reconnect) NE flippelje
75
- * azonnal a sessiont — handleTerminalRegister cancel-eli a timert; 5s után tényleges
76
- * idle → flip. Megelőzi a "user új üzenetet küld látszólagos idle session-nek →
77
- * runner kill claude → process-replace" race-t.
71
+ * BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): 5s deferred disconnect →
72
+ * waitingInput flip; transient blip reconnect cancel-eli; megelőzi runner-kill race-t.
78
73
  */
79
74
  private deferredDisconnectFlips;
80
75
  /** Disconnect-deferred-flip timer cleanup constant. 5s biztos margin tranziens
@@ -103,9 +98,8 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
103
98
  * A handleTerminalProcessExit-ben használjuk, az adapter stoppedSessions referencia-ját tükrözi. */
104
99
  private stoppedSessions;
105
100
  /**
106
- * REQ-CC-EXIT-REASON-001 — shared kill-ok map (az adapter pendingKillReasons referencia).
107
- * A kill site-ok (terminal mode disconnect-all, restart, runner-evict) markPendingKill-szerűen
108
- * írják, a handleTerminalProcessExit kiolvassa és törli, és átadja a classifyExitStatus-nak.
101
+ * REQ-CC-EXIT-REASON-001 — shared kill-ok map (adapter pendingKillReasons ref). Kill-site-ok
102
+ * írják, handleTerminalProcessExit kiolvassa+törli + classifyExitStatus-nak átadja.
109
103
  */
110
104
  private pendingKillReasons;
111
105
  /** Output callback (adapter bootstrap). */
@@ -169,26 +163,18 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
169
163
  * Az adapter spawnSession grace period loop-ja használja.
170
164
  */
171
165
  getGraceIterations(): number;
172
- /**
173
- * Lifecycle runner deregisztrálása (az adapter terminateSession/terminate cleanup-ja).
174
- * Delegál a CC_TerminalLifecycle_ControlService-nek.
175
- */
166
+ /** Lifecycle runner deregisztrálás — delegál CC_TerminalLifecycle_ControlService-nek. */
176
167
  unregisterRunnerLifecycle(params: {
177
168
  sessionId: string;
178
169
  }): void;
179
170
  /**
180
- * Összes terminal runner socket lecsatlakoztatása (graceful shutdown) — cc:kill +
181
- * disconnect minden csatlakozott runner-nek. Szélesebb halmazt fed le mint a manager
182
- * sessionConfigs alapú iterációja (lecsatlakozott / reconnect-re váró runner-ek is).
171
+ * Cycle 834: extract CC_TerminalRunnerControl_Util.disconnectAllRunners.
172
+ * Graceful shutdown — cc:kill + disconnect minden csatlakozott runner-nek.
183
173
  */
184
- /** Cycle 834: extract → CC_TerminalRunnerControl_Util.disconnectAllRunners. */
185
174
  disconnectAllRunners(): void;
186
175
  /** Cycle 781: runner version sessionId-hez (undefined ha pre-781 / nincs registration). */
187
176
  getRunnerVersion(sessionId: string): string | undefined;
188
- /**
189
- * Cycle 781e: runner kill + respawn egy hívásban (UI-button trigger).
190
- * Cycle 834: kill+cleanup → CC_TerminalRunnerControl_Util.killSocketAndCleanState.
191
- */
177
+ /** Cycle 781e: runner kill+respawn (UI-button); 834: kill via runner-control util. */
192
178
  restartRunner(params: {
193
179
  sessionId: string;
194
180
  workspacePath: string;
@@ -255,9 +241,8 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
255
241
  terminalId: string;
256
242
  }>;
257
243
  /**
258
- * Runner sequence state reset — runner full-exit (terminate / lifecycle-terminate)
259
- * esetén kell hívni, mert új runner 1-től kezdi a sequence-t. Disconnect (socket
260
- * drop) NEM hívja — ott ugyanaz a process, sequence folytatódik.
244
+ * Runner sequence reset — full-exit (terminate / lifecycle) hívja, mert új runner 1-től
245
+ * kezd. Disconnect NEM hívja: ugyanaz a process, sequence folytatódik.
261
246
  */
262
247
  clearRunnerSequenceState(params: {
263
248
  sessionId: string;
@@ -301,10 +286,8 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
301
286
  */
302
287
  private handleTerminalProcessExit;
303
288
  /**
304
- * Terminal runner buffered output (cc:buffered-output reconnect flush). Az
305
- * output-ot a normál handleOutput-ra adjuk + pendingBufferedOutputs-ba mentjük (a
306
- * manager recovery után consumePendingBufferedOutput-tal replay-eli). Sequence dedup
307
- * REQ-CCSESS-TR-002; batch végén azonnali cc:ack a legmagasabb feldolgozott sequence-re.
289
+ * Terminal runner buffered output (cc:buffered-output reconnect flush): handleOutput +
290
+ * pendingBufferedOutputs replay (manager recovery). Sequence dedup REQ-CCSESS-TR-002.
308
291
  */
309
292
  private handleTerminalBufferedOutput;
310
293
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cc-adapter-terminal.control-service.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cc-adapter-terminal.control-service.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.ts"],"names":[],"mappings":"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"}
@@ -25,19 +25,17 @@ const cc_terminal_runner_spawn_util_1 = require("../../../_collections/utils/ter
25
25
  const cc_terminal_runner_control_util_1 = require("../../../_collections/utils/terminal/cc-terminal-runner-control.util");
26
26
  const cc_terminal_session_closed_guard_util_1 = require("../../../_collections/utils/terminal/cc-terminal-session-closed-guard.util");
27
27
  /**
28
- * CC Session terminal mode adapter (singleton). Socket.IO namespace, runner spawn,
29
- * output/exit/overflow/disconnect, sequence dedup, ack throttle, flapping detection,
30
- * grace period, buffered output, config reload. CC_Adapter_ControlService delegál ide;
31
- * kommunikáció callback-en és shared reference-eken (sessionConfigs map) keresztül.
28
+ * CC Session terminal mode adapter (singleton): Socket.IO namespace + runner lifecycle
29
+ * (spawn / output / exit / disconnect / sequence dedup / ack throttle / flap detect /
30
+ * grace / buffered output). CC_Adapter_ControlService delegál ide callback + shared-ref-en.
32
31
  */
33
32
  class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
34
33
  static getInstance() {
35
34
  return CC_AdapterTerminal_ControlService.getSingletonInstance();
36
35
  }
37
36
  /**
38
- * BUG-CC-TERM-HANG-001: server-restart grace iter cap a sendInputViaTerminal
39
- * polling-hoz `runnerGracePeriodSec * 2` formula 60-iter (30s) cap-pel,
40
- * hogy a 1h idle-timeout grace ne 60 perces HTTP-hang-ot okozzon.
37
+ * BUG-CC-TERM-HANG-001: server-restart grace iter cap (60 iter / 30s) — 1h idle-timeout
38
+ * grace ne 60 perces HTTP-hang-ot okozzon a sendInputViaTerminal polling-on.
41
39
  */
42
40
  static computeServerRestartGraceIterations(runnerGracePeriodSec) {
43
41
  const desired = Math.max(0, Math.floor(runnerGracePeriodSec)) * 2;
@@ -105,11 +103,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
105
103
  return this.spawnInFlightSessions.has(sessionId);
106
104
  }
107
105
  /**
108
- * BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): deferred 5s disconnect →
109
- * waitingInput flip timers. Tranziens Socket.IO blip (~1-3s reconnect) NE flippelje
110
- * azonnal a sessiont — handleTerminalRegister cancel-eli a timert; 5s után tényleges
111
- * idle → flip. Megelőzi a "user új üzenetet küld látszólagos idle session-nek →
112
- * runner kill claude → process-replace" race-t.
106
+ * BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): 5s deferred disconnect →
107
+ * waitingInput flip; transient blip reconnect cancel-eli; megelőzi runner-kill race-t.
113
108
  */
114
109
  deferredDisconnectFlips = new Map();
115
110
  /** Disconnect-deferred-flip timer cleanup constant. 5s biztos margin tranziens
@@ -139,9 +134,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
139
134
  * A handleTerminalProcessExit-ben használjuk, az adapter stoppedSessions referencia-ját tükrözi. */
140
135
  stoppedSessions = new Set();
141
136
  /**
142
- * REQ-CC-EXIT-REASON-001 — shared kill-ok map (az adapter pendingKillReasons referencia).
143
- * A kill site-ok (terminal mode disconnect-all, restart, runner-evict) markPendingKill-szerűen
144
- * írják, a handleTerminalProcessExit kiolvassa és törli, és átadja a classifyExitStatus-nak.
137
+ * REQ-CC-EXIT-REASON-001 — shared kill-ok map (adapter pendingKillReasons ref). Kill-site-ok
138
+ * írják, handleTerminalProcessExit kiolvassa+törli + classifyExitStatus-nak átadja.
145
139
  */
146
140
  pendingKillReasons = new Map();
147
141
  // ── Callback setters ───────────────────────────────────────
@@ -231,21 +225,16 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
231
225
  getGraceIterations() {
232
226
  return this.runnerGracePeriodSec * 2;
233
227
  }
234
- /**
235
- * Lifecycle runner deregisztrálása (az adapter terminateSession/terminate cleanup-ja).
236
- * Delegál a CC_TerminalLifecycle_ControlService-nek.
237
- */
228
+ /** Lifecycle runner deregisztrálás — delegál CC_TerminalLifecycle_ControlService-nek. */
238
229
  unregisterRunnerLifecycle(params) {
239
230
  cc_terminal_lifecycle_control_service_1.CC_TerminalLifecycle_ControlService.getInstance().unregisterRunner({
240
231
  sessionId: params.sessionId,
241
232
  });
242
233
  }
243
234
  /**
244
- * Összes terminal runner socket lecsatlakoztatása (graceful shutdown) — cc:kill +
245
- * disconnect minden csatlakozott runner-nek. Szélesebb halmazt fed le mint a manager
246
- * sessionConfigs alapú iterációja (lecsatlakozott / reconnect-re váró runner-ek is).
235
+ * Cycle 834: extract CC_TerminalRunnerControl_Util.disconnectAllRunners.
236
+ * Graceful shutdown — cc:kill + disconnect minden csatlakozott runner-nek.
247
237
  */
248
- /** Cycle 834: extract → CC_TerminalRunnerControl_Util.disconnectAllRunners. */
249
238
  disconnectAllRunners() {
250
239
  cc_terminal_runner_control_util_1.CC_TerminalRunnerControl_Util.disconnectAllRunners({
251
240
  terminalSockets: this.terminalSockets,
@@ -258,10 +247,7 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
258
247
  getRunnerVersion(sessionId) {
259
248
  return this.runnerVersions.get(sessionId);
260
249
  }
261
- /**
262
- * Cycle 781e: runner kill + respawn egy hívásban (UI-button trigger).
263
- * Cycle 834: kill+cleanup → CC_TerminalRunnerControl_Util.killSocketAndCleanState.
264
- */
250
+ /** Cycle 781e: runner kill+respawn (UI-button); 834: kill via runner-control util. */
265
251
  async restartRunner(params) {
266
252
  const existingSocket = this.terminalSockets.get(params.sessionId);
267
253
  if (existingSocket) {
@@ -488,9 +474,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
488
474
  return { terminalId: terminalId };
489
475
  }
490
476
  /**
491
- * Runner sequence state reset — runner full-exit (terminate / lifecycle-terminate)
492
- * esetén kell hívni, mert új runner 1-től kezdi a sequence-t. Disconnect (socket
493
- * drop) NEM hívja — ott ugyanaz a process, sequence folytatódik.
477
+ * Runner sequence reset — full-exit (terminate / lifecycle) hívja, mert új runner 1-től
478
+ * kezd. Disconnect NEM hívja: ugyanaz a process, sequence folytatódik.
494
479
  */
495
480
  clearRunnerSequenceState(params) {
496
481
  this.lastProcessedRunnerSequence.delete(params.sessionId);
@@ -511,22 +496,16 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
511
496
  // ha ezt megvárjuk, elkerüljük a felesleges új ablak nyitást.
512
497
  let socket = this.terminalSockets.get(params.sessionId);
513
498
  const sendElapsed = Date.now() - this.moduleLoadedAt;
514
- // BUG-CC-TERM-CLOSE-001 Slice 2 (cycle 263) grace-period split (Symptom B fix):
515
- // a régi flat 30s polling minden disconnected esetre blokkolt → user-bug:
516
- // „üzenetküldés disconnected sessionre nagyon-nagyon lassú". Két használati eset
517
- // különálló: (a) server-restart window — runner Socket.IO-n visszacsatlakozhat,
518
- // érdemes várni; (b) had-runner-disconnected — user bezárta a CMD-t, runner
519
- // tényleg elment, nincs értelme 30s-ig várni. (b) esetén short grace, utána fail-fast.
499
+ // BUG-CC-TERM-CLOSE-001 Slice 2 (cycle 263): grace split server-restart 30s vs
500
+ // had-runner-disconnected short grace + fail-fast (régi flat 30s "üzenetküldés
501
+ // nagyon-nagyon lassú" user-bug fix).
520
502
  const isServerRestartWindow = sendElapsed < 60000;
521
503
  const graceWillRun = (!socket || !socket.connected)
522
504
  && (this.hadRunnerSet.has(params.sessionId) || isServerRestartWindow);
523
505
  if (graceWillRun) {
524
- // graceIterations: server-restart → capped grace 30s (BUG-CC-TERM-HANG-001 cycle
525
- // 2026-05-07: a runnerGracePeriodSec * 2 default 3600s = 60min HTTP-blokk okozott;
526
- // 30s elég reconnect-figyelésre). had-runner-disconnected 1 iter / 500ms
527
- // (BUG-CC-TERM-FAST-OPEN-001 cycle 805: 2s pure waste user-closed window-nál;
528
- // Socket.IO transient blip 500ms-on belül megfér, késő-runner stale-rejectet a
529
- // handleTerminalRegister kezeli ~line 1110).
506
+ // graceIterations: server-restart → 30s cap (BUG-CC-TERM-HANG-001 cycle 2026-05-07
507
+ // fix); had-runner-disconnected 1 iter / 500ms (BUG-CC-TERM-FAST-OPEN-001 cycle 805
508
+ // fast-path; késő-runner stale-rejectet handleTerminalRegister kezeli).
530
509
  const graceCase = isServerRestartWindow
531
510
  ? 'server-restart'
532
511
  : 'had-runner-disconnected';
@@ -586,12 +565,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
586
565
  });
587
566
  }
588
567
  catch (spawnErr) {
589
- // Spawn elhasalt (REG-TIMEOUT vagy SPAWN-FAIL) a `starting` státusz
590
- // ragadt volna meg, ami az `isBusyProcessing` busy-halmazában van, és
591
- // a queue tryDeliverNext-et soha nem engedné kézbesíteni. Reset waitingInput-ra,
592
- // hogy a következő prompt-küldés (vagy queue-retry) tisztán induljon.
593
- // A spawn-hibát továbbra is throw-oljuk a hívási láncon felfelé (a route
594
- // queue-fallback-je elnyeli ha transient, vagy /errors-be megy).
568
+ // Spawn fail (REG-TIMEOUT / SPAWN-FAIL): reset waitingInput-ra (`starting` busy-state
569
+ // különben tryDeliverNext-et blokkol). Hibát továbbra is throw route queue-fallback
570
+ // elnyeli ha transient, vagy /errors-be megy.
595
571
  this.handleProcessStateChange({
596
572
  sessionId: params.sessionId,
597
573
  status: cc_status_enum_1.CC_Status_Type.waitingInput,
@@ -636,10 +612,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
636
612
  sessionId: params.sessionId,
637
613
  });
638
614
  // REQ-SYS-SILENT-001 Slice 1A (cycle 769): Socket.IO ACK + timeout watchdog.
639
- // Korábban fire-and-forget silent fail ha a runner nem kapta meg.
640
- // Most: timeout/errorCCAP-CC-PROMPT-NO-ACK errorCode a /errors-be.
641
- // Backward compat: a régi runner (ACK-mentes) timeout-tal jelez; az updated
642
- // runner (cycle 769 cc-terminal-runner.ts) ACK-ol — gradient kompatibilitás.
615
+ // Cycle 769: ACK-protokoll (timeout CCAP-CC-PROMPT-NO-ACK /errors-be). Régi
616
+ // runner ACK-mentestimeout-tal jelez; updated runner ACK-ol gradient compat.
643
617
  const ACK_TIMEOUT_MS = 8000;
644
618
  const promptStartMs = Date.now();
645
619
  socket.timeout(ACK_TIMEOUT_MS).emit('cc:spawn-prompt', {
@@ -719,11 +693,7 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
719
693
  + ` | ackData: ${typeof ackData === 'object' && ackData !== null ? JSON.stringify(ackData).slice(0, 120) : String(ackData)}`);
720
694
  }
721
695
  });
722
- // Notify: running státusz.
723
- // FIGYELEM: a status-tranzíció itt MARAD optimistic — a prompt küldés
724
- // megtörtént a TCP/Socket.IO szinten (queued for send). Az ACK-watchdog
725
- // CSAK diagnosztikai jelzés, ha a runner nem reagál; a rendelkezésre álló
726
- // információ alapján legtöbbször a prompt megérkezik (csak az ACK nem).
696
+ // Notify running státusz — optimistic (Socket.IO queued; ACK-watchdog csak diagnoszt).
727
697
  this.handleProcessStateChange({
728
698
  sessionId: params.sessionId,
729
699
  status: cc_status_enum_1.CC_Status_Type.running,
@@ -737,12 +707,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
737
707
  return new Promise((resolve, reject) => {
738
708
  const timeoutHandle = setTimeout(() => {
739
709
  this.pendingRegistrations.delete(params.sessionId);
740
- // BUG-CC-RUNNER-EVICT-VISIBILITY-001 (2026-05-07): a REG-TIMEOUT eddig
741
- // CSAK throw volt a hívási láncon felfelé és a route-szintű queue-fallback
742
- // (cycle 801) elnyelte „queued"-ként, így a /errors page-en a user SOHA
743
- // nem látta. Most explicit globalErrorHandler-rel rögzítjük + dúsított
744
- // diagnosztikai hint a tipikus okokra (terminal-window-instant-close,
745
- // hiányzó global @futdevpro/ccap install, hálózati blokkolás).
710
+ // BUG-CC-RUNNER-EVICT-VISIBILITY-001 (cycle 2026-05-07): REG-TIMEOUT explicit
711
+ // /errors record (eddig route queue-fallback elnyelte 'queued'-ként, user nem
712
+ // látta). Hint: terminal-window-instant-close / hiányzó npm-install / network.
746
713
  const regTimeoutError = new ccap_error_control_model_1.CCAP_Error({
747
714
  message: `Terminal runner registration timeout for session: ${params.sessionId}`,
748
715
  errorCode: 'CCAP-CCS-TERMINAL-REG-TIMEOUT',
@@ -784,11 +751,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
784
751
  const sessionId = (params.data.sessionId ?? '').trim();
785
752
  const terminalId = (params.data.terminalId ?? '').trim();
786
753
  if (!sessionId || !terminalId) {
787
- // BUG-CC-RUNNER-EVICT-VISIBILITY-001 (2026-05-07) Phase Silent-A: malformed
788
- // register silent-drop megszüntetve. Eddig csak warn-log volt a user nem
789
- // látta hogy a runner próbálkozott regisztrálni hibás payload-dal, ami
790
- // version-mismatch / outdated-runner / corrupt-state diagnosztika szempontjából
791
- // kritikus. Most a /errors page-en is megjelenik.
754
+ // BUG-CC-RUNNER-EVICT-VISIBILITY-001 Phase Silent-A: malformed register silent-drop
755
+ // megszüntetve, /errors-be record (version-mismatch / outdated / corrupt diagnosztika).
792
756
  fsm_dynamo_1.DyFM_Log.warn(`CC_AdapterTerminal | terminal register: missing sessionId or terminalId`
793
757
  + ` | rawSessionId: '${params.data.sessionId ?? '(undefined)'}'`
794
758
  + ` | rawTerminalId: '${params.data.terminalId ?? '(undefined)'}'`
@@ -1005,13 +969,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
1005
969
  hadRunnerSet: this.hadRunnerSet,
1006
970
  resumeInFlightChecker: this.resumeInFlightChecker,
1007
971
  });
1008
- // BUG-CC-TERM-HANG-001 (2026-05-07): queue drain on register. Ha a route
1009
- // előzőleg `CCAP-CCS-TERMINAL-NOT-CONNECTED` / `CCAP-CCS-TERMINAL-REG-TIMEOUT`
1010
- // miatt enqueue-olta a user prompt-ot, most amikor a runner megérkezik,
1011
- // azonnal próbáljuk delivery-zni. A queue belső `canReceiveInput` USS-check
1012
- // dönti el, hogy ténylegesen kiküldhető-e — ha még nem (pl. status starting),
1013
- // a queue saját debounce-szal próbálkozik újra. Fire-and-forget: nem blokkolja
1014
- // a regisztrációt, error → warn-log.
972
+ // BUG-CC-TERM-HANG-001 (cycle 2026-05-07): queue drain on register. Ha a route
973
+ // előzőleg NOT-CONNECTED / REG-TIMEOUT miatt enqueue-olta a prompt-ot, most fire
974
+ // delivery-attempt; canReceiveInput USS-check + queue saját debounce dönti el.
1015
975
  session_queue_control_service_1.SessionQueue_ControlService.getInstance().tryDeliverNext({
1016
976
  sessionType: sq_session_type_enum_1.SQ_SessionType_Type.ccSession,
1017
977
  sessionId: sessionId,
@@ -1152,10 +1112,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
1152
1112
  });
1153
1113
  }
1154
1114
  /**
1155
- * Terminal runner buffered output (cc:buffered-output reconnect flush). Az
1156
- * output-ot a normál handleOutput-ra adjuk + pendingBufferedOutputs-ba mentjük (a
1157
- * manager recovery után consumePendingBufferedOutput-tal replay-eli). Sequence dedup
1158
- * REQ-CCSESS-TR-002; batch végén azonnali cc:ack a legmagasabb feldolgozott sequence-re.
1115
+ * Terminal runner buffered output (cc:buffered-output reconnect flush): handleOutput +
1116
+ * pendingBufferedOutputs replay (manager recovery). Sequence dedup REQ-CCSESS-TR-002.
1159
1117
  */
1160
1118
  handleTerminalBufferedOutput(params) {
1161
1119
  const data = params.data;
@@ -1288,13 +1246,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
1288
1246
  + ` | terminalId: ${terminalId}`
1289
1247
  + ` | reason: ${reason ?? 'unknown'}`
1290
1248
  + ` | flap: ${this.flapTracker.get(sessionId)?.count ?? 0}/${this.flapTracker.get(sessionId)?.totalCount ?? 0}`);
1291
- // BUG-CC-RUNNER-EVICT-VISIBILITY-001 (2026-05-07) Phase Silent-A: ha az
1292
- // disconnect oka NEM a tervezett kill (pendingKillReasons üres erre a
1293
- // sessionre), akkor unexpectedérdemes /errors-be rögzíteni, hogy a
1294
- // user lássa a runner-vesztés okát (network blip, runner-crash, X server
1295
- // reset, manual close). A tervezett kill-ekre (user-terminate, runner-restart,
1296
- // process-replace, lifecycle, stb.) silent — a process-exit handler
1297
- // úgyis rögzít state-change event-et.
1249
+ // BUG-CC-RUNNER-EVICT-VISIBILITY-001 Phase Silent-A: nem-tervezett disconnect
1250
+ // (pendingKillReasons üres) /errors record (network blip / runner-crash / X reset
1251
+ // / manual close). Tervezett kill-ek silent process-exit handler rögzít event-et.
1298
1252
  const pendingKillReason = this.pendingKillReasons.get(sessionId);
1299
1253
  if (!pendingKillReason) {
1300
1254
  const disconnectError = new ccap_error_control_model_1.CCAP_Error({