@futdevpro/ccap 1.1.2582 → 1.1.2587

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-7VEBBM5Y.js → agent-instances.module-YWOIXDH7.js} +2 -2
  2. package/client-dist/{ca.module-ZFHRCLF7.js → ca.module-LLV4X4XS.js} +2 -2
  3. package/client-dist/{cc.module-JZX6WYEJ.js → cc.module-ILPNERTV.js} +2 -2
  4. package/client-dist/{chunk-ZPHUSRQ2.js → chunk-27LQRTFC.js} +2 -2
  5. package/client-dist/{chunk-53QIVVCG.js → chunk-2CUTUTG6.js} +2 -2
  6. package/client-dist/{chunk-NJZZZGTL.js → chunk-2FJ3NR2F.js} +2 -2
  7. package/client-dist/{chunk-T7O5N6F5.js → chunk-2VSTXK4C.js} +2 -2
  8. package/client-dist/{chunk-VD2IXKGO.js → chunk-3FKICV6A.js} +2 -2
  9. package/client-dist/{chunk-AHZ2P3Z3.js → chunk-3K3N2JO6.js} +2 -2
  10. package/client-dist/{chunk-VA5ORQEA.js → chunk-6G6VDHWY.js} +2 -2
  11. package/client-dist/{chunk-2O52ESML.js → chunk-73DSW33Z.js} +2 -2
  12. package/client-dist/{chunk-GYAPUB7L.js → chunk-7LE6ZBDQ.js} +2 -2
  13. package/client-dist/{chunk-3TXLV3DA.js → chunk-7V3LZNBW.js} +2 -2
  14. package/client-dist/{chunk-WRTBJFYJ.js → chunk-A7NKGEH3.js} +2 -2
  15. package/client-dist/{chunk-KNCYCQVI.js → chunk-AO3UGIAI.js} +2 -2
  16. package/client-dist/{chunk-T3KV2MBE.js → chunk-BST3XFQF.js} +2 -2
  17. package/client-dist/{chunk-25EU3GLD.js → chunk-C4TZGPSK.js} +2 -2
  18. package/client-dist/{chunk-OZ2XX74S.js → chunk-CAJPWFGO.js} +2 -2
  19. package/client-dist/{chunk-DR5CW2Q5.js → chunk-CBW2K2WW.js} +2 -2
  20. package/client-dist/{chunk-TYFIVDHM.js → chunk-DHPLYHEI.js} +2 -2
  21. package/client-dist/{chunk-DTMD64OK.js → chunk-FFKYIXWI.js} +2 -2
  22. package/client-dist/{chunk-UDXUA4QP.js → chunk-FJJOLW2L.js} +2 -2
  23. package/client-dist/{chunk-RIPG5ILJ.js → chunk-FNIBNMRG.js} +2 -2
  24. package/client-dist/{chunk-UXQXE4O4.js → chunk-FRXTWJPI.js} +2 -2
  25. package/client-dist/{chunk-2SPJ3JFQ.js → chunk-FT3ICJUH.js} +2 -2
  26. package/client-dist/{chunk-FH7BZ5KC.js → chunk-G7ICAHHS.js} +2 -2
  27. package/client-dist/{chunk-ZR3JTDG2.js → chunk-GAMVQNHW.js} +2 -2
  28. package/client-dist/{chunk-BC56SIVJ.js → chunk-GIMANSXZ.js} +2 -2
  29. package/client-dist/{chunk-BC56SIVJ.js.map → chunk-GIMANSXZ.js.map} +1 -1
  30. package/client-dist/{chunk-YKPMO3C3.js → chunk-GPET5I4I.js} +2 -2
  31. package/client-dist/{chunk-WKKV76Y4.js → chunk-HR6TOLOA.js} +2 -2
  32. package/client-dist/{chunk-F763HXOW.js → chunk-IT77QKQU.js} +2 -2
  33. package/client-dist/{chunk-CXE46KLX.js → chunk-IWQ4Q43G.js} +2 -2
  34. package/client-dist/{chunk-OVYV3NO4.js → chunk-JXPRWAW6.js} +2 -2
  35. package/client-dist/{chunk-BDL5F3DK.js → chunk-KYM7FJHL.js} +2 -2
  36. package/client-dist/{chunk-CTB35A3I.js → chunk-LGPK3E27.js} +2 -2
  37. package/client-dist/{chunk-WTKKMZP3.js → chunk-MJWBRVIZ.js} +2 -2
  38. package/client-dist/{chunk-U4EZD6B3.js → chunk-MXHJSO6T.js} +2 -2
  39. package/client-dist/{chunk-UKTCBZ23.js → chunk-MZJ5RYNS.js} +2 -2
  40. package/client-dist/{chunk-ERTQ57LC.js → chunk-NH62IZ2I.js} +2 -2
  41. package/client-dist/{chunk-XZ6U37UV.js → chunk-NORN44KD.js} +2 -2
  42. package/client-dist/{chunk-3FTM2EWS.js → chunk-OKLIKVJE.js} +2 -2
  43. package/client-dist/{chunk-IX66ULOP.js → chunk-P3SZCBZN.js} +2 -2
  44. package/client-dist/{chunk-6BANNHB6.js → chunk-QHTWWU3T.js} +2 -2
  45. package/client-dist/{chunk-ZIAX3RD5.js → chunk-R3U6I3AB.js} +2 -2
  46. package/client-dist/{chunk-AYBZUIVP.js → chunk-R5QEHK6P.js} +2 -2
  47. package/client-dist/{chunk-D4YCGDYF.js → chunk-TFBQJRFX.js} +2 -2
  48. package/client-dist/{chunk-PWFZ6PI4.js → chunk-UEDXHYON.js} +2 -2
  49. package/client-dist/{chunk-W3N4KJQU.js → chunk-UEJ23MSW.js} +2 -2
  50. package/client-dist/{chunk-M4TYKIMG.js → chunk-UEVY65YU.js} +2 -2
  51. package/client-dist/{chunk-UKMTMXFC.js → chunk-UGIM5YPW.js} +2 -2
  52. package/client-dist/{chunk-CN2EISGD.js → chunk-UIZGNPA6.js} +2 -2
  53. package/client-dist/{chunk-U7PPOB3Z.js → chunk-V7VRDFRR.js} +2 -2
  54. package/client-dist/{chunk-CZEGJES4.js → chunk-VCFHQNQL.js} +2 -2
  55. package/client-dist/{chunk-D5YBMGLK.js → chunk-VGZURQ2Q.js} +2 -2
  56. package/client-dist/{chunk-GH6753SA.js → chunk-VJKURWS7.js} +2 -2
  57. package/client-dist/{chunk-FKFHKEJ6.js → chunk-X2KDFHPP.js} +2 -2
  58. package/client-dist/{chunk-USYW262H.js → chunk-X7OUBF2O.js} +2 -2
  59. package/client-dist/{chunk-ZVEM6BEV.js → chunk-X7PFZVJ6.js} +2 -2
  60. package/client-dist/{chunk-3SNKGBZL.js → chunk-YZJ4TDK3.js} +2 -2
  61. package/client-dist/{consultant.module-355QJ5VP.js → consultant.module-ZZZZ4RP6.js} +2 -2
  62. package/client-dist/{crd.module-23O7HPSP.js → crd.module-HMYZ3RSE.js} +2 -2
  63. package/client-dist/{dashboard.module-B3DBG7VA.js → dashboard.module-XXIHOGKH.js} +2 -2
  64. package/client-dist/{do.module-T3T4EI72.js → do.module-6CKZ5ZHN.js} +2 -2
  65. package/client-dist/{document-library.module-HCB3IBFU.js → document-library.module-AWJQM6TO.js} +2 -2
  66. package/client-dist/{embedding-eval.module-Y4S72P6L.js → embedding-eval.module-PUIM4LJD.js} +2 -2
  67. package/client-dist/{embedding-registry.module-WRLE4M2R.js → embedding-registry.module-GGVJNNSJ.js} +2 -2
  68. package/client-dist/{err.module-NEHVNIDC.js → err.module-Q3FWRDNH.js} +2 -2
  69. package/client-dist/{feedback.module-M22IIOC3.js → feedback.module-6MRMUI2D.js} +2 -2
  70. package/client-dist/{host-runtime-mcp.module-BTQGLDN3.js → host-runtime-mcp.module-FXFHG4N4.js} +2 -2
  71. package/client-dist/index.html +1 -1
  72. package/client-dist/{live-dev-pipeline.module-TBWOJ2K7.js → live-dev-pipeline.module-OJCFH4CQ.js} +2 -2
  73. package/client-dist/{logs.module-WLXYHRBN.js → logs.module-PMBV7VNS.js} +2 -2
  74. package/client-dist/{main-CPF6CLMC.js → main-DNXONHPF.js} +3 -3
  75. package/client-dist/{master-control-remote-poc.module-NZ4AZJHI.js → master-control-remote-poc.module-IBHE7IEK.js} +2 -2
  76. package/client-dist/{mobile-app.module-JUBFTHW3.js → mobile-app.module-MNCCY4Y6.js} +2 -2
  77. package/client-dist/{model-registry.module-AIAGFPNO.js → model-registry.module-3VGIYL7M.js} +2 -2
  78. package/client-dist/{oc.module-KYUWTHHM.js → oc.module-WYNFIABW.js} +2 -2
  79. package/client-dist/{orc.module-BMV7EOI7.js → orc.module-Z3HCSGH6.js} +2 -2
  80. package/client-dist/{project-management.module-X5VO2F54.js → project-management.module-BM2GIU54.js} +2 -2
  81. package/client-dist/project-source-routed.module-KGCDYDUU.js +2 -0
  82. package/client-dist/{scheduler.module-IKACZ62P.js → scheduler.module-KQHEDMMF.js} +2 -2
  83. package/client-dist/{session.module-GLASF7US.js → session.module-UOJD7U7Y.js} +2 -2
  84. package/client-dist/{set.module-COGQHP7X.js → set.module-D6S6AQGV.js} +2 -2
  85. package/client-dist/{setup.module-CWFUSK2V.js → setup.module-T63BGY33.js} +2 -2
  86. package/client-dist/{terminals.module-FIV7G4Y6.js → terminals.module-A25HW6AI.js} +2 -2
  87. package/client-dist/{voice-notes-poc.module-HWX6J3HW.js → voice-notes-poc.module-JN7DWVFJ.js} +2 -2
  88. package/client-dist/{wfs.module-AF5XUOHR.js → wfs.module-RD54KLMM.js} +2 -2
  89. package/package.json +1 -1
  90. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter-kill-reasons.control-service.spec.d.ts +13 -0
  91. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter-kill-reasons.control-service.spec.d.ts.map +1 -0
  92. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter-kill-reasons.control-service.spec.js +76 -0
  93. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter-kill-reasons.control-service.spec.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 +14 -29
  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 +16 -36
  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-CTOB53C7.js +0 -2
  99. /package/client-dist/{agent-instances.module-7VEBBM5Y.js.map → agent-instances.module-YWOIXDH7.js.map} +0 -0
  100. /package/client-dist/{ca.module-ZFHRCLF7.js.map → ca.module-LLV4X4XS.js.map} +0 -0
  101. /package/client-dist/{cc.module-JZX6WYEJ.js.map → cc.module-ILPNERTV.js.map} +0 -0
  102. /package/client-dist/{chunk-ZPHUSRQ2.js.map → chunk-27LQRTFC.js.map} +0 -0
  103. /package/client-dist/{chunk-53QIVVCG.js.map → chunk-2CUTUTG6.js.map} +0 -0
  104. /package/client-dist/{chunk-NJZZZGTL.js.map → chunk-2FJ3NR2F.js.map} +0 -0
  105. /package/client-dist/{chunk-T7O5N6F5.js.map → chunk-2VSTXK4C.js.map} +0 -0
  106. /package/client-dist/{chunk-VD2IXKGO.js.map → chunk-3FKICV6A.js.map} +0 -0
  107. /package/client-dist/{chunk-AHZ2P3Z3.js.map → chunk-3K3N2JO6.js.map} +0 -0
  108. /package/client-dist/{chunk-VA5ORQEA.js.map → chunk-6G6VDHWY.js.map} +0 -0
  109. /package/client-dist/{chunk-2O52ESML.js.map → chunk-73DSW33Z.js.map} +0 -0
  110. /package/client-dist/{chunk-GYAPUB7L.js.map → chunk-7LE6ZBDQ.js.map} +0 -0
  111. /package/client-dist/{chunk-3TXLV3DA.js.map → chunk-7V3LZNBW.js.map} +0 -0
  112. /package/client-dist/{chunk-WRTBJFYJ.js.map → chunk-A7NKGEH3.js.map} +0 -0
  113. /package/client-dist/{chunk-KNCYCQVI.js.map → chunk-AO3UGIAI.js.map} +0 -0
  114. /package/client-dist/{chunk-T3KV2MBE.js.map → chunk-BST3XFQF.js.map} +0 -0
  115. /package/client-dist/{chunk-25EU3GLD.js.map → chunk-C4TZGPSK.js.map} +0 -0
  116. /package/client-dist/{chunk-OZ2XX74S.js.map → chunk-CAJPWFGO.js.map} +0 -0
  117. /package/client-dist/{chunk-DR5CW2Q5.js.map → chunk-CBW2K2WW.js.map} +0 -0
  118. /package/client-dist/{chunk-TYFIVDHM.js.map → chunk-DHPLYHEI.js.map} +0 -0
  119. /package/client-dist/{chunk-DTMD64OK.js.map → chunk-FFKYIXWI.js.map} +0 -0
  120. /package/client-dist/{chunk-UDXUA4QP.js.map → chunk-FJJOLW2L.js.map} +0 -0
  121. /package/client-dist/{chunk-RIPG5ILJ.js.map → chunk-FNIBNMRG.js.map} +0 -0
  122. /package/client-dist/{chunk-UXQXE4O4.js.map → chunk-FRXTWJPI.js.map} +0 -0
  123. /package/client-dist/{chunk-2SPJ3JFQ.js.map → chunk-FT3ICJUH.js.map} +0 -0
  124. /package/client-dist/{chunk-FH7BZ5KC.js.map → chunk-G7ICAHHS.js.map} +0 -0
  125. /package/client-dist/{chunk-ZR3JTDG2.js.map → chunk-GAMVQNHW.js.map} +0 -0
  126. /package/client-dist/{chunk-YKPMO3C3.js.map → chunk-GPET5I4I.js.map} +0 -0
  127. /package/client-dist/{chunk-WKKV76Y4.js.map → chunk-HR6TOLOA.js.map} +0 -0
  128. /package/client-dist/{chunk-F763HXOW.js.map → chunk-IT77QKQU.js.map} +0 -0
  129. /package/client-dist/{chunk-CXE46KLX.js.map → chunk-IWQ4Q43G.js.map} +0 -0
  130. /package/client-dist/{chunk-OVYV3NO4.js.map → chunk-JXPRWAW6.js.map} +0 -0
  131. /package/client-dist/{chunk-BDL5F3DK.js.map → chunk-KYM7FJHL.js.map} +0 -0
  132. /package/client-dist/{chunk-CTB35A3I.js.map → chunk-LGPK3E27.js.map} +0 -0
  133. /package/client-dist/{chunk-WTKKMZP3.js.map → chunk-MJWBRVIZ.js.map} +0 -0
  134. /package/client-dist/{chunk-U4EZD6B3.js.map → chunk-MXHJSO6T.js.map} +0 -0
  135. /package/client-dist/{chunk-UKTCBZ23.js.map → chunk-MZJ5RYNS.js.map} +0 -0
  136. /package/client-dist/{chunk-ERTQ57LC.js.map → chunk-NH62IZ2I.js.map} +0 -0
  137. /package/client-dist/{chunk-XZ6U37UV.js.map → chunk-NORN44KD.js.map} +0 -0
  138. /package/client-dist/{chunk-3FTM2EWS.js.map → chunk-OKLIKVJE.js.map} +0 -0
  139. /package/client-dist/{chunk-IX66ULOP.js.map → chunk-P3SZCBZN.js.map} +0 -0
  140. /package/client-dist/{chunk-6BANNHB6.js.map → chunk-QHTWWU3T.js.map} +0 -0
  141. /package/client-dist/{chunk-ZIAX3RD5.js.map → chunk-R3U6I3AB.js.map} +0 -0
  142. /package/client-dist/{chunk-AYBZUIVP.js.map → chunk-R5QEHK6P.js.map} +0 -0
  143. /package/client-dist/{chunk-D4YCGDYF.js.map → chunk-TFBQJRFX.js.map} +0 -0
  144. /package/client-dist/{chunk-PWFZ6PI4.js.map → chunk-UEDXHYON.js.map} +0 -0
  145. /package/client-dist/{chunk-W3N4KJQU.js.map → chunk-UEJ23MSW.js.map} +0 -0
  146. /package/client-dist/{chunk-M4TYKIMG.js.map → chunk-UEVY65YU.js.map} +0 -0
  147. /package/client-dist/{chunk-UKMTMXFC.js.map → chunk-UGIM5YPW.js.map} +0 -0
  148. /package/client-dist/{chunk-CN2EISGD.js.map → chunk-UIZGNPA6.js.map} +0 -0
  149. /package/client-dist/{chunk-U7PPOB3Z.js.map → chunk-V7VRDFRR.js.map} +0 -0
  150. /package/client-dist/{chunk-CZEGJES4.js.map → chunk-VCFHQNQL.js.map} +0 -0
  151. /package/client-dist/{chunk-D5YBMGLK.js.map → chunk-VGZURQ2Q.js.map} +0 -0
  152. /package/client-dist/{chunk-GH6753SA.js.map → chunk-VJKURWS7.js.map} +0 -0
  153. /package/client-dist/{chunk-FKFHKEJ6.js.map → chunk-X2KDFHPP.js.map} +0 -0
  154. /package/client-dist/{chunk-USYW262H.js.map → chunk-X7OUBF2O.js.map} +0 -0
  155. /package/client-dist/{chunk-ZVEM6BEV.js.map → chunk-X7PFZVJ6.js.map} +0 -0
  156. /package/client-dist/{chunk-3SNKGBZL.js.map → chunk-YZJ4TDK3.js.map} +0 -0
  157. /package/client-dist/{consultant.module-355QJ5VP.js.map → consultant.module-ZZZZ4RP6.js.map} +0 -0
  158. /package/client-dist/{crd.module-23O7HPSP.js.map → crd.module-HMYZ3RSE.js.map} +0 -0
  159. /package/client-dist/{dashboard.module-B3DBG7VA.js.map → dashboard.module-XXIHOGKH.js.map} +0 -0
  160. /package/client-dist/{do.module-T3T4EI72.js.map → do.module-6CKZ5ZHN.js.map} +0 -0
  161. /package/client-dist/{document-library.module-HCB3IBFU.js.map → document-library.module-AWJQM6TO.js.map} +0 -0
  162. /package/client-dist/{embedding-eval.module-Y4S72P6L.js.map → embedding-eval.module-PUIM4LJD.js.map} +0 -0
  163. /package/client-dist/{embedding-registry.module-WRLE4M2R.js.map → embedding-registry.module-GGVJNNSJ.js.map} +0 -0
  164. /package/client-dist/{err.module-NEHVNIDC.js.map → err.module-Q3FWRDNH.js.map} +0 -0
  165. /package/client-dist/{feedback.module-M22IIOC3.js.map → feedback.module-6MRMUI2D.js.map} +0 -0
  166. /package/client-dist/{host-runtime-mcp.module-BTQGLDN3.js.map → host-runtime-mcp.module-FXFHG4N4.js.map} +0 -0
  167. /package/client-dist/{live-dev-pipeline.module-TBWOJ2K7.js.map → live-dev-pipeline.module-OJCFH4CQ.js.map} +0 -0
  168. /package/client-dist/{logs.module-WLXYHRBN.js.map → logs.module-PMBV7VNS.js.map} +0 -0
  169. /package/client-dist/{main-CPF6CLMC.js.map → main-DNXONHPF.js.map} +0 -0
  170. /package/client-dist/{master-control-remote-poc.module-NZ4AZJHI.js.map → master-control-remote-poc.module-IBHE7IEK.js.map} +0 -0
  171. /package/client-dist/{mobile-app.module-JUBFTHW3.js.map → mobile-app.module-MNCCY4Y6.js.map} +0 -0
  172. /package/client-dist/{model-registry.module-AIAGFPNO.js.map → model-registry.module-3VGIYL7M.js.map} +0 -0
  173. /package/client-dist/{oc.module-KYUWTHHM.js.map → oc.module-WYNFIABW.js.map} +0 -0
  174. /package/client-dist/{orc.module-BMV7EOI7.js.map → orc.module-Z3HCSGH6.js.map} +0 -0
  175. /package/client-dist/{project-management.module-X5VO2F54.js.map → project-management.module-BM2GIU54.js.map} +0 -0
  176. /package/client-dist/{project-source-routed.module-CTOB53C7.js.map → project-source-routed.module-KGCDYDUU.js.map} +0 -0
  177. /package/client-dist/{scheduler.module-IKACZ62P.js.map → scheduler.module-KQHEDMMF.js.map} +0 -0
  178. /package/client-dist/{session.module-GLASF7US.js.map → session.module-UOJD7U7Y.js.map} +0 -0
  179. /package/client-dist/{set.module-COGQHP7X.js.map → set.module-D6S6AQGV.js.map} +0 -0
  180. /package/client-dist/{setup.module-CWFUSK2V.js.map → setup.module-T63BGY33.js.map} +0 -0
  181. /package/client-dist/{terminals.module-FIV7G4Y6.js.map → terminals.module-A25HW6AI.js.map} +0 -0
  182. /package/client-dist/{voice-notes-poc.module-HWX6J3HW.js.map → voice-notes-poc.module-JN7DWVFJ.js.map} +0 -0
  183. /package/client-dist/{wfs.module-AF5XUOHR.js.map → wfs.module-RD54KLMM.js.map} +0 -0
@@ -1,3 +1,3 @@
1
- import{a as se}from"./chunk-3TXLV3DA.js";import"./chunk-DTMD64OK.js";import"./chunk-WRTBJFYJ.js";import"./chunk-2SPJ3JFQ.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-25EU3GLD.js";import{I as le}from"./chunk-BC56SIVJ.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-7V3LZNBW.js";import"./chunk-FFKYIXWI.js";import"./chunk-A7NKGEH3.js";import"./chunk-FT3ICJUH.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-C4TZGPSK.js";import{I as le}from"./chunk-GIMANSXZ.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-AF5XUOHR.js.map
3
+ //# sourceMappingURL=wfs.module-RD54KLMM.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/ccap",
3
- "version": "1.1.2582",
3
+ "version": "1.1.2587",
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,13 @@
1
+ /**
2
+ * REQ-CC-EXIT-REASON-001 (cycle 800 kill-site wiring): a `CC_Adapter_ControlService`
3
+ * `pendingKillReasons` Map + `markPendingKill` public API a cycle 792 `CC_KILL_REASONS`
4
+ * + `classifyExitStatus(killReason)` ágat hidalja össze. A SIGTERM/SIGKILL emit ELŐTT
5
+ * a kill site-ok (terminateSession, processReplace, lifecycle, server shutdown stb.)
6
+ * regisztrálják a reason címkét; az exit handler kiolvassa, törli, és átadja a
7
+ * classifier-nek, hogy a `statusMessage` `(reason: <reason>)` suffix-szel jelölje
8
+ * az ok forrását.
9
+ *
10
+ * Pattern: Object.create + privát Map kézi init (cycle 187 minta).
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=cc-adapter-kill-reasons.control-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-adapter-kill-reasons.control-service.spec.d.ts","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter-kill-reasons.control-service.spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * REQ-CC-EXIT-REASON-001 (cycle 800 kill-site wiring): a `CC_Adapter_ControlService`
4
+ * `pendingKillReasons` Map + `markPendingKill` public API a cycle 792 `CC_KILL_REASONS`
5
+ * + `classifyExitStatus(killReason)` ágat hidalja össze. A SIGTERM/SIGKILL emit ELŐTT
6
+ * a kill site-ok (terminateSession, processReplace, lifecycle, server shutdown stb.)
7
+ * regisztrálják a reason címkét; az exit handler kiolvassa, törli, és átadja a
8
+ * classifier-nek, hogy a `statusMessage` `(reason: <reason>)` suffix-szel jelölje
9
+ * az ok forrását.
10
+ *
11
+ * Pattern: Object.create + privát Map kézi init (cycle 187 minta).
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ const cc_adapter_control_service_1 = require("./cc-adapter.control-service");
15
+ const cc_kill_reasons_const_1 = require("../../_collections/consts/cc-kill-reasons.const");
16
+ describe('CC_Adapter_ControlService.markPendingKill (cycle 800 REQ-CC-EXIT-REASON-001)', () => {
17
+ function buildSvc() {
18
+ const svc = Object.create(cc_adapter_control_service_1.CC_Adapter_ControlService.prototype);
19
+ svc.pendingKillReasons =
20
+ new Map();
21
+ return svc;
22
+ }
23
+ function readReasonsMap(svc) {
24
+ return svc.pendingKillReasons;
25
+ }
26
+ it('| markPendingKill regisztrálja a sessionId → reason párt', () => {
27
+ const svc = buildSvc();
28
+ svc.markPendingKill({
29
+ sessionId: 'ccs-test-A',
30
+ reason: cc_kill_reasons_const_1.CC_KILL_REASONS.userTerminate,
31
+ });
32
+ expect(readReasonsMap(svc).get('ccs-test-A')).toBe('user-terminate');
33
+ });
34
+ it('| ugyanaz a sessionId felülírja az előző reason-t (utolsó nyer)', () => {
35
+ const svc = buildSvc();
36
+ svc.markPendingKill({
37
+ sessionId: 'ccs-test-A',
38
+ reason: cc_kill_reasons_const_1.CC_KILL_REASONS.processReplace,
39
+ });
40
+ svc.markPendingKill({
41
+ sessionId: 'ccs-test-A',
42
+ reason: cc_kill_reasons_const_1.CC_KILL_REASONS.userTerminate,
43
+ });
44
+ expect(readReasonsMap(svc).get('ccs-test-A')).toBe('user-terminate');
45
+ expect(readReasonsMap(svc).size).toBe(1);
46
+ });
47
+ it('| különböző sessionId-k egymástól függetlenül tárolódnak', () => {
48
+ const svc = buildSvc();
49
+ svc.markPendingKill({
50
+ sessionId: 'ccs-A',
51
+ reason: cc_kill_reasons_const_1.CC_KILL_REASONS.serverShutdown,
52
+ });
53
+ svc.markPendingKill({
54
+ sessionId: 'ccs-B',
55
+ reason: cc_kill_reasons_const_1.CC_KILL_REASONS.lifecycleIdleTimeout,
56
+ });
57
+ expect(readReasonsMap(svc).get('ccs-A')).toBe('server-shutdown');
58
+ expect(readReasonsMap(svc).get('ccs-B')).toBe('lifecycle-idle-timeout');
59
+ expect(readReasonsMap(svc).size).toBe(2);
60
+ });
61
+ it('| összes CC_KILL_REASONS érték elfogadott (type-safety verifikáció)', () => {
62
+ const svc = buildSvc();
63
+ const reasons = Object.values(cc_kill_reasons_const_1.CC_KILL_REASONS);
64
+ for (let i = 0; i < reasons.length; i++) {
65
+ svc.markPendingKill({
66
+ sessionId: `ccs-${i}`,
67
+ reason: reasons[i],
68
+ });
69
+ }
70
+ expect(readReasonsMap(svc).size).toBe(reasons.length);
71
+ for (let i = 0; i < reasons.length; i++) {
72
+ expect(readReasonsMap(svc).get(`ccs-${i}`)).toBe(reasons[i]);
73
+ }
74
+ });
75
+ });
76
+ //# sourceMappingURL=cc-adapter-kill-reasons.control-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-adapter-kill-reasons.control-service.spec.js","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter-kill-reasons.control-service.spec.ts"],"names":[],"mappings":"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"}
@@ -13,13 +13,9 @@ import { CC_OutputCallback_Type, CC_ProcessStateCallback_Type, CC_SessionConfig_
13
13
  export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonService {
14
14
  static getInstance(): CC_AdapterTerminal_ControlService;
15
15
  /**
16
- * BUG-CC-TERM-HANG-001 (2026-05-07): server-restart grace iteráció-szám felső
17
- * korlátja. A `runnerGracePeriodSec` (default 3600s = 1h) lifecycle-célra van
18
- * (idle-timeout); a `sendInputViaTerminal` HTTP-blokkoló polling-jában a
19
- * `runnerGracePeriodSec * 2` formula 7200 × 500ms = 60min hang-ot okozott.
20
- * 30s (60 iter × 500ms) elég ahhoz, hogy egy érvényesen reconnect-elő runner
21
- * befigyeljen — utána fail-fast → spawn új terminált / queue-fallback (a
22
- * route-on a transient-failure ág enqueue-olja a prompt-ot).
16
+ * BUG-CC-TERM-HANG-001: server-restart grace iter cap a sendInputViaTerminal
17
+ * polling-hoz `runnerGracePeriodSec * 2` formula 60-iter (30s) cap-pel,
18
+ * hogy a 1h idle-timeout grace ne 60 perces HTTP-hang-ot okozzon.
23
19
  */
24
20
  static computeServerRestartGraceIterations(runnerGracePeriodSec: number): number;
25
21
  /** Terminal mode: sessionId → runner Socket.IO connection. */
@@ -177,12 +173,9 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
177
173
  sessionId: string;
178
174
  }): void;
179
175
  /**
180
- * Összes terminal runner socket lecsatlakoztatása (graceful shutdown).
181
- * Minden csatlakozott runner-nek cc:kill + disconnect-et küldünk a runner az
182
- * 'io server disconnect' reason miatt process.exit(0)-tal lép ki.
183
- * Szükséges, mert a manager handleGracefulShutdown-ja a sessionConfigs map-ből
184
- * iterál, de a momentán lecsatlakozott (reconnect-re váró) runner-ek ott nem
185
- * feltétlenül szerepelnek. Ez a metódus szélesebb halmazt fed le.
176
+ * Összes terminal runner socket lecsatlakoztatása (graceful shutdown) — cc:kill +
177
+ * disconnect minden csatlakozott runner-nek. Szélesebb halmazt fed le mint a manager
178
+ * sessionConfigs alapú iterációja (lecsatlakozott / reconnect-re váró runner-ek is).
186
179
  */
187
180
  disconnectAllRunners(): void;
188
181
  /** Cycle 781: runner version sessionId-hez (undefined ha pre-781 / nincs registration). */
@@ -308,14 +301,10 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
308
301
  */
309
302
  private handleTerminalProcessExit;
310
303
  /**
311
- * Terminal runner buffered output kezelése (cc:buffered-output — reconnect után flush).
312
- * A runner a reconnect pillanatában flush-öli a buffert, de a manager runtimeState-e
313
- * még nem feltétlenül létezik (a recovery nem futott le). Az output-ot a normál
314
- * handleOutput-on átadjuk (ha van runtimeState, azonnal feldolgozódik), ÉS
315
- * a pendingBufferedOutputs-ba is mentjük — a manager a runtimeState létrehozása után
316
- * consumePendingBufferedOutput()-tal lekéri és újra feldolgozza.
317
- * Sequence dedup (REQ-CCSESS-TR-002): a már feldolgozott sequence-ű item-eket eldobjuk.
318
- * Batch végén azonnali `cc:ack` megy vissza a legmagasabb feldolgozott sequence-szel.
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.
319
308
  */
320
309
  private handleTerminalBufferedOutput;
321
310
  /**
@@ -357,14 +346,10 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
357
346
  */
358
347
  private handleProcessStateChange;
359
348
  /**
360
- * Session lezárás guard: aszinkron DB ellenőrzés — ha a session már lezárt
361
- * (completed/terminated/errored) vagy nem létezik, a runner-t kiutasítjuk
362
- * (cc:kill + disconnect). Fire-and-forget a regisztrációt nem blokkolja.
363
- *
364
- * Tipikus eset: szerver restart → recovery lezárja a session-t (grace period lejárt,
365
- * runner nem csatlakozott időben) → a runner CMD ablak túlélte és később mégis
366
- * visszacsatlakozik. Enélkül a runner a lifecycle idle timeout-ig (10 perc)
367
- * feleslegesen nyitva maradna, pipeline restart-onként halmozódva.
349
+ * Session lezárás guard: ha a session DB-állapota completed/terminated/errored vagy
350
+ * törölt, a runner-t cc:kill + disconnect-tel kiutasítjuk (fire-and-forget).
351
+ * Tipikus eset: server restart → recovery lezárta a session-t, de a runner CMD ablak
352
+ * túlélte és reconnect-elt — enélkül idle-timeout-ig nyitva maradna.
368
353
  */
369
354
  private rejectRunnerIfSessionClosed;
370
355
  /**
@@ -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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"}
@@ -39,13 +39,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
39
39
  return CC_AdapterTerminal_ControlService.getSingletonInstance();
40
40
  }
41
41
  /**
42
- * BUG-CC-TERM-HANG-001 (2026-05-07): server-restart grace iteráció-szám felső
43
- * korlátja. A `runnerGracePeriodSec` (default 3600s = 1h) lifecycle-célra van
44
- * (idle-timeout); a `sendInputViaTerminal` HTTP-blokkoló polling-jában a
45
- * `runnerGracePeriodSec * 2` formula 7200 × 500ms = 60min hang-ot okozott.
46
- * 30s (60 iter × 500ms) elég ahhoz, hogy egy érvényesen reconnect-elő runner
47
- * befigyeljen — utána fail-fast → spawn új terminált / queue-fallback (a
48
- * route-on a transient-failure ág enqueue-olja a prompt-ot).
42
+ * BUG-CC-TERM-HANG-001: server-restart grace iter cap a sendInputViaTerminal
43
+ * polling-hoz `runnerGracePeriodSec * 2` formula 60-iter (30s) cap-pel,
44
+ * hogy a 1h idle-timeout grace ne 60 perces HTTP-hang-ot okozzon.
49
45
  */
50
46
  static computeServerRestartGraceIterations(runnerGracePeriodSec) {
51
47
  const desired = Math.max(0, Math.floor(runnerGracePeriodSec)) * 2;
@@ -237,12 +233,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
237
233
  });
238
234
  }
239
235
  /**
240
- * Összes terminal runner socket lecsatlakoztatása (graceful shutdown).
241
- * Minden csatlakozott runner-nek cc:kill + disconnect-et küldünk a runner az
242
- * 'io server disconnect' reason miatt process.exit(0)-tal lép ki.
243
- * Szükséges, mert a manager handleGracefulShutdown-ja a sessionConfigs map-ből
244
- * iterál, de a momentán lecsatlakozott (reconnect-re váró) runner-ek ott nem
245
- * feltétlenül szerepelnek. Ez a metódus szélesebb halmazt fed le.
236
+ * Összes terminal runner socket lecsatlakoztatása (graceful shutdown) — cc:kill +
237
+ * disconnect minden csatlakozott runner-nek. Szélesebb halmazt fed le mint a manager
238
+ * sessionConfigs alapú iterációja (lecsatlakozott / reconnect-re váró runner-ek is).
246
239
  */
247
240
  disconnectAllRunners() {
248
241
  const count = this.terminalSockets.size;
@@ -569,13 +562,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
569
562
  }),
570
563
  });
571
564
  }
572
- // Várakozás a register event-re.
573
- // BUG-CC-TERM-CLOSE-PREMATURE-001 (2026-05-07): 15s 30s timeout. A 15s
574
- // tight egy frissen telepítendő runner-nek (első használat egy gépen, npm
575
- // cache miss, lassú emulator startup, runner self-update). 30s biztos
576
- // margin; a route-szintű queue-fallback (BUG-CC-TERM-HANG-001) továbbra is
577
- // safety net ha ennél is tovább tart, és a `handleTerminalRegister`-ből
578
- // automatikus tryDeliverNext lefut, ha a runner később megérkezik.
565
+ // Várakozás a register event-re (BUG-CC-TERM-CLOSE-PREMATURE-001: 15s → 30s,
566
+ // npm-cache-miss / első spawn cover; queue-fallback safety net marad).
579
567
  const REGISTER_TIMEOUT_MS = 30000;
580
568
  this.terminalIds.set(params.sessionId, terminalId);
581
569
  try {
@@ -1139,14 +1127,10 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
1139
1127
  });
1140
1128
  }
1141
1129
  /**
1142
- * Terminal runner buffered output kezelése (cc:buffered-output — reconnect után flush).
1143
- * A runner a reconnect pillanatában flush-öli a buffert, de a manager runtimeState-e
1144
- * még nem feltétlenül létezik (a recovery nem futott le). Az output-ot a normál
1145
- * handleOutput-on átadjuk (ha van runtimeState, azonnal feldolgozódik), ÉS
1146
- * a pendingBufferedOutputs-ba is mentjük — a manager a runtimeState létrehozása után
1147
- * consumePendingBufferedOutput()-tal lekéri és újra feldolgozza.
1148
- * Sequence dedup (REQ-CCSESS-TR-002): a már feldolgozott sequence-ű item-eket eldobjuk.
1149
- * Batch végén azonnali `cc:ack` megy vissza a legmagasabb feldolgozott sequence-szel.
1130
+ * Terminal runner buffered output (cc:buffered-output — reconnect flush). Az
1131
+ * output-ot a normál handleOutput-ra adjuk + pendingBufferedOutputs-ba mentjük (a
1132
+ * manager recovery után consumePendingBufferedOutput-tal replay-eli). Sequence dedup
1133
+ * REQ-CCSESS-TR-002; batch végén azonnali cc:ack a legmagasabb feldolgozott sequence-re.
1150
1134
  */
1151
1135
  handleTerminalBufferedOutput(params) {
1152
1136
  const data = params.data;
@@ -1417,14 +1401,10 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
1417
1401
  }
1418
1402
  // ── Private: session completion guard ─────────────────────────
1419
1403
  /**
1420
- * Session lezárás guard: aszinkron DB ellenőrzés — ha a session már lezárt
1421
- * (completed/terminated/errored) vagy nem létezik, a runner-t kiutasítjuk
1422
- * (cc:kill + disconnect). Fire-and-forget a regisztrációt nem blokkolja.
1423
- *
1424
- * Tipikus eset: szerver restart → recovery lezárja a session-t (grace period lejárt,
1425
- * runner nem csatlakozott időben) → a runner CMD ablak túlélte és később mégis
1426
- * visszacsatlakozik. Enélkül a runner a lifecycle idle timeout-ig (10 perc)
1427
- * feleslegesen nyitva maradna, pipeline restart-onként halmozódva.
1404
+ * Session lezárás guard: ha a session DB-állapota completed/terminated/errored vagy
1405
+ * törölt, a runner-t cc:kill + disconnect-tel kiutasítjuk (fire-and-forget).
1406
+ * Tipikus eset: server restart → recovery lezárta a session-t, de a runner CMD ablak
1407
+ * túlélte és reconnect-elt — enélkül idle-timeout-ig nyitva maradna.
1428
1408
  */
1429
1409
  rejectRunnerIfSessionClosed(params) {
1430
1410
  const localCcapId = instance_id_service_1.ExS_InstanceId_Service.getInstance().getInstanceId();