@futdevpro/ccap 1.1.2744 → 1.1.2753

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 (183) hide show
  1. package/client-dist/{agent-instances.module-FDXSEMTG.js → agent-instances.module-XHV2TP7O.js} +2 -2
  2. package/client-dist/{ca.module-EYBNEJUN.js → ca.module-UYSJWH3C.js} +2 -2
  3. package/client-dist/{cc.module-4QHYXYK3.js → cc.module-44GWX6ZS.js} +2 -2
  4. package/client-dist/{chunk-IIYYQZ5G.js → chunk-2DB3LR7O.js} +2 -2
  5. package/client-dist/{chunk-HLVQVXSH.js → chunk-2DT3DQYP.js} +2 -2
  6. package/client-dist/{chunk-ZPYIQBC2.js → chunk-2EQNUA63.js} +2 -2
  7. package/client-dist/{chunk-KXLJQW7Z.js → chunk-2UXMIPN2.js} +2 -2
  8. package/client-dist/{chunk-4O4EME4N.js → chunk-2WNVREPI.js} +2 -2
  9. package/client-dist/{chunk-MFYGL42T.js → chunk-5SPKC3YD.js} +2 -2
  10. package/client-dist/{chunk-5AOWTCN5.js → chunk-6UEUYDO3.js} +2 -2
  11. package/client-dist/{chunk-C6AON7DW.js → chunk-6UVLEDQ5.js} +2 -2
  12. package/client-dist/{chunk-2DKB45RU.js → chunk-A2LLUPKC.js} +2 -2
  13. package/client-dist/{chunk-WPIDKDJJ.js → chunk-AVAPH2PU.js} +2 -2
  14. package/client-dist/{chunk-GUFEBKFS.js → chunk-B2SWOZ3Y.js} +2 -2
  15. package/client-dist/{chunk-64XBW3PL.js → chunk-B47JDGMP.js} +2 -2
  16. package/client-dist/{chunk-VBPLKVLC.js → chunk-BPYGD4JQ.js} +2 -2
  17. package/client-dist/{chunk-ZSZVSMNC.js → chunk-CRJIE2EH.js} +2 -2
  18. package/client-dist/{chunk-5TLMPEFC.js → chunk-CVWZBWR5.js} +2 -2
  19. package/client-dist/{chunk-PLESPNCS.js → chunk-DFWKG5PG.js} +2 -2
  20. package/client-dist/{chunk-K4FZQ2PV.js → chunk-EBPDLIZX.js} +2 -2
  21. package/client-dist/{chunk-VOHQOBF2.js → chunk-EKJHVEA5.js} +2 -2
  22. package/client-dist/{chunk-XOIUB2XG.js → chunk-FIZNVKIB.js} +2 -2
  23. package/client-dist/{chunk-5ID425QB.js → chunk-FLOT2NPP.js} +2 -2
  24. package/client-dist/{chunk-DT745Z7F.js → chunk-FLV3DZFK.js} +2 -2
  25. package/client-dist/{chunk-DT745Z7F.js.map → chunk-FLV3DZFK.js.map} +1 -1
  26. package/client-dist/{chunk-WBSG4E3K.js → chunk-FSAVUX6K.js} +2 -2
  27. package/client-dist/{chunk-6HUWMPDM.js → chunk-GI5DILVT.js} +2 -2
  28. package/client-dist/{chunk-VYDVZ5UI.js → chunk-GL2VABJP.js} +2 -2
  29. package/client-dist/{chunk-NOIROTD2.js → chunk-H4OQI5J3.js} +2 -2
  30. package/client-dist/{chunk-N5Z4EF3H.js → chunk-HF3XSXX2.js} +2 -2
  31. package/client-dist/{chunk-PLRITPHA.js → chunk-ILJFTJNR.js} +2 -2
  32. package/client-dist/{chunk-EDB52UN2.js → chunk-J7IUX23G.js} +2 -2
  33. package/client-dist/{chunk-MLYIZD3B.js → chunk-JKIF6YFY.js} +2 -2
  34. package/client-dist/{chunk-RSWCAWPN.js → chunk-K63M327A.js} +2 -2
  35. package/client-dist/{chunk-JWJLL7JE.js → chunk-LMEEH4DP.js} +2 -2
  36. package/client-dist/{chunk-74TZUHGL.js → chunk-LOO2HFML.js} +2 -2
  37. package/client-dist/{chunk-FYRG2MNH.js → chunk-MAJ6ZV5G.js} +2 -2
  38. package/client-dist/{chunk-4XASLJP4.js → chunk-MVA4T5TS.js} +2 -2
  39. package/client-dist/{chunk-ZMX3MEAU.js → chunk-NAUSJ6P2.js} +2 -2
  40. package/client-dist/{chunk-JFOZCK2S.js → chunk-NHHSHFA7.js} +2 -2
  41. package/client-dist/{chunk-EHHM3BYW.js → chunk-OVJXBB2W.js} +2 -2
  42. package/client-dist/{chunk-L7AQMTP5.js → chunk-PF4X6EZW.js} +2 -2
  43. package/client-dist/{chunk-CRWBKLSC.js → chunk-R2OAZ7WY.js} +2 -2
  44. package/client-dist/{chunk-TBPYJZEN.js → chunk-SHZBLYY4.js} +2 -2
  45. package/client-dist/{chunk-76D4UA67.js → chunk-SNFKG7OD.js} +2 -2
  46. package/client-dist/{chunk-KMCUFCSO.js → chunk-SYLBNS6X.js} +2 -2
  47. package/client-dist/{chunk-5INYPN2C.js → chunk-T4RST354.js} +2 -2
  48. package/client-dist/{chunk-7YQUK6YP.js → chunk-UIBU3OVP.js} +2 -2
  49. package/client-dist/{chunk-HRNON54R.js → chunk-UOR473MY.js} +2 -2
  50. package/client-dist/{chunk-MHFOCE7C.js → chunk-UQXHY37I.js} +2 -2
  51. package/client-dist/{chunk-3UX26D5B.js → chunk-V2ERRMCF.js} +2 -2
  52. package/client-dist/{chunk-3IZFBAP4.js → chunk-VQMBB25J.js} +2 -2
  53. package/client-dist/{chunk-3RBRW6ND.js → chunk-W2W4RTI2.js} +2 -2
  54. package/client-dist/{chunk-I63FNAQQ.js → chunk-WCWRDALU.js} +2 -2
  55. package/client-dist/{chunk-K6GDVWWX.js → chunk-WCXV5NA2.js} +2 -2
  56. package/client-dist/{chunk-AHWYO7LQ.js → chunk-WMLWXBWW.js} +2 -2
  57. package/client-dist/{chunk-PKH5KDRV.js → chunk-WWJAJOFD.js} +2 -2
  58. package/client-dist/{chunk-R42PAQER.js → chunk-Z5IJ2US2.js} +2 -2
  59. package/client-dist/{chunk-H6UZESYO.js → chunk-Z7MOK6IL.js} +2 -2
  60. package/client-dist/{chunk-Q7DJ35BO.js → chunk-ZYJOLIZR.js} +2 -2
  61. package/client-dist/{consultant.module-HTRBL3JA.js → consultant.module-5QV23GWU.js} +2 -2
  62. package/client-dist/{crd.module-WBU2TQJT.js → crd.module-AX2RY7FA.js} +2 -2
  63. package/client-dist/{dashboard.module-PVARXAWG.js → dashboard.module-BTH5D3RA.js} +2 -2
  64. package/client-dist/{do.module-CN665RIH.js → do.module-GTG4R5I6.js} +2 -2
  65. package/client-dist/{document-library.module-T6LR6LI3.js → document-library.module-UXXJLDVC.js} +2 -2
  66. package/client-dist/{embedding-eval.module-HE4RDD5B.js → embedding-eval.module-T6TJ3SNN.js} +2 -2
  67. package/client-dist/{embedding-registry.module-H22NBAYP.js → embedding-registry.module-VLWPMIEI.js} +2 -2
  68. package/client-dist/{err.module-AS3WPEUF.js → err.module-GORVBBMZ.js} +2 -2
  69. package/client-dist/{feedback.module-XQKR3ZX6.js → feedback.module-TGGSMS23.js} +2 -2
  70. package/client-dist/{host-runtime-mcp.module-WDRNBXKM.js → host-runtime-mcp.module-NOWETOPZ.js} +2 -2
  71. package/client-dist/index.html +1 -1
  72. package/client-dist/{live-dev-pipeline.module-DPGGYS3B.js → live-dev-pipeline.module-63XT5MJP.js} +2 -2
  73. package/client-dist/{logs.module-7JW3DLJ6.js → logs.module-JGIHBHX6.js} +2 -2
  74. package/client-dist/{main-URSHAAUT.js → main-YLGZITQU.js} +3 -3
  75. package/client-dist/{master-control-remote-poc.module-XRUCLOYU.js → master-control-remote-poc.module-IAWFHXRM.js} +2 -2
  76. package/client-dist/{mobile-app.module-US623SVV.js → mobile-app.module-LXUQSWNE.js} +2 -2
  77. package/client-dist/{model-registry.module-326SFWRU.js → model-registry.module-4SWLIY3L.js} +2 -2
  78. package/client-dist/{oc.module-5IUZKRJS.js → oc.module-G3QQWRGY.js} +2 -2
  79. package/client-dist/{orc.module-IEI6JE7F.js → orc.module-4DWUGUCW.js} +2 -2
  80. package/client-dist/{project-management.module-KOFKQNJC.js → project-management.module-CCIEYIWT.js} +2 -2
  81. package/client-dist/project-source-routed.module-YZHGO6CO.js +2 -0
  82. package/client-dist/{scheduler.module-VGCXWSLT.js → scheduler.module-ILUYBQKB.js} +2 -2
  83. package/client-dist/{session.module-CF35HJX4.js → session.module-YF4EX57E.js} +2 -2
  84. package/client-dist/{set.module-IOV5ASV6.js → set.module-CL6ZBFWW.js} +2 -2
  85. package/client-dist/{setup.module-P75LLF5O.js → setup.module-UXU3WS5V.js} +2 -2
  86. package/client-dist/{terminals.module-3XNFE5PV.js → terminals.module-K4NTCGAW.js} +2 -2
  87. package/client-dist/{voice-notes-poc.module-36XHVU4Z.js → voice-notes-poc.module-L5M5NWO2.js} +2 -2
  88. package/client-dist/{wfs.module-ZTPNKLGG.js → wfs.module-UNMMTLJD.js} +2 -2
  89. package/package.json +1 -1
  90. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.d.ts +44 -0
  91. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.d.ts.map +1 -0
  92. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js +212 -0
  93. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js.map +1 -0
  94. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +13 -44
  95. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
  96. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +37 -248
  97. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
  98. package/client-dist/project-source-routed.module-UMSRDUDQ.js +0 -2
  99. /package/client-dist/{agent-instances.module-FDXSEMTG.js.map → agent-instances.module-XHV2TP7O.js.map} +0 -0
  100. /package/client-dist/{ca.module-EYBNEJUN.js.map → ca.module-UYSJWH3C.js.map} +0 -0
  101. /package/client-dist/{cc.module-4QHYXYK3.js.map → cc.module-44GWX6ZS.js.map} +0 -0
  102. /package/client-dist/{chunk-IIYYQZ5G.js.map → chunk-2DB3LR7O.js.map} +0 -0
  103. /package/client-dist/{chunk-HLVQVXSH.js.map → chunk-2DT3DQYP.js.map} +0 -0
  104. /package/client-dist/{chunk-ZPYIQBC2.js.map → chunk-2EQNUA63.js.map} +0 -0
  105. /package/client-dist/{chunk-KXLJQW7Z.js.map → chunk-2UXMIPN2.js.map} +0 -0
  106. /package/client-dist/{chunk-4O4EME4N.js.map → chunk-2WNVREPI.js.map} +0 -0
  107. /package/client-dist/{chunk-MFYGL42T.js.map → chunk-5SPKC3YD.js.map} +0 -0
  108. /package/client-dist/{chunk-5AOWTCN5.js.map → chunk-6UEUYDO3.js.map} +0 -0
  109. /package/client-dist/{chunk-C6AON7DW.js.map → chunk-6UVLEDQ5.js.map} +0 -0
  110. /package/client-dist/{chunk-2DKB45RU.js.map → chunk-A2LLUPKC.js.map} +0 -0
  111. /package/client-dist/{chunk-WPIDKDJJ.js.map → chunk-AVAPH2PU.js.map} +0 -0
  112. /package/client-dist/{chunk-GUFEBKFS.js.map → chunk-B2SWOZ3Y.js.map} +0 -0
  113. /package/client-dist/{chunk-64XBW3PL.js.map → chunk-B47JDGMP.js.map} +0 -0
  114. /package/client-dist/{chunk-VBPLKVLC.js.map → chunk-BPYGD4JQ.js.map} +0 -0
  115. /package/client-dist/{chunk-ZSZVSMNC.js.map → chunk-CRJIE2EH.js.map} +0 -0
  116. /package/client-dist/{chunk-5TLMPEFC.js.map → chunk-CVWZBWR5.js.map} +0 -0
  117. /package/client-dist/{chunk-PLESPNCS.js.map → chunk-DFWKG5PG.js.map} +0 -0
  118. /package/client-dist/{chunk-K4FZQ2PV.js.map → chunk-EBPDLIZX.js.map} +0 -0
  119. /package/client-dist/{chunk-VOHQOBF2.js.map → chunk-EKJHVEA5.js.map} +0 -0
  120. /package/client-dist/{chunk-XOIUB2XG.js.map → chunk-FIZNVKIB.js.map} +0 -0
  121. /package/client-dist/{chunk-5ID425QB.js.map → chunk-FLOT2NPP.js.map} +0 -0
  122. /package/client-dist/{chunk-WBSG4E3K.js.map → chunk-FSAVUX6K.js.map} +0 -0
  123. /package/client-dist/{chunk-6HUWMPDM.js.map → chunk-GI5DILVT.js.map} +0 -0
  124. /package/client-dist/{chunk-VYDVZ5UI.js.map → chunk-GL2VABJP.js.map} +0 -0
  125. /package/client-dist/{chunk-NOIROTD2.js.map → chunk-H4OQI5J3.js.map} +0 -0
  126. /package/client-dist/{chunk-N5Z4EF3H.js.map → chunk-HF3XSXX2.js.map} +0 -0
  127. /package/client-dist/{chunk-PLRITPHA.js.map → chunk-ILJFTJNR.js.map} +0 -0
  128. /package/client-dist/{chunk-EDB52UN2.js.map → chunk-J7IUX23G.js.map} +0 -0
  129. /package/client-dist/{chunk-MLYIZD3B.js.map → chunk-JKIF6YFY.js.map} +0 -0
  130. /package/client-dist/{chunk-RSWCAWPN.js.map → chunk-K63M327A.js.map} +0 -0
  131. /package/client-dist/{chunk-JWJLL7JE.js.map → chunk-LMEEH4DP.js.map} +0 -0
  132. /package/client-dist/{chunk-74TZUHGL.js.map → chunk-LOO2HFML.js.map} +0 -0
  133. /package/client-dist/{chunk-FYRG2MNH.js.map → chunk-MAJ6ZV5G.js.map} +0 -0
  134. /package/client-dist/{chunk-4XASLJP4.js.map → chunk-MVA4T5TS.js.map} +0 -0
  135. /package/client-dist/{chunk-ZMX3MEAU.js.map → chunk-NAUSJ6P2.js.map} +0 -0
  136. /package/client-dist/{chunk-JFOZCK2S.js.map → chunk-NHHSHFA7.js.map} +0 -0
  137. /package/client-dist/{chunk-EHHM3BYW.js.map → chunk-OVJXBB2W.js.map} +0 -0
  138. /package/client-dist/{chunk-L7AQMTP5.js.map → chunk-PF4X6EZW.js.map} +0 -0
  139. /package/client-dist/{chunk-CRWBKLSC.js.map → chunk-R2OAZ7WY.js.map} +0 -0
  140. /package/client-dist/{chunk-TBPYJZEN.js.map → chunk-SHZBLYY4.js.map} +0 -0
  141. /package/client-dist/{chunk-76D4UA67.js.map → chunk-SNFKG7OD.js.map} +0 -0
  142. /package/client-dist/{chunk-KMCUFCSO.js.map → chunk-SYLBNS6X.js.map} +0 -0
  143. /package/client-dist/{chunk-5INYPN2C.js.map → chunk-T4RST354.js.map} +0 -0
  144. /package/client-dist/{chunk-7YQUK6YP.js.map → chunk-UIBU3OVP.js.map} +0 -0
  145. /package/client-dist/{chunk-HRNON54R.js.map → chunk-UOR473MY.js.map} +0 -0
  146. /package/client-dist/{chunk-MHFOCE7C.js.map → chunk-UQXHY37I.js.map} +0 -0
  147. /package/client-dist/{chunk-3UX26D5B.js.map → chunk-V2ERRMCF.js.map} +0 -0
  148. /package/client-dist/{chunk-3IZFBAP4.js.map → chunk-VQMBB25J.js.map} +0 -0
  149. /package/client-dist/{chunk-3RBRW6ND.js.map → chunk-W2W4RTI2.js.map} +0 -0
  150. /package/client-dist/{chunk-I63FNAQQ.js.map → chunk-WCWRDALU.js.map} +0 -0
  151. /package/client-dist/{chunk-K6GDVWWX.js.map → chunk-WCXV5NA2.js.map} +0 -0
  152. /package/client-dist/{chunk-AHWYO7LQ.js.map → chunk-WMLWXBWW.js.map} +0 -0
  153. /package/client-dist/{chunk-PKH5KDRV.js.map → chunk-WWJAJOFD.js.map} +0 -0
  154. /package/client-dist/{chunk-R42PAQER.js.map → chunk-Z5IJ2US2.js.map} +0 -0
  155. /package/client-dist/{chunk-H6UZESYO.js.map → chunk-Z7MOK6IL.js.map} +0 -0
  156. /package/client-dist/{chunk-Q7DJ35BO.js.map → chunk-ZYJOLIZR.js.map} +0 -0
  157. /package/client-dist/{consultant.module-HTRBL3JA.js.map → consultant.module-5QV23GWU.js.map} +0 -0
  158. /package/client-dist/{crd.module-WBU2TQJT.js.map → crd.module-AX2RY7FA.js.map} +0 -0
  159. /package/client-dist/{dashboard.module-PVARXAWG.js.map → dashboard.module-BTH5D3RA.js.map} +0 -0
  160. /package/client-dist/{do.module-CN665RIH.js.map → do.module-GTG4R5I6.js.map} +0 -0
  161. /package/client-dist/{document-library.module-T6LR6LI3.js.map → document-library.module-UXXJLDVC.js.map} +0 -0
  162. /package/client-dist/{embedding-eval.module-HE4RDD5B.js.map → embedding-eval.module-T6TJ3SNN.js.map} +0 -0
  163. /package/client-dist/{embedding-registry.module-H22NBAYP.js.map → embedding-registry.module-VLWPMIEI.js.map} +0 -0
  164. /package/client-dist/{err.module-AS3WPEUF.js.map → err.module-GORVBBMZ.js.map} +0 -0
  165. /package/client-dist/{feedback.module-XQKR3ZX6.js.map → feedback.module-TGGSMS23.js.map} +0 -0
  166. /package/client-dist/{host-runtime-mcp.module-WDRNBXKM.js.map → host-runtime-mcp.module-NOWETOPZ.js.map} +0 -0
  167. /package/client-dist/{live-dev-pipeline.module-DPGGYS3B.js.map → live-dev-pipeline.module-63XT5MJP.js.map} +0 -0
  168. /package/client-dist/{logs.module-7JW3DLJ6.js.map → logs.module-JGIHBHX6.js.map} +0 -0
  169. /package/client-dist/{main-URSHAAUT.js.map → main-YLGZITQU.js.map} +0 -0
  170. /package/client-dist/{master-control-remote-poc.module-XRUCLOYU.js.map → master-control-remote-poc.module-IAWFHXRM.js.map} +0 -0
  171. /package/client-dist/{mobile-app.module-US623SVV.js.map → mobile-app.module-LXUQSWNE.js.map} +0 -0
  172. /package/client-dist/{model-registry.module-326SFWRU.js.map → model-registry.module-4SWLIY3L.js.map} +0 -0
  173. /package/client-dist/{oc.module-5IUZKRJS.js.map → oc.module-G3QQWRGY.js.map} +0 -0
  174. /package/client-dist/{orc.module-IEI6JE7F.js.map → orc.module-4DWUGUCW.js.map} +0 -0
  175. /package/client-dist/{project-management.module-KOFKQNJC.js.map → project-management.module-CCIEYIWT.js.map} +0 -0
  176. /package/client-dist/{project-source-routed.module-UMSRDUDQ.js.map → project-source-routed.module-YZHGO6CO.js.map} +0 -0
  177. /package/client-dist/{scheduler.module-VGCXWSLT.js.map → scheduler.module-ILUYBQKB.js.map} +0 -0
  178. /package/client-dist/{session.module-CF35HJX4.js.map → session.module-YF4EX57E.js.map} +0 -0
  179. /package/client-dist/{set.module-IOV5ASV6.js.map → set.module-CL6ZBFWW.js.map} +0 -0
  180. /package/client-dist/{setup.module-P75LLF5O.js.map → setup.module-UXU3WS5V.js.map} +0 -0
  181. /package/client-dist/{terminals.module-3XNFE5PV.js.map → terminals.module-K4NTCGAW.js.map} +0 -0
  182. /package/client-dist/{voice-notes-poc.module-36XHVU4Z.js.map → voice-notes-poc.module-L5M5NWO2.js.map} +0 -0
  183. /package/client-dist/{wfs.module-ZTPNKLGG.js.map → wfs.module-UNMMTLJD.js.map} +0 -0
@@ -1,3 +1,3 @@
1
- import{a as se}from"./chunk-3UX26D5B.js";import"./chunk-HRNON54R.js";import"./chunk-VYDVZ5UI.js";import"./chunk-ZPYIQBC2.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-5TLMPEFC.js";import{I as le}from"./chunk-DT745Z7F.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-V2ERRMCF.js";import"./chunk-UOR473MY.js";import"./chunk-GL2VABJP.js";import"./chunk-2EQNUA63.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-CVWZBWR5.js";import{I as le}from"./chunk-FLV3DZFK.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-ZTPNKLGG.js.map
3
+ //# sourceMappingURL=wfs.module-UNMMTLJD.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/ccap",
3
- "version": "1.1.2744",
3
+ "version": "1.1.2753",
4
4
  "description": "CCAP Revisioned – Agent architektúra; CLI, server, client, e2e alprojektek.",
5
5
  "bin": {
6
6
  "ccap": "./bin/ccap.js"
@@ -0,0 +1,44 @@
1
+ import { CC_TerminalSocket_Interface } from '../../../_services/core/cc-adapter.interface';
2
+ /**
3
+ * Cycle 842 (REQ-CC-ADAPTER-TERMINAL-REFACTOR-001 Slice 3) — extract a
4
+ * `cc-adapter-terminal.control-service.ts` 'session completion guard'
5
+ * szekciójából. 3 önálló method (rejectRunnerIfSessionClosed,
6
+ * verifyAndKillIfStillClosed, killAndDisconnectRunner) → pure-static util.
7
+ *
8
+ * Cél: a control-service file-token-length küszöb alá vitele
9
+ * (cycle 825 commit-note óta deferred plan-méretű refaktor folytatódik).
10
+ *
11
+ * A státus-map-ek (`terminalSockets`, `terminalIds`, `pendingKillReasons`,
12
+ * `hadRunnerSet`) + a `resumeInFlightChecker` callback paraméterként
13
+ * érkezik — a control-service tulajdona marad.
14
+ */
15
+ export declare class CC_TerminalSessionClosedGuard_Util {
16
+ /**
17
+ * Completion guard: ha a session DB completed/terminated/errored/deleted,
18
+ * runner cc:kill + disconnect (fire-and-forget). Tipikus: server restart-recovery
19
+ * lezárta, de runner ablak túlélte és reconnect-elt — idle-timeout-ig nyitva
20
+ * maradna.
21
+ */
22
+ static rejectRunnerIfSessionClosed(params: {
23
+ sessionId: string;
24
+ socket: CC_TerminalSocket_Interface;
25
+ terminalId: string;
26
+ terminalSockets: Map<string, CC_TerminalSocket_Interface>;
27
+ terminalIds: Map<string, string>;
28
+ pendingKillReasons: Map<string, string>;
29
+ hadRunnerSet: Set<string>;
30
+ resumeInFlightChecker: (sessionId: string) => boolean;
31
+ }): void;
32
+ /**
33
+ * Második DB-olvasás kill előtt (race elkerülés). Ha az állapot non-closed-ra
34
+ * váltott (pl. resumeSession közben), NEM ölünk; egyébként valódi orphan → kill.
35
+ */
36
+ private static verifyAndKillIfStillClosed;
37
+ /**
38
+ * Runner kiutasítása: cc:kill emit + socket disconnect + in-memory map cleanup
39
+ * + lifecycle deregisztráció + hadRunnerSet törlés. REQ-CC-EXIT-REASON-001 —
40
+ * `runner-evict:<reason>` kategóriával a process-exit handler-nek.
41
+ */
42
+ private static killAndDisconnectRunner;
43
+ }
44
+ //# sourceMappingURL=cc-terminal-session-closed-guard.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-terminal-session-closed-guard.util.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAE3F;;;;;;;;;;;;GAYG;AACH,qBAAa,kCAAkC;IAE7C;;;;;OAKG;IACH,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE;QACzC,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,2BAA2B,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;QAC1D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;KACvD,GAAG,IAAI;IA+DR;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAwHzC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAoCvC"}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CC_TerminalSessionClosedGuard_Util = void 0;
4
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
+ const nts_dynamo_1 = require("@futdevpro/nts-dynamo");
6
+ const ccap_error_control_model_1 = require("../../../../../../../_collections/core/ccap-error.control-model");
7
+ const eh_record_build_util_1 = require("../../../../../../ccap-agent/_modules/error-handling/_collections/utils/eh-record-build.util");
8
+ const instance_id_service_1 = require("../../../../../_services/instance-id.service");
9
+ const cc_status_enum_1 = require("../../../_enums/cc-status.enum");
10
+ const cc_kill_reasons_const_1 = require("../../consts/cc-kill-reasons.const");
11
+ const claude_code_data_service_1 = require("../../../_services/core/claude-code.data-service");
12
+ const cc_terminal_lifecycle_control_service_1 = require("../../../_services/core/terminal/cc-terminal-lifecycle.control-service");
13
+ /**
14
+ * Cycle 842 (REQ-CC-ADAPTER-TERMINAL-REFACTOR-001 Slice 3) — extract a
15
+ * `cc-adapter-terminal.control-service.ts` 'session completion guard'
16
+ * szekciójából. 3 önálló method (rejectRunnerIfSessionClosed,
17
+ * verifyAndKillIfStillClosed, killAndDisconnectRunner) → pure-static util.
18
+ *
19
+ * Cél: a control-service file-token-length küszöb alá vitele
20
+ * (cycle 825 commit-note óta deferred plan-méretű refaktor folytatódik).
21
+ *
22
+ * A státus-map-ek (`terminalSockets`, `terminalIds`, `pendingKillReasons`,
23
+ * `hadRunnerSet`) + a `resumeInFlightChecker` callback paraméterként
24
+ * érkezik — a control-service tulajdona marad.
25
+ */
26
+ class CC_TerminalSessionClosedGuard_Util {
27
+ /**
28
+ * Completion guard: ha a session DB completed/terminated/errored/deleted,
29
+ * runner cc:kill + disconnect (fire-and-forget). Tipikus: server restart-recovery
30
+ * lezárta, de runner ablak túlélte és reconnect-elt — idle-timeout-ig nyitva
31
+ * maradna.
32
+ */
33
+ static rejectRunnerIfSessionClosed(params) {
34
+ const localCcapId = instance_id_service_1.ExS_InstanceId_Service.getInstance().getInstanceId();
35
+ const sessionDS = new claude_code_data_service_1.ClaudeCode_DataService({ issuer: 'cc-adapter-terminal-completion-guard' });
36
+ sessionDS.findBySessionId({
37
+ ccapId: localCcapId,
38
+ sessionId: params.sessionId,
39
+ }).then((session) => {
40
+ if (!session) {
41
+ fsm_dynamo_1.DyFM_Log.warn(`CC_AdapterTerminal | rejecting runner: session not found in DB`
42
+ + ` | session: ${params.sessionId}`
43
+ + ` | terminalId: ${params.terminalId}`);
44
+ CC_TerminalSessionClosedGuard_Util.killAndDisconnectRunner({
45
+ sessionId: params.sessionId,
46
+ socket: params.socket,
47
+ reason: 'session-not-found',
48
+ terminalSockets: params.terminalSockets,
49
+ terminalIds: params.terminalIds,
50
+ pendingKillReasons: params.pendingKillReasons,
51
+ hadRunnerSet: params.hadRunnerSet,
52
+ });
53
+ return;
54
+ }
55
+ const closedStatuses = [
56
+ cc_status_enum_1.CC_Status_Type.completed,
57
+ cc_status_enum_1.CC_Status_Type.terminated,
58
+ cc_status_enum_1.CC_Status_Type.errored,
59
+ ];
60
+ if (closedStatuses.includes(session.status ?? '')) {
61
+ // BUG-CC-ERRORED-RESUME-001 (cycle 2026-05-02): session DB closed-nak látszik,
62
+ // de stale lehet (resumeSession race vagy aktívan használt runner). Defense-in-depth:
63
+ // re-read 200ms után, csak akkor kill ha még mindig closed.
64
+ setTimeout(() => {
65
+ CC_TerminalSessionClosedGuard_Util.verifyAndKillIfStillClosed({
66
+ sessionId: params.sessionId,
67
+ socket: params.socket,
68
+ terminalId: params.terminalId,
69
+ firstReadStatus: session.status ?? '',
70
+ firstReadStatusMessage: session.statusMessage ?? '(none)',
71
+ closedStatuses: closedStatuses,
72
+ terminalSockets: params.terminalSockets,
73
+ terminalIds: params.terminalIds,
74
+ pendingKillReasons: params.pendingKillReasons,
75
+ hadRunnerSet: params.hadRunnerSet,
76
+ resumeInFlightChecker: params.resumeInFlightChecker,
77
+ });
78
+ }, 200);
79
+ }
80
+ }).catch((err) => {
81
+ // DB hiba → safe default: runner accepted (lifecycle scan idle-timeout-tal kezeli).
82
+ fsm_dynamo_1.DyFM_Log.warn(`CC_AdapterTerminal | completion guard DB check failed (runner accepted)`
83
+ + ` | session: ${params.sessionId}`
84
+ + ` | error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(err)}`);
85
+ });
86
+ }
87
+ /**
88
+ * Második DB-olvasás kill előtt (race elkerülés). Ha az állapot non-closed-ra
89
+ * váltott (pl. resumeSession közben), NEM ölünk; egyébként valódi orphan → kill.
90
+ */
91
+ static verifyAndKillIfStillClosed(params) {
92
+ const localCcapId = instance_id_service_1.ExS_InstanceId_Service.getInstance().getInstanceId();
93
+ const sessionDS = new claude_code_data_service_1.ClaudeCode_DataService({ issuer: 'cc-adapter-terminal-completion-guard-verify' });
94
+ sessionDS.findBySessionId({
95
+ ccapId: localCcapId,
96
+ sessionId: params.sessionId,
97
+ }).then((session) => {
98
+ if (!session) {
99
+ fsm_dynamo_1.DyFM_Log.warn(`CC_AdapterTerminal | rejecting runner (verified): session not found in DB`
100
+ + ` | session: ${params.sessionId}`
101
+ + ` | terminalId: ${params.terminalId}`);
102
+ CC_TerminalSessionClosedGuard_Util.killAndDisconnectRunner({
103
+ sessionId: params.sessionId,
104
+ socket: params.socket,
105
+ reason: 'session-not-found',
106
+ terminalSockets: params.terminalSockets,
107
+ terminalIds: params.terminalIds,
108
+ pendingKillReasons: params.pendingKillReasons,
109
+ hadRunnerSet: params.hadRunnerSet,
110
+ });
111
+ return;
112
+ }
113
+ if (params.closedStatuses.includes(session.status ?? '')) {
114
+ // BUG-CC-RESTART-RECOVERY-POLL-001: in-flight resumeSession race-protect.
115
+ // Ha resumeSession párhuzamosan fut, a 200ms re-read snapshot stale lehet —
116
+ // ne öljük a friss runner-t.
117
+ if (params.resumeInFlightChecker(params.sessionId)) {
118
+ fsm_dynamo_1.DyFM_Log.info(`CC_AdapterTerminal | runner KEPT (resume in-flight): DB still shows closed,`
119
+ + ` but resumeSession is currently running and will set status to creating shortly`
120
+ + ` | session: ${params.sessionId}`
121
+ + ` | terminalId: ${params.terminalId}`
122
+ + ` | dbStatus: ${session.status}`);
123
+ return;
124
+ }
125
+ // Valódi orphan → kill. BUG-CC-RUNNER-EVICT-VISIBILITY-001: user-visible
126
+ // error record a /errors page-en (user-tünet: "üzenetküldés terminált-ra
127
+ // teszi, Restart Runner sem segít"). Hint: resume vagy Restart Runner kétszer.
128
+ fsm_dynamo_1.DyFM_Log.warn(`CC_AdapterTerminal | rejecting runner (verified): session still closed after re-read`
129
+ + ` | session: ${params.sessionId}`
130
+ + ` | terminalId: ${params.terminalId}`
131
+ + ` | dbStatus: ${session.status}`
132
+ + ` | statusMessage: ${session.statusMessage ?? '(none)'}`
133
+ + ` | hint: ha trigger-ből jött → BUG-CC-ERRORED-RESUME-001 regression; check resumeSession reset-path`);
134
+ const evictError = new ccap_error_control_model_1.CCAP_Error({
135
+ message: `CC Session fresh runner evicted: session DB status is closed`
136
+ + ` (${session.status}) — runner cannot be kept.`,
137
+ errorCode: 'CCAP-CCS-TERMINAL-SESSION-CLOSED-REJECTION',
138
+ status: 409,
139
+ error: new Error(`Session DB status closed: ${session.status} — runner evicted`),
140
+ additionalContent: eh_record_build_util_1.Eh_Record_BuildUtil.buildDyFmAdditionalContentForCcapTable({
141
+ additionalContext: {
142
+ source: 'cc-adapter-terminal | verifyAndKillIfStillClosed',
143
+ ccSessionId: params.sessionId,
144
+ terminalId: params.terminalId,
145
+ firstReadStatus: params.firstReadStatus,
146
+ firstReadStatusMessage: params.firstReadStatusMessage,
147
+ currentDbStatus: session.status ?? '(unknown)',
148
+ currentDbStatusMessage: session.statusMessage ?? '(none)',
149
+ hint: 'A friss runner megérkezett, de a session DB-állapota még mindig'
150
+ + ' closed (completed/terminated/errored). A runner-t le kellett'
151
+ + ' lőnünk. Megoldás: hívd meg a /resume endpoint-ot a session-re'
152
+ + ' (vagy küldj prompt-ot, ami az auto-resume-on át megy), majd'
153
+ + ' próbáld újra a Restart Runner-t. Ha visszatér: BUG-CC-ERRORED-'
154
+ + 'RESUME-001 regresszió a resumeSession reset-path-on.',
155
+ },
156
+ }),
157
+ });
158
+ nts_dynamo_1.DyNTS_GlobalService.globalErrorHandler(evictError);
159
+ CC_TerminalSessionClosedGuard_Util.killAndDisconnectRunner({
160
+ sessionId: params.sessionId,
161
+ socket: params.socket,
162
+ reason: `session-closed-${session.status}`,
163
+ terminalSockets: params.terminalSockets,
164
+ terminalIds: params.terminalIds,
165
+ pendingKillReasons: params.pendingKillReasons,
166
+ hadRunnerSet: params.hadRunnerSet,
167
+ });
168
+ return;
169
+ }
170
+ fsm_dynamo_1.DyFM_Log.info(`CC_AdapterTerminal | runner KEPT (race resolved): status changed since first read`
171
+ + ` | session: ${params.sessionId}`
172
+ + ` | terminalId: ${params.terminalId}`
173
+ + ` | firstRead: ${params.firstReadStatus} → currentRead: ${session.status}`);
174
+ }).catch((err) => {
175
+ fsm_dynamo_1.DyFM_Log.warn(`CC_AdapterTerminal | completion guard verify-read failed (runner kept)`
176
+ + ` | session: ${params.sessionId}`
177
+ + ` | error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(err)}`);
178
+ });
179
+ }
180
+ /**
181
+ * Runner kiutasítása: cc:kill emit + socket disconnect + in-memory map cleanup
182
+ * + lifecycle deregisztráció + hadRunnerSet törlés. REQ-CC-EXIT-REASON-001 —
183
+ * `runner-evict:<reason>` kategóriával a process-exit handler-nek.
184
+ */
185
+ static killAndDisconnectRunner(params) {
186
+ params.pendingKillReasons.set(params.sessionId, `${cc_kill_reasons_const_1.CC_KILL_REASONS.runnerEvict}:${params.reason}`);
187
+ try {
188
+ params.socket.emit('cc:kill', { signal: 'SIGTERM' });
189
+ }
190
+ catch {
191
+ // Best-effort — a socket lehet már elesett.
192
+ }
193
+ try {
194
+ params.socket.disconnect(true);
195
+ }
196
+ catch {
197
+ // Best-effort.
198
+ }
199
+ params.terminalSockets.delete(params.sessionId);
200
+ params.terminalIds.delete(params.sessionId);
201
+ cc_terminal_lifecycle_control_service_1.CC_TerminalLifecycle_ControlService.getInstance().unregisterRunner({
202
+ sessionId: params.sessionId,
203
+ });
204
+ // hadRunnerSet törlés: a session lezárt, a jövőbeli grace period-döntéseket ne befolyásolja.
205
+ params.hadRunnerSet.delete(params.sessionId);
206
+ fsm_dynamo_1.DyFM_Log.info(`CC_AdapterTerminal | runner killed and disconnected`
207
+ + ` | session: ${params.sessionId}`
208
+ + ` | reason: ${params.reason}`);
209
+ }
210
+ }
211
+ exports.CC_TerminalSessionClosedGuard_Util = CC_TerminalSessionClosedGuard_Util;
212
+ //# sourceMappingURL=cc-terminal-session-closed-guard.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-terminal-session-closed-guard.util.js","sourceRoot":"","sources":["../../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -169,26 +164,18 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
169
164
  * Az adapter spawnSession grace period loop-ja használja.
170
165
  */
171
166
  getGraceIterations(): number;
172
- /**
173
- * Lifecycle runner deregisztrálása (az adapter terminateSession/terminate cleanup-ja).
174
- * Delegál a CC_TerminalLifecycle_ControlService-nek.
175
- */
167
+ /** Lifecycle runner deregisztrálás — delegál CC_TerminalLifecycle_ControlService-nek. */
176
168
  unregisterRunnerLifecycle(params: {
177
169
  sessionId: string;
178
170
  }): void;
179
171
  /**
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).
172
+ * Cycle 834: extract CC_TerminalRunnerControl_Util.disconnectAllRunners.
173
+ * Graceful shutdown — cc:kill + disconnect minden csatlakozott runner-nek.
183
174
  */
184
- /** Cycle 834: extract → CC_TerminalRunnerControl_Util.disconnectAllRunners. */
185
175
  disconnectAllRunners(): void;
186
176
  /** Cycle 781: runner version sessionId-hez (undefined ha pre-781 / nincs registration). */
187
177
  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
- */
178
+ /** Cycle 781e: runner kill+respawn (UI-button); 834: kill via runner-control util. */
192
179
  restartRunner(params: {
193
180
  sessionId: string;
194
181
  workspacePath: string;
@@ -255,9 +242,8 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
255
242
  terminalId: string;
256
243
  }>;
257
244
  /**
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.
245
+ * Runner sequence reset — full-exit (terminate / lifecycle) hívja, mert új runner 1-től
246
+ * kezd. Disconnect NEM hívja: ugyanaz a process, sequence folytatódik.
261
247
  */
262
248
  clearRunnerSequenceState(params: {
263
249
  sessionId: string;
@@ -341,22 +327,5 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
341
327
  * Process state change callback delegálása.
342
328
  */
343
329
  private handleProcessStateChange;
344
- /**
345
- * Completion guard: ha a session DB completed/terminated/errored/deleted, runner cc:kill +
346
- * disconnect (fire-and-forget). Tipikus: server restart-recovery lezárta, de runner ablak
347
- * túlélte és reconnect-elt — idle-timeout-ig nyitva maradna.
348
- */
349
- private rejectRunnerIfSessionClosed;
350
- /**
351
- * Második DB-olvasás kill előtt (race elkerülés). Ha az állapot creating/starting/running/
352
- * waiting-input/stalled-ra váltott (pl. resumeSession közben), NEM ölünk — aktív session.
353
- * Ha továbbra is closed (completed/terminated/errored) → valódi orphan, kill.
354
- */
355
- private verifyAndKillIfStillClosed;
356
- /**
357
- * Runner kiutasítása: cc:kill emit + socket disconnect + in-memory map cleanup
358
- * + lifecycle deregisztráció + hadRunnerSet törlés.
359
- */
360
- private killAndDisconnectRunner;
361
330
  }
362
331
  //# sourceMappingURL=cc-adapter-terminal.control-service.d.ts.map
@@ -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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"}