@futdevpro/ccap 1.1.2683 → 1.1.2690

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/client-dist/{agent-instances.module-2HKD2NUR.js → agent-instances.module-VQZNL6GE.js} +2 -2
  2. package/client-dist/{ca.module-BTYFWHS7.js → ca.module-BZKTW4QZ.js} +2 -2
  3. package/client-dist/{cc.module-X2FU7LAZ.js → cc.module-AT5MMLDR.js} +2 -2
  4. package/client-dist/{chunk-MFNOZYS5.js → chunk-3J4NFTXC.js} +2 -2
  5. package/client-dist/{chunk-IP5BXXZA.js → chunk-4N2UTVXF.js} +2 -2
  6. package/client-dist/{chunk-KLZV5JWM.js → chunk-4PP5AWGB.js} +2 -2
  7. package/client-dist/{chunk-IOYRWIMG.js → chunk-4QHP7KEA.js} +2 -2
  8. package/client-dist/{chunk-NQZ4B5O7.js → chunk-5PMKWSEX.js} +2 -2
  9. package/client-dist/{chunk-T6HJ2C5I.js → chunk-5ZNZTAJU.js} +2 -2
  10. package/client-dist/{chunk-6TMKKJA6.js → chunk-BM2IENOA.js} +2 -2
  11. package/client-dist/{chunk-ASDTZPXT.js → chunk-BZ65MCLL.js} +2 -2
  12. package/client-dist/{chunk-7XQ2LCAM.js → chunk-C3T4AEEK.js} +2 -2
  13. package/client-dist/{chunk-ZY4PNMPT.js → chunk-CGJRC574.js} +2 -2
  14. package/client-dist/{chunk-MKIZ5GIY.js → chunk-CIFUCUWP.js} +2 -2
  15. package/client-dist/{chunk-ZBSZDODD.js → chunk-CQUJFJ6K.js} +2 -2
  16. package/client-dist/{chunk-ILFSSMFP.js → chunk-DDUWXQAO.js} +2 -2
  17. package/client-dist/{chunk-ASDU4TK7.js → chunk-EC3S5DEZ.js} +2 -2
  18. package/client-dist/{chunk-X3LQQHZE.js → chunk-ESI2WIFF.js} +2 -2
  19. package/client-dist/{chunk-TXEUWSZI.js → chunk-F5BCIUSD.js} +2 -2
  20. package/client-dist/{chunk-TU333II2.js → chunk-FJPOUYOS.js} +2 -2
  21. package/client-dist/{chunk-A7KEFRQQ.js → chunk-FTU4JSZ2.js} +2 -2
  22. package/client-dist/{chunk-SHVXM7SX.js → chunk-FURSDYT7.js} +2 -2
  23. package/client-dist/{chunk-TAGLEMEL.js → chunk-FUYXUNMO.js} +2 -2
  24. package/client-dist/{chunk-L6IHVLSA.js → chunk-H3FXB7NB.js} +2 -2
  25. package/client-dist/{chunk-PM6PS2CC.js → chunk-H7WN6P4L.js} +2 -2
  26. package/client-dist/{chunk-FJIAA6VM.js → chunk-HMB6XJEA.js} +2 -2
  27. package/client-dist/{chunk-Y3V6M5HE.js → chunk-HOVNWJGS.js} +2 -2
  28. package/client-dist/{chunk-JPZF425U.js → chunk-HTD5JNF5.js} +2 -2
  29. package/client-dist/{chunk-CW7SJXGI.js → chunk-IMXKJQ6O.js} +2 -2
  30. package/client-dist/{chunk-OAREY642.js → chunk-IUCMSIF4.js} +2 -2
  31. package/client-dist/{chunk-ZO62FKG5.js → chunk-IVSHY2TK.js} +2 -2
  32. package/client-dist/{chunk-UREO4GTG.js → chunk-K6LM3PNO.js} +2 -2
  33. package/client-dist/{chunk-6GNBDC37.js → chunk-KFNBCV7Q.js} +2 -2
  34. package/client-dist/{chunk-3OZLITDN.js → chunk-KLINUC6P.js} +2 -2
  35. package/client-dist/{chunk-U2VQB6CJ.js → chunk-LLN6KDCH.js} +2 -2
  36. package/client-dist/{chunk-QP75S4BI.js → chunk-MGHK56UO.js} +2 -2
  37. package/client-dist/{chunk-CCCR6YQM.js → chunk-MLUF4V4B.js} +2 -2
  38. package/client-dist/{chunk-ZD3YCC2W.js → chunk-NQ334KZK.js} +2 -2
  39. package/client-dist/{chunk-RQILY4I5.js → chunk-OGC4MISP.js} +2 -2
  40. package/client-dist/{chunk-ND4P3QE3.js → chunk-POJI7RWB.js} +2 -2
  41. package/client-dist/{chunk-XZFVZ3SS.js → chunk-PSMPBQMU.js} +2 -2
  42. package/client-dist/{chunk-SY5OO6CE.js → chunk-RCELE4TO.js} +2 -2
  43. package/client-dist/{chunk-SY5OO6CE.js.map → chunk-RCELE4TO.js.map} +1 -1
  44. package/client-dist/{chunk-4JNOL4Y4.js → chunk-REV723K5.js} +2 -2
  45. package/client-dist/{chunk-CWWAOA6Z.js → chunk-RFXTRYUG.js} +2 -2
  46. package/client-dist/{chunk-W3KMRJY2.js → chunk-T76ILDZB.js} +2 -2
  47. package/client-dist/{chunk-MNRH7H3N.js → chunk-UFGACOFK.js} +2 -2
  48. package/client-dist/{chunk-LRDS7T4M.js → chunk-UQVLZZJR.js} +2 -2
  49. package/client-dist/{chunk-J5BUA63G.js → chunk-UR2HMA2C.js} +2 -2
  50. package/client-dist/{chunk-NY6KEV6E.js → chunk-VHOXBCJH.js} +2 -2
  51. package/client-dist/{chunk-CNVVQZP3.js → chunk-WNDF3EMC.js} +2 -2
  52. package/client-dist/{chunk-6DGRRKAX.js → chunk-WNL4VKFJ.js} +2 -2
  53. package/client-dist/{chunk-NEQ6BSNC.js → chunk-WPBLPSDT.js} +2 -2
  54. package/client-dist/{chunk-KDJX2LVB.js → chunk-WUFCE7PO.js} +2 -2
  55. package/client-dist/{chunk-ZLT6O3S7.js → chunk-XN36VDNB.js} +2 -2
  56. package/client-dist/{chunk-K24TKL3K.js → chunk-XN5CKOPR.js} +2 -2
  57. package/client-dist/{chunk-VFF5BYWY.js → chunk-YEMDFY7F.js} +2 -2
  58. package/client-dist/{chunk-WL34PADK.js → chunk-YJSHQ7E7.js} +2 -2
  59. package/client-dist/{chunk-YH6HHK5D.js → chunk-Z56X76S6.js} +2 -2
  60. package/client-dist/{chunk-EHTQPSGE.js → chunk-ZLYSEXLN.js} +2 -2
  61. package/client-dist/{consultant.module-OV2FRSE2.js → consultant.module-NP6TOFNY.js} +2 -2
  62. package/client-dist/{crd.module-RNYO4PRJ.js → crd.module-ZGSRNP2K.js} +2 -2
  63. package/client-dist/{dashboard.module-IFGUZJNF.js → dashboard.module-DQEUO3Y4.js} +2 -2
  64. package/client-dist/{do.module-2K5JUNNX.js → do.module-SHW2INYW.js} +2 -2
  65. package/client-dist/{document-library.module-VJQISSWM.js → document-library.module-6WUXSEBY.js} +2 -2
  66. package/client-dist/{embedding-eval.module-767GDQOF.js → embedding-eval.module-L4VNFPNR.js} +2 -2
  67. package/client-dist/{embedding-registry.module-ASZYFSOA.js → embedding-registry.module-LNXMWNBK.js} +2 -2
  68. package/client-dist/{err.module-PDZF3RN5.js → err.module-FY4CWWMV.js} +2 -2
  69. package/client-dist/{feedback.module-WFQC7XBM.js → feedback.module-24FP5GIK.js} +2 -2
  70. package/client-dist/{host-runtime-mcp.module-CUXJZ4O7.js → host-runtime-mcp.module-PSBXYD3D.js} +2 -2
  71. package/client-dist/index.html +1 -1
  72. package/client-dist/{live-dev-pipeline.module-2VKZVVVT.js → live-dev-pipeline.module-FUVASTAE.js} +2 -2
  73. package/client-dist/{logs.module-BWR6JZE5.js → logs.module-MNKS4JUQ.js} +2 -2
  74. package/client-dist/{main-EE7CTNCP.js → main-TWLTQWOX.js} +3 -3
  75. package/client-dist/{master-control-remote-poc.module-NKNIILJD.js → master-control-remote-poc.module-CLBJFUOY.js} +2 -2
  76. package/client-dist/{mobile-app.module-XBJPBRUM.js → mobile-app.module-ZKO3TSTC.js} +2 -2
  77. package/client-dist/{model-registry.module-ZNSYL2AE.js → model-registry.module-VBFB3MGF.js} +2 -2
  78. package/client-dist/{oc.module-JX3I6T3S.js → oc.module-BDAL4M7R.js} +2 -2
  79. package/client-dist/{orc.module-4KLZ3TPR.js → orc.module-GGMYT7QW.js} +2 -2
  80. package/client-dist/{project-management.module-YJ43QFKK.js → project-management.module-QDJ2CRR7.js} +2 -2
  81. package/client-dist/project-source-routed.module-UKCF3THE.js +2 -0
  82. package/client-dist/{scheduler.module-JAXQMNTW.js → scheduler.module-W66QPV4G.js} +2 -2
  83. package/client-dist/{session.module-LBMX26RW.js → session.module-Q7XDAQYY.js} +2 -2
  84. package/client-dist/{set.module-56AVWKBT.js → set.module-YSMRTKAB.js} +2 -2
  85. package/client-dist/{setup.module-GVBXLCFD.js → setup.module-CPRP45A2.js} +2 -2
  86. package/client-dist/{terminals.module-XFGSA5TL.js → terminals.module-CA73CZO2.js} +2 -2
  87. package/client-dist/{voice-notes-poc.module-FER2UK4A.js → voice-notes-poc.module-HSSFBPHB.js} +2 -2
  88. package/client-dist/{wfs.module-U2OCYIEP.js → wfs.module-22P5ASNZ.js} +2 -2
  89. package/package.json +1 -1
  90. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +31 -23
  91. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
  92. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +94 -30
  93. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
  94. package/client-dist/project-source-routed.module-KU7IXJAI.js +0 -2
  95. /package/client-dist/{agent-instances.module-2HKD2NUR.js.map → agent-instances.module-VQZNL6GE.js.map} +0 -0
  96. /package/client-dist/{ca.module-BTYFWHS7.js.map → ca.module-BZKTW4QZ.js.map} +0 -0
  97. /package/client-dist/{cc.module-X2FU7LAZ.js.map → cc.module-AT5MMLDR.js.map} +0 -0
  98. /package/client-dist/{chunk-MFNOZYS5.js.map → chunk-3J4NFTXC.js.map} +0 -0
  99. /package/client-dist/{chunk-IP5BXXZA.js.map → chunk-4N2UTVXF.js.map} +0 -0
  100. /package/client-dist/{chunk-KLZV5JWM.js.map → chunk-4PP5AWGB.js.map} +0 -0
  101. /package/client-dist/{chunk-IOYRWIMG.js.map → chunk-4QHP7KEA.js.map} +0 -0
  102. /package/client-dist/{chunk-NQZ4B5O7.js.map → chunk-5PMKWSEX.js.map} +0 -0
  103. /package/client-dist/{chunk-T6HJ2C5I.js.map → chunk-5ZNZTAJU.js.map} +0 -0
  104. /package/client-dist/{chunk-6TMKKJA6.js.map → chunk-BM2IENOA.js.map} +0 -0
  105. /package/client-dist/{chunk-ASDTZPXT.js.map → chunk-BZ65MCLL.js.map} +0 -0
  106. /package/client-dist/{chunk-7XQ2LCAM.js.map → chunk-C3T4AEEK.js.map} +0 -0
  107. /package/client-dist/{chunk-ZY4PNMPT.js.map → chunk-CGJRC574.js.map} +0 -0
  108. /package/client-dist/{chunk-MKIZ5GIY.js.map → chunk-CIFUCUWP.js.map} +0 -0
  109. /package/client-dist/{chunk-ZBSZDODD.js.map → chunk-CQUJFJ6K.js.map} +0 -0
  110. /package/client-dist/{chunk-ILFSSMFP.js.map → chunk-DDUWXQAO.js.map} +0 -0
  111. /package/client-dist/{chunk-ASDU4TK7.js.map → chunk-EC3S5DEZ.js.map} +0 -0
  112. /package/client-dist/{chunk-X3LQQHZE.js.map → chunk-ESI2WIFF.js.map} +0 -0
  113. /package/client-dist/{chunk-TXEUWSZI.js.map → chunk-F5BCIUSD.js.map} +0 -0
  114. /package/client-dist/{chunk-TU333II2.js.map → chunk-FJPOUYOS.js.map} +0 -0
  115. /package/client-dist/{chunk-A7KEFRQQ.js.map → chunk-FTU4JSZ2.js.map} +0 -0
  116. /package/client-dist/{chunk-SHVXM7SX.js.map → chunk-FURSDYT7.js.map} +0 -0
  117. /package/client-dist/{chunk-TAGLEMEL.js.map → chunk-FUYXUNMO.js.map} +0 -0
  118. /package/client-dist/{chunk-L6IHVLSA.js.map → chunk-H3FXB7NB.js.map} +0 -0
  119. /package/client-dist/{chunk-PM6PS2CC.js.map → chunk-H7WN6P4L.js.map} +0 -0
  120. /package/client-dist/{chunk-FJIAA6VM.js.map → chunk-HMB6XJEA.js.map} +0 -0
  121. /package/client-dist/{chunk-Y3V6M5HE.js.map → chunk-HOVNWJGS.js.map} +0 -0
  122. /package/client-dist/{chunk-JPZF425U.js.map → chunk-HTD5JNF5.js.map} +0 -0
  123. /package/client-dist/{chunk-CW7SJXGI.js.map → chunk-IMXKJQ6O.js.map} +0 -0
  124. /package/client-dist/{chunk-OAREY642.js.map → chunk-IUCMSIF4.js.map} +0 -0
  125. /package/client-dist/{chunk-ZO62FKG5.js.map → chunk-IVSHY2TK.js.map} +0 -0
  126. /package/client-dist/{chunk-UREO4GTG.js.map → chunk-K6LM3PNO.js.map} +0 -0
  127. /package/client-dist/{chunk-6GNBDC37.js.map → chunk-KFNBCV7Q.js.map} +0 -0
  128. /package/client-dist/{chunk-3OZLITDN.js.map → chunk-KLINUC6P.js.map} +0 -0
  129. /package/client-dist/{chunk-U2VQB6CJ.js.map → chunk-LLN6KDCH.js.map} +0 -0
  130. /package/client-dist/{chunk-QP75S4BI.js.map → chunk-MGHK56UO.js.map} +0 -0
  131. /package/client-dist/{chunk-CCCR6YQM.js.map → chunk-MLUF4V4B.js.map} +0 -0
  132. /package/client-dist/{chunk-ZD3YCC2W.js.map → chunk-NQ334KZK.js.map} +0 -0
  133. /package/client-dist/{chunk-RQILY4I5.js.map → chunk-OGC4MISP.js.map} +0 -0
  134. /package/client-dist/{chunk-ND4P3QE3.js.map → chunk-POJI7RWB.js.map} +0 -0
  135. /package/client-dist/{chunk-XZFVZ3SS.js.map → chunk-PSMPBQMU.js.map} +0 -0
  136. /package/client-dist/{chunk-4JNOL4Y4.js.map → chunk-REV723K5.js.map} +0 -0
  137. /package/client-dist/{chunk-CWWAOA6Z.js.map → chunk-RFXTRYUG.js.map} +0 -0
  138. /package/client-dist/{chunk-W3KMRJY2.js.map → chunk-T76ILDZB.js.map} +0 -0
  139. /package/client-dist/{chunk-MNRH7H3N.js.map → chunk-UFGACOFK.js.map} +0 -0
  140. /package/client-dist/{chunk-LRDS7T4M.js.map → chunk-UQVLZZJR.js.map} +0 -0
  141. /package/client-dist/{chunk-J5BUA63G.js.map → chunk-UR2HMA2C.js.map} +0 -0
  142. /package/client-dist/{chunk-NY6KEV6E.js.map → chunk-VHOXBCJH.js.map} +0 -0
  143. /package/client-dist/{chunk-CNVVQZP3.js.map → chunk-WNDF3EMC.js.map} +0 -0
  144. /package/client-dist/{chunk-6DGRRKAX.js.map → chunk-WNL4VKFJ.js.map} +0 -0
  145. /package/client-dist/{chunk-NEQ6BSNC.js.map → chunk-WPBLPSDT.js.map} +0 -0
  146. /package/client-dist/{chunk-KDJX2LVB.js.map → chunk-WUFCE7PO.js.map} +0 -0
  147. /package/client-dist/{chunk-ZLT6O3S7.js.map → chunk-XN36VDNB.js.map} +0 -0
  148. /package/client-dist/{chunk-K24TKL3K.js.map → chunk-XN5CKOPR.js.map} +0 -0
  149. /package/client-dist/{chunk-VFF5BYWY.js.map → chunk-YEMDFY7F.js.map} +0 -0
  150. /package/client-dist/{chunk-WL34PADK.js.map → chunk-YJSHQ7E7.js.map} +0 -0
  151. /package/client-dist/{chunk-YH6HHK5D.js.map → chunk-Z56X76S6.js.map} +0 -0
  152. /package/client-dist/{chunk-EHTQPSGE.js.map → chunk-ZLYSEXLN.js.map} +0 -0
  153. /package/client-dist/{consultant.module-OV2FRSE2.js.map → consultant.module-NP6TOFNY.js.map} +0 -0
  154. /package/client-dist/{crd.module-RNYO4PRJ.js.map → crd.module-ZGSRNP2K.js.map} +0 -0
  155. /package/client-dist/{dashboard.module-IFGUZJNF.js.map → dashboard.module-DQEUO3Y4.js.map} +0 -0
  156. /package/client-dist/{do.module-2K5JUNNX.js.map → do.module-SHW2INYW.js.map} +0 -0
  157. /package/client-dist/{document-library.module-VJQISSWM.js.map → document-library.module-6WUXSEBY.js.map} +0 -0
  158. /package/client-dist/{embedding-eval.module-767GDQOF.js.map → embedding-eval.module-L4VNFPNR.js.map} +0 -0
  159. /package/client-dist/{embedding-registry.module-ASZYFSOA.js.map → embedding-registry.module-LNXMWNBK.js.map} +0 -0
  160. /package/client-dist/{err.module-PDZF3RN5.js.map → err.module-FY4CWWMV.js.map} +0 -0
  161. /package/client-dist/{feedback.module-WFQC7XBM.js.map → feedback.module-24FP5GIK.js.map} +0 -0
  162. /package/client-dist/{host-runtime-mcp.module-CUXJZ4O7.js.map → host-runtime-mcp.module-PSBXYD3D.js.map} +0 -0
  163. /package/client-dist/{live-dev-pipeline.module-2VKZVVVT.js.map → live-dev-pipeline.module-FUVASTAE.js.map} +0 -0
  164. /package/client-dist/{logs.module-BWR6JZE5.js.map → logs.module-MNKS4JUQ.js.map} +0 -0
  165. /package/client-dist/{main-EE7CTNCP.js.map → main-TWLTQWOX.js.map} +0 -0
  166. /package/client-dist/{master-control-remote-poc.module-NKNIILJD.js.map → master-control-remote-poc.module-CLBJFUOY.js.map} +0 -0
  167. /package/client-dist/{mobile-app.module-XBJPBRUM.js.map → mobile-app.module-ZKO3TSTC.js.map} +0 -0
  168. /package/client-dist/{model-registry.module-ZNSYL2AE.js.map → model-registry.module-VBFB3MGF.js.map} +0 -0
  169. /package/client-dist/{oc.module-JX3I6T3S.js.map → oc.module-BDAL4M7R.js.map} +0 -0
  170. /package/client-dist/{orc.module-4KLZ3TPR.js.map → orc.module-GGMYT7QW.js.map} +0 -0
  171. /package/client-dist/{project-management.module-YJ43QFKK.js.map → project-management.module-QDJ2CRR7.js.map} +0 -0
  172. /package/client-dist/{project-source-routed.module-KU7IXJAI.js.map → project-source-routed.module-UKCF3THE.js.map} +0 -0
  173. /package/client-dist/{scheduler.module-JAXQMNTW.js.map → scheduler.module-W66QPV4G.js.map} +0 -0
  174. /package/client-dist/{session.module-LBMX26RW.js.map → session.module-Q7XDAQYY.js.map} +0 -0
  175. /package/client-dist/{set.module-56AVWKBT.js.map → set.module-YSMRTKAB.js.map} +0 -0
  176. /package/client-dist/{setup.module-GVBXLCFD.js.map → setup.module-CPRP45A2.js.map} +0 -0
  177. /package/client-dist/{terminals.module-XFGSA5TL.js.map → terminals.module-CA73CZO2.js.map} +0 -0
  178. /package/client-dist/{voice-notes-poc.module-FER2UK4A.js.map → voice-notes-poc.module-HSSFBPHB.js.map} +0 -0
  179. /package/client-dist/{wfs.module-U2OCYIEP.js.map → wfs.module-22P5ASNZ.js.map} +0 -0
@@ -1,3 +1,3 @@
1
- import{a as se}from"./chunk-ASDTZPXT.js";import"./chunk-A7KEFRQQ.js";import"./chunk-LRDS7T4M.js";import"./chunk-MNRH7H3N.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-L6IHVLSA.js";import{I as le}from"./chunk-SY5OO6CE.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-BZ65MCLL.js";import"./chunk-FTU4JSZ2.js";import"./chunk-UQVLZZJR.js";import"./chunk-UFGACOFK.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-H3FXB7NB.js";import{I as le}from"./chunk-RCELE4TO.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-U2OCYIEP.js.map
3
+ //# sourceMappingURL=wfs.module-22P5ASNZ.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/ccap",
3
- "version": "1.1.2683",
3
+ "version": "1.1.2690",
4
4
  "description": "CCAP Revisioned – Agent architektúra; CLI, server, client, e2e alprojektek.",
5
5
  "bin": {
6
6
  "ccap": "./bin/ccap.js"
@@ -1,14 +1,10 @@
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).
5
- * Minden terminál-specifikus funkció: Socket.IO namespace, runner spawn,
6
- * output/exit/overflow/disconnect kezelés, sequence dedup, ack throttle,
7
- * flapping detection, grace period, buffered output, config reload.
8
- *
9
- * Az adapter a CC_Adapter_ControlService-ből delegál ide minden terminal
10
- * mode művelet — a két service közötti kommunikáció callback-eken és
11
- * shared reference-eken (sessionConfigs map) keresztül történik.
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.
12
8
  */
13
9
  export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonService {
14
10
  static getInstance(): CC_AdapterTerminal_ControlService;
@@ -62,30 +58,42 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
62
58
  * mert a pipeline ugyanabban a Node.js process-ben fut a require-on keresztül). */
63
59
  private readonly moduleLoadedAt;
64
60
  /**
65
- * BUG-CC-RESTART-RECOVERY-POLL-001 (2026-05-08): in-flight resumeSession check
66
- * callback (cyclic-import elkerülésére). A manager bootstrap-kor regisztrálja
67
- * `setResumeInFlightChecker((sessionId) => manager.isResumeInFlight(sessionId))`-vel.
68
- * A `verifyAndKillIfStillClosed` használja, hogy ne ölje meg a friss runner-t,
69
- * miközben a resumeSession épp DB-státusz reset-en dolgozik (200ms re-read race).
70
- * Default: () => false (manager még nincs készen → konzervatív, nem véd).
61
+ * BUG-CC-RESTART-RECOVERY-POLL-001: in-flight resumeSession check callback
62
+ * (cyclic-import elkerülésére). Manager bootstrap-kor regisztrálja; a
63
+ * `verifyAndKillIfStillClosed` használja a 200ms re-read race-vel szemben
64
+ * (NE öljük a friss runner-t, ha resumeSession DB-status reset-en dolgozik).
65
+ * Default `() => false` manager még nincs készen → konzervatív, nem véd.
71
66
  */
72
67
  private resumeInFlightChecker;
73
68
  /** Manager bootstrap-kor regisztrálja a checker-t. */
74
69
  setResumeInFlightChecker(checker: (sessionId: string) => boolean): void;
75
70
  /**
76
- * BUG-CC-TERM-STALE-STARTING-001 (2026-05-08, cycle 807): terminal-spawn
77
- * in-flight tracker. A manager `isBusyProcessing` ezt használja a stale
78
- * `creating`/`starting` státusz detektálásához:
79
- * - Ha a session runtime status = `starting`, de a spawnInFlight Set
80
- * NEM tartalmazza a sessionId-t stale (spawn rég elhasalt vagy interrupted),
81
- * a stale-running override kibővítve direct-path-ra → fresh spawn.
82
- * - Ha a Set tartalmazza → tényleges spawn folyik, busy → queue.
83
- * Add: `sendInputViaTerminal` cycle 805 status-push előtt.
84
- * Delete: try/finally garantáltan, hibaúton is.
71
+ * BUG-CC-TERM-STALE-STARTING-001 (cycle 807): terminal-spawn in-flight tracker.
72
+ * Manager `isBusyProcessing` használja: ha runtime=`starting` ÉS a Set NEM
73
+ * tartalmazza a sessionId-t → stale spawn → fresh spawn override; ha tartalmazza
74
+ * tényleges spawn folyik, busy queue. Add a sendInputViaTerminal status-push
75
+ * előtt (cycle 805); delete try/finally-ben, hibaúton is.
85
76
  */
86
77
  private spawnInFlightSessions;
87
78
  /** Public: a manager.isBusyProcessing checkje hozzá. */
88
79
  isSpawnInFlight(sessionId: string): boolean;
80
+ /**
81
+ * BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (2026-05-08, cycle 808):
82
+ * deferred disconnect → waitingInput flip timers. A `handleTerminalDisconnect`
83
+ * eddig azonnal `waitingInput`-ra flippelte a sessiont, de a tranziens
84
+ * Socket.IO disconnect (network blip, proxy timeout — ~1-3s alatt auto-reconnect)
85
+ * pont elég időt adott, hogy a user új üzenetet küldjön a látszólagos „idle"
86
+ * sessionnek → direct path → cc:spawn-prompt → runner kill old claude →
87
+ * process-replace (user-tünet: „belehányt nekem egy üzenetet a futó folyamatba").
88
+ *
89
+ * New logika: disconnect-kor 5s-os deferred timer. Ha a runner reconnect-el
90
+ * időben (handleTerminalRegister), a timer cancel-elve, status marad `running`.
91
+ * Ha 5s után még mindig nincs runner, a flip végrehajtódik.
92
+ */
93
+ private deferredDisconnectFlips;
94
+ /** Disconnect-deferred-flip timer cleanup constant. 5s biztos margin tranziens
95
+ * Socket.IO reconnect-re (default exponential backoff 1s, 2s, 4s). */
96
+ private static readonly DISCONNECT_FLIP_DEFER_MS;
89
97
  /** Flapping detection: gyors connect/disconnect ciklusok számlálása per session.
90
98
  * count: window-based counter (FLAP_WINDOW_MS ablakon belüli disconnect-ek).
91
99
  * totalCount: kumulatív counter (az output/reset óta összesen — force-exit-hez). */
@@ -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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"}
@@ -23,14 +23,10 @@ const cc_terminal_data_service_1 = require("./cc-terminal.data-service");
23
23
  const cc_terminal_lifecycle_control_service_1 = require("./cc-terminal-lifecycle.control-service");
24
24
  const cc_terminal_runner_spawn_util_1 = require("./cc-terminal-runner-spawn.util");
25
25
  /**
26
- * CC Session terminal mode adapter (singleton).
27
- * Minden terminál-specifikus funkció: Socket.IO namespace, runner spawn,
28
- * output/exit/overflow/disconnect kezelés, sequence dedup, ack throttle,
29
- * flapping detection, grace period, buffered output, config reload.
30
- *
31
- * Az adapter a CC_Adapter_ControlService-ből delegál ide minden terminal
32
- * mode művelet — a két service közötti kommunikáció callback-eken és
33
- * shared reference-eken (sessionConfigs map) keresztül történik.
26
+ * CC Session terminal mode adapter (singleton). Socket.IO namespace, runner spawn,
27
+ * output/exit/overflow/disconnect, sequence dedup, ack throttle, flapping detection,
28
+ * grace period, buffered output, config reload. CC_Adapter_ControlService delegál ide;
29
+ * kommunikáció callback-en és shared reference-eken (sessionConfigs map) keresztül.
34
30
  */
35
31
  class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
36
32
  static getInstance() {
@@ -91,12 +87,11 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
91
87
  * mert a pipeline ugyanabban a Node.js process-ben fut a require-on keresztül). */
92
88
  moduleLoadedAt = Date.now();
93
89
  /**
94
- * BUG-CC-RESTART-RECOVERY-POLL-001 (2026-05-08): in-flight resumeSession check
95
- * callback (cyclic-import elkerülésére). A manager bootstrap-kor regisztrálja
96
- * `setResumeInFlightChecker((sessionId) => manager.isResumeInFlight(sessionId))`-vel.
97
- * A `verifyAndKillIfStillClosed` használja, hogy ne ölje meg a friss runner-t,
98
- * miközben a resumeSession épp DB-státusz reset-en dolgozik (200ms re-read race).
99
- * Default: () => false (manager még nincs készen → konzervatív, nem véd).
90
+ * BUG-CC-RESTART-RECOVERY-POLL-001: in-flight resumeSession check callback
91
+ * (cyclic-import elkerülésére). Manager bootstrap-kor regisztrálja; a
92
+ * `verifyAndKillIfStillClosed` használja a 200ms re-read race-vel szemben
93
+ * (NE öljük a friss runner-t, ha resumeSession DB-status reset-en dolgozik).
94
+ * Default `() => false` manager még nincs készen → konzervatív, nem véd.
100
95
  */
101
96
  resumeInFlightChecker = () => false;
102
97
  /** Manager bootstrap-kor regisztrálja a checker-t. */
@@ -104,21 +99,34 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
104
99
  this.resumeInFlightChecker = checker;
105
100
  }
106
101
  /**
107
- * BUG-CC-TERM-STALE-STARTING-001 (2026-05-08, cycle 807): terminal-spawn
108
- * in-flight tracker. A manager `isBusyProcessing` ezt használja a stale
109
- * `creating`/`starting` státusz detektálásához:
110
- * - Ha a session runtime status = `starting`, de a spawnInFlight Set
111
- * NEM tartalmazza a sessionId-t stale (spawn rég elhasalt vagy interrupted),
112
- * a stale-running override kibővítve direct-path-ra → fresh spawn.
113
- * - Ha a Set tartalmazza → tényleges spawn folyik, busy → queue.
114
- * Add: `sendInputViaTerminal` cycle 805 status-push előtt.
115
- * Delete: try/finally garantáltan, hibaúton is.
102
+ * BUG-CC-TERM-STALE-STARTING-001 (cycle 807): terminal-spawn in-flight tracker.
103
+ * Manager `isBusyProcessing` használja: ha runtime=`starting` ÉS a Set NEM
104
+ * tartalmazza a sessionId-t → stale spawn → fresh spawn override; ha tartalmazza
105
+ * tényleges spawn folyik, busy queue. Add a sendInputViaTerminal status-push
106
+ * előtt (cycle 805); delete try/finally-ben, hibaúton is.
116
107
  */
117
108
  spawnInFlightSessions = new Set();
118
109
  /** Public: a manager.isBusyProcessing checkje hozzá. */
119
110
  isSpawnInFlight(sessionId) {
120
111
  return this.spawnInFlightSessions.has(sessionId);
121
112
  }
113
+ /**
114
+ * BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (2026-05-08, cycle 808):
115
+ * deferred disconnect → waitingInput flip timers. A `handleTerminalDisconnect`
116
+ * eddig azonnal `waitingInput`-ra flippelte a sessiont, de a tranziens
117
+ * Socket.IO disconnect (network blip, proxy timeout — ~1-3s alatt auto-reconnect)
118
+ * pont elég időt adott, hogy a user új üzenetet küldjön a látszólagos „idle"
119
+ * sessionnek → direct path → cc:spawn-prompt → runner kill old claude →
120
+ * process-replace (user-tünet: „belehányt nekem egy üzenetet a futó folyamatba").
121
+ *
122
+ * New logika: disconnect-kor 5s-os deferred timer. Ha a runner reconnect-el
123
+ * időben (handleTerminalRegister), a timer cancel-elve, status marad `running`.
124
+ * Ha 5s után még mindig nincs runner, a flip végrehajtódik.
125
+ */
126
+ deferredDisconnectFlips = new Map();
127
+ /** Disconnect-deferred-flip timer cleanup constant. 5s biztos margin tranziens
128
+ * Socket.IO reconnect-re (default exponential backoff 1s, 2s, 4s). */
129
+ static DISCONNECT_FLIP_DEFER_MS = 5000;
122
130
  /** Flapping detection: gyors connect/disconnect ciklusok számlálása per session.
123
131
  * count: window-based counter (FLAP_WINDOW_MS ablakon belüli disconnect-ek).
124
132
  * totalCount: kumulatív counter (az output/reset óta összesen — force-exit-hez). */
@@ -1016,6 +1024,17 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
1016
1024
  this.terminalSockets.set(sessionId, params.socket);
1017
1025
  this.terminalIds.set(sessionId, terminalId);
1018
1026
  this.hadRunnerSet.add(sessionId);
1027
+ // BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): cancel any
1028
+ // pending deferred disconnect → waitingInput flip — a runner épp visszacsatlakozott,
1029
+ // a status maradjon ami volt (`running`/`waitingInput` változatlanul).
1030
+ const deferredFlip = this.deferredDisconnectFlips.get(sessionId);
1031
+ if (deferredFlip) {
1032
+ clearTimeout(deferredFlip);
1033
+ this.deferredDisconnectFlips.delete(sessionId);
1034
+ fsm_dynamo_1.DyFM_Log.info(`CC_AdapterTerminal | deferred-disconnect-flip CANCELLED on reconnect`
1035
+ + ` | session: ${sessionId}`
1036
+ + ` | terminalId: ${terminalId}`);
1037
+ }
1019
1038
  // Lifecycle regisztráció: idle-timeout + max-lifetime tracking kezdete.
1020
1039
  cc_terminal_lifecycle_control_service_1.CC_TerminalLifecycle_ControlService.getInstance().registerRunnerSpawn({
1021
1040
  sessionId: sessionId,
@@ -1400,13 +1419,58 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
1400
1419
  + ` | session: ${sessionId} | terminalId: ${terminalId}`, findErr);
1401
1420
  });
1402
1421
  }
1403
- // Session manager értesítése: a futó prompt elveszett (runner ablak bezárva).
1404
- // waitingInput-ra váltunk, hogy a user azonnal újra tudjon küldeni.
1405
- this.handleProcessStateChange({
1406
- sessionId: sessionId,
1407
- status: cc_status_enum_1.CC_Status_Type.waitingInput,
1408
- statusMessage: 'Terminal runner disconnected — window may have been closed',
1409
- });
1422
+ // BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (2026-05-08, cycle 808):
1423
+ // DEFERRED flip waitingInput. Eddig azonnal flip-elt, de a tranziens
1424
+ // Socket.IO blip ~1-3s alatt reconnect-elve a status `running` → `waitingInput`
1425
+ // → user „futó folyamatba belehányt egy üzenetet" race-et adott.
1426
+ //
1427
+ // Új logika:
1428
+ // - Pending kill reason esetén (intencionált kill): AZONNAL flip
1429
+ // (process-exit handler a status-t cycle 802 fix szerint amúgy is helyesen
1430
+ // állítja, de a disconnect után még explicit waitingInput-ra megyünk).
1431
+ // - Egyébként (unexpected disconnect): 5s deferred timer. Ha addig a
1432
+ // handleTerminalRegister fire-ol (reconnect), a timer cancel-elve.
1433
+ //
1434
+ // A pendingKillReasons flag-et a fenti error-recording már lekérdezte —
1435
+ // itt is ugyanazt használjuk.
1436
+ if (pendingKillReason) {
1437
+ this.handleProcessStateChange({
1438
+ sessionId: sessionId,
1439
+ status: cc_status_enum_1.CC_Status_Type.waitingInput,
1440
+ statusMessage: `Terminal runner disconnected (kill reason: ${pendingKillReason})`,
1441
+ });
1442
+ }
1443
+ else {
1444
+ // Cancel previous deferred flip (defenzív, ha többször disconnect-elt egymás után).
1445
+ const existing = this.deferredDisconnectFlips.get(sessionId);
1446
+ if (existing) {
1447
+ clearTimeout(existing);
1448
+ }
1449
+ fsm_dynamo_1.DyFM_Log.info(`CC_AdapterTerminal | deferred-disconnect-flip scheduled`
1450
+ + ` | session: ${sessionId}`
1451
+ + ` | deferMs: ${CC_AdapterTerminal_ControlService.DISCONNECT_FLIP_DEFER_MS}`
1452
+ + ` | rationale: tranziens Socket.IO reconnect window — ne flip-eljünk`
1453
+ + ` | runtime status, user-prompt race-protect`);
1454
+ const timer = setTimeout(() => {
1455
+ this.deferredDisconnectFlips.delete(sessionId);
1456
+ // Re-check: csak akkor flip-eljünk, ha még mindig nincs runner socket.
1457
+ if (this.terminalSockets.has(sessionId)) {
1458
+ fsm_dynamo_1.DyFM_Log.info(`CC_AdapterTerminal | deferred-disconnect-flip CANCELLED`
1459
+ + ` (runner reconnected within ${CC_AdapterTerminal_ControlService.DISCONNECT_FLIP_DEFER_MS}ms)`
1460
+ + ` | session: ${sessionId}`);
1461
+ return;
1462
+ }
1463
+ fsm_dynamo_1.DyFM_Log.info(`CC_AdapterTerminal | deferred-disconnect-flip FIRED → waitingInput`
1464
+ + ` | session: ${sessionId}`);
1465
+ this.handleProcessStateChange({
1466
+ sessionId: sessionId,
1467
+ status: cc_status_enum_1.CC_Status_Type.waitingInput,
1468
+ statusMessage: 'Terminal runner disconnected — window may have been closed'
1469
+ + ` (deferred ${CC_AdapterTerminal_ControlService.DISCONNECT_FLIP_DEFER_MS}ms — no reconnect)`,
1470
+ });
1471
+ }, CC_AdapterTerminal_ControlService.DISCONNECT_FLIP_DEFER_MS);
1472
+ this.deferredDisconnectFlips.set(sessionId, timer);
1473
+ }
1410
1474
  break;
1411
1475
  }
1412
1476
  }