@futdevpro/ccap 1.1.2749 → 1.1.2753
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-dist/{agent-instances.module-KYFXXE2P.js → agent-instances.module-XHV2TP7O.js} +2 -2
- package/client-dist/{ca.module-RWHD6LXU.js → ca.module-UYSJWH3C.js} +2 -2
- package/client-dist/{cc.module-WPRWAZYU.js → cc.module-44GWX6ZS.js} +2 -2
- package/client-dist/{chunk-UW5O3STF.js → chunk-2DB3LR7O.js} +2 -2
- package/client-dist/{chunk-OMRPFHEJ.js → chunk-2DT3DQYP.js} +2 -2
- package/client-dist/{chunk-67QKRQLQ.js → chunk-2EQNUA63.js} +2 -2
- package/client-dist/{chunk-HNLHZQRG.js → chunk-2UXMIPN2.js} +2 -2
- package/client-dist/{chunk-Z35RKCWS.js → chunk-2WNVREPI.js} +2 -2
- package/client-dist/{chunk-G5YPQMN5.js → chunk-5SPKC3YD.js} +2 -2
- package/client-dist/{chunk-GMMQ2FL7.js → chunk-6UEUYDO3.js} +2 -2
- package/client-dist/{chunk-WETGNUC3.js → chunk-6UVLEDQ5.js} +2 -2
- package/client-dist/{chunk-BZLG5IJW.js → chunk-A2LLUPKC.js} +2 -2
- package/client-dist/{chunk-ERS3ZHTB.js → chunk-AVAPH2PU.js} +2 -2
- package/client-dist/{chunk-RZ56ZYQT.js → chunk-B2SWOZ3Y.js} +2 -2
- package/client-dist/{chunk-6M2NXO3Q.js → chunk-B47JDGMP.js} +2 -2
- package/client-dist/{chunk-DYIC2JMH.js → chunk-BPYGD4JQ.js} +2 -2
- package/client-dist/{chunk-RSLPTFYL.js → chunk-CRJIE2EH.js} +2 -2
- package/client-dist/{chunk-ZVQ2UNPH.js → chunk-CVWZBWR5.js} +2 -2
- package/client-dist/{chunk-ZJN7HPJO.js → chunk-DFWKG5PG.js} +2 -2
- package/client-dist/{chunk-EFPTGV5U.js → chunk-EBPDLIZX.js} +2 -2
- package/client-dist/{chunk-QDMEESUI.js → chunk-EKJHVEA5.js} +2 -2
- package/client-dist/{chunk-KDQ4CLGV.js → chunk-FIZNVKIB.js} +2 -2
- package/client-dist/{chunk-GWIQI2N7.js → chunk-FLOT2NPP.js} +2 -2
- package/client-dist/{chunk-S3VH4N3I.js → chunk-FLV3DZFK.js} +2 -2
- package/client-dist/{chunk-S3VH4N3I.js.map → chunk-FLV3DZFK.js.map} +1 -1
- package/client-dist/{chunk-WQY4QJWB.js → chunk-FSAVUX6K.js} +2 -2
- package/client-dist/{chunk-2VKOQN4P.js → chunk-GI5DILVT.js} +2 -2
- package/client-dist/{chunk-GVTS43MP.js → chunk-GL2VABJP.js} +2 -2
- package/client-dist/{chunk-ISBQUFDF.js → chunk-H4OQI5J3.js} +2 -2
- package/client-dist/{chunk-RWGTH2YM.js → chunk-HF3XSXX2.js} +2 -2
- package/client-dist/{chunk-VPUGWJWE.js → chunk-ILJFTJNR.js} +2 -2
- package/client-dist/{chunk-KWT2JZYX.js → chunk-J7IUX23G.js} +2 -2
- package/client-dist/{chunk-2TQNCIGY.js → chunk-JKIF6YFY.js} +2 -2
- package/client-dist/{chunk-2JYKGMVI.js → chunk-K63M327A.js} +2 -2
- package/client-dist/{chunk-SYRG7QOC.js → chunk-LMEEH4DP.js} +2 -2
- package/client-dist/{chunk-JFVWOOZP.js → chunk-LOO2HFML.js} +2 -2
- package/client-dist/{chunk-XLNGR3PM.js → chunk-MAJ6ZV5G.js} +2 -2
- package/client-dist/{chunk-DJ6MA7RT.js → chunk-MVA4T5TS.js} +2 -2
- package/client-dist/{chunk-FBUMI7EK.js → chunk-NAUSJ6P2.js} +2 -2
- package/client-dist/{chunk-3PU7WKII.js → chunk-NHHSHFA7.js} +2 -2
- package/client-dist/{chunk-5G6Q7TO7.js → chunk-OVJXBB2W.js} +2 -2
- package/client-dist/{chunk-SNKBDLEM.js → chunk-PF4X6EZW.js} +2 -2
- package/client-dist/{chunk-EV4NWX6X.js → chunk-R2OAZ7WY.js} +2 -2
- package/client-dist/{chunk-4HH4TGXP.js → chunk-SHZBLYY4.js} +2 -2
- package/client-dist/{chunk-A3EQLOB5.js → chunk-SNFKG7OD.js} +2 -2
- package/client-dist/{chunk-DQMRKYSF.js → chunk-SYLBNS6X.js} +2 -2
- package/client-dist/{chunk-U5ZZWIXY.js → chunk-T4RST354.js} +2 -2
- package/client-dist/{chunk-IXSUD323.js → chunk-UIBU3OVP.js} +2 -2
- package/client-dist/{chunk-YJIAKZVX.js → chunk-UOR473MY.js} +2 -2
- package/client-dist/{chunk-2O6DZKLR.js → chunk-UQXHY37I.js} +2 -2
- package/client-dist/{chunk-Y2FV6RJE.js → chunk-V2ERRMCF.js} +2 -2
- package/client-dist/{chunk-2T4T6CTO.js → chunk-VQMBB25J.js} +2 -2
- package/client-dist/{chunk-AUMGM767.js → chunk-W2W4RTI2.js} +2 -2
- package/client-dist/{chunk-VVFIPTOB.js → chunk-WCWRDALU.js} +2 -2
- package/client-dist/{chunk-X4NLQNO3.js → chunk-WCXV5NA2.js} +2 -2
- package/client-dist/{chunk-CTEGJJMC.js → chunk-WMLWXBWW.js} +2 -2
- package/client-dist/{chunk-NKSIHOBJ.js → chunk-WWJAJOFD.js} +2 -2
- package/client-dist/{chunk-PWGHC7B5.js → chunk-Z5IJ2US2.js} +2 -2
- package/client-dist/{chunk-362V7NPI.js → chunk-Z7MOK6IL.js} +2 -2
- package/client-dist/{chunk-LXS7M7UJ.js → chunk-ZYJOLIZR.js} +2 -2
- package/client-dist/{consultant.module-SPM43UQ2.js → consultant.module-5QV23GWU.js} +2 -2
- package/client-dist/{crd.module-4XDCOAWY.js → crd.module-AX2RY7FA.js} +2 -2
- package/client-dist/{dashboard.module-QQUANJLH.js → dashboard.module-BTH5D3RA.js} +2 -2
- package/client-dist/{do.module-H6CBWJJI.js → do.module-GTG4R5I6.js} +2 -2
- package/client-dist/{document-library.module-OMLDHRFR.js → document-library.module-UXXJLDVC.js} +2 -2
- package/client-dist/{embedding-eval.module-NNNAVNHH.js → embedding-eval.module-T6TJ3SNN.js} +2 -2
- package/client-dist/{embedding-registry.module-IG2DIPAC.js → embedding-registry.module-VLWPMIEI.js} +2 -2
- package/client-dist/{err.module-RLJDGO7O.js → err.module-GORVBBMZ.js} +2 -2
- package/client-dist/{feedback.module-TLSMAKTG.js → feedback.module-TGGSMS23.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-FOQET6XB.js → host-runtime-mcp.module-NOWETOPZ.js} +2 -2
- package/client-dist/index.html +1 -1
- package/client-dist/{live-dev-pipeline.module-S6BLHUX2.js → live-dev-pipeline.module-63XT5MJP.js} +2 -2
- package/client-dist/{logs.module-HDFYF43V.js → logs.module-JGIHBHX6.js} +2 -2
- package/client-dist/{main-OU3HYYW4.js → main-YLGZITQU.js} +3 -3
- package/client-dist/{master-control-remote-poc.module-4VV6PZUZ.js → master-control-remote-poc.module-IAWFHXRM.js} +2 -2
- package/client-dist/{mobile-app.module-G6RQ7UDO.js → mobile-app.module-LXUQSWNE.js} +2 -2
- package/client-dist/{model-registry.module-CLWTXUVA.js → model-registry.module-4SWLIY3L.js} +2 -2
- package/client-dist/{oc.module-S7MM3GEV.js → oc.module-G3QQWRGY.js} +2 -2
- package/client-dist/{orc.module-C6MK35UD.js → orc.module-4DWUGUCW.js} +2 -2
- package/client-dist/{project-management.module-MOYDEFQP.js → project-management.module-CCIEYIWT.js} +2 -2
- package/client-dist/project-source-routed.module-YZHGO6CO.js +2 -0
- package/client-dist/{scheduler.module-E4QERZXL.js → scheduler.module-ILUYBQKB.js} +2 -2
- package/client-dist/{session.module-7I43GT5A.js → session.module-YF4EX57E.js} +2 -2
- package/client-dist/{set.module-AGXAY7S7.js → set.module-CL6ZBFWW.js} +2 -2
- package/client-dist/{setup.module-BOIEEPBX.js → setup.module-UXU3WS5V.js} +2 -2
- package/client-dist/{terminals.module-HDGRPS7X.js → terminals.module-K4NTCGAW.js} +2 -2
- package/client-dist/{voice-notes-poc.module-KCJSBNDH.js → voice-notes-poc.module-L5M5NWO2.js} +2 -2
- package/client-dist/{wfs.module-LHNN4X3E.js → wfs.module-UNMMTLJD.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +13 -27
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +27 -58
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
- package/client-dist/project-source-routed.module-MFRTKTSC.js +0 -2
- /package/client-dist/{agent-instances.module-KYFXXE2P.js.map → agent-instances.module-XHV2TP7O.js.map} +0 -0
- /package/client-dist/{ca.module-RWHD6LXU.js.map → ca.module-UYSJWH3C.js.map} +0 -0
- /package/client-dist/{cc.module-WPRWAZYU.js.map → cc.module-44GWX6ZS.js.map} +0 -0
- /package/client-dist/{chunk-UW5O3STF.js.map → chunk-2DB3LR7O.js.map} +0 -0
- /package/client-dist/{chunk-OMRPFHEJ.js.map → chunk-2DT3DQYP.js.map} +0 -0
- /package/client-dist/{chunk-67QKRQLQ.js.map → chunk-2EQNUA63.js.map} +0 -0
- /package/client-dist/{chunk-HNLHZQRG.js.map → chunk-2UXMIPN2.js.map} +0 -0
- /package/client-dist/{chunk-Z35RKCWS.js.map → chunk-2WNVREPI.js.map} +0 -0
- /package/client-dist/{chunk-G5YPQMN5.js.map → chunk-5SPKC3YD.js.map} +0 -0
- /package/client-dist/{chunk-GMMQ2FL7.js.map → chunk-6UEUYDO3.js.map} +0 -0
- /package/client-dist/{chunk-WETGNUC3.js.map → chunk-6UVLEDQ5.js.map} +0 -0
- /package/client-dist/{chunk-BZLG5IJW.js.map → chunk-A2LLUPKC.js.map} +0 -0
- /package/client-dist/{chunk-ERS3ZHTB.js.map → chunk-AVAPH2PU.js.map} +0 -0
- /package/client-dist/{chunk-RZ56ZYQT.js.map → chunk-B2SWOZ3Y.js.map} +0 -0
- /package/client-dist/{chunk-6M2NXO3Q.js.map → chunk-B47JDGMP.js.map} +0 -0
- /package/client-dist/{chunk-DYIC2JMH.js.map → chunk-BPYGD4JQ.js.map} +0 -0
- /package/client-dist/{chunk-RSLPTFYL.js.map → chunk-CRJIE2EH.js.map} +0 -0
- /package/client-dist/{chunk-ZVQ2UNPH.js.map → chunk-CVWZBWR5.js.map} +0 -0
- /package/client-dist/{chunk-ZJN7HPJO.js.map → chunk-DFWKG5PG.js.map} +0 -0
- /package/client-dist/{chunk-EFPTGV5U.js.map → chunk-EBPDLIZX.js.map} +0 -0
- /package/client-dist/{chunk-QDMEESUI.js.map → chunk-EKJHVEA5.js.map} +0 -0
- /package/client-dist/{chunk-KDQ4CLGV.js.map → chunk-FIZNVKIB.js.map} +0 -0
- /package/client-dist/{chunk-GWIQI2N7.js.map → chunk-FLOT2NPP.js.map} +0 -0
- /package/client-dist/{chunk-WQY4QJWB.js.map → chunk-FSAVUX6K.js.map} +0 -0
- /package/client-dist/{chunk-2VKOQN4P.js.map → chunk-GI5DILVT.js.map} +0 -0
- /package/client-dist/{chunk-GVTS43MP.js.map → chunk-GL2VABJP.js.map} +0 -0
- /package/client-dist/{chunk-ISBQUFDF.js.map → chunk-H4OQI5J3.js.map} +0 -0
- /package/client-dist/{chunk-RWGTH2YM.js.map → chunk-HF3XSXX2.js.map} +0 -0
- /package/client-dist/{chunk-VPUGWJWE.js.map → chunk-ILJFTJNR.js.map} +0 -0
- /package/client-dist/{chunk-KWT2JZYX.js.map → chunk-J7IUX23G.js.map} +0 -0
- /package/client-dist/{chunk-2TQNCIGY.js.map → chunk-JKIF6YFY.js.map} +0 -0
- /package/client-dist/{chunk-2JYKGMVI.js.map → chunk-K63M327A.js.map} +0 -0
- /package/client-dist/{chunk-SYRG7QOC.js.map → chunk-LMEEH4DP.js.map} +0 -0
- /package/client-dist/{chunk-JFVWOOZP.js.map → chunk-LOO2HFML.js.map} +0 -0
- /package/client-dist/{chunk-XLNGR3PM.js.map → chunk-MAJ6ZV5G.js.map} +0 -0
- /package/client-dist/{chunk-DJ6MA7RT.js.map → chunk-MVA4T5TS.js.map} +0 -0
- /package/client-dist/{chunk-FBUMI7EK.js.map → chunk-NAUSJ6P2.js.map} +0 -0
- /package/client-dist/{chunk-3PU7WKII.js.map → chunk-NHHSHFA7.js.map} +0 -0
- /package/client-dist/{chunk-5G6Q7TO7.js.map → chunk-OVJXBB2W.js.map} +0 -0
- /package/client-dist/{chunk-SNKBDLEM.js.map → chunk-PF4X6EZW.js.map} +0 -0
- /package/client-dist/{chunk-EV4NWX6X.js.map → chunk-R2OAZ7WY.js.map} +0 -0
- /package/client-dist/{chunk-4HH4TGXP.js.map → chunk-SHZBLYY4.js.map} +0 -0
- /package/client-dist/{chunk-A3EQLOB5.js.map → chunk-SNFKG7OD.js.map} +0 -0
- /package/client-dist/{chunk-DQMRKYSF.js.map → chunk-SYLBNS6X.js.map} +0 -0
- /package/client-dist/{chunk-U5ZZWIXY.js.map → chunk-T4RST354.js.map} +0 -0
- /package/client-dist/{chunk-IXSUD323.js.map → chunk-UIBU3OVP.js.map} +0 -0
- /package/client-dist/{chunk-YJIAKZVX.js.map → chunk-UOR473MY.js.map} +0 -0
- /package/client-dist/{chunk-2O6DZKLR.js.map → chunk-UQXHY37I.js.map} +0 -0
- /package/client-dist/{chunk-Y2FV6RJE.js.map → chunk-V2ERRMCF.js.map} +0 -0
- /package/client-dist/{chunk-2T4T6CTO.js.map → chunk-VQMBB25J.js.map} +0 -0
- /package/client-dist/{chunk-AUMGM767.js.map → chunk-W2W4RTI2.js.map} +0 -0
- /package/client-dist/{chunk-VVFIPTOB.js.map → chunk-WCWRDALU.js.map} +0 -0
- /package/client-dist/{chunk-X4NLQNO3.js.map → chunk-WCXV5NA2.js.map} +0 -0
- /package/client-dist/{chunk-CTEGJJMC.js.map → chunk-WMLWXBWW.js.map} +0 -0
- /package/client-dist/{chunk-NKSIHOBJ.js.map → chunk-WWJAJOFD.js.map} +0 -0
- /package/client-dist/{chunk-PWGHC7B5.js.map → chunk-Z5IJ2US2.js.map} +0 -0
- /package/client-dist/{chunk-362V7NPI.js.map → chunk-Z7MOK6IL.js.map} +0 -0
- /package/client-dist/{chunk-LXS7M7UJ.js.map → chunk-ZYJOLIZR.js.map} +0 -0
- /package/client-dist/{consultant.module-SPM43UQ2.js.map → consultant.module-5QV23GWU.js.map} +0 -0
- /package/client-dist/{crd.module-4XDCOAWY.js.map → crd.module-AX2RY7FA.js.map} +0 -0
- /package/client-dist/{dashboard.module-QQUANJLH.js.map → dashboard.module-BTH5D3RA.js.map} +0 -0
- /package/client-dist/{do.module-H6CBWJJI.js.map → do.module-GTG4R5I6.js.map} +0 -0
- /package/client-dist/{document-library.module-OMLDHRFR.js.map → document-library.module-UXXJLDVC.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-NNNAVNHH.js.map → embedding-eval.module-T6TJ3SNN.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-IG2DIPAC.js.map → embedding-registry.module-VLWPMIEI.js.map} +0 -0
- /package/client-dist/{err.module-RLJDGO7O.js.map → err.module-GORVBBMZ.js.map} +0 -0
- /package/client-dist/{feedback.module-TLSMAKTG.js.map → feedback.module-TGGSMS23.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-FOQET6XB.js.map → host-runtime-mcp.module-NOWETOPZ.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-S6BLHUX2.js.map → live-dev-pipeline.module-63XT5MJP.js.map} +0 -0
- /package/client-dist/{logs.module-HDFYF43V.js.map → logs.module-JGIHBHX6.js.map} +0 -0
- /package/client-dist/{main-OU3HYYW4.js.map → main-YLGZITQU.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-4VV6PZUZ.js.map → master-control-remote-poc.module-IAWFHXRM.js.map} +0 -0
- /package/client-dist/{mobile-app.module-G6RQ7UDO.js.map → mobile-app.module-LXUQSWNE.js.map} +0 -0
- /package/client-dist/{model-registry.module-CLWTXUVA.js.map → model-registry.module-4SWLIY3L.js.map} +0 -0
- /package/client-dist/{oc.module-S7MM3GEV.js.map → oc.module-G3QQWRGY.js.map} +0 -0
- /package/client-dist/{orc.module-C6MK35UD.js.map → orc.module-4DWUGUCW.js.map} +0 -0
- /package/client-dist/{project-management.module-MOYDEFQP.js.map → project-management.module-CCIEYIWT.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-MFRTKTSC.js.map → project-source-routed.module-YZHGO6CO.js.map} +0 -0
- /package/client-dist/{scheduler.module-E4QERZXL.js.map → scheduler.module-ILUYBQKB.js.map} +0 -0
- /package/client-dist/{session.module-7I43GT5A.js.map → session.module-YF4EX57E.js.map} +0 -0
- /package/client-dist/{set.module-AGXAY7S7.js.map → set.module-CL6ZBFWW.js.map} +0 -0
- /package/client-dist/{setup.module-BOIEEPBX.js.map → setup.module-UXU3WS5V.js.map} +0 -0
- /package/client-dist/{terminals.module-HDGRPS7X.js.map → terminals.module-K4NTCGAW.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-KCJSBNDH.js.map → voice-notes-poc.module-L5M5NWO2.js.map} +0 -0
- /package/client-dist/{wfs.module-LHNN4X3E.js.map → wfs.module-UNMMTLJD.js.map} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as se}from"./chunk-Y2FV6RJE.js";import"./chunk-YJIAKZVX.js";import"./chunk-GVTS43MP.js";import"./chunk-67QKRQLQ.js";import{b as Z,c as ee,f as te,i as ne,n as ie,o as oe,p as re,v as j}from"./chunk-EO4DNTT4.js";import{a as A}from"./chunk-5UPNU54P.js";import{j as ae}from"./chunk-ZVQ2UNPH.js";import{I as le}from"./chunk-S3VH4N3I.js";import{C,D as R,E as q,Fa as o,Ga as F,Ha as b,Ia as N,J as u,K as m,Kb as X,L as D,M as J,Ta as Y,Z as s,a as v,aa as w,b as S,d as B,da as k,ga as g,ia as I,k as x,la as h,na as K,oa as M,p as E,pa as z,qa as i,ra as n,sa as P,ua as y,ub as V,va as c,wa as p,xb as Q,y as T,z as U}from"./chunk-TBMJSIBB.js";var de=(()=>{class l{baseUrl=`${le.api.baseUrl}/workflow`;http=C(Q);listWorkflows(e){let t=[];e?.workflowType&&t.push(`type=${e.workflowType}`),e?.isTemplate!==void 0&&t.push(`isTemplate=${e.isTemplate}`);let r=t.length?`?${t.join("&")}`:"";return E(this.http.get(`${this.baseUrl}${r}`))}createWorkflow(e){return E(this.http.post(this.baseUrl,e))}getWorkflow(e){return E(this.http.get(`${this.baseUrl}/${e}`))}updateWorkflow(e){let a=e,{id:t}=a,r=B(a,["id"]);return E(this.http.put(`${this.baseUrl}/${t}`,r))}generateWorkflow(e){return E(this.http.post(`${this.baseUrl}/generate`,{description:e.description,provider:e.provider,model:e.model}))}modifyWorkflow(e){return E(this.http.post(`${this.baseUrl}/modify`,{currentWorkflow:e.currentWorkflow,modificationDescription:e.modificationDescription,provider:e.provider,model:e.model}))}deleteWorkflow(e){return E(this.http.delete(`${this.baseUrl}/${e}`))}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var pe=(()=>{class l{workflow_AS=C(de);listWorkflows(e){return x(this,null,function*(){return(yield this.workflow_AS.listWorkflows(e)).workflows})}createWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.createWorkflow(e)).workflow})}getWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.getWorkflow(e)).workflow})}updateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.updateWorkflow(e)).workflow})}generateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.generateWorkflow(e)).workflow})}modifyWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.modifyWorkflow(e)).workflow})}deleteWorkflow(e){return x(this,null,function*(){return this.workflow_AS.deleteWorkflow(e)})}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var L="ccap-workflowSettingsDraft",$=class{static get(){let d=A.readJson(L,null);if(typeof d!="object"||d===null)return null;let e=d,t=typeof e.generationPrompt=="string"?e.generationPrompt:"",r=typeof e.modificationPrompt=="string"?e.modificationPrompt:"",a=typeof e.selectedProvider=="string"?e.selectedProvider:"",_=typeof e.selectedModel=="string"?e.selectedModel:"",W=typeof e.isCreating=="boolean"?e.isCreating:!1,f=e.editingWorkflow&&typeof e.editingWorkflow=="object"?e.editingWorkflow:null;return{generationPrompt:t,modificationPrompt:r,selectedProvider:a,selectedModel:_,isCreating:W,editingWorkflow:f}}static save(d){A.writeJson(L,d)}static clear(){A.remove(L)}};var me=(l,d)=>d._id,H=(l,d)=>d.id;function ce(l,d){if(l&1){let e=y();i(0,"button",5),c("click",function(){u(e);let r=p();return m(r.handleCreateNew())}),o(1," + \xDAj workflow "),n()}}function _e(l,d){l&1&&(i(0,"div",6),o(1,"Bet\xF6lt\xE9s..."),n())}function fe(l,d){l&1&&(i(0,"div",7),o(1," Nincs m\xE9g workflow. Hozz l\xE9tre egyet a gombbal. "),n())}function ge(l,d){l&1&&(i(0,"span",14),o(1," sablon "),n())}function xe(l,d){l&1&&(i(0,"span",15),o(1," Built-in "),n())}function we(l,d){if(l&1){let e=y();i(0,"button",20),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleEdit(r))}),o(1," Szerkeszt\xE9s "),n(),i(2,"button",21),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleDelete(r))}),o(3," T\xF6rl\xE9s "),n()}}function he(l,d){l&1&&(i(0,"span",19),o(1," Readonly "),n())}function ke(l,d){if(l&1&&(i(0,"div",9)(1,"div",10)(2,"div",11)(3,"span",12),o(4),n(),i(5,"span",13),o(6),n(),k(7,ge,2,0,"span",14)(8,xe,2,0,"span",15),n(),i(9,"p",16),o(10),n(),i(11,"div",17),o(12),n()(),i(13,"div",18),k(14,we,4,0)(15,he,2,0,"span",19),n()()),l&2){let e=d.$implicit;s(4),F(e.name),s(2),b(" ",e.workflowType," "),s(),h(e.isTemplate?7:-1),s(),h(e.isBuiltIn?8:-1),s(2),F(e.description),s(2),b(" ",e.phases.length," f\xE1zis "),s(2),h(e.isBuiltIn?15:14)}}function Ee(l,d){if(l&1&&(i(0,"div",8),M(1,ke,16,7,"div",9,me),n()),l&2){let e=p(2);s(),z(e.workflows_$())}}function Ce(l,d){if(l&1&&k(0,_e,2,0,"div",6)(1,fe,2,0,"div",7)(2,Ee,3,0,"div",8),l&2){let e=p();h(e.isLoading_$()?0:e.workflows_$().length===0?1:2)}}function be(l,d){l&1&&(D(),i(0,"svg",27),P(1,"polyline",52),n())}function ve(l,d){l&1&&(D(),i(0,"svg",27),P(1,"rect",53)(2,"path",54),n())}function Se(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function ye(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM dolgozik a workflow-n..."),n())}function $e(l,d){if(l&1){let e=y();i(0,"div",28)(1,"div",42)(2,"span",55),o(3,"Workflow gener\xE1l\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le egyszer\u0171en, mit szeretn\xE9l"),n()(),i(6,"textarea",57),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleGenerationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",59),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,Se,2,3,"option",41,H),n()(),i(17,"button",61),c("click",function(){u(e);let r=p(2);return m(r.handleGenerate())}),o(18),n(),k(19,ye,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.generationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isGenerating_$()||!e.generationPrompt_$()),s(),b(" ",e.isGenerating_$()?"Gener\xE1l\xE1s...":"Gener\xE1l\xE1s"," "),s(),h(e.isGenerating_$()?19:-1)}}function We(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function Me(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM m\xF3dos\xEDtja a workflow-t..."),n())}function ze(l,d){if(l&1){let e=y();i(0,"div",29)(1,"div",42)(2,"span",62),o(3,"Workflow m\xF3dos\xEDt\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le, mit szeretn\xE9l v\xE1ltoztatni"),n()(),i(6,"textarea",63),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModificationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",64),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,We,2,3,"option",41,H),n()(),i(17,"button",65),c("click",function(){u(e);let r=p(2);return m(r.handleModify())}),o(18),n(),k(19,Me,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.modificationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isModifying_$()||!e.modificationPrompt_$()),s(),b(" ",e.isModifying_$()?"M\xF3dos\xEDt\xE1s...":"M\xF3dos\xEDt\xE1s"," "),s(),h(e.isModifying_$()?19:-1)}}function Te(l,d){l&1&&(i(0,"div",36)(1,"div")(2,"h3",66),o(3,"Fel\xE9p\xEDt\xE9s"),n(),i(4,"p"),o(5," Egy j\xF3 workflow "),i(6,"strong",67),o(7,"f\xE1zisokra"),n(),o(8," bontja a feladatot, ahol minden f\xE1zis egyetlen, j\xF3l meghat\xE1rozott c\xE9lt k\xF6vet. A "),i(9,"strong",67),o(10,"vez\xE9rprompt"),n(),o(11," (master prompt) az eg\xE9sz workflow-ra \xE9rv\xE9nyes alapszab\xE1lyokat \xE9s kontextust tartalmazza \u2014 ez minden f\xE1zisban automatikusan megjelenik. "),n()(),i(12,"div")(13,"h3",66),o(14,"Vez\xE9rprompt (master prompt)"),n(),i(15,"ul",68)(16,"li"),o(17,"Projekt kontextus: milyen repo, milyen stack, milyen nyelven dolgozunk"),n(),i(18,"li"),o(19,"Glob\xE1lis szab\xE1lyok: k\xF3dol\xE1si konvenci\xF3k, tiltott m\u0171veletek, commit policy"),n(),i(20,"li"),o(21,'Szerepk\xF6r: milyen "szaktud\xE1s\xFA" agent hajtja v\xE9gre a workflow-t'),n(),i(22,"li"),o(23,"Ne ism\xE9telj meg f\xE1zisonk\xE9nt olyat, ami ide tartozik \u2014 a master prompt mindig jelen van"),n()()(),i(24,"div")(25,"h3",66),o(26,"F\xE1zisok tervez\xE9se"),n(),i(27,"ul",68)(28,"li")(29,"strong",67),o(30,"C\xE9l (goal):"),n(),o(31," egyetlen mondat \u2014 a f\xE1zis sikeress\xE9g\xE9nek m\xE9rc\xE9je "),n(),i(32,"li")(33,"strong",67),o(34,"F\xE1zis prompt:"),n(),o(35,' konkr\xE9t, akci\xF3-orient\xE1lt utas\xEDt\xE1s. Ker\xFCld az \xE1ltal\xE1noss\xE1gokat ("n\xE9zd \xE1t a k\xF3dot") \u2014 \xEDrd le pontosan mit kell csin\xE1lni '),n(),i(36,"li")(37,"strong",67),o(38,"Ism\xE9tl\u0151d\u0151 f\xE1zis:"),n(),o(39,' ha a f\xE1zis nem egyl\xE9p\xE9ses (pl. iterat\xEDv fejleszt\xE9s), kapcsold be az "Ism\xE9tl\u0151d\u0151" opci\xF3t \u2014 a f\xE1zis addig fut, am\xEDg PHASE_DONE jelz\xE9s nem \xE9rkezik '),n()()(),i(40,"div")(41,"h3",66),o(42,"Tipikus f\xE1zis-sorrend"),n(),i(43,"div",69)(44,"span",70),o(45,"1. T\xE1j\xE9koz\xF3d\xE1s / Clarify"),n(),i(46,"span",24),o(47,"\u2192"),n(),i(48,"span",70),o(49,"2. Tervez\xE9s / Plan"),n(),i(50,"span",24),o(51,"\u2192"),n(),i(52,"span",70),o(53,"3. Megval\xF3s\xEDt\xE1s / Dev"),n(),i(54,"span",24),o(55,"\u2192"),n(),i(56,"span",70),o(57,"4. Tesztel\xE9s / Test"),n(),i(58,"span",24),o(59,"\u2192"),n(),i(60,"span",70),o(61,"5. Review / Doc"),n()(),i(62,"p",71),o(63," Nem minden workflow-nak kell minden f\xE1zist tartalmaznia \u2014 haszn\xE1ld azt, ami relev\xE1ns. "),n()(),i(64,"div")(65,"h3",66),o(66,"Tippek"),n(),i(67,"ul",68)(68,"li"),o(69,"A "),i(70,"strong",67),o(71,"sablon (template)"),n(),o(72," workflow-kat gener\xE1l\xE1shoz is haszn\xE1ljuk \u2014 jel\xF6ld be, ha m\xE1sok sz\xE1m\xE1ra is mintak\xE9nt szolg\xE1l"),n(),i(73,"li"),o(74,"A f\xE1zis prompt-ban hivatkozhatsz f\xE1jlokra, mapp\xE1kra, specifik\xE1ci\xF3kra \u2014 min\xE9l konkr\xE9tabb, ann\xE1l jobb"),n(),i(75,"li"),o(76,"T\xF6rekedj arra, hogy egy f\xE1zis "),i(77,"strong",67),o(78,"1 felel\u0151ss\xE9gi k\xF6rrel"),n(),o(79," rendelkezzen (single responsibility)"),n(),i(80,"li"),o(81,"Ha egy f\xE1zis t\xFAl hossz\xFA lenne, bontsd kett\xE9 \u2014 ink\xE1bb legyen t\xF6bb kis f\xE1zis, mint egy nagy"),n()()()())}function De(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e),s(),F(e)}}function Pe(l,d){if(l&1){let e=y();i(0,"div",48)(1,"div",72)(2,"span",73),o(3),n(),i(4,"button",74),c("click",function(){let r=u(e).$index,a=p(2);return m(a.handleRemovePhase(r))}),o(5," Elt\xE1vol\xEDt\xE1s "),n()(),i(6,"div",75)(7,"div")(8,"label",76),o(9,"C\xEDm"),n(),i(10,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"title",value:r}))}),n()(),i(11,"div")(12,"label",76),o(13,"C\xE9l (goal)"),n(),i(14,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"goal",value:r}))}),n()()(),i(15,"div",78)(16,"label",76),o(17,"F\xE1zis prompt"),n(),i(18,"textarea",79),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"phasePrompt",value:r}))}),o(19," "),n()(),i(20,"div",42)(21,"input",43),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"repeatUntilDone",value:r}))}),n(),i(22,"label",80),o(23,"Ism\xE9tl\u0151d\u0151 (am\xEDg PHASE_DONE)"),n()()()}if(l&2){let e=d.$implicit,t=d.$index;s(3),b("F\xE1zis ",t+1,""),s(7),g("ngModel",e.title),s(4),g("ngModel",e.goal),s(4),g("ngModel",e.phasePrompt),s(3),g("ngModel",e.repeatUntilDone)}}function Fe(l,d){if(l&1){let e=y();i(0,"div",4)(1,"div",22)(2,"button",23),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(3," \u2190 Vissza "),n(),i(4,"span",24),o(5,"|"),n(),i(6,"span",25),o(7),n(),i(8,"button",26),c("click",function(){u(e);let r=p();return m(r.handleCopyMarkdown())}),k(9,be,2,0,":svg:svg",27)(10,ve,3,0,":svg:svg",27),n()(),k(11,$e,20,5,"div",28)(12,ze,20,5,"div",29),i(13,"div",30)(14,"button",31),c("click",function(){u(e);let r=p();return m(r.handleToggleBestPractices())}),D(),i(15,"svg",32),P(16,"polyline",33),n(),J(),i(17,"span",34),o(18,"Workflow tervez\xE9si \xFAtmutat\xF3"),n(),i(19,"span",35),o(20,"best practices"),n()(),k(21,Te,82,0,"div",36),n(),i(22,"div",37)(23,"div")(24,"label",38),o(25,"N\xE9v"),n(),i(26,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("name",r))}),n()(),i(27,"div")(28,"label",38),o(29,"T\xEDpus"),n(),i(30,"select",40),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("workflowType",r))}),M(31,De,2,2,"option",41,K),n()()(),i(33,"div")(34,"label",38),o(35,"Le\xEDr\xE1s"),n(),i(36,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("description",r))}),n()(),i(37,"div",42)(38,"input",43),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("isTemplate",r))}),n(),i(39,"label",25),o(40,"Sablon (template)"),n()(),i(41,"div")(42,"label",38),o(43,"Vez\xE9rprompt (master prompt)"),n(),i(44,"textarea",44),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("masterPrompt",r))}),o(45," "),n()(),i(46,"div")(47,"div",45)(48,"h2",46),o(49,"F\xE1zisok"),n(),i(50,"button",47),c("click",function(){u(e);let r=p();return m(r.handleAddPhase())}),o(51," + F\xE1zis "),n()(),M(52,Pe,24,5,"div",48,H),n(),i(54,"div",49)(55,"button",50),c("click",function(){u(e);let r=p();return m(r.handleSave())}),o(56),n(),i(57,"button",51),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(58," M\xE9gse "),n()()()}if(l&2){let e,t,r,a,_,W,f=p();s(7),b(" ",f.isCreating_$()?"\xDAj workflow":"Szerkeszt\xE9s"," "),s(),I("text-neutral-500",!f.isCopied_$())("hover:text-neutral-200",!f.isCopied_$())("text-green-400",f.isCopied_$()),s(),h(f.isCopied_$()?9:10),s(2),h(f.isCreating_$()?11:-1),s(),h(f.isCreating_$()?-1:12),s(3),I("-rotate-90",!f.isBestPracticesOpen_$()),s(6),h(f.isBestPracticesOpen_$()?21:-1),s(5),g("ngModel",(e=f.editingWorkflow_$())==null?null:e.name),s(4),g("ngModel",(t=f.editingWorkflow_$())==null?null:t.workflowType),s(),z(f.workflowTypes),s(5),g("ngModel",(r=f.editingWorkflow_$())==null?null:r.description),s(2),g("ngModel",(a=f.editingWorkflow_$())==null?null:a.isTemplate),s(6),g("ngModel",(_=f.editingWorkflow_$())==null?null:_.masterPrompt),s(8),z((W=f.editingWorkflow_$())==null?null:W.phases),s(3),g("disabled",f.isLoading_$()),s(),b(" ",f.isCreating_$()?"L\xE9trehoz\xE1s":"Ment\xE9s"," ")}}function ue(l){return{id:`phase-${Date.now()}-${l}`,title:"",order:l,goal:"",phasePrompt:"",constraints:[],dod:[],repeatUntilDone:!1,subWorkflowTriggers:[]}}function Ve(){return{name:"",description:"",workflowType:"development",isTemplate:!1,masterPrompt:"",phases:[ue(0)]}}var O=(()=>{class l{workflow_DS=C(pe);globalError_CS=C(ae);modelRegistry_DS=C(se);workflows_$=w([]);editingWorkflow_$=w(null);isLoading_$=w(!1);isCreating_$=w(!1);isBestPracticesOpen_$=w(!1);generationPrompt_$=w("");modificationPrompt_$=w("");isGenerating_$=w(!1);isModifying_$=w(!1);isCopied_$=w(!1);availableModels_$=w([]);selectedProvider_$=w("");selectedModel_$=w("");workflowTypes=["development","research","testing","support","onboarding","review","poc","user-input","bug-report"];ngOnInit(){this.loadWorkflows(),this.loadAvailableModels(),this.restoreDraft()}loadWorkflows(){return x(this,null,function*(){try{this.isLoading_$.set(!0);let e=yield this.workflow_DS.listWorkflows();this.workflows_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleCreateNew(){this.isCreating_$.set(!0),this.editingWorkflow_$.set(Ve()),this.persistDraft()}handleEdit(e){this.isCreating_$.set(!1),this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases]}))}handleCancel(){this.editingWorkflow_$.set(null),$.clear()}handleSave(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(e)try{this.isLoading_$.set(!0),this.isCreating_$()?yield this.workflow_DS.createWorkflow({name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory}):e._id&&(yield this.workflow_DS.updateWorkflow({id:e._id,name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory})),this.editingWorkflow_$.set(null),$.clear(),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleDelete(e){return x(this,null,function*(){if(e._id)try{this.isLoading_$.set(!0),yield this.workflow_DS.deleteWorkflow(e._id),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleAddPhase(){let e=this.editingWorkflow_$();if(!e)return;let t=ue(e.phases.length);this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases,t]})),this.persistDraft()}handleRemovePhase(e){let t=this.editingWorkflow_$();if(!t)return;let r=t.phases.filter((a,_)=>_!==e);this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handlePhaseFieldChange(e){let t=this.editingWorkflow_$();if(!t)return;let r=[...t.phases];r[e.index]=S(v({},r[e.index]),{[e.field]:e.value}),this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handleGenerationPromptChange(e){this.generationPrompt_$.set(e),this.persistDraft()}handleGenerate(){return x(this,null,function*(){let e=this.generationPrompt_$().trim();if(e)try{this.isGenerating_$.set(!0);let t=this.selectedProvider_$(),r=this.selectedModel_$(),a=yield this.workflow_DS.generateWorkflow({description:e,provider:t||void 0,model:r||void 0}),_={type:"generation",prompt:e,timestamp:new Date().toISOString()};this.editingWorkflow_$.set({name:a.name??"",description:a.description??"",workflowType:a.workflowType??"development",isTemplate:a.isTemplate??!1,masterPrompt:a.masterPrompt??"",phases:Array.isArray(a.phases)?a.phases:[],generationHistory:[_]})}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isGenerating_$.set(!1)}})}handleModificationPromptChange(e){this.modificationPrompt_$.set(e),this.persistDraft()}handleModify(){return x(this,null,function*(){let e=this.modificationPrompt_$().trim(),t=this.editingWorkflow_$();if(!(!e||!t))try{this.isModifying_$.set(!0);let r=this.selectedProvider_$(),a=this.selectedModel_$(),_=yield this.workflow_DS.modifyWorkflow({currentWorkflow:t,modificationDescription:e,provider:r||void 0,model:a||void 0}),W={type:"modification",prompt:e,timestamp:new Date().toISOString()},f=t.generationHistory??[];this.editingWorkflow_$.set({_id:t._id,name:_.name??"",description:_.description??"",workflowType:_.workflowType??"development",isTemplate:_.isTemplate??!1,masterPrompt:_.masterPrompt??"",phases:Array.isArray(_.phases)?_.phases:[],generationHistory:[...f,W]}),this.persistDraft()}catch(r){this.globalError_CS.showError(r,"workflow-settings")}finally{this.isModifying_$.set(!1)}})}loadAvailableModels(){return x(this,null,function*(){try{let e=yield this.modelRegistry_DS.loadList({enabled:!0});this.availableModels_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}})}handleModelSelectionChange(e){if(!e){this.selectedProvider_$.set(""),this.selectedModel_$.set("");return}let t=e.indexOf(":");t!==-1&&(this.selectedProvider_$.set(e.substring(0,t)),this.selectedModel_$.set(e.substring(t+1)),this.persistDraft())}handleToggleBestPractices(){this.isBestPracticesOpen_$.set(!this.isBestPracticesOpen_$())}handleFieldChange(e,t){let r=this.editingWorkflow_$();r&&(this.editingWorkflow_$.set(S(v({},r),{[e]:t})),this.persistDraft())}handleCopyMarkdown(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(!e)return;let t=[];t.push(`# ${e.name||"N\xE9vtelen workflow"}`),t.push(""),e.description&&(t.push(`> ${e.description}`),t.push("")),t.push("| Mez\u0151 | \xC9rt\xE9k |"),t.push("|------|-------|"),t.push(`| T\xEDpus | ${e.workflowType} |`),t.push(`| Sablon | ${e.isTemplate?"igen":"nem"} |`),t.push(`| F\xE1zisok sz\xE1ma | ${e.phases.length} |`),t.push(""),e.masterPrompt&&(t.push("## Vez\xE9rprompt (master prompt)"),t.push(""),t.push(e.masterPrompt),t.push("")),t.push("## F\xE1zisok"),t.push("");for(let r of e.phases){if(t.push(`### ${r.order+1}. ${r.title||"N\xE9vtelen f\xE1zis"}`),t.push(""),r.goal&&(t.push(`**C\xE9l:** ${r.goal}`),t.push("")),r.phasePrompt&&(t.push("**F\xE1zis prompt:**"),t.push(""),t.push(r.phasePrompt),t.push("")),r.constraints.length){t.push("**Megk\xF6t\xE9sek:**");for(let a of r.constraints)t.push(`- ${a}`);t.push("")}if(r.dod.length){t.push("**Definition of Done:**");for(let a of r.dod)t.push(`- ${a}`);t.push("")}r.repeatUntilDone&&(t.push("*Ism\xE9tl\u0151d\u0151 f\xE1zis (am\xEDg PHASE_DONE)*"),t.push(""))}try{yield navigator.clipboard.writeText(t.join(`
|
|
1
|
+
import{a as se}from"./chunk-V2ERRMCF.js";import"./chunk-UOR473MY.js";import"./chunk-GL2VABJP.js";import"./chunk-2EQNUA63.js";import{b as Z,c as ee,f as te,i as ne,n as ie,o as oe,p as re,v as j}from"./chunk-EO4DNTT4.js";import{a as A}from"./chunk-5UPNU54P.js";import{j as ae}from"./chunk-CVWZBWR5.js";import{I as le}from"./chunk-FLV3DZFK.js";import{C,D as R,E as q,Fa as o,Ga as F,Ha as b,Ia as N,J as u,K as m,Kb as X,L as D,M as J,Ta as Y,Z as s,a as v,aa as w,b as S,d as B,da as k,ga as g,ia as I,k as x,la as h,na as K,oa as M,p as E,pa as z,qa as i,ra as n,sa as P,ua as y,ub as V,va as c,wa as p,xb as Q,y as T,z as U}from"./chunk-TBMJSIBB.js";var de=(()=>{class l{baseUrl=`${le.api.baseUrl}/workflow`;http=C(Q);listWorkflows(e){let t=[];e?.workflowType&&t.push(`type=${e.workflowType}`),e?.isTemplate!==void 0&&t.push(`isTemplate=${e.isTemplate}`);let r=t.length?`?${t.join("&")}`:"";return E(this.http.get(`${this.baseUrl}${r}`))}createWorkflow(e){return E(this.http.post(this.baseUrl,e))}getWorkflow(e){return E(this.http.get(`${this.baseUrl}/${e}`))}updateWorkflow(e){let a=e,{id:t}=a,r=B(a,["id"]);return E(this.http.put(`${this.baseUrl}/${t}`,r))}generateWorkflow(e){return E(this.http.post(`${this.baseUrl}/generate`,{description:e.description,provider:e.provider,model:e.model}))}modifyWorkflow(e){return E(this.http.post(`${this.baseUrl}/modify`,{currentWorkflow:e.currentWorkflow,modificationDescription:e.modificationDescription,provider:e.provider,model:e.model}))}deleteWorkflow(e){return E(this.http.delete(`${this.baseUrl}/${e}`))}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var pe=(()=>{class l{workflow_AS=C(de);listWorkflows(e){return x(this,null,function*(){return(yield this.workflow_AS.listWorkflows(e)).workflows})}createWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.createWorkflow(e)).workflow})}getWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.getWorkflow(e)).workflow})}updateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.updateWorkflow(e)).workflow})}generateWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.generateWorkflow(e)).workflow})}modifyWorkflow(e){return x(this,null,function*(){return(yield this.workflow_AS.modifyWorkflow(e)).workflow})}deleteWorkflow(e){return x(this,null,function*(){return this.workflow_AS.deleteWorkflow(e)})}static \u0275fac=function(t){return new(t||l)};static \u0275prov=T({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var L="ccap-workflowSettingsDraft",$=class{static get(){let d=A.readJson(L,null);if(typeof d!="object"||d===null)return null;let e=d,t=typeof e.generationPrompt=="string"?e.generationPrompt:"",r=typeof e.modificationPrompt=="string"?e.modificationPrompt:"",a=typeof e.selectedProvider=="string"?e.selectedProvider:"",_=typeof e.selectedModel=="string"?e.selectedModel:"",W=typeof e.isCreating=="boolean"?e.isCreating:!1,f=e.editingWorkflow&&typeof e.editingWorkflow=="object"?e.editingWorkflow:null;return{generationPrompt:t,modificationPrompt:r,selectedProvider:a,selectedModel:_,isCreating:W,editingWorkflow:f}}static save(d){A.writeJson(L,d)}static clear(){A.remove(L)}};var me=(l,d)=>d._id,H=(l,d)=>d.id;function ce(l,d){if(l&1){let e=y();i(0,"button",5),c("click",function(){u(e);let r=p();return m(r.handleCreateNew())}),o(1," + \xDAj workflow "),n()}}function _e(l,d){l&1&&(i(0,"div",6),o(1,"Bet\xF6lt\xE9s..."),n())}function fe(l,d){l&1&&(i(0,"div",7),o(1," Nincs m\xE9g workflow. Hozz l\xE9tre egyet a gombbal. "),n())}function ge(l,d){l&1&&(i(0,"span",14),o(1," sablon "),n())}function xe(l,d){l&1&&(i(0,"span",15),o(1," Built-in "),n())}function we(l,d){if(l&1){let e=y();i(0,"button",20),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleEdit(r))}),o(1," Szerkeszt\xE9s "),n(),i(2,"button",21),c("click",function(){u(e);let r=p().$implicit,a=p(3);return m(a.handleDelete(r))}),o(3," T\xF6rl\xE9s "),n()}}function he(l,d){l&1&&(i(0,"span",19),o(1," Readonly "),n())}function ke(l,d){if(l&1&&(i(0,"div",9)(1,"div",10)(2,"div",11)(3,"span",12),o(4),n(),i(5,"span",13),o(6),n(),k(7,ge,2,0,"span",14)(8,xe,2,0,"span",15),n(),i(9,"p",16),o(10),n(),i(11,"div",17),o(12),n()(),i(13,"div",18),k(14,we,4,0)(15,he,2,0,"span",19),n()()),l&2){let e=d.$implicit;s(4),F(e.name),s(2),b(" ",e.workflowType," "),s(),h(e.isTemplate?7:-1),s(),h(e.isBuiltIn?8:-1),s(2),F(e.description),s(2),b(" ",e.phases.length," f\xE1zis "),s(2),h(e.isBuiltIn?15:14)}}function Ee(l,d){if(l&1&&(i(0,"div",8),M(1,ke,16,7,"div",9,me),n()),l&2){let e=p(2);s(),z(e.workflows_$())}}function Ce(l,d){if(l&1&&k(0,_e,2,0,"div",6)(1,fe,2,0,"div",7)(2,Ee,3,0,"div",8),l&2){let e=p();h(e.isLoading_$()?0:e.workflows_$().length===0?1:2)}}function be(l,d){l&1&&(D(),i(0,"svg",27),P(1,"polyline",52),n())}function ve(l,d){l&1&&(D(),i(0,"svg",27),P(1,"rect",53)(2,"path",54),n())}function Se(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function ye(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM dolgozik a workflow-n..."),n())}function $e(l,d){if(l&1){let e=y();i(0,"div",28)(1,"div",42)(2,"span",55),o(3,"Workflow gener\xE1l\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le egyszer\u0171en, mit szeretn\xE9l"),n()(),i(6,"textarea",57),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleGenerationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",59),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,Se,2,3,"option",41,H),n()(),i(17,"button",61),c("click",function(){u(e);let r=p(2);return m(r.handleGenerate())}),o(18),n(),k(19,ye,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.generationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isGenerating_$()||!e.generationPrompt_$()),s(),b(" ",e.isGenerating_$()?"Gener\xE1l\xE1s...":"Gener\xE1l\xE1s"," "),s(),h(e.isGenerating_$()?19:-1)}}function We(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e.provider+":"+e.modelName),s(),N(" ",e.provider," / ",e.modelName," ")}}function Me(l,d){l&1&&(i(0,"span",56),o(1,"Az LLM m\xF3dos\xEDtja a workflow-t..."),n())}function ze(l,d){if(l&1){let e=y();i(0,"div",29)(1,"div",42)(2,"span",62),o(3,"Workflow m\xF3dos\xEDt\xE1s"),n(),i(4,"span",56),o(5,"\u2014 \xEDrd le, mit szeretn\xE9l v\xE1ltoztatni"),n()(),i(6,"textarea",63),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModificationPromptChange(r))}),o(7," "),n(),i(8,"div",58)(9,"div",42)(10,"label",56),o(11,"Modell:"),n(),i(12,"select",64),c("ngModelChange",function(r){u(e);let a=p(2);return m(a.handleModelSelectionChange(r))}),i(13,"option",60),o(14,"Alap\xE9rtelmezett"),n(),M(15,We,2,3,"option",41,H),n()(),i(17,"button",65),c("click",function(){u(e);let r=p(2);return m(r.handleModify())}),o(18),n(),k(19,Me,2,0,"span",56),n()()}if(l&2){let e=p(2);s(6),g("ngModel",e.modificationPrompt_$()),s(6),g("ngModel",e.selectedProvider_$()&&e.selectedModel_$()?e.selectedProvider_$()+":"+e.selectedModel_$():""),s(3),z(e.availableModels_$()),s(2),g("disabled",e.isModifying_$()||!e.modificationPrompt_$()),s(),b(" ",e.isModifying_$()?"M\xF3dos\xEDt\xE1s...":"M\xF3dos\xEDt\xE1s"," "),s(),h(e.isModifying_$()?19:-1)}}function Te(l,d){l&1&&(i(0,"div",36)(1,"div")(2,"h3",66),o(3,"Fel\xE9p\xEDt\xE9s"),n(),i(4,"p"),o(5," Egy j\xF3 workflow "),i(6,"strong",67),o(7,"f\xE1zisokra"),n(),o(8," bontja a feladatot, ahol minden f\xE1zis egyetlen, j\xF3l meghat\xE1rozott c\xE9lt k\xF6vet. A "),i(9,"strong",67),o(10,"vez\xE9rprompt"),n(),o(11," (master prompt) az eg\xE9sz workflow-ra \xE9rv\xE9nyes alapszab\xE1lyokat \xE9s kontextust tartalmazza \u2014 ez minden f\xE1zisban automatikusan megjelenik. "),n()(),i(12,"div")(13,"h3",66),o(14,"Vez\xE9rprompt (master prompt)"),n(),i(15,"ul",68)(16,"li"),o(17,"Projekt kontextus: milyen repo, milyen stack, milyen nyelven dolgozunk"),n(),i(18,"li"),o(19,"Glob\xE1lis szab\xE1lyok: k\xF3dol\xE1si konvenci\xF3k, tiltott m\u0171veletek, commit policy"),n(),i(20,"li"),o(21,'Szerepk\xF6r: milyen "szaktud\xE1s\xFA" agent hajtja v\xE9gre a workflow-t'),n(),i(22,"li"),o(23,"Ne ism\xE9telj meg f\xE1zisonk\xE9nt olyat, ami ide tartozik \u2014 a master prompt mindig jelen van"),n()()(),i(24,"div")(25,"h3",66),o(26,"F\xE1zisok tervez\xE9se"),n(),i(27,"ul",68)(28,"li")(29,"strong",67),o(30,"C\xE9l (goal):"),n(),o(31," egyetlen mondat \u2014 a f\xE1zis sikeress\xE9g\xE9nek m\xE9rc\xE9je "),n(),i(32,"li")(33,"strong",67),o(34,"F\xE1zis prompt:"),n(),o(35,' konkr\xE9t, akci\xF3-orient\xE1lt utas\xEDt\xE1s. Ker\xFCld az \xE1ltal\xE1noss\xE1gokat ("n\xE9zd \xE1t a k\xF3dot") \u2014 \xEDrd le pontosan mit kell csin\xE1lni '),n(),i(36,"li")(37,"strong",67),o(38,"Ism\xE9tl\u0151d\u0151 f\xE1zis:"),n(),o(39,' ha a f\xE1zis nem egyl\xE9p\xE9ses (pl. iterat\xEDv fejleszt\xE9s), kapcsold be az "Ism\xE9tl\u0151d\u0151" opci\xF3t \u2014 a f\xE1zis addig fut, am\xEDg PHASE_DONE jelz\xE9s nem \xE9rkezik '),n()()(),i(40,"div")(41,"h3",66),o(42,"Tipikus f\xE1zis-sorrend"),n(),i(43,"div",69)(44,"span",70),o(45,"1. T\xE1j\xE9koz\xF3d\xE1s / Clarify"),n(),i(46,"span",24),o(47,"\u2192"),n(),i(48,"span",70),o(49,"2. Tervez\xE9s / Plan"),n(),i(50,"span",24),o(51,"\u2192"),n(),i(52,"span",70),o(53,"3. Megval\xF3s\xEDt\xE1s / Dev"),n(),i(54,"span",24),o(55,"\u2192"),n(),i(56,"span",70),o(57,"4. Tesztel\xE9s / Test"),n(),i(58,"span",24),o(59,"\u2192"),n(),i(60,"span",70),o(61,"5. Review / Doc"),n()(),i(62,"p",71),o(63," Nem minden workflow-nak kell minden f\xE1zist tartalmaznia \u2014 haszn\xE1ld azt, ami relev\xE1ns. "),n()(),i(64,"div")(65,"h3",66),o(66,"Tippek"),n(),i(67,"ul",68)(68,"li"),o(69,"A "),i(70,"strong",67),o(71,"sablon (template)"),n(),o(72," workflow-kat gener\xE1l\xE1shoz is haszn\xE1ljuk \u2014 jel\xF6ld be, ha m\xE1sok sz\xE1m\xE1ra is mintak\xE9nt szolg\xE1l"),n(),i(73,"li"),o(74,"A f\xE1zis prompt-ban hivatkozhatsz f\xE1jlokra, mapp\xE1kra, specifik\xE1ci\xF3kra \u2014 min\xE9l konkr\xE9tabb, ann\xE1l jobb"),n(),i(75,"li"),o(76,"T\xF6rekedj arra, hogy egy f\xE1zis "),i(77,"strong",67),o(78,"1 felel\u0151ss\xE9gi k\xF6rrel"),n(),o(79," rendelkezzen (single responsibility)"),n(),i(80,"li"),o(81,"Ha egy f\xE1zis t\xFAl hossz\xFA lenne, bontsd kett\xE9 \u2014 ink\xE1bb legyen t\xF6bb kis f\xE1zis, mint egy nagy"),n()()()())}function De(l,d){if(l&1&&(i(0,"option",41),o(1),n()),l&2){let e=d.$implicit;g("value",e),s(),F(e)}}function Pe(l,d){if(l&1){let e=y();i(0,"div",48)(1,"div",72)(2,"span",73),o(3),n(),i(4,"button",74),c("click",function(){let r=u(e).$index,a=p(2);return m(a.handleRemovePhase(r))}),o(5," Elt\xE1vol\xEDt\xE1s "),n()(),i(6,"div",75)(7,"div")(8,"label",76),o(9,"C\xEDm"),n(),i(10,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"title",value:r}))}),n()(),i(11,"div")(12,"label",76),o(13,"C\xE9l (goal)"),n(),i(14,"input",77),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"goal",value:r}))}),n()()(),i(15,"div",78)(16,"label",76),o(17,"F\xE1zis prompt"),n(),i(18,"textarea",79),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"phasePrompt",value:r}))}),o(19," "),n()(),i(20,"div",42)(21,"input",43),c("ngModelChange",function(r){let a=u(e).$index,_=p(2);return m(_.handlePhaseFieldChange({index:a,field:"repeatUntilDone",value:r}))}),n(),i(22,"label",80),o(23,"Ism\xE9tl\u0151d\u0151 (am\xEDg PHASE_DONE)"),n()()()}if(l&2){let e=d.$implicit,t=d.$index;s(3),b("F\xE1zis ",t+1,""),s(7),g("ngModel",e.title),s(4),g("ngModel",e.goal),s(4),g("ngModel",e.phasePrompt),s(3),g("ngModel",e.repeatUntilDone)}}function Fe(l,d){if(l&1){let e=y();i(0,"div",4)(1,"div",22)(2,"button",23),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(3," \u2190 Vissza "),n(),i(4,"span",24),o(5,"|"),n(),i(6,"span",25),o(7),n(),i(8,"button",26),c("click",function(){u(e);let r=p();return m(r.handleCopyMarkdown())}),k(9,be,2,0,":svg:svg",27)(10,ve,3,0,":svg:svg",27),n()(),k(11,$e,20,5,"div",28)(12,ze,20,5,"div",29),i(13,"div",30)(14,"button",31),c("click",function(){u(e);let r=p();return m(r.handleToggleBestPractices())}),D(),i(15,"svg",32),P(16,"polyline",33),n(),J(),i(17,"span",34),o(18,"Workflow tervez\xE9si \xFAtmutat\xF3"),n(),i(19,"span",35),o(20,"best practices"),n()(),k(21,Te,82,0,"div",36),n(),i(22,"div",37)(23,"div")(24,"label",38),o(25,"N\xE9v"),n(),i(26,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("name",r))}),n()(),i(27,"div")(28,"label",38),o(29,"T\xEDpus"),n(),i(30,"select",40),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("workflowType",r))}),M(31,De,2,2,"option",41,K),n()()(),i(33,"div")(34,"label",38),o(35,"Le\xEDr\xE1s"),n(),i(36,"input",39),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("description",r))}),n()(),i(37,"div",42)(38,"input",43),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("isTemplate",r))}),n(),i(39,"label",25),o(40,"Sablon (template)"),n()(),i(41,"div")(42,"label",38),o(43,"Vez\xE9rprompt (master prompt)"),n(),i(44,"textarea",44),c("ngModelChange",function(r){u(e);let a=p();return m(a.handleFieldChange("masterPrompt",r))}),o(45," "),n()(),i(46,"div")(47,"div",45)(48,"h2",46),o(49,"F\xE1zisok"),n(),i(50,"button",47),c("click",function(){u(e);let r=p();return m(r.handleAddPhase())}),o(51," + F\xE1zis "),n()(),M(52,Pe,24,5,"div",48,H),n(),i(54,"div",49)(55,"button",50),c("click",function(){u(e);let r=p();return m(r.handleSave())}),o(56),n(),i(57,"button",51),c("click",function(){u(e);let r=p();return m(r.handleCancel())}),o(58," M\xE9gse "),n()()()}if(l&2){let e,t,r,a,_,W,f=p();s(7),b(" ",f.isCreating_$()?"\xDAj workflow":"Szerkeszt\xE9s"," "),s(),I("text-neutral-500",!f.isCopied_$())("hover:text-neutral-200",!f.isCopied_$())("text-green-400",f.isCopied_$()),s(),h(f.isCopied_$()?9:10),s(2),h(f.isCreating_$()?11:-1),s(),h(f.isCreating_$()?-1:12),s(3),I("-rotate-90",!f.isBestPracticesOpen_$()),s(6),h(f.isBestPracticesOpen_$()?21:-1),s(5),g("ngModel",(e=f.editingWorkflow_$())==null?null:e.name),s(4),g("ngModel",(t=f.editingWorkflow_$())==null?null:t.workflowType),s(),z(f.workflowTypes),s(5),g("ngModel",(r=f.editingWorkflow_$())==null?null:r.description),s(2),g("ngModel",(a=f.editingWorkflow_$())==null?null:a.isTemplate),s(6),g("ngModel",(_=f.editingWorkflow_$())==null?null:_.masterPrompt),s(8),z((W=f.editingWorkflow_$())==null?null:W.phases),s(3),g("disabled",f.isLoading_$()),s(),b(" ",f.isCreating_$()?"L\xE9trehoz\xE1s":"Ment\xE9s"," ")}}function ue(l){return{id:`phase-${Date.now()}-${l}`,title:"",order:l,goal:"",phasePrompt:"",constraints:[],dod:[],repeatUntilDone:!1,subWorkflowTriggers:[]}}function Ve(){return{name:"",description:"",workflowType:"development",isTemplate:!1,masterPrompt:"",phases:[ue(0)]}}var O=(()=>{class l{workflow_DS=C(pe);globalError_CS=C(ae);modelRegistry_DS=C(se);workflows_$=w([]);editingWorkflow_$=w(null);isLoading_$=w(!1);isCreating_$=w(!1);isBestPracticesOpen_$=w(!1);generationPrompt_$=w("");modificationPrompt_$=w("");isGenerating_$=w(!1);isModifying_$=w(!1);isCopied_$=w(!1);availableModels_$=w([]);selectedProvider_$=w("");selectedModel_$=w("");workflowTypes=["development","research","testing","support","onboarding","review","poc","user-input","bug-report"];ngOnInit(){this.loadWorkflows(),this.loadAvailableModels(),this.restoreDraft()}loadWorkflows(){return x(this,null,function*(){try{this.isLoading_$.set(!0);let e=yield this.workflow_DS.listWorkflows();this.workflows_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleCreateNew(){this.isCreating_$.set(!0),this.editingWorkflow_$.set(Ve()),this.persistDraft()}handleEdit(e){this.isCreating_$.set(!1),this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases]}))}handleCancel(){this.editingWorkflow_$.set(null),$.clear()}handleSave(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(e)try{this.isLoading_$.set(!0),this.isCreating_$()?yield this.workflow_DS.createWorkflow({name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory}):e._id&&(yield this.workflow_DS.updateWorkflow({id:e._id,name:e.name,description:e.description,workflowType:e.workflowType,isTemplate:e.isTemplate,masterPrompt:e.masterPrompt,phases:e.phases,generationHistory:e.generationHistory})),this.editingWorkflow_$.set(null),$.clear(),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleDelete(e){return x(this,null,function*(){if(e._id)try{this.isLoading_$.set(!0),yield this.workflow_DS.deleteWorkflow(e._id),yield this.loadWorkflows()}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isLoading_$.set(!1)}})}handleAddPhase(){let e=this.editingWorkflow_$();if(!e)return;let t=ue(e.phases.length);this.editingWorkflow_$.set(S(v({},e),{phases:[...e.phases,t]})),this.persistDraft()}handleRemovePhase(e){let t=this.editingWorkflow_$();if(!t)return;let r=t.phases.filter((a,_)=>_!==e);this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handlePhaseFieldChange(e){let t=this.editingWorkflow_$();if(!t)return;let r=[...t.phases];r[e.index]=S(v({},r[e.index]),{[e.field]:e.value}),this.editingWorkflow_$.set(S(v({},t),{phases:r})),this.persistDraft()}handleGenerationPromptChange(e){this.generationPrompt_$.set(e),this.persistDraft()}handleGenerate(){return x(this,null,function*(){let e=this.generationPrompt_$().trim();if(e)try{this.isGenerating_$.set(!0);let t=this.selectedProvider_$(),r=this.selectedModel_$(),a=yield this.workflow_DS.generateWorkflow({description:e,provider:t||void 0,model:r||void 0}),_={type:"generation",prompt:e,timestamp:new Date().toISOString()};this.editingWorkflow_$.set({name:a.name??"",description:a.description??"",workflowType:a.workflowType??"development",isTemplate:a.isTemplate??!1,masterPrompt:a.masterPrompt??"",phases:Array.isArray(a.phases)?a.phases:[],generationHistory:[_]})}catch(t){this.globalError_CS.showError(t,"workflow-settings")}finally{this.isGenerating_$.set(!1)}})}handleModificationPromptChange(e){this.modificationPrompt_$.set(e),this.persistDraft()}handleModify(){return x(this,null,function*(){let e=this.modificationPrompt_$().trim(),t=this.editingWorkflow_$();if(!(!e||!t))try{this.isModifying_$.set(!0);let r=this.selectedProvider_$(),a=this.selectedModel_$(),_=yield this.workflow_DS.modifyWorkflow({currentWorkflow:t,modificationDescription:e,provider:r||void 0,model:a||void 0}),W={type:"modification",prompt:e,timestamp:new Date().toISOString()},f=t.generationHistory??[];this.editingWorkflow_$.set({_id:t._id,name:_.name??"",description:_.description??"",workflowType:_.workflowType??"development",isTemplate:_.isTemplate??!1,masterPrompt:_.masterPrompt??"",phases:Array.isArray(_.phases)?_.phases:[],generationHistory:[...f,W]}),this.persistDraft()}catch(r){this.globalError_CS.showError(r,"workflow-settings")}finally{this.isModifying_$.set(!1)}})}loadAvailableModels(){return x(this,null,function*(){try{let e=yield this.modelRegistry_DS.loadList({enabled:!0});this.availableModels_$.set(e)}catch(e){this.globalError_CS.showError(e,"workflow-settings")}})}handleModelSelectionChange(e){if(!e){this.selectedProvider_$.set(""),this.selectedModel_$.set("");return}let t=e.indexOf(":");t!==-1&&(this.selectedProvider_$.set(e.substring(0,t)),this.selectedModel_$.set(e.substring(t+1)),this.persistDraft())}handleToggleBestPractices(){this.isBestPracticesOpen_$.set(!this.isBestPracticesOpen_$())}handleFieldChange(e,t){let r=this.editingWorkflow_$();r&&(this.editingWorkflow_$.set(S(v({},r),{[e]:t})),this.persistDraft())}handleCopyMarkdown(){return x(this,null,function*(){let e=this.editingWorkflow_$();if(!e)return;let t=[];t.push(`# ${e.name||"N\xE9vtelen workflow"}`),t.push(""),e.description&&(t.push(`> ${e.description}`),t.push("")),t.push("| Mez\u0151 | \xC9rt\xE9k |"),t.push("|------|-------|"),t.push(`| T\xEDpus | ${e.workflowType} |`),t.push(`| Sablon | ${e.isTemplate?"igen":"nem"} |`),t.push(`| F\xE1zisok sz\xE1ma | ${e.phases.length} |`),t.push(""),e.masterPrompt&&(t.push("## Vez\xE9rprompt (master prompt)"),t.push(""),t.push(e.masterPrompt),t.push("")),t.push("## F\xE1zisok"),t.push("");for(let r of e.phases){if(t.push(`### ${r.order+1}. ${r.title||"N\xE9vtelen f\xE1zis"}`),t.push(""),r.goal&&(t.push(`**C\xE9l:** ${r.goal}`),t.push("")),r.phasePrompt&&(t.push("**F\xE1zis prompt:**"),t.push(""),t.push(r.phasePrompt),t.push("")),r.constraints.length){t.push("**Megk\xF6t\xE9sek:**");for(let a of r.constraints)t.push(`- ${a}`);t.push("")}if(r.dod.length){t.push("**Definition of Done:**");for(let a of r.dod)t.push(`- ${a}`);t.push("")}r.repeatUntilDone&&(t.push("*Ism\xE9tl\u0151d\u0151 f\xE1zis (am\xEDg PHASE_DONE)*"),t.push(""))}try{yield navigator.clipboard.writeText(t.join(`
|
|
2
2
|
`)),this.isCopied_$.set(!0),setTimeout(()=>this.isCopied_$.set(!1),2e3)}catch{}})}persistDraft(){$.save({generationPrompt:this.generationPrompt_$(),modificationPrompt:this.modificationPrompt_$(),selectedProvider:this.selectedProvider_$(),selectedModel:this.selectedModel_$(),isCreating:this.isCreating_$(),editingWorkflow:this.editingWorkflow_$()})}restoreDraft(){let e=$.get();e&&(this.generationPrompt_$.set(e.generationPrompt),this.modificationPrompt_$.set(e.modificationPrompt),this.selectedProvider_$.set(e.selectedProvider),this.selectedModel_$.set(e.selectedModel),e.editingWorkflow&&(this.isCreating_$.set(e.isCreating),this.editingWorkflow_$.set(e.editingWorkflow)))}static \u0275fac=function(t){return new(t||l)};static \u0275cmp=R({type:l,selectors:[["app-ccap-workflow-settings"]],standalone:!0,features:[Y],decls:7,vars:3,consts:[[1,"max-w-4xl","mx-auto","p-4","gt-xs:p-6","text-neutral-100"],[1,"flex","items-center","justify-between","mb-6"],[1,"text-2xl","font-bold"],[1,"px-4","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm"],[1,"space-y-4"],[1,"px-4","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm",3,"click"],[1,"text-neutral-500","text-sm"],[1,"rounded-lg","border","border-neutral-700","bg-ccapSurface/50","p-6","text-center","text-neutral-500"],[1,"space-y-3"],[1,"rounded-lg","border","border-neutral-700","bg-ccapSurface/50","p-4","flex","items-start","justify-between","gap-4"],[1,"flex-1","min-w-0"],[1,"flex","items-center","gap-2","mb-1"],[1,"font-semibold","text-neutral-100","truncate"],[1,"text-xs","px-2","py-0.5","rounded","bg-neutral-700","text-neutral-300"],[1,"text-xs","px-2","py-0.5","rounded","bg-neonDefault/20","text-neonDefault"],[1,"text-xs","px-2","py-0.5","rounded","bg-neonCyan/20","text-neonCyan"],[1,"text-neutral-400","text-sm","truncate"],[1,"text-neutral-500","text-xs","mt-1"],[1,"flex","gap-2","shrink-0"],[1,"px-3","py-1.5","text-xs","text-neutral-500","italic"],[1,"px-3","py-1.5","text-xs","border","border-neutral-600","rounded","hover:border-neonDefault","hover:text-neonDefault","transition-colors",3,"click"],[1,"px-3","py-1.5","text-xs","border","border-neutral-600","rounded","text-red-400","hover:border-red-400","transition-colors",3,"click"],[1,"flex","items-center","gap-2","mb-2"],[1,"text-sm","text-neutral-400","hover:text-neutral-200","transition-colors",3,"click"],[1,"text-neutral-600"],[1,"text-sm","text-neutral-300"],["title","Workflow markdown m\xE1sol\xE1sa v\xE1g\xF3lapra",1,"ml-auto","p-1.5","transition-colors","rounded","hover:bg-neutral-700/50",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-4","h-4"],[1,"rounded-lg","border","border-neonDefault/30","bg-neonDefault/5","p-4","space-y-3"],[1,"rounded-lg","border","border-amber-500/30","bg-amber-500/5","p-4","space-y-3"],[1,"rounded-lg","border","border-neutral-700","bg-neutral-800/40"],[1,"w-full","flex","items-center","gap-2","px-4","py-3","text-left","text-sm","text-neutral-300","hover:text-neutral-100","transition-colors",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3","h-3","shrink-0","transition-transform","duration-150"],["points","6 9 12 15 18 9"],[1,"font-medium"],[1,"text-xs","text-neutral-500","ml-auto"],[1,"px-4","pb-4","text-sm","text-neutral-400","space-y-4","border-t","border-neutral-700","pt-3"],[1,"grid","grid-cols-1","md:grid-cols-2","gap-4"],[1,"block","text-xs","text-neutral-400","mb-1"],["type","text",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],[1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],[3,"value"],[1,"flex","items-center","gap-2"],["type","checkbox",1,"accent-neonDefault",3,"ngModelChange","ngModel"],["rows","4",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none","resize-y",3,"ngModelChange","ngModel"],[1,"flex","items-center","justify-between","mb-2"],[1,"text-lg","font-semibold"],[1,"px-3","py-1","text-xs","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors",3,"click"],[1,"rounded-lg","border","border-neutral-700","bg-neutral-800/50","p-4","mb-3"],[1,"flex","gap-3","pt-2"],[1,"px-5","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm",3,"click","disabled"],[1,"px-5","py-2","border","border-neutral-600","text-neutral-400","rounded","hover:border-neutral-400","transition-colors","text-sm",3,"click"],["points","20 6 9 17 4 12"],["x","9","y","9","width","13","height","13","rx","2","ry","2"],["d","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"],[1,"text-sm","font-medium","text-neonDefault"],[1,"text-xs","text-neutral-500"],["rows","3","placeholder","Pl.: Szeretn\xE9k egy workflow-t, ami el\u0151sz\xF6r \xE1tn\xE9zi a k\xF3dot, azt\xE1n meg\xEDrja a teszteket, v\xE9g\xFCl review-olja az eg\xE9szet...",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-neonDefault","outline-none","resize-y","placeholder:text-neutral-600",3,"ngModelChange","ngModel"],[1,"flex","items-center","gap-3"],[1,"bg-neutral-800","border","border-neutral-600","rounded","px-2","py-1.5","text-xs","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],["value",""],[1,"px-4","py-2","border","border-neonDefault","text-neonDefault","rounded","hover:bg-neonDefault/10","transition-colors","text-sm","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled"],[1,"text-sm","font-medium","text-amber-400"],["rows","3","placeholder","Pl.: Adj hozz\xE1 egy tesztel\xE9si f\xE1zist a megval\xF3s\xEDt\xE1s ut\xE1n, \xE9s tedd r\xE9szletesebb\xE9 a review f\xE1zis prompt-j\xE1t...",1,"w-full","bg-neutral-800","border","border-neutral-600","rounded","px-3","py-2","text-sm","text-neutral-100","focus:border-amber-400","outline-none","resize-y","placeholder:text-neutral-600",3,"ngModelChange","ngModel"],[1,"bg-neutral-800","border","border-neutral-600","rounded","px-2","py-1.5","text-xs","text-neutral-100","focus:border-amber-400","outline-none",3,"ngModelChange","ngModel"],[1,"px-4","py-2","border","border-amber-500","text-amber-400","rounded","hover:bg-amber-500/10","transition-colors","text-sm","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled"],[1,"text-neutral-200","font-semibold","mb-1"],[1,"text-neutral-300"],[1,"list-disc","list-inside","space-y-1"],[1,"flex","flex-wrap","gap-2","text-xs"],[1,"px-2","py-1","rounded","bg-neutral-700","text-neutral-300"],[1,"mt-2","text-xs","text-neutral-500"],[1,"flex","items-center","justify-between","mb-3"],[1,"text-sm","font-medium","text-neutral-300"],[1,"text-xs","text-red-400","hover:text-red-300","transition-colors",3,"click"],[1,"grid","grid-cols-1","md:grid-cols-2","gap-3","mb-3"],[1,"block","text-xs","text-neutral-500","mb-1"],["type","text",1,"w-full","bg-neutral-900","border","border-neutral-600","rounded","px-2","py-1.5","text-sm","text-neutral-100","focus:border-neonDefault","outline-none",3,"ngModelChange","ngModel"],[1,"mb-3"],["rows","3",1,"w-full","bg-neutral-900","border","border-neutral-600","rounded","px-2","py-1.5","text-sm","text-neutral-100","focus:border-neonDefault","outline-none","resize-y",3,"ngModelChange","ngModel"],[1,"text-xs","text-neutral-400"]],template:function(t,r){t&1&&(i(0,"div",0)(1,"div",1)(2,"h1",2),o(3,"Workflow be\xE1ll\xEDt\xE1sok"),n(),k(4,ce,2,0,"button",3),n(),k(5,Ce,3,1)(6,Fe,59,20,"div",4),n()),t&2&&(s(4),h(r.editingWorkflow_$()?-1:4),s(),h(r.editingWorkflow_$()?-1:5),s(),h(r.editingWorkflow_$()?6:-1))},dependencies:[V,j,oe,re,ee,Z,ie,te,ne],encapsulation:2})}return l})();var je=[{path:"",pathMatch:"full",component:O}],mt=(()=>{class l{static \u0275fac=function(t){return new(t||l)};static \u0275mod=q({type:l});static \u0275inj=U({imports:[V,j,X.forChild(je),O]})}return l})();export{mt as WorkflowSettings_Module};
|
|
3
|
-
//# sourceMappingURL=wfs.module-
|
|
3
|
+
//# sourceMappingURL=wfs.module-UNMMTLJD.js.map
|
package/package.json
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { DyNTS_SingletonService } from '@futdevpro/nts-dynamo';
|
|
2
2
|
import { CC_OutputCallback_Type, CC_ProcessStateCallback_Type, CC_SessionConfig_Interface, CC_TerminalSocket_Interface } from '../cc-adapter.interface';
|
|
3
3
|
/**
|
|
4
|
-
* CC Session terminal mode adapter (singleton)
|
|
5
|
-
* output/exit/
|
|
6
|
-
* grace
|
|
7
|
-
* kommunikáció callback-en és shared reference-eken (sessionConfigs map) keresztül.
|
|
4
|
+
* CC Session terminal mode adapter (singleton): Socket.IO namespace + runner lifecycle
|
|
5
|
+
* (spawn / output / exit / disconnect / sequence dedup / ack throttle / flap detect /
|
|
6
|
+
* grace / buffered output). CC_Adapter_ControlService delegál ide callback + shared-ref-en.
|
|
8
7
|
*/
|
|
9
8
|
export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonService {
|
|
10
9
|
static getInstance(): CC_AdapterTerminal_ControlService;
|
|
11
10
|
/**
|
|
12
|
-
* BUG-CC-TERM-HANG-001: server-restart grace iter cap
|
|
13
|
-
*
|
|
14
|
-
* hogy a 1h idle-timeout grace ne 60 perces HTTP-hang-ot okozzon.
|
|
11
|
+
* BUG-CC-TERM-HANG-001: server-restart grace iter cap (60 iter / 30s) — 1h idle-timeout
|
|
12
|
+
* grace ne 60 perces HTTP-hang-ot okozzon a sendInputViaTerminal polling-on.
|
|
15
13
|
*/
|
|
16
14
|
static computeServerRestartGraceIterations(runnerGracePeriodSec: number): number;
|
|
17
15
|
/** Terminal mode: sessionId → runner Socket.IO connection. */
|
|
@@ -70,11 +68,8 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
|
|
|
70
68
|
/** Public: a manager.isBusyProcessing checkje hozzá. */
|
|
71
69
|
isSpawnInFlight(sessionId: string): boolean;
|
|
72
70
|
/**
|
|
73
|
-
* BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): deferred
|
|
74
|
-
* waitingInput flip
|
|
75
|
-
* azonnal a sessiont — handleTerminalRegister cancel-eli a timert; 5s után tényleges
|
|
76
|
-
* idle → flip. Megelőzi a "user új üzenetet küld látszólagos idle session-nek →
|
|
77
|
-
* runner kill claude → process-replace" race-t.
|
|
71
|
+
* BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): 5s deferred disconnect →
|
|
72
|
+
* waitingInput flip; transient blip reconnect cancel-eli; megelőzi runner-kill race-t.
|
|
78
73
|
*/
|
|
79
74
|
private deferredDisconnectFlips;
|
|
80
75
|
/** Disconnect-deferred-flip timer cleanup constant. 5s biztos margin tranziens
|
|
@@ -169,26 +164,18 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
|
|
|
169
164
|
* Az adapter spawnSession grace period loop-ja használja.
|
|
170
165
|
*/
|
|
171
166
|
getGraceIterations(): number;
|
|
172
|
-
/**
|
|
173
|
-
* Lifecycle runner deregisztrálása (az adapter terminateSession/terminate cleanup-ja).
|
|
174
|
-
* Delegál a CC_TerminalLifecycle_ControlService-nek.
|
|
175
|
-
*/
|
|
167
|
+
/** Lifecycle runner deregisztrálás — delegál CC_TerminalLifecycle_ControlService-nek. */
|
|
176
168
|
unregisterRunnerLifecycle(params: {
|
|
177
169
|
sessionId: string;
|
|
178
170
|
}): void;
|
|
179
171
|
/**
|
|
180
|
-
*
|
|
181
|
-
* disconnect minden csatlakozott runner-nek.
|
|
182
|
-
* sessionConfigs alapú iterációja (lecsatlakozott / reconnect-re váró runner-ek is).
|
|
172
|
+
* Cycle 834: extract → CC_TerminalRunnerControl_Util.disconnectAllRunners.
|
|
173
|
+
* Graceful shutdown — cc:kill + disconnect minden csatlakozott runner-nek.
|
|
183
174
|
*/
|
|
184
|
-
/** Cycle 834: extract → CC_TerminalRunnerControl_Util.disconnectAllRunners. */
|
|
185
175
|
disconnectAllRunners(): void;
|
|
186
176
|
/** Cycle 781: runner version sessionId-hez (undefined ha pre-781 / nincs registration). */
|
|
187
177
|
getRunnerVersion(sessionId: string): string | undefined;
|
|
188
|
-
/**
|
|
189
|
-
* Cycle 781e: runner kill + respawn egy hívásban (UI-button trigger).
|
|
190
|
-
* Cycle 834: kill+cleanup → CC_TerminalRunnerControl_Util.killSocketAndCleanState.
|
|
191
|
-
*/
|
|
178
|
+
/** Cycle 781e: runner kill+respawn (UI-button); 834: kill via runner-control util. */
|
|
192
179
|
restartRunner(params: {
|
|
193
180
|
sessionId: string;
|
|
194
181
|
workspacePath: string;
|
|
@@ -255,9 +242,8 @@ export declare class CC_AdapterTerminal_ControlService extends DyNTS_SingletonSe
|
|
|
255
242
|
terminalId: string;
|
|
256
243
|
}>;
|
|
257
244
|
/**
|
|
258
|
-
* Runner sequence
|
|
259
|
-
*
|
|
260
|
-
* drop) NEM hívja — ott ugyanaz a process, sequence folytatódik.
|
|
245
|
+
* Runner sequence reset — full-exit (terminate / lifecycle) hívja, mert új runner 1-től
|
|
246
|
+
* kezd. Disconnect NEM hívja: ugyanaz a process, sequence folytatódik.
|
|
261
247
|
*/
|
|
262
248
|
clearRunnerSequenceState(params: {
|
|
263
249
|
sessionId: string;
|
|
@@ -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":"AAKA,OAAO,EAAuB,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAoBpF,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAE5B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;AAEjC
|
|
1
|
+
{"version":3,"file":"cc-adapter-terminal.control-service.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,19 +25,17 @@ const cc_terminal_runner_spawn_util_1 = require("../../../_collections/utils/ter
|
|
|
25
25
|
const cc_terminal_runner_control_util_1 = require("../../../_collections/utils/terminal/cc-terminal-runner-control.util");
|
|
26
26
|
const cc_terminal_session_closed_guard_util_1 = require("../../../_collections/utils/terminal/cc-terminal-session-closed-guard.util");
|
|
27
27
|
/**
|
|
28
|
-
* CC Session terminal mode adapter (singleton)
|
|
29
|
-
* output/exit/
|
|
30
|
-
* grace
|
|
31
|
-
* kommunikáció callback-en és shared reference-eken (sessionConfigs map) keresztül.
|
|
28
|
+
* CC Session terminal mode adapter (singleton): Socket.IO namespace + runner lifecycle
|
|
29
|
+
* (spawn / output / exit / disconnect / sequence dedup / ack throttle / flap detect /
|
|
30
|
+
* grace / buffered output). CC_Adapter_ControlService delegál ide callback + shared-ref-en.
|
|
32
31
|
*/
|
|
33
32
|
class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
|
|
34
33
|
static getInstance() {
|
|
35
34
|
return CC_AdapterTerminal_ControlService.getSingletonInstance();
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
38
|
-
* BUG-CC-TERM-HANG-001: server-restart grace iter cap
|
|
39
|
-
*
|
|
40
|
-
* hogy a 1h idle-timeout grace ne 60 perces HTTP-hang-ot okozzon.
|
|
37
|
+
* BUG-CC-TERM-HANG-001: server-restart grace iter cap (60 iter / 30s) — 1h idle-timeout
|
|
38
|
+
* grace ne 60 perces HTTP-hang-ot okozzon a sendInputViaTerminal polling-on.
|
|
41
39
|
*/
|
|
42
40
|
static computeServerRestartGraceIterations(runnerGracePeriodSec) {
|
|
43
41
|
const desired = Math.max(0, Math.floor(runnerGracePeriodSec)) * 2;
|
|
@@ -105,11 +103,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
105
103
|
return this.spawnInFlightSessions.has(sessionId);
|
|
106
104
|
}
|
|
107
105
|
/**
|
|
108
|
-
* BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): deferred
|
|
109
|
-
* waitingInput flip
|
|
110
|
-
* azonnal a sessiont — handleTerminalRegister cancel-eli a timert; 5s után tényleges
|
|
111
|
-
* idle → flip. Megelőzi a "user új üzenetet küld látszólagos idle session-nek →
|
|
112
|
-
* runner kill claude → process-replace" race-t.
|
|
106
|
+
* BUG-CC-TERM-DISCONNECT-PREMATURE-WAIT-001 (cycle 808): 5s deferred disconnect →
|
|
107
|
+
* waitingInput flip; transient blip reconnect cancel-eli; megelőzi runner-kill race-t.
|
|
113
108
|
*/
|
|
114
109
|
deferredDisconnectFlips = new Map();
|
|
115
110
|
/** Disconnect-deferred-flip timer cleanup constant. 5s biztos margin tranziens
|
|
@@ -231,21 +226,16 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
231
226
|
getGraceIterations() {
|
|
232
227
|
return this.runnerGracePeriodSec * 2;
|
|
233
228
|
}
|
|
234
|
-
/**
|
|
235
|
-
* Lifecycle runner deregisztrálása (az adapter terminateSession/terminate cleanup-ja).
|
|
236
|
-
* Delegál a CC_TerminalLifecycle_ControlService-nek.
|
|
237
|
-
*/
|
|
229
|
+
/** Lifecycle runner deregisztrálás — delegál CC_TerminalLifecycle_ControlService-nek. */
|
|
238
230
|
unregisterRunnerLifecycle(params) {
|
|
239
231
|
cc_terminal_lifecycle_control_service_1.CC_TerminalLifecycle_ControlService.getInstance().unregisterRunner({
|
|
240
232
|
sessionId: params.sessionId,
|
|
241
233
|
});
|
|
242
234
|
}
|
|
243
235
|
/**
|
|
244
|
-
*
|
|
245
|
-
* disconnect minden csatlakozott runner-nek.
|
|
246
|
-
* sessionConfigs alapú iterációja (lecsatlakozott / reconnect-re váró runner-ek is).
|
|
236
|
+
* Cycle 834: extract → CC_TerminalRunnerControl_Util.disconnectAllRunners.
|
|
237
|
+
* Graceful shutdown — cc:kill + disconnect minden csatlakozott runner-nek.
|
|
247
238
|
*/
|
|
248
|
-
/** Cycle 834: extract → CC_TerminalRunnerControl_Util.disconnectAllRunners. */
|
|
249
239
|
disconnectAllRunners() {
|
|
250
240
|
cc_terminal_runner_control_util_1.CC_TerminalRunnerControl_Util.disconnectAllRunners({
|
|
251
241
|
terminalSockets: this.terminalSockets,
|
|
@@ -258,10 +248,7 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
258
248
|
getRunnerVersion(sessionId) {
|
|
259
249
|
return this.runnerVersions.get(sessionId);
|
|
260
250
|
}
|
|
261
|
-
/**
|
|
262
|
-
* Cycle 781e: runner kill + respawn egy hívásban (UI-button trigger).
|
|
263
|
-
* Cycle 834: kill+cleanup → CC_TerminalRunnerControl_Util.killSocketAndCleanState.
|
|
264
|
-
*/
|
|
251
|
+
/** Cycle 781e: runner kill+respawn (UI-button); 834: kill via runner-control util. */
|
|
265
252
|
async restartRunner(params) {
|
|
266
253
|
const existingSocket = this.terminalSockets.get(params.sessionId);
|
|
267
254
|
if (existingSocket) {
|
|
@@ -488,9 +475,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
488
475
|
return { terminalId: terminalId };
|
|
489
476
|
}
|
|
490
477
|
/**
|
|
491
|
-
* Runner sequence
|
|
492
|
-
*
|
|
493
|
-
* drop) NEM hívja — ott ugyanaz a process, sequence folytatódik.
|
|
478
|
+
* Runner sequence reset — full-exit (terminate / lifecycle) hívja, mert új runner 1-től
|
|
479
|
+
* kezd. Disconnect NEM hívja: ugyanaz a process, sequence folytatódik.
|
|
494
480
|
*/
|
|
495
481
|
clearRunnerSequenceState(params) {
|
|
496
482
|
this.lastProcessedRunnerSequence.delete(params.sessionId);
|
|
@@ -586,12 +572,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
586
572
|
});
|
|
587
573
|
}
|
|
588
574
|
catch (spawnErr) {
|
|
589
|
-
// Spawn
|
|
590
|
-
//
|
|
591
|
-
//
|
|
592
|
-
// hogy a következő prompt-küldés (vagy queue-retry) tisztán induljon.
|
|
593
|
-
// A spawn-hibát továbbra is throw-oljuk a hívási láncon felfelé (a route
|
|
594
|
-
// queue-fallback-je elnyeli ha transient, vagy /errors-be megy).
|
|
575
|
+
// Spawn fail (REG-TIMEOUT / SPAWN-FAIL): reset waitingInput-ra (`starting` busy-state
|
|
576
|
+
// különben tryDeliverNext-et blokkol). Hibát továbbra is throw — route queue-fallback
|
|
577
|
+
// elnyeli ha transient, vagy /errors-be megy.
|
|
595
578
|
this.handleProcessStateChange({
|
|
596
579
|
sessionId: params.sessionId,
|
|
597
580
|
status: cc_status_enum_1.CC_Status_Type.waitingInput,
|
|
@@ -737,12 +720,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
737
720
|
return new Promise((resolve, reject) => {
|
|
738
721
|
const timeoutHandle = setTimeout(() => {
|
|
739
722
|
this.pendingRegistrations.delete(params.sessionId);
|
|
740
|
-
// BUG-CC-RUNNER-EVICT-VISIBILITY-001 (2026-05-07):
|
|
741
|
-
//
|
|
742
|
-
//
|
|
743
|
-
// nem látta. Most explicit globalErrorHandler-rel rögzítjük + dúsított
|
|
744
|
-
// diagnosztikai hint a tipikus okokra (terminal-window-instant-close,
|
|
745
|
-
// hiányzó global @futdevpro/ccap install, hálózati blokkolás).
|
|
723
|
+
// BUG-CC-RUNNER-EVICT-VISIBILITY-001 (cycle 2026-05-07): REG-TIMEOUT explicit
|
|
724
|
+
// /errors record (eddig route queue-fallback elnyelte 'queued'-ként, user nem
|
|
725
|
+
// látta). Hint: terminal-window-instant-close / hiányzó npm-install / network.
|
|
746
726
|
const regTimeoutError = new ccap_error_control_model_1.CCAP_Error({
|
|
747
727
|
message: `Terminal runner registration timeout for session: ${params.sessionId}`,
|
|
748
728
|
errorCode: 'CCAP-CCS-TERMINAL-REG-TIMEOUT',
|
|
@@ -784,11 +764,8 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
784
764
|
const sessionId = (params.data.sessionId ?? '').trim();
|
|
785
765
|
const terminalId = (params.data.terminalId ?? '').trim();
|
|
786
766
|
if (!sessionId || !terminalId) {
|
|
787
|
-
// BUG-CC-RUNNER-EVICT-VISIBILITY-001
|
|
788
|
-
//
|
|
789
|
-
// látta hogy a runner próbálkozott regisztrálni hibás payload-dal, ami
|
|
790
|
-
// version-mismatch / outdated-runner / corrupt-state diagnosztika szempontjából
|
|
791
|
-
// kritikus. Most a /errors page-en is megjelenik.
|
|
767
|
+
// BUG-CC-RUNNER-EVICT-VISIBILITY-001 Phase Silent-A: malformed register silent-drop
|
|
768
|
+
// megszüntetve, /errors-be record (version-mismatch / outdated / corrupt diagnosztika).
|
|
792
769
|
fsm_dynamo_1.DyFM_Log.warn(`CC_AdapterTerminal | terminal register: missing sessionId or terminalId`
|
|
793
770
|
+ ` | rawSessionId: '${params.data.sessionId ?? '(undefined)'}'`
|
|
794
771
|
+ ` | rawTerminalId: '${params.data.terminalId ?? '(undefined)'}'`
|
|
@@ -1005,13 +982,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
1005
982
|
hadRunnerSet: this.hadRunnerSet,
|
|
1006
983
|
resumeInFlightChecker: this.resumeInFlightChecker,
|
|
1007
984
|
});
|
|
1008
|
-
// BUG-CC-TERM-HANG-001 (2026-05-07): queue drain on register. Ha a route
|
|
1009
|
-
// előzőleg
|
|
1010
|
-
//
|
|
1011
|
-
// azonnal próbáljuk delivery-zni. A queue belső `canReceiveInput` USS-check
|
|
1012
|
-
// dönti el, hogy ténylegesen kiküldhető-e — ha még nem (pl. status starting),
|
|
1013
|
-
// a queue saját debounce-szal próbálkozik újra. Fire-and-forget: nem blokkolja
|
|
1014
|
-
// a regisztrációt, error → warn-log.
|
|
985
|
+
// BUG-CC-TERM-HANG-001 (cycle 2026-05-07): queue drain on register. Ha a route
|
|
986
|
+
// előzőleg NOT-CONNECTED / REG-TIMEOUT miatt enqueue-olta a prompt-ot, most fire
|
|
987
|
+
// delivery-attempt; canReceiveInput USS-check + queue saját debounce dönti el.
|
|
1015
988
|
session_queue_control_service_1.SessionQueue_ControlService.getInstance().tryDeliverNext({
|
|
1016
989
|
sessionType: sq_session_type_enum_1.SQ_SessionType_Type.ccSession,
|
|
1017
990
|
sessionId: sessionId,
|
|
@@ -1288,13 +1261,9 @@ class CC_AdapterTerminal_ControlService extends nts_dynamo_1.DyNTS_SingletonServ
|
|
|
1288
1261
|
+ ` | terminalId: ${terminalId}`
|
|
1289
1262
|
+ ` | reason: ${reason ?? 'unknown'}`
|
|
1290
1263
|
+ ` | flap: ${this.flapTracker.get(sessionId)?.count ?? 0}/${this.flapTracker.get(sessionId)?.totalCount ?? 0}`);
|
|
1291
|
-
// BUG-CC-RUNNER-EVICT-VISIBILITY-001
|
|
1292
|
-
//
|
|
1293
|
-
//
|
|
1294
|
-
// user lássa a runner-vesztés okát (network blip, runner-crash, X server
|
|
1295
|
-
// reset, manual close). A tervezett kill-ekre (user-terminate, runner-restart,
|
|
1296
|
-
// process-replace, lifecycle, stb.) silent — a process-exit handler
|
|
1297
|
-
// úgyis rögzít state-change event-et.
|
|
1264
|
+
// BUG-CC-RUNNER-EVICT-VISIBILITY-001 Phase Silent-A: nem-tervezett disconnect
|
|
1265
|
+
// (pendingKillReasons üres) → /errors record (network blip / runner-crash / X reset
|
|
1266
|
+
// / manual close). Tervezett kill-ek silent — process-exit handler rögzít event-et.
|
|
1298
1267
|
const pendingKillReason = this.pendingKillReasons.get(sessionId);
|
|
1299
1268
|
if (!pendingKillReason) {
|
|
1300
1269
|
const disconnectError = new ccap_error_control_model_1.CCAP_Error({
|